From 65d54b609ef674d1a8f1d23b0bd265ffae47fb14 Mon Sep 17 00:00:00 2001 From: lexa Date: Sun, 8 Nov 2020 18:23:07 +0300 Subject: [PATCH] Added move sensor to smallroom --- ESP12SmallRoom/src/main.cpp | 28 +++++++++++++++++++++++----- 1 file changed, 23 insertions(+), 5 deletions(-) diff --git a/ESP12SmallRoom/src/main.cpp b/ESP12SmallRoom/src/main.cpp index 21ed795..0ae807c 100644 --- a/ESP12SmallRoom/src/main.cpp +++ b/ESP12SmallRoom/src/main.cpp @@ -11,7 +11,8 @@ #define LED_BLUE D5 //GPIO14 #define LED_GREEN D6 //GPIO12 #define LED_RED D7 //GPIO13 -#define PWR_SENS D8 //GPIO13 +#define PWR_SENS D8 //GPIO15 +#define MOVE_SENS D0 //GPIO16 Adafruit_HTU21DF htu = Adafruit_HTU21DF(); WiFiClient espClient; @@ -29,6 +30,8 @@ bool izm = false; unsigned long cRun; int minCnt = 0; int measCnt = 1; +uint8_t mv, oldmv; +uint16_t adc, oldadc, delta; void reconnect(); void publishMin(); @@ -64,6 +67,7 @@ void setup() { pinMode(LED_BLUE, OUTPUT); pinMode(LED_RED, OUTPUT); pinMode(PWR_SENS, OUTPUT); + pinMode(MOVE_SENS, INPUT); digitalWrite(LED_GREEN, LOW); digitalWrite(LED_BLUE, LOW); digitalWrite(LED_RED, LOW); @@ -93,23 +97,32 @@ void loop() { } client.loop(); - if(cRun + 999 < millis()){ + if(cRun + 99 < millis()){ cRun = millis(); + adc = analogRead(A0); + mv = digitalRead(MOVE_SENS); + if(mv != oldmv){ + oldmv = mv; + client.publish("/home/smallroom/light", mv == 0 ? "0" : "1"); + }; + if(abs(adc - oldadc) > delta){ + //publish + } if(measCnt == 0){ temp += (htu.readTemperature() - temp) / 6.0f; rel_hum += (htu.readHumidity() - rel_hum) / 6.0f; digitalWrite(PWR_SENS, LOW); } - if(++measCnt == 29){ + if(++measCnt == 299){ digitalWrite(PWR_SENS, HIGH); measCnt = 0; } //Serial.print("T: ");Serial.print(temp);Serial.print("\tH: ");Serial.println(rel_hum); - if(++minCnt == 59){ + if(++minCnt == 599){ publishMin(); minCnt = 0; } - if(minCnt % 10 == 0) publishSec(); + if(minCnt % 100 == 0) publishSec(); } } @@ -123,6 +136,7 @@ void reconnect() { //Serial.println("connected"); // "подключен" // подписываемся или переподписываемся на топик; // можно подписаться не только на один, а на несколько топиков + client.subscribe("home/smallroom/ldelta"); } else { //Serial.print("failed, rc="); // "подключение не удалось" //Serial.print(client.state()); @@ -146,6 +160,8 @@ void publishMin() dtostrf(rel_hum, 6, 1, strFVal); client.publish("/home/smallroom/rel_hum", strFVal); } + itoa(adc, strFVal, 10); + client.publish("/home/smallroom/light", strFVal); // itoa(cRun, strFVal, 10); // client.publish("/home/smallroom/millis", strFVal); //digitalWrite(LED_BLUE, LOW); @@ -170,6 +186,8 @@ void publishSec() client.publish("/hometest/smallroom/RSSI", strFVal); itoa(cRun, strFVal, 10); client.publish("/hometest/smallroom/millis", strFVal); + itoa(adc, strFVal, 10); + client.publish("/home/smallroom/light", strFVal); //digitalWrite(LED_GREEN, LOW); } }