#include #include #include #define RELAY1 2 #define MQTT_CLIENT "zew_rel1_1" // mqtt client_id #define MQTT_SERVER "192.168.2.221" // mqtt server #define MQTT_PORT 1883 // mqtt port #define MQTT_TOPIC "zew_rel1_1" // mqtt topic #define MQTT_USER "mqtt_u" // mqtt user #define MQTT_PASS "mqtt_p" // mqtt password #define WIFI_SSID "WiFi SSID" // wifi ssid #define WIFI_PASS "WiFi PASS" // wifi password #define WERSJA "ESP_rel1_1_v1" bool rememberRelayState = true; // czy pamietac ustawienie przekaznikow a eeprom bool SS1 = false; bool requestRestart = false; float rssi_p, rssi_s, rssi_o; int licz = 1; unsigned long zadanie_0; unsigned long zadanie_1; long czas_temp = 10; //co ile ma być odczyt rssi int licznik = 60; //co ile odczytów wysyłamy MQTT char bufor[10]; int kUpdFreq = 1; // co ile minut sprawdzac polaczenie z wifi int kRetries = 10; // powtorki polaczenie wifi int p_stanR1; String message=""; WiFiClient wifiClient; PubSubClient mqttClient(wifiClient); void callback(char* topic, byte* payload, unsigned int length) { for (int i=0;i licznik){ rssi_s = rssi_s / (licz-1); if(rssi_s != rssi_o){ rssi_o = rssi_s; dtostrf(rssi_o , 0, 1, bufor); mqttClient.publish(MQTT_TOPIC"/rssi", bufor, false); } rssi_s = 0; licz = 1; } } void checkStatus() { if (SS1) { SS1 = false; if(digitalRead(RELAY1) == LOW) { if (rememberRelayState) { EEPROM.write(0, 1); } mqttClient.publish(MQTT_TOPIC"/stat", "r1_on", false); } else { if (rememberRelayState) { EEPROM.write(0, 0); } mqttClient.publish(MQTT_TOPIC"/stat", "r1_off", false); } if (rememberRelayState) { EEPROM.commit(); } } if (requestRestart) { delay(3000); ESP.restart(); } } void sprawdz_zadania() { if ((millis() > zadanie_0 + (kUpdFreq*60000)) || (millis() < zadanie_0)) { zadanie_0 = millis(); sprawdz_polaczenie(); } if ((millis() > zadanie_1 + (czas_temp*1000)) || (millis() < zadanie_1)) { zadanie_1 = millis(); odczyt_rssi(); } }