NEWS
ESP8266-MQTT-Sensoren
-
Ermöglicht eine ESP8266 - MQTT - Kopplung auch die burstartige Übertragung von Wertepaaren (ZEIT, Wert)?
Ich möchte diese Wertepaare auf dem ESP errechnen und zwischenspeichern. Dann als Burst übertragen, um den Traffic zu konzentrieren.
Mit HM/CUX geht das nicht, da jedem Wert die Eingangszeit zugeordnet wird.
Jetzt möchte ich eben zu jedem Wert auch die Zeit abspeichern und dann an ioBroker per MQTT übertragen. Dann müßte MQTT/ioBroker die Daten entsprechend der mitgesendeten Zeiten einsortieren oder diese Datenpaare speichern und handeln.
Geht das?
-
Hallo
Habe das zweite Sketch MQTT - Tuersensor + Lichtsensor auf meinen ESP2266E12 gespielt.
Vorher noch die Netzwerk-Settings und MQTT-Settings geändert.
// Netzwerk-Settings <-------------------------!!ANPASSEN!! const char* ssid = "xxxx"; WLAN SSID const char* password = "xxxxxx"; WLAN Password const char* USE_DHCP = "off"; // "on" fuer DHCP IPAddress Myip(192,168,2,99); //static IP address (Sensor) IP des ESP2266E12 IPAddress gateway(192,168,2,1); //gateway ? IP der Fritzbox IPAddress subnet(255,255,255,0);//subnet //// MQTT-Settings IPAddress mqtt_server(192,168,2,74); // IP-MQTT-Broker IP des iOBroker Rechners const char* mqtt_username = "xxxxxx"; // MQTT-User Username in Konfig MQTT const char* mqtt_key = "xxxxxxxx"; // MQTT-Pass Passwort in Konfig MQTT
Der ESP2266E12 wird mir in der FritzBox angezeigt und ein Ping auf 192.168.2.99 kann ich auch absetzen.
Wenn ich den Taster auf den ESP drücke zeigt er mir in der Arduino IDE Konsole auch den Text das der Taster geschaltet hat an.
Ist die Gateway IP der FritzBox so richtig ?
Braucht kein Port eingetragen werden ?
Hier die Konfig des MQTT in iOBroker
Ist das so richtig konfiguriert ?Wenn ich in IOBroker Instanzen auf das Symbol ganz links vom MQTT gehe wird mir folgendes angezeigt:
Verbunden mit Host: falsch
Lebenszeichen: falsch
Verbunden mit mqtt: falsch
Wenn ich MQTT einschalte bekomme ich in der Log folgendes:
mqtt.0 2017-10-13 13:46:21.249 error exception by stop: server.destroy is not a function mqtt.0 2017-10-13 13:46:21.249 error Error: listen EADDRINUSE 0.0.0.0:1883 at Object.exports._errnoException (util.js:907:11) at exports._exceptionWithHostPort (util.js:930:20) at Server._listen2 (net.js:1253:14) at liste mqtt.0 2017-10-13 13:46:21.238 error uncaught exception: listen EADDRINUSE 0.0.0.0:1883 mqtt.0 2017-10-13 13:46:20.226 info starting. Version 1.3.2 in /opt/iobroker/node_modules/iobroker.mqtt, node: v4.8.4 host.netfritz-FUTRO-S900 2017-10-13 13:46:18.051 info instance system.adapter.mqtt.0 started with pid 17527 host.netfritz-FUTRO-S900 2017-10-13 13:46:18.018 info object change system.adapter.mqtt.0
Was muss ich mache das es läuft ?
Gruß NetFritz
-
Hallo
Habe mal gesucht nach der Bedeutung von EADDRINUSE
EADDRINUSE = Die angegebene Adresse wird schon verwendet.
Ist damit die IP 0.0.0.0 oder der Port 1883 gemeint ?
Gruß NetFritz
-
Hallo
Habe mit mit lsof -i die Portbelegung angeschaut und festgestellt
das mosquitto die Ports belegt.
Danach den Port auf 1882 in mqtt und Sketch eingestellt und siehe da
jetzt läuft es.
Gruß NetFritz
-
Super, vielen Dank für die Info!
Gesendet von meinem ZTE A2016 mit Tapatalk
-
Hallo
Zum Port
Die Internet Assigned Numbers Authority (IANA) reserviert für MQTT die Ports 1883 und 8883
Ist es ratsam den Port auf 1883 oder 8883 einzustellen ?
Gruß NetFritz
-
Auch mit MQTT kenne ich mich leider nicht aus. Aber der ioBroker hat einen MQTT Adapter. Und der gibt den Port 1883 an. Das wäre dann der für mich naheliegende Port.
Gesendet von meinem ZTE A2016 mit Tapatalk
-
Hallo
mosquitto ist ja auch ein mqtt-Broker der belegt auch den Port 1883.
Ich habe jetzt mosquitto deinstalliert.
mqtt iOBroher und den ESP wieder auf 1883 gestellt und es läuft.
Gruß NetFritz
-
<< Fehler gefunden >>
Poste mein Projekt wenn fertig.
-
Wie kannich denn per MQTT Nachrichten zurück an den ESP8266 schicken?
Meine Idee wäre per MQTT Befehl üver die vis Oberfläche den Messzyklus zu erhöhen/verändern.
Zum Beispiel von 4 Messungen pro Stunde auf 30 pro Stunde. Wie geht das?
-
dummystr=client.subscribe("Sonic1/delay_timer");
Publish ist schreiben.
Subscribe ist lesen.