WLED/usermods/JSON_IR_remote
Blaž Kristan 1952505e52 Squashed commit of the following:
commit 7893cb9ebc66faa39d430148e6dd66894cd2fc90
Merge: c4086b9 4e139d7
Author: Blaž Kristan <blaz@kristan-sp.si>
Date:   Fri May 21 12:57:43 2021 +0200

    Merge branch 'master' of https://github.com/scottrbailey/WLED into scottrbailey-master

commit 4e139d7c0a
Author: Artacus <40248830+scottrbailey@users.noreply.github.com>
Date:   Tue May 18 12:57:20 2021 -0700

    Update ir.cpp

    Handle both 24-key and 24-key old in decodeIR switch statement

commit 9a405d374b
Author: Artacus <40248830+scottrbailey@users.noreply.github.com>
Date:   Tue May 18 11:05:42 2021 -0700

    Update readme.md

commit 94af6d0561
Merge: 1ed687a bfb27c4
Author: Artacus <40248830+scottrbailey@users.noreply.github.com>
Date:   Sun May 16 22:00:15 2021 -0700

    Merge branch 'Aircoookie:master' into master

commit 1ed687a51a
Author: Scott Bailey <scottrbailey@gmail.com>
Date:   Sun May 2 21:27:33 2021 -0700

    remove colorUpdated notifier that was pasted in accidentally

commit 845dcabe0c
Author: Scott Bailey <scottrbailey@gmail.com>
Date:   Sat May 1 12:53:34 2021 -0700

    Handle setting palette when effect is still on default solid and will not display it

commit 90e8ae1457
Author: Scott Bailey <scottrbailey@gmail.com>
Date:   Sat May 1 02:07:47 2021 -0700

    refactor decodeIRJson to change how ir.json is loaded add support for calling several c functions

commit e4f9fa3117
Author: Scott Bailey <scottrbailey@gmail.com>
Date:   Thu Apr 29 23:33:01 2021 -0700

    comment out printing API commands in IR handling

commit 26247b247e
Author: Scott Bailey <scottrbailey@gmail.com>
Date:   Thu Apr 29 23:31:30 2021 -0700

    removed code that forced IR codes in a certain range to be decoded by decodeIR24. Generate default ir.json files for currently supported remotes.

commit 5acecda6a0
Author: Scott Bailey <scottrbailey@gmail.com>
Date:   Thu Apr 29 11:25:24 2021 -0700

    handle JSON API commands also

commit 754e3e092a
Author: Scott Bailey <scottrbailey@gmail.com>
Date:   Wed Apr 28 22:53:27 2021 -0700

    add decodeIRJson and JSON remote option
2021-05-21 13:07:55 +02:00
..
6-key_ir.json JSON IR remote 2021-05-18 09:48:58 +02:00
9-key_ir.json JSON IR remote 2021-05-18 09:48:58 +02:00
21-key_ir.json JSON IR remote 2021-05-18 09:48:58 +02:00
24-key_ir.json JSON IR remote 2021-05-18 09:48:58 +02:00
32-key_ir.json JSON IR remote 2021-05-18 09:48:58 +02:00
40-key-black_ir.json JSON IR remote 2021-05-18 09:48:58 +02:00
40-key-blue_ir.json JSON IR remote 2021-05-18 09:48:58 +02:00
44-key_ir.json JSON IR remote 2021-05-18 09:48:58 +02:00
ir_json_maker.py JSON IR remote 2021-05-18 09:48:58 +02:00
IR_Remote_Codes.xlsx JSON IR remote 2021-05-18 09:48:58 +02:00
readme.md Squashed commit of the following: 2021-05-21 13:07:55 +02:00

JSON IR remote

Purpose

The JSON IR remote allows users to customize IR remote behavior without writing custom code and compiling. It also enables using any remote that is compatible with your IR receiver. Using the JSON IR remote, you can map buttons from any remote to any HTTP request API or JSON API command.

Usage

  • Upload the IR config file, named ir.json to your board using the [ip address]/edit url. Pick from one of the included files or create your own.
  • On the config > LED settings page, set the correct IR pin.
  • On the config > Sync Interfaces page, select "JSON Remote" as the Infrared remote.

Modification

  • See if there is a json file with the same number of buttons as your remote. Many remotes will have the same internals and emit the same codes but have different labels.
  • In the ir.json file, each key will be the hex encoded IR code.
  • The "cmd" property will be the HTTP Request API or JSON API to execute when that button is pressed.
  • A limited number of c functions are supported (!incBrightness, !decBrightness, !presetFallback)
  • When using !presetFallback, include properties PL (preset to load), FX (effect to fall back to) and FP (palette to fall back to)
  • If the command is repeatable and does not contain the "~" character, add a "rpt": true property.
  • Other properties are ignored, but having a label property may help when editing.

Sample: { "0xFF629D": {"cmd": "T=2", "rpt": true, "label": "Toggle on/off"}, // HTTP command "0xFF9867": {"cmd": "A=~16", "label": "Inc brightness"}, // HTTP command with incrementing
"0xFF38C7": {"cmd": {"bri": 10}, "label": "Dim to 10"}, // JSON command "0xFF22DD": {"cmd": "!presetFallback", "PL": 1, "FX": 16, "FP": 6,
"label": "Preset 1 or fallback to Saw - Party"}, // c function }