Привет, всем, я новичок, и я живу во Франции, простите за мой язык русский, это только Google перевод.
Я использую несколько 8266 (ESP-01, ESP-12, ESP07 ..) и NarodMon: общественный контроль. Все работает отлично, и я просмотреть все свои датчики.
Я увидел, что функция «отправить команду на устройство». Они показывают, что Narodmon отправку #OK после РАЗА расписок пакетов. И мы можем сделать то же самое, посылая gpio2 = 1, например.
Какой код следует добавить Alex эскиз, чтобы отобразить на мониторе серии: gpio2 = 1 для отладки?
Или quelqun использовал эту функцию в Narodmon?
Спасибо за ответ.
Hello, to everyone, I am new, and I live in France, Sorry for my Russian language, it just google Translation.
I use several 8266 (ESP-01, ESP-12, ESP07 ..) and NarodMon: public monitoring. Everything works perfectly and I see all my sensors.
I saw that there was a "send command to device" function. They indicate that Narodmon sends #OK after every packets received. And we can do the same thing by sending gpio2 = 1 for example.
What code should I add to the sketch of Alex to be able to display, on the monitor serie: gpio2 = 1 for debuging?
Or did anyone use this feature in Narodmon?
Thank you for the answer.
Я использую несколько 8266 (ESP-01, ESP-12, ESP07 ..) и NarodMon: общественный контроль. Все работает отлично, и я просмотреть все свои датчики.
Я увидел, что функция «отправить команду на устройство». Они показывают, что Narodmon отправку #OK после РАЗА расписок пакетов. И мы можем сделать то же самое, посылая gpio2 = 1, например.
Какой код следует добавить Alex эскиз, чтобы отобразить на мониторе серии: gpio2 = 1 для отладки?
Или quelqun использовал эту функцию в Narodmon?
Спасибо за ответ.
Hello, to everyone, I am new, and I live in France, Sorry for my Russian language, it just google Translation.
I use several 8266 (ESP-01, ESP-12, ESP07 ..) and NarodMon: public monitoring. Everything works perfectly and I see all my sensors.
I saw that there was a "send command to device" function. They indicate that Narodmon sends #OK after every packets received. And we can do the same thing by sending gpio2 = 1 for example.
What code should I add to the sketch of Alex to be able to display, on the monitor serie: gpio2 = 1 for debuging?
Or did anyone use this feature in Narodmon?
Thank you for the answer.
Код:// Простой пример снятия температуры с ds18b20 и отправка его на сайт народного мониторинга. http://narodmon.ru #include <ESP8266WiFi.h> #include <DNSServer.h> #include <ESP8266WebServer.h> #include <WiFiManager.h> //https://github.com/tzapu/WiFiManager #include <OneWire.h> #include <DallasTemperature.h> #define debug true // вывод отладочных сообщений #define ONE_WIRE_BUS 2 // GPIO к которому подключен DS18B20 #define TEMPERATURE_PRECISION 12 // точность бит. Если глючит или врет, уменьшить до 9 #define postingInterval 300000 // интервал между отправками данных в миллисекундах (5 минут) OneWire oneWire(ONE_WIRE_BUS); DallasTemperature sensors(&oneWire); unsigned long lastConnectionTime = 0; // время последней передачи данных int NumberOfDevices; //сколько датчиков найдем. String Hostname; //имя железки - выглядит как ESPAABBCCDDEEFF т.е. ESP+mac адрес. void wifimanstart() { // Волшебная процедура начального подключения к Wifi. // Если не знает к чему подцепить - создает точку доступа ESP8266 и настроечную таблицу http://192.168.4.1 // Подробнее: https://github.com/tzapu/WiFiManager WiFiManager wifiManager; wifiManager.setDebugOutput(debug); wifiManager.setMinimumSignalQuality(); if (!wifiManager.autoConnect("ESP8266")) { if (debug) Serial.println("failed to connect and hit timeout"); delay(3000); //reset and try again, or maybe put it to deep sleep ESP.reset(); delay(5000); } if (debug) Serial.println("connected..."); } void setup() { DeviceAddress tempDeviceAddress; Hostname = "ESP"+WiFi.macAddress(); Hostname.replace(":",""); Serial.begin(115200); sensors.begin(); //ds18b20 NumberOfDevices = sensors.getDeviceCount(); //поищем. Serial.print("Found "); Serial.print(sensors.getDeviceCount(), DEC); Serial.print(" devices. "); Serial.print("Parasite power is: "); if (sensors.isParasitePowerMode()) Serial.println("ON"); else Serial.println("OFF"); for (int i = 0; i < NumberOfDevices; i++) { if (sensors.getAddress(tempDeviceAddress, i)) sensors.setResolution(tempDeviceAddress, TEMPERATURE_PRECISION); }//настроим. WiFi.hostname(Hostname); wifimanstart(); Serial.println(WiFi.localIP()); Serial.println(WiFi.macAddress()); Serial.print("Narodmon ID: "); Serial.println(Hostname); lastConnectionTime = millis() - postingInterval + 15000; //первая передача на народный мониторинг через 15 сек. } bool SendToNarodmon() { // Собственно формирование пакета и отправка. WiFiClient client; DeviceAddress tempDeviceAddress; String buf; buf = "#" + Hostname + "\r\n"; // заголовок NumberOfDevices = sensors.getDeviceCount(); //количество датчиков ? sensors.requestTemperatures(); //Начали измерение delay(20); for (int i = 0; i < NumberOfDevices; i++) { //перечисляем датчики и их показания sensors.getAddress(tempDeviceAddress, i); buf = buf + "#"; for (uint8_t i = 0; i < 8; i++) { if (tempDeviceAddress[i] < 16) buf = buf + "0"; buf = buf + String(tempDeviceAddress[i], HEX); } // адрес датчика buf = buf + "#" + String(sensors.getTempCByIndex(i)) + "\r\n"; //и температура } buf = buf + "##\r\n"; // закрываем пакет if (!client.connect("narodmon.ru", 8283)) { // попытка подключения Serial.println("connection failed"); return false; // не удалось; } else { client.print(buf); // и отправляем данные if (debug) Serial.print(buf); while (client.available()) { String line = client.readStringUntil('\r'); // если что-то в ответ будет - все в Serial Serial.print(line); } } return true; //ушло } void loop() { if (millis() - lastConnectionTime > postingInterval) { // ждем 5 минут и отправляем if (WiFi.status() == WL_CONNECTED) { // ну конечно если подключены if (SendToNarodmon()) { lastConnectionTime = millis(); }else{ lastConnectionTime = millis() - postingInterval + 15000; }//следующая попытка через 15 сек }else{ lastConnectionTime = millis() - postingInterval + 15000; Serial.println("Not connected to WiFi");}//следующая попытка через 15 сек } yield(); // что за команда - фиг знает, но ESP работает с ней стабильно и не глючит. }