# MQTT IR transceiver ESP8266 based gateway between MQTT and IR. Code compatible with [PlatformIO](http://platformio.org/). Works with ESP-01 (debug mode have to be disabled in globals.h) ## Features * Receiving of IR transmission and publish it as MQTT messages * Receive MQTT messages and send IR signal (multiple formats supported - NEC, RC5, LG, SONY, [Global Cache](https://irdb.globalcache.com/Home/Database) ) * Storing raw IR messages on flash and transmitting via IR * Constant current IR LED emitter circuit (based on [Analysir schematic](https://www.analysir.com/blog/2013/11/22/constant-current-infrared-led-circuit/) ) * MQTT over SSL support * OTA updates ## Working modes ### IR transmitting  ### IR receiving  ## Used librariers * IRremoteESP8266 - https://github.com/markszabo/IRremoteESP8266/ * ArduinoJson - https://github.com/bblanchon/ArduinoJson * PubSubClient - https://github.com/knolleary/pubsubclient * WiFiManager - https://github.com/tzapu/WiFiManager ## Installation ### GPIO connections:
| GPIO WEMOS | GPIO ESP01 | Usage |
|---|---|---|
| 13 | 0 | IR receiver |
| 14 | 3 (Uart RX) | IR LED - connected via simple transistor amplifier |
| 15 (to +3,3V) | 2 (to GND) | Button - used for reset configuration |
| 2 (Wemos buildin) | not used | LED |
| Property | Message format | Description | Example |
|---|---|---|---|
| _mqtt_prefix_/sender/storeRaw/_store_id_ | \d+(,\d+) | store raw codes sequence in slot no. _store_id_, last number is frequency in kHz | Topic: "_mqtt_prefix_/sender/storeRaw/10" Message: "11,43,54,65,32" 32 - is frequency in kHz |
| _mqtt_prefix_/sender/sendStoredRaw | \d+ | Transmit via IR RAW code from provided slot | Topic: "_mqtt_prefix_/sender/sendStoredRaw" Message: "1" |
| _mqtt_prefix_/sender/sendStoredRawSequence | \d+(,\d+)* | Transmit via IR sequence of RAW codes from provided slots | Topic: "_mqtt_prefix_/sender/sendStoredRawSequence" Message: "1,2,3" |
| _mqtt_prefix_/sender/cmd | (ls|sysinfo) | Execute on device command, replay in topic _mqtt_prefix_/sender/cmd/result | Topic: "_mqtt_prefix_/sender/cmd" Message: "sysinfo" |
| _mqtt_prefix_/sender/rawMode | (1|ON|true|.*) | Turn on/off reporting to controller received by device IR raw codes | Topic: "_mqtt_prefix_/sender/rawMode" Message: "1" |
| _mqtt_prefix_/wipe | .* | Wipe configuration for next boot | Topic: "_mqtt_prefix_/wipe" Message: "1" |
| _mqtt_prefix_/sender/(RC_5|RC_6|NEC|SAMSUNG|SONY|LG)/(\d+) | \d+ | Send IR signal based on type | Topic: "esp8266/02sender/RC_5/12" Message: "3294" |
| _mqtt_prefix_/sender/sendGC | \d+(,\d+) | Send Global Cache code | Topic: "_mqtt_prefix_/sender/sendGC" Message: "32000,43,54,65,32,...." |
| _mqtt_prefix_/sender/sendRAW | \d+(,\d+) | Send RAW code with given frequency | Topic: "_mqtt_prefix_/sender/sendRAW" Message: "9000,4550,550,600,600,600,...,32" 32 is frequency in kHz |
| _mqtt_prefix_/sender/otaURL | .* | Update via HTTP from URL | Topic: "_mqtt_prefix_/sender/otaURL" Message: "http://ota.server/firmware.bin" |
| Property | Message format | Direction | Example |
|---|---|---|---|
| _mqtt_prefix_/sender/cmd/result | .* | Result of command | |
| _mqtt_prefix_/receiver/_type_/_bits_/_panas_addr_ | \d+(,\d+)* | Send to controller received IR code | Topic: "_mqtt_prefix_/receiver/RC_5/12" Message: "3294" |
| _mqtt_prefix_/receiver/raw | \d+(,\d+)* | Send to controller received RAW IR code (only when RAW mode is enabled) | Topic: "_mqtt_prefix_/receiver/raw" Message: "9000,4550,550,600,600,600,..." |