#include #include #include #include // Pentru nodMcu32s //BMP180 //SDA = 21 //SCL = 22 // 3.3V // 5v // Gnd #ifdef LED #undef LED #endif #define LED 2 // GPIO 23 (D4) pentru LED bool led_State = false; #define REL1 16 // GPIO 16 bool rel1_State = false; #define REL2 17 // GPIO 17 bool rel2_State = false; float temperatura, presiune, atm, mmHg ; const long perioada = 10000, t_monostabil = 3000; // intervale fixe in milisecunde //10s perioada de transmitere automata a datelor //long rssi = 0; unsigned long long ts, ts1; // WiFi settings const char *ssid[] = {"masserv-1", "DIGI-B378", "Acasuca", "Acasuca_2.4G"}; const char *password[]={"protocoale", "HYEkzKq6", "pavlov61ap7", "kNY2ph3mmrnT6zk4"}; // setari MQTT const char *mqtt_broker = "masserv.utcluj.ro"; // maserv broker endpoint const char *mqtt_topic = "mas/esp32"; // MQTT topic pentru transmitere feedback comenzi led, r1, r2 si mesaje de stare const char *mqtt_topic_led = "mas/esp32/led"; // MQTT topic pentru primire comenzi "ledon/ledoff" const char *mqtt_topic_r1 = "mas/esp32/rel1"; // MQTT topic pentru primire comenzi releu1 "r1on/r1off" const char *mqtt_topic_r2 = "mas/esp32/rel2"; // MQTT topic pentru primire comenzi releu2 "r2on/r2off" const char *mqtt_topic_t = "mas/esp32/temp"; // MQTT topic pentru trimitere temperatura const char *mqtt_topic_p = "mas/esp32/pres"; // MQTT topic pentru trimitere presiune in Pa const char *mqtt_topic_a = "mas/esp32/atm"; // MQTT topic pentru trimitere presiune in bar const char *mqtt_topic_mmHg = "mas/esp32/mmHg"; // MQTT topic pentru trimitere presiune in mmHg const char *mqtt_username = "iot_client"; // MQTT username pentru autentificare const char *mqtt_password = "ASA123"; // MQTT parola pentru autentficare const int mqtt_port = 1883; // MQTT port (TCP) // Initializare obiecte BMP280 bmp280; WiFiClient espClient; PubSubClient mqtt_client(espClient); void connectToWiFi(); void connectToMQTTBroker(); void mqttCallback(char *topic, byte *payload, unsigned int length); void setup() { pinMode(LED, OUTPUT); digitalWrite(LED, LOW); led_State = false; pinMode(REL1, OUTPUT); pinMode(REL2, OUTPUT); digitalWrite(REL1, LOW); digitalWrite(REL2, LOW); rel1_State = false; rel2_State = false; Serial.begin(115200); connectToWiFi(); mqtt_client.setServer(mqtt_broker, mqtt_port); mqtt_client.setCallback(mqttCallback); connectToMQTTBroker(); Serial.println("Initializare BMP280"); bmp280.init(); /* Wire.begin(); if (!bmp280.init()) { Serial.println("BMP280 nu este conectat!"); } */ ts = millis(); ts1 = millis(); }//sfarsitul setup void connectToWiFi() { //Serial.println("\nConnectare la WiFi:"); for (byte s=0; s= perioada) || (millis() < ts) ) { ts = millis(); citireTempPres(); trimiteStareRelee(); }// end if millis //Reconectare la server MQTT if (!mqtt_client.connected()) { connectToMQTTBroker(); } mqtt_client.loop(); //Temporizarea Rel1 la t_monostabil = 1 secunda if (rel1_State == true){ if(millis() - ts1 >= t_monostabil){ digitalWrite(REL1, LOW); // Opreste releul rel1_State = false; mqtt_client.publish(mqtt_topic, String("r1off").c_str(), false); ts1 = millis(); } }//end if rel1_State }// end loop // Secventa de break; /* for (i = 0; i < 10; i++) { if (i == 4) { break; } printf("%d\n", i); } */