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
|
||||
|
||||
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
|
||||
@@ -73,6 +73,12 @@ void MeasureGPIOInput() {
|
||||
}
|
||||
if (GPIOdata.size() > 0)
|
||||
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 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----------------------*/
|
||||
// default pin, if not set into the MQTT json
|
||||
|
||||
@@ -636,6 +636,10 @@ void setup() {
|
||||
|
||||
delay(1500);
|
||||
|
||||
#ifdef ZactuatorONOFF
|
||||
pinMode(ACTUATOR_ONOFF_GPIO, OUTPUT);
|
||||
digitalWrite(ACTUATOR_ONOFF_GPIO, ACTUATOR_ONOFF_DEFAULT);
|
||||
#endif
|
||||
#ifdef ZsensorBME280
|
||||
setupZsensorBME280();
|
||||
modules.add(ZsensorBME280);
|
||||
|
||||
@@ -925,6 +925,9 @@ build_flags =
|
||||
'-DZsensorGPIOInput="GPIOInput"'
|
||||
'-DACTUATOR_ONOFF_GPIO=12'
|
||||
'-DINPUT_GPIO=0'
|
||||
'-DACTUATOR_ON=0'
|
||||
'-DACTUATOR_ONOFF_DEFAULT=ACTUATOR_ON'
|
||||
'-DACTUATOR_BUTTON_TRIGGER_LEVEL=0'
|
||||
'-DGateway_Name="OpenMQTTGateway_SONOFF_RELAY"'
|
||||
board_build.flash_mode = dout
|
||||
|
||||
@@ -941,6 +944,9 @@ build_flags =
|
||||
'-DZsensorGPIOInput="GPIOInput"'
|
||||
'-DACTUATOR_ONOFF_GPIO=12'
|
||||
'-DINPUT_GPIO=0'
|
||||
'-DACTUATOR_ON=0'
|
||||
'-DACTUATOR_ONOFF_DEFAULT=ACTUATOR_ON'
|
||||
'-DACTUATOR_BUTTON_TRIGGER_LEVEL=0'
|
||||
'-DRF_RECEIVER_GPIO=4'
|
||||
'-DZgatewayRF="RF"'
|
||||
'-DGateway_Name="OpenMQTTGateway_SONOFF_BASIC_RFR3"'
|
||||
|
||||
Reference in new issue
Block a user