Hej
mam dwa przepływomierze (coś podobnego https://termipol.pl/przeplywomierze-cieczy/przeplywomierz-pm34?gclid=Cj0KCQjw27mhBhC9ARIsAIFsETEHEoil2DnVM0tEqknUMyQUpcmb6U7KFo1zypfcp23y0ACxx7CkRPgaAr6jEALw_wcB) i na chwilę obecną chciałbym podłączyć je do wemos d1 mini i mieć program który sprawdzi przepływ wody i powyżej zadanego wyśle wiadomość na mqtt ON/OFF oraz wyśle pobór wody też na mqtt
czy dobrze zaczynam? czy bedzie to prawidłowo działać? czekam jeszcze na elektronikę która może jutro będzie a może w czwartek...
#include <PubSubClient.h> #include <ESP8266WiFi.h> //ustawienia WiFi const char* ssid = "nazwa_sieci"; const char* password = "haslo_sieci"; //ustawienia MQTT const char* mqtt_server = "adres_serwera_MQTT"; const char* mqtt_topic = "temat/testowy"; const char* mqtt_client_name = "WemosClient"; //definicje wejść cyfrowych i licznika impulsów const int input_pin = D2; //D2 odpowiada GPIO4 na Wemos D1 mini volatile unsigned int pulse_count = 0; unsigned long previous_millis = 0; const unsigned long sample_time = 1000; //czas próbkowania w milisekundach //definicja progu częstotliwości impulsów const unsigned int threshold = 10; //liczba impulsów na sekundę //inicjalizacja obiektów WiFiClient wifi_client; PubSubClient mqtt_client(mqtt_server, 1883, wifi_client); //funkcja wywoływana przy zboczu narastającym na wejściu cyfrowym void count_pulse() { pulse_count++; } void setup() { //inicjalizacja wejścia cyfrowego pinMode(input_pin, INPUT_PULLUP); attachInterrupt(digitalPinToInterrupt(input_pin), count_pulse, RISING); //inicjalizacja połączenia WiFi WiFi.begin(ssid, password); while (WiFi.status() != WL_CONNECTED) { delay(1000); } //inicjalizacja połączenia MQTT mqtt_client.connect(mqtt_client_name); //wysłanie wiadomości powitalnej mqtt_client.publish(mqtt_topic, "Hello from Wemos!"); } void loop() { unsigned long current_millis = millis(); if (current_millis - previous_millis >= sample_time) { float frequency = (float)pulse_count / ((float)sample_time / 1000.0); pulse_count = 0; previous_millis = current_millis; //wysłanie wiadomości na MQTT, w zależności od częstotliwości impulsów if (frequency >= threshold) { mqtt_client.publish(mqtt_topic, "on"); } else { mqtt_client.publish(mqtt_topic, "off"); } } mqtt_client.loop(); }