Repeater NightLamp, set kuhlight

This commit is contained in:
2021-01-09 12:53:53 +03:00
parent f525271d13
commit 5852ea9ff9
2 changed files with 25 additions and 9 deletions

View File

@@ -12,6 +12,7 @@ const char* mqtt_server = "192.168.1.250";
#define LED_WRK (14) #define LED_WRK (14)
#define SENS (4) #define SENS (4)
#define LAMP (5) #define LAMP (5)
#define LED_MS (300)
AsyncMqttClient mqttClient; AsyncMqttClient mqttClient;
Ticker mqttReconnectTimer; Ticker mqttReconnectTimer;
@@ -24,7 +25,8 @@ unsigned long cRun = 0;
unsigned long lastSense; unsigned long lastSense;
uint16_t nSec = 0; uint16_t nSec = 0;
//uint8_t lamp, lampP; //uint8_t lamp, lampP;
uint8_t light; uint8_t lightk;
unsigned long led_ms;
bool switchLight(uint8_t nLamp, int state, bool pub); bool switchLight(uint8_t nLamp, int state, bool pub);
void connectToWifi(); void connectToWifi();
@@ -88,11 +90,12 @@ void setup() {
Serial.println("Connect to WiFi"); Serial.println("Connect to WiFi");
connectToWifi(); connectToWifi();
led_ms = millis();
lastSense = millis(); lastSense = millis();
} }
void loop() { void loop() {
static bool led_wrk = false; //static bool led_wrk = false;
ArduinoOTA.handle(); ArduinoOTA.handle();
if(digitalRead(SENS) == 0){ if(digitalRead(SENS) == 0){
@@ -104,23 +107,30 @@ void loop() {
if(cRun + 999 < millis()){ if(cRun + 999 < millis()){
cRun = millis(); cRun = millis();
nSec++; nSec++;
led_wrk = !led_wrk; //led_wrk = !led_wrk;
digitalWrite(LED_WRK, led_wrk); //digitalWrite(LED_WRK, led_wrk);
if(nSec > 59){ if(nSec > 59){
if(mqttClient.connected()){ if(mqttClient.connected()){
char v[11]; char v[11];
ultoa(millis(), v, 10); ultoa(millis(), v, 10);
digitalWrite(LED_WRK, LOW);
led_ms = millis();
mqttClient.publish("/home/kuh/ltblmillis", 0, false, v); mqttClient.publish("/home/kuh/ltblmillis", 0, false, v);
} }
nSec = 0; nSec = 0;
} }
} }
if(led_ms + LED_MS <= millis()) digitalWrite(LED_WRK, HIGH);
} }
bool switchLight(uint8_t nLamp, int state, bool pub) bool switchLight(uint8_t nLamp, int state, bool pub)
{ {
digitalWrite(nLamp, state); digitalWrite(nLamp, state);
if (pub) mqttClient.publish("/home/kuh/lighttbl", 1, false, state ? "true" : "false"); if (pub){
digitalWrite(LED_WRK, LOW);
led_ms = millis();
mqttClient.publish("/home/kuh/lighttbl", 1, false, state ? "true" : "false");
}
return state; return state;
} }
@@ -144,7 +154,8 @@ void onWifiDisconnect(const WiFiEventStationModeDisconnected& event) {
} }
void onMqttConnect(bool sessionPresent) { void onMqttConnect(bool sessionPresent) {
mqttClient.subscribe("/home/kuh/lighttbl", 1); mqttClient.publish("/home/kuh/lighttbl_set", 1, false, digitalRead(LAMP) == 1 ? "true" : "false");
mqttClient.subscribe("/home/kuh/lighttbl_set", 1);
mqttClient.publish("/home/kuh/lighttbl", 1, false, digitalRead(LAMP) == 1 ? "true" : "false"); mqttClient.publish("/home/kuh/lighttbl", 1, false, digitalRead(LAMP) == 1 ? "true" : "false");
digitalWrite(LED_MQ, HIGH); digitalWrite(LED_MQ, HIGH);
} }
@@ -157,8 +168,11 @@ void onMqttDisconnect(AsyncMqttClientDisconnectReason reason) {
} }
void onMqttMessage(char* topic, char* payload, AsyncMqttClientMessageProperties properties, size_t len, size_t index, size_t total) { void onMqttMessage(char* topic, char* payload, AsyncMqttClientMessageProperties properties, size_t len, size_t index, size_t total) {
if(strcmp(topic, "/home/kuh/lighttbl") == 0){ char pl[6];
if (strcmp("true", payload) == 0) switchLight(LAMP, 1, false);//lStat2 = true; strncpy(pl, payload, len);
else switchLight(LAMP, 0, false);//lStat2 = false; pl[len] = '\0';
if(strcmp(topic, "/home/kuh/lighttbl_set") == 0){
if (strcmp("true", pl) == 0) switchLight(LAMP, 1, true);//lStat2 = true;
else switchLight(LAMP, 0, true);//lStat2 = false;
} }
} }

View File

@@ -9,6 +9,8 @@
// Enable and select radio type attached // Enable and select radio type attached
#define MY_RADIO_RF24 #define MY_RADIO_RF24
#define MY_RF24_CHANNEL (105) #define MY_RF24_CHANNEL (105)
#define MY_RF24_PA_LEVEL RF24_PA_MAX
#define MY_REPEATER_FEATURE
#include <MySensors.h> #include <MySensors.h>
#define RELAY_PIN 3 // Arduino Digital I/O pin number for first relay (second on pin+1 etc) #define RELAY_PIN 3 // Arduino Digital I/O pin number for first relay (second on pin+1 etc)