First commit

This commit is contained in:
2020-08-01 13:47:02 +03:00
commit ac18805ff4
142 changed files with 8325 additions and 0 deletions

175
ESP12SmallRoom/src/main.cpp Normal file
View File

@@ -0,0 +1,175 @@
#include <Arduino.h>
#include <ESP8266WiFi.h>
#include <ESP8266mDNS.h>
#include <WiFiUdp.h>
#include <ArduinoOTA.h>
#include <Wire.h>
#include <Adafruit_HTU21DF.h>
#include <PubSubClient.h>
#include <leds.h>
#define LED_BLUE D5 //GPIO14
#define LED_GREEN D6 //GPIO12
#define LED_RED D7 //GPIO13
#define PWR_SENS D8 //GPIO13
Adafruit_HTU21DF htu = Adafruit_HTU21DF();
WiFiClient espClient;
PubSubClient client(espClient);
leds lGreen(LED_GREEN, 200);
leds lRed(LED_RED, 200);
leds lBlue(LED_BLUE, 200);
const char* ssid = "wf-home";
const char* password = "0ndthnrf";
const char* mqtt_server = "192.168.1.250";
float temp, rel_hum;
bool izm = false;
unsigned long cRun;
int minCnt = 0;
int measCnt = 1;
void reconnect();
void publishMin();
void publishSec();
void setup() {
Serial.begin(9600);
pinMode(LED_BUILTIN, OUTPUT);
WiFi.mode(WIFI_STA);
WiFi.setOutputPower(20.5f);
WiFi.hostname("ESP-SmallRoom");
WiFi.begin(ssid, password);
while (WiFi.waitForConnectResult() != WL_CONNECTED) {
//Serial.println("Connection Failed! Rebooting...");
// "Соединиться не удалось! Перезагрузка..."
delay(5000);
ESP.restart();
}
digitalWrite(LED_BUILTIN, !WiFi.isConnected());
ArduinoOTA.onStart([]() { /*Serial.println("Start");*/}); // "Начало OTA-апдейта"
ArduinoOTA.onEnd([]() { /*Serial.println("\nEnd");*/}); // "Завершение OTA-апдейта"
ArduinoOTA.onProgress([](unsigned int progress, unsigned int total) { /*Serial.printf("Progress: %u%%\r", (progress / (total / 100)));*/ });
ArduinoOTA.onError([](ota_error_t error) {
/*Serial.printf("Error[%u]: ", error);
if (error == OTA_AUTH_ERROR) Serial.println("Auth Failed"); // "Ошибка при аутентификации"
else if (error == OTA_BEGIN_ERROR) Serial.println("Begin Failed"); // "Ошибка при начале OTA-апдейта"
else if (error == OTA_CONNECT_ERROR) Serial.println("Connect Failed"); // "Ошибка при подключении"
else if (error == OTA_RECEIVE_ERROR) Serial.println("Receive Failed"); // "Ошибка при получении данных"
else if (error == OTA_END_ERROR) Serial.println("End Failed"); // "Ошибка при завершении OTA-апдейта"*/
});
ArduinoOTA.begin();
pinMode(LED_GREEN, OUTPUT);
pinMode(LED_BLUE, OUTPUT);
pinMode(LED_RED, OUTPUT);
pinMode(PWR_SENS, OUTPUT);
digitalWrite(LED_GREEN, LOW);
digitalWrite(LED_BLUE, LOW);
digitalWrite(LED_RED, LOW);
// Serial.begin(115200);
Serial.println("HTU21D-F");
digitalWrite(PWR_SENS, HIGH);
delay(200);
if (!htu.begin()) {
Serial.println("Couldn't find sensor!");
while (1);
}
temp = htu.readTemperature();
rel_hum = htu.readHumidity();
//digitalWrite(PWR_SENS, LOW);
client.setServer(mqtt_server, 1883);
cRun = millis();
}
void loop() {
ArduinoOTA.handle();
lGreen.tick();
lRed.tick();
lBlue.tick();
if (!client.connected()) {
reconnect();
}
client.loop();
if(cRun + 999 < millis()){
cRun = millis();
if(measCnt == 0){
temp += (htu.readTemperature() - temp) / 6.0f;
rel_hum += (htu.readHumidity() - rel_hum) / 6.0f;
digitalWrite(PWR_SENS, LOW);
}
if(++measCnt == 9){
digitalWrite(PWR_SENS, HIGH);
measCnt = 0;
}
//Serial.print("T: ");Serial.print(temp);Serial.print("\tH: ");Serial.println(rel_hum);
if(++minCnt == 59){
publishMin();
minCnt = 0;
}
if(minCnt % 10 == 0) publishSec();
}
}
void reconnect() {
lRed.start();
//digitalWrite(LED_RED, HIGH);
//Serial.print("Attempting MQTT connection...");
// "Попытка подключиться к MQTT-брокеру... "
// Пытаемся подключиться:
if (client.connect("ESPSmallRoom")) {
//Serial.println("connected"); // "подключен"
// подписываемся или переподписываемся на топик;
// можно подписаться не только на один, а на несколько топиков
} else {
//Serial.print("failed, rc="); // "подключение не удалось"
//Serial.print(client.state());
//Serial.println(" try again in 5 seconds");
}
//delay(100);
//digitalWrite(LED_RED, LOW);
}
void publishMin()
{
char strFVal[11];
if (client.connected()) {
lGreen.start();
//digitalWrite(LED_BLUE, HIGH);
if(!isnan(temp)){
dtostrf(temp, 6, 1, strFVal);
client.publish("/home/smallroom/temp", strFVal);
}
if(!isnan(rel_hum)){
dtostrf(rel_hum, 6, 1, strFVal);
client.publish("/home/smallroom/rel_hum", strFVal);
}
itoa(cRun, strFVal, 10);
client.publish("/home/smallroom/millis", strFVal);
//digitalWrite(LED_BLUE, LOW);
}
}
void publishSec()
{
char strFVal[11];
if (client.connected()) {
lBlue.start();
//digitalWrite(LED_GREEN, HIGH);
if(!isnan(temp)){
dtostrf(temp, 7, 3, strFVal);
client.publish("/hometest/smallroom/temp", strFVal);
}
if(!isnan(rel_hum)){
dtostrf(rel_hum, 7, 3, strFVal);
client.publish("/hometest/smallroom/rel_hum", strFVal);
}
itoa(WiFi.RSSI(), strFVal, 10);
client.publish("/hometest/smallroom/RSSI", strFVal);
itoa(cRun, strFVal, 10);
client.publish("/hometest/smallroom/millis", strFVal);
//digitalWrite(LED_GREEN, LOW);
}
}