Add triggering of actuator on/off state by button press.
This will enable using button on the gateway to switch any controlled attached actuators/relays when pressed. Adds the following macros: - ACTUATOR_ON; 0 or 1, set to the output level of the gpio pin to turn the actuator on. - ACTUATOR_ONOFF_DEFAULT; ACTUATOR_ON or !ACTUATOR_ON, set to the state desired on reset. - ACTUATOR_BUTTON_TRIGGER_LEVEL; 0 or 1, set to the sensing level which to detect a button press to change the actuator state.
This commit is contained in:
1 parent
2ae8f0c0c0
commit
45a0184320
5 files changed
+36
No files matched your search
@@ -76,4 +76,15 @@ void MQTTtoONOFF(char* topicOri, char* datacallback) {
|
|||||||
}
|
}
|
||||||
# endif
|
# endif
|
||||||
|
|
||||||
|
void ActuatorButtonTrigger() {
|
||||||
|
uint8_t level = !digitalRead(ACTUATOR_ONOFF_GPIO);
|
||||||
|
char* level_string = "ON";
|
||||||
|
if (level != ACTUATOR_ON) {
|
||||||
|
level_string = "OFF";
|
||||||
|
}
|
||||||
|
Log.trace(F("Actuator triggered %s by button" CR), level_string);
|
||||||
|
digitalWrite(ACTUATOR_ONOFF_GPIO, level);
|
||||||
|
pub(subjectGTWONOFFtoMQTT, level_string);
|
||||||
|
}
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
@@ -73,6 +73,12 @@ void MeasureGPIOInput() {
|
|||||||
}
|
}
|
||||||
if (GPIOdata.size() > 0)
|
if (GPIOdata.size() > 0)
|
||||||
pub(subjectGPIOInputtoMQTT, GPIOdata);
|
pub(subjectGPIOInputtoMQTT, GPIOdata);
|
||||||
|
|
||||||
|
# ifdef ZactuatorONOFF
|
||||||
|
if (InputState == ACTUATOR_BUTTON_TRIGGER_LEVEL) {
|
||||||
|
ActuatorButtonTrigger();
|
||||||
|
}
|
||||||
|
# endif
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -36,6 +36,15 @@ extern void MQTTtoONOFF(char* topicOri, JsonObject& RFdata);
|
|||||||
|
|
||||||
#define ONKey "setON"
|
#define ONKey "setON"
|
||||||
#define OFFKey "setOFF"
|
#define OFFKey "setOFF"
|
||||||
|
#ifndef ACTUATOR_ON
|
||||||
|
# define ACTUATOR_ON LOW
|
||||||
|
#endif
|
||||||
|
#ifndef ACTUATOR_ONOFF_DEFAULT
|
||||||
|
# define ACTUATOR_ONOFF_DEFAULT !ACTUATOR_ON
|
||||||
|
#endif
|
||||||
|
#ifndef ACTUATOR_BUTTON_TRIGGER_LEVEL
|
||||||
|
# define ACTUATOR_BUTTON_TRIGGER_LEVEL LOW
|
||||||
|
#endif
|
||||||
|
|
||||||
/*-------------------PIN DEFINITIONS----------------------*/
|
/*-------------------PIN DEFINITIONS----------------------*/
|
||||||
// default pin, if not set into the MQTT json
|
// default pin, if not set into the MQTT json
|
||||||
|
|||||||
@@ -636,6 +636,10 @@ void setup() {
|
|||||||
|
|
||||||
delay(1500);
|
delay(1500);
|
||||||
|
|
||||||
|
#ifdef ZactuatorONOFF
|
||||||
|
pinMode(ACTUATOR_ONOFF_GPIO, OUTPUT);
|
||||||
|
digitalWrite(ACTUATOR_ONOFF_GPIO, ACTUATOR_ONOFF_DEFAULT);
|
||||||
|
#endif
|
||||||
#ifdef ZsensorBME280
|
#ifdef ZsensorBME280
|
||||||
setupZsensorBME280();
|
setupZsensorBME280();
|
||||||
modules.add(ZsensorBME280);
|
modules.add(ZsensorBME280);
|
||||||
|
|||||||
@@ -925,6 +925,9 @@ build_flags =
|
|||||||
'-DZsensorGPIOInput="GPIOInput"'
|
'-DZsensorGPIOInput="GPIOInput"'
|
||||||
'-DACTUATOR_ONOFF_GPIO=12'
|
'-DACTUATOR_ONOFF_GPIO=12'
|
||||||
'-DINPUT_GPIO=0'
|
'-DINPUT_GPIO=0'
|
||||||
|
'-DACTUATOR_ON=0'
|
||||||
|
'-DACTUATOR_ONOFF_DEFAULT=ACTUATOR_ON'
|
||||||
|
'-DACTUATOR_BUTTON_TRIGGER_LEVEL=0'
|
||||||
'-DGateway_Name="OpenMQTTGateway_SONOFF_RELAY"'
|
'-DGateway_Name="OpenMQTTGateway_SONOFF_RELAY"'
|
||||||
board_build.flash_mode = dout
|
board_build.flash_mode = dout
|
||||||
|
|
||||||
@@ -941,6 +944,9 @@ build_flags =
|
|||||||
'-DZsensorGPIOInput="GPIOInput"'
|
'-DZsensorGPIOInput="GPIOInput"'
|
||||||
'-DACTUATOR_ONOFF_GPIO=12'
|
'-DACTUATOR_ONOFF_GPIO=12'
|
||||||
'-DINPUT_GPIO=0'
|
'-DINPUT_GPIO=0'
|
||||||
|
'-DACTUATOR_ON=0'
|
||||||
|
'-DACTUATOR_ONOFF_DEFAULT=ACTUATOR_ON'
|
||||||
|
'-DACTUATOR_BUTTON_TRIGGER_LEVEL=0'
|
||||||
'-DRF_RECEIVER_GPIO=4'
|
'-DRF_RECEIVER_GPIO=4'
|
||||||
'-DZgatewayRF="RF"'
|
'-DZgatewayRF="RF"'
|
||||||
'-DGateway_Name="OpenMQTTGateway_SONOFF_BASIC_RFR3"'
|
'-DGateway_Name="OpenMQTTGateway_SONOFF_BASIC_RFR3"'
|
||||||
|
|||||||
Reference in new issue
Block a user