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:
h2zero authored and Florian committed 2021-07-09 21:52:40 -05:00
1 parent 2ae8f0c0c0
commit 45a0184320
5 files changed
+36

No files matched your search

+11
View File
@@ -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
+6
View File
@@ -73,6 +73,12 @@ void MeasureGPIOInput() {
}
if (GPIOdata.size() > 0)
pub(subjectGPIOInputtoMQTT, GPIOdata);
# ifdef ZactuatorONOFF
if (InputState == ACTUATOR_BUTTON_TRIGGER_LEVEL) {
ActuatorButtonTrigger();
}
# endif
}
}
+9
View File
@@ -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
+4
View File
@@ -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);
+6
View File
@@ -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"'