From fc20d62643e39e75cf9a13344133cf2d4cd9ddf3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Xose=20P=C3=A9rez?= Date: Fri, 20 Jan 2017 14:17:41 +0100 Subject: [PATCH] Added support for JanGoe Wifi Relay boards --- README.md | 1 + code/espurna/config/arduino.h | 2 ++ code/espurna/config/hardware.h | 30 +++++++++++++++++++++++++++ code/platformio.ini | 21 +++++++++++++++++++ images/devices/jangoe-wifi-relay.png | Bin 0 -> 32956 bytes 5 files changed, 54 insertions(+) create mode 100644 images/devices/jangoe-wifi-relay.png diff --git a/README.md b/README.md index 3983fc51..d60fb6d5 100644 --- a/README.md +++ b/README.md @@ -44,6 +44,7 @@ For more information please refer to the [ESPurna Wiki](https://bitbucket.org/xo |![IteadStudio Sonoff Dual](images/devices/sonoff-dual.jpg) **IteadStudio Sonoff Dual**|![IteadStudio Sonoff POW](images/devices/sonoff-pow.jpg) **IteadStudio Sonoff POW**|![IteadStudio Sonoff TH10/TH16](images/devices/sonoff-th10-th16.jpg) **IteadStudio Sonoff TH10/TH16**| |![IteadStudio Sonoff RF](images/devices/sonoff-rf.jpg) **IteadStudio Sonoff RF**|![IteadStudio Sonoff SV](images/devices/sonoff-sv.jpg) **IteadStudio Sonoff SV**|![IteadStudio Sonoff Touch](images/devices/sonoff-touch.jpg) **IteadStudio Sonoff Touch**| |![Wemos D1 Mini Relay Shield](images/devices/d1mini.jpg) **Wemos D1 Mini Relay Shield**|![Electrodragon Relay Board](images/devices/electrodragon-relay-board.jpg) **Electrodragon Relay Board**|![WorkChoice EcoPlug](images/devices/workchoice-ecoplug.jpg) **WorkChoice EcoPlug**| +|![JanGoe Wifi Relay (NO/NC)](images/devices/jangoe-wifi-relay.png) **JanGoe Wifi Relay (NO/NC)**||| ## License diff --git a/code/espurna/config/arduino.h b/code/espurna/config/arduino.h index d8bb52d2..340029f6 100644 --- a/code/espurna/config/arduino.h +++ b/code/espurna/config/arduino.h @@ -25,6 +25,8 @@ //#define SONOFF_4CH //#define ESP_RELAY_BOARD //#define ECOPLUG +//#define WIFI_RELAY_NC +//#define WIFI_RELAY_NO //#define ESPURNA //-------------------------------------------------------------------------------- diff --git a/code/espurna/config/hardware.h b/code/espurna/config/hardware.h index 35247368..5dead08f 100644 --- a/code/espurna/config/hardware.h +++ b/code/espurna/config/hardware.h @@ -171,6 +171,36 @@ #define LED1_PIN 2 #define LED1_PIN_INVERSE 0 +// ----------------------------------------------------------------------------- +// JanGoe Wifi Relay (https://github.com/JanGoe/esp8266-wifi-relay) +// ----------------------------------------------------------------------------- + +#elif defined(WIFI_RELAY_NC) + + #define MANUFACTURER "JANGOE" + #define DEVICE "WIFI_RELAY_NC" + #define BUTTON1_PIN 12 + #define BUTTON1_RELAY 1 + #define BUTTON2_PIN 13 + #define BUTTON2_RELAY 2 + #define RELAY1_PIN 2 + #define RELAY1_PIN_INVERSE 1 + #define RELAY2_PIN 14 + #define RELAY2_PIN_INVERSE 1 + +#elif defined(WIFI_RELAY_NO) + + #define MANUFACTURER "JANGOE" + #define DEVICE "WIFI_RELAY_NO" + #define BUTTON1_PIN 12 + #define BUTTON1_RELAY 1 + #define BUTTON2_PIN 13 + #define BUTTON2_RELAY 2 + #define RELAY1_PIN 2 + #define RELAY1_PIN_INVERSE 0 + #define RELAY2_PIN 14 + #define RELAY2_PIN_INVERSE 0 + // ----------------------------------------------------------------------------- // ESPurna board (still beta) // ----------------------------------------------------------------------------- diff --git a/code/platformio.ini b/code/platformio.ini index 97c03780..634b0a9d 100644 --- a/code/platformio.ini +++ b/code/platformio.ini @@ -254,3 +254,24 @@ build_flags = -g -Wl,-Tesp8266.flash.1m128.ld -DDEBUG_PORT=Serial -DECOPLUG upload_speed = 115200 upload_port = "192.168.4.1" upload_flags = --auth=fibonacci --port 8266 + +[env:jangoe-debug] +platform = espressif8266 +framework = arduino +board = esp01_1m +lib_deps = ${common.lib_deps} +lib_ignore = ${common.lib_ignore} +extra_script = pio_hooks.py +build_flags = -g -DDEBUG_PORT=Serial -DWIFI_RELAY_NC + +[env:jangoe-debug-ota] +platform = espressif8266 +framework = arduino +board = esp01_1m +lib_deps = ${common.lib_deps} +lib_ignore = ${common.lib_ignore} +extra_script = pio_hooks.py +build_flags = -g -DDEBUG_PORT=Serial -DWIFI_RELAY_NC +upload_speed = 115200 +upload_port = "192.168.4.1" +upload_flags = --auth=fibonacci --port 8266 diff --git a/images/devices/jangoe-wifi-relay.png b/images/devices/jangoe-wifi-relay.png new file mode 100644 index 0000000000000000000000000000000000000000..271b6c7de35312678bb06620475a156f9e1c16be GIT binary patch literal 32956 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 Cr#xQ( literal 0 HcmV?d00001