From bdac0e171364bc6bad5dff0d4dab1d310eec2853 Mon Sep 17 00:00:00 2001 From: Florian <1technophile@users.noreply.github.com> Date: Tue, 10 Apr 2018 22:18:35 +0200 Subject: [PATCH] add actuator Possibility to command a pin HIGH/LOW by MQTT #192 --- OpenMQTTGateway.ino | 10 +++++++++ User_config.h | 6 +++++ ZactuatorONOFF.ino | 54 +++++++++++++++++++++++++++++++++++++++++++++ ZgatewayRF2.ino | 3 --- config_ONOFF.h | 33 +++++++++++++++++++++++++++ tests/Test_config.h | 6 +++++ 6 files changed, 109 insertions(+), 3 deletions(-) create mode 100644 ZactuatorONOFF.ino create mode 100644 config_ONOFF.h diff --git a/OpenMQTTGateway.ino b/OpenMQTTGateway.ino index 90b150d..4c7d42b 100644 --- a/OpenMQTTGateway.ino +++ b/OpenMQTTGateway.ino @@ -295,6 +295,9 @@ void setup() #ifdef ZsensorTSL2561 setupZsensorTSL2561(); #endif + #ifdef ZactuatorONOFF + setupONOFF(); + #endif #ifdef ZgatewayIR setupIR(); #endif @@ -681,6 +684,9 @@ digitalWrite(led_send, LOW); #ifdef ZgatewayRFM69 MQTTtoRFM69(topicOri, datacallback); #endif +#ifdef ZactuatorONOFF + MQTTtoONOFF(topicOri, datacallback); +#endif //YELLOW OFF digitalWrite(led_send, HIGH); } @@ -715,6 +721,10 @@ void revert_hex_data(char * in, char * out, int l){ out[l-1] = '\0'; } +bool to_bool(String const& s) { // thanks Chris Jester-Young from stackoverflow + return s != "0"; +} + //trace void trc(String msg){ if (TRACE) { diff --git a/User_config.h b/User_config.h index 265201f..3067a41 100644 --- a/User_config.h +++ b/User_config.h @@ -93,6 +93,8 @@ const byte subnet[] = { 255, 255, 255, 0 }; //ip adress #include "config_IR.h" #define ZgatewayBT #include "config_BT.h" + //#define ZactuatorONOFF + //#include "config_ONOFF.h" //#define ZsensorINA226 //#include "config_INA226.h" //#define ZsensorHCSR501 @@ -117,6 +119,8 @@ const byte subnet[] = { 255, 255, 255, 0 }; //ip adress //#include "config_IR.h" #define ZgatewayBT #include "config_BT.h" + //#define ZactuatorONOFF + //#include "config_ONOFF.h" //#define ZsensorINA226 //#include "config_INA226.h" //#define ZsensorHCSR501 @@ -141,6 +145,8 @@ const byte subnet[] = { 255, 255, 255, 0 }; //ip adress #include "config_IR.h" #define ZgatewayBT #include "config_BT.h" + //#define ZactuatorONOFF + //#include "config_ONOFF.h" //#define ZsensorINA226 //#include "config_INA226.h" //#define ZsensorDHT diff --git a/ZactuatorONOFF.ino b/ZactuatorONOFF.ino new file mode 100644 index 0000000..bedbf05 --- /dev/null +++ b/ZactuatorONOFF.ino @@ -0,0 +1,54 @@ +/* + OpenMQTTGateway Addon - ESP8266 or Arduino program for home automation + + Act as a wifi or ethernet gateway between your 433mhz/infrared IR signal and a MQTT broker + Send and receiving command by MQTT + + Output pin High or Low + + Copyright: (c)Florian ROBERT + + Contributors: + - 1technophile + + This file is part of OpenMQTTGateway. + + OpenMQTTGateway is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + OpenMQTTGateway is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . +*/ +#ifdef ZactuatorONOFF + +void setupONOFF(){ + trc(F("ACTUATOR_ONOFF_PIN")); + trc(String(ACTUATOR_ONOFF_PIN)); + //init + pinMode(ACTUATOR_ONOFF_PIN, OUTPUT); + trc(F("Set to OFF")); + digitalWrite(ACTUATOR_ONOFF_PIN, LOW); + trc(F("ZactuatorONOFF setup done ")); +} + +void MQTTtoONOFF(char * topicOri, char * datacallback){ + + bool boolSWITCHTYPE; + boolSWITCHTYPE = to_bool(datacallback); + String topic = topicOri; + + if ((topic == subjectMQTTtoONOFF)){ + trc(F("MQTTtoONOFF")); + trc(String(boolSWITCHTYPE)); + digitalWrite(ACTUATOR_ONOFF_PIN, boolSWITCHTYPE); + } +} +#endif + diff --git a/ZgatewayRF2.ino b/ZgatewayRF2.ino index 57c7769..35d8892 100644 --- a/ZgatewayRF2.ino +++ b/ZgatewayRF2.ino @@ -212,7 +212,4 @@ void MQTTtoRF2(char * topicOri, char * datacallback) { } } -bool to_bool(String const& s) { // thanks Chris Jester-Young from stackoverflow - return s != "0"; -} #endif diff --git a/config_ONOFF.h b/config_ONOFF.h new file mode 100644 index 0000000..3db2cc0 --- /dev/null +++ b/config_ONOFF.h @@ -0,0 +1,33 @@ +/* + OpenMQTTGateway - ESP8266 or Arduino program for home automation + + Act as a wifi or ethernet gateway between your 433mhz/infrared IR signal and a MQTT broker + Send and receiving command by MQTT + + This files enables to set your parameter for the ON OFF actuator + + Copyright: (c)Florian ROBERT + + This file is part of OpenMQTTGateway. + + OpenMQTTGateway is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + OpenMQTTGateway is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . +*/ + +/*----------------------------USER PARAMETERS-----------------------------*/ +/*-------------DEFINE YOUR MQTT PARAMETERS BELOW----------------*/ +#define subjectMQTTtoONOFF Base_Topic Gateway_Name "/commands/MQTTtoONOFF" + +/*-------------------PIN DEFINITIONS----------------------*/ +#define ACTUATOR_ONOFF_PIN 4 + diff --git a/tests/Test_config.h b/tests/Test_config.h index 4904f4e..dabed36 100644 --- a/tests/Test_config.h +++ b/tests/Test_config.h @@ -91,6 +91,8 @@ const byte subnet[] = { 255, 255, 255, 0 }; //ip adress #include "config_IR.h" #define ZgatewayBT #include "config_BT.h" + #define ZactuatorONOFF + #include "config_ONOFF.h" #define ZsensorINA226 #include "config_INA226.h" #define ZsensorHCSR501 @@ -115,6 +117,8 @@ const byte subnet[] = { 255, 255, 255, 0 }; //ip adress //#include "config_IR.h" #define ZgatewayBT #include "config_BT.h" + #define ZactuatorONOFF + #include "config_ONOFF.h" //#define ZsensorINA226 //#include "config_INA226.h" //#define ZsensorHCSR501 @@ -139,6 +143,8 @@ const byte subnet[] = { 255, 255, 255, 0 }; //ip adress //#include "config_IR.h" //#define ZgatewayBT //#include "config_BT.h" + //#define ZactuatorONOFF + //#include "config_ONOFF.h" //#define ZsensorINA226 //#include "config_INA226.h" //#define ZsensorDHT