NEWS
OBI Funk-Steckdosenumbau ESP8266 (Generation1 Rund)
-
Um ehrlich zu sein, ich bin beim Thema Hausautomation generell noch am Anfang. Falls Mosquitto dir nichts sagt. Das ist ein einfacher MQTT Broker (unter anderem auf dem Raspberry Pi - https://mosquitto.org/).
Wenn ich die Steckdose boote/reboote erhalte ich folgende Message von der Steckdose (Name: Steckdose02):
MQQTT_Start.png
Wenn ich den Stromfluß der Steckdose einschalte (mosquitto_pub -h 127.0.0.1 -t Steckdose02/setRelay -m "on" -d) erhalte ich folgende Nachricht:
MQQTT_On.png
Wenn ich den Status der Steckdose abfrage (mosquitto_pub -h 127.0.0.1 -t Steckdose02/setRelay -m "?" -d), erhalte ich folgende Message:
MQQTT_RelayStatus.png
Diese Message enthält keinen Status der Steckdose.
Mein Problem ist, dass ich den Zustand (on, off, delayOn, …) also nur beim Booten und beim Schalten der Steckdose erhalte. Kann diesen aber später nicht nochmal Abfragen. Beim Status wäre eine Abfragemöglichkeit sinnvoll oder? Mein Szenario ist, dass der Heimautomationsserver Startet und als erstes den Status der Steckdose abfragt...
Hallo Sissi,
ich nutze die Firmware 1.1.9 und das Protokoll MQTT für die Kommunikation mit den OBI Steckdosen. Hierfür habe ich auf dem Raspberry Pi "mosquitto" laufen.
Die Topic SetRelay funktioniert und ich kann darüber die Steckdose schalten und auch Hardwareinformationen abrufen.
Die Topics zum Auslesen von Informationen (aktueller Status, Name, …) funktionieren nicht. Hier erhalte ich keine Antwort.
Ich habe mal in der Firmware 1.1.9 nachgeschaut. Dort kann ich unter "void callbackMQTT" auch keine Implementierung für diese finden.
Planst du diese noch zu Implementieren?
Vielen Dank.
Sandro `
Kann die leider nicht ganz folgen:
Alle Punkte sind bei mir gefüllt:
Bildschirmfoto 2018-09-13 um 09.18.56.png
Nur folgende Punkte sind aktiv:
Bildschirmfoto 2018-09-13 um 09.21.25.png
Also nur hier kannst du Werte reinschreiben. Die anderen Ändern sich bei Änderungen in der Dose.
Was fehlt dir da? Bin kein Experte für MQTT, habe nur so nach besten Wissen implementiert.
Hallo,
du suchst eine Möglichkeit beim Start den Status der Dose abzufragen:
1. Wenn du ein -v in deinen Aufruf hinzufügst, siehst du die Datenpunkte:
mosquitto_sub -v -t /SW-50/5/#
Mitmosquitto_pub -t /SW-50/5/setRelay -m "??"
Bekommst du dann:
Allerdings erst ab Version 1.1.9d
Warum nicht bei ? schon ->wenn man mit iobroker auf change von relay_i arbeitet würde er darauf reagieren.
-
Ich habe gerade die aktuelle Version auf meine Dose geflasht per OTA. Wollte nun mal das MQTT ausprobieren, nur leider bekam ich es nicht zum laufen. Sollte sich eigentlich mit dem Mosquitto Broker auf meinem Raspberry verbinden, kam aber immer nur MQTT NOT subscribed. Dachte dann ich reboote mal die Steckdose und das scheint der Dose gerade einen Tritt gegeben zu haben. Sie hat sich danach nicht mehr verbinden, die blaue LED hat so 7 oder 8 mal kurz geblinkt, ging aus und wieder das blinken. In der Fritzbox Log ist zu sehen das die Dose sich immer wieder versucht zu verbinden und sofort wieder trennt… und das im Sekundentakt... Da scheint aber irgendwo ein ganz böser Fehler in der aktuellen Version zu sein?
Nachtrag
Auch Dose vom Strom trennen und wieder rein bringt nichts, sie fängt sofort an zu blinken. Einen AP macht sie natürlich auch nicht auf, den Knopf kann man drücken soviel wie man will, da passiert nichts. Nur wenn man ihn ca 15 Sekunden gedrückt hält, schaltet sich das Relais plötzlich und die Lampe daran geht für ca 5 Sekunden an und geht dann wieder aus und das Spiel geht von vorne los.
Hoffe ich krieg sie neu geflasht… =/
Nachtrag 2
Das sieht aber irgendwie wirklich komisch aus. Hab das Dingen so gerade mal ans Terminal gehängt und kein Wunder das er da rumspinnt bis zum geht nicht mehr. Was er genau tut verstehe ich nicht, aber es wiederholt sich ein riesen Haufen an Codes, ich habe mal das letzte Stück des Codes hier raus kopiert:
> 4021e048 74b2a8c0 3fff0638 4020de3e <\r><\n>3fffff60: 3f000000 3fff0820 3fff0524 4020fb78 <\r><\n>3fffff70: 63bcc34b 6c6e6568 74686369 feefef00 <\r><\n>3fffff80: feefeffe feefeffe feefeffe feefeffe <\r><\n>3fffff90: 00000000 00000000 00000000 feefeffe <\r><\n>3fffffa0: feefeffe feefeffe feefeffe 3fff0948 <\r><\n><<<stack<<<<\r><\n><\r><\n> ets Jan 8 2013,rst cause:1, boot mode:(3,7)<\r><\n><\r><\n>load 0x4010f000, len 1384, room 16 <\r><\n>tail 8<\r><\n>chksum 0x2d<\r><\n>csum 0x2d<\r><\n>vbb28d4a3<\r><\n>~ld<\n>SPIFFS is formatted. Moving along…<\r><\n><\r><\n>SSID: >FRITZ!Box 7490 2.8<<\r><\n>PASS: >XXXXXXXXXXXXXX<<\r><\n>Waiting for Wifi to connect..</stack<<<<\r>
danach fängt der spaß von vorne an. Das hat die Dose vorher nie gemacht, vlt sagt dir das ja was. Ich werde nun versuchen sie wieder neu zu flashen…
Nachtrag 3
So nun alles wieder zurück gerollt auf die erste Version, dann wieder OTA Update auf die letzte Version gemacht (1.1.9b), Lief nach diesem komischen Abschuss zunächst alles wieder Problemlos, wieder MQTT aktiviert, reboot gemacht und das gleiche wieder. Die Dose schießt sich komplett ab. MQTT in Verbindung mit Mossquito konnte ich auch nicht zum laufen bringen. Mag sein das ich da noch zu sehr Anfänger bin aber ich konnte einfach nichts der Dose entlocken.
Hab gestern meine Sonoff Touch Lichtschalter bekommen, darauf das Standard Tasmota geflasht, MQTT alles eingerichtet und 5 Minuten später lief alles, kann den Schalter problemlos bedienen über ObenHab. Hier habe ich jetzt leider mehrere Stunden dran verbracht, 2 komplette Gerätabstürze, MQTT will noch immer nicht. Daher werde ich mir nun wohl doch mal die Tasmota Firmware anschauen.
Sehr schade aber in diesem Zustand ist die Firmware aber nicht gebräuchlich für mich =( Vielleicht bin ich einfach zu blöd das MQTT in Verbindung mit Mossquito zum laufen zu bringen. Da würde ich mir vielleicht eine etwas ausgiebigere Anleitung hier dazu wünschen. `
Ein Screenshoot deiner MQTT Einstellungen wären hilfreich. Ich habe grade mosquitto mal installiert.
Lief alles von Anfang an ohne Probleme.
So so sieht meine Einstellung aus. Auf 192.168.1.13 läuft der Mosquitto-Server.
Siehe meinen letzten Eintrag wie man die Werte abfragt.
-
Danke für die schnelle Umsetzung und dem Tipp "Option -v bei mosquitto"!
Um ehrlich zu sein, ich bin beim Thema Hausautomation generell noch am Anfang. Falls Mosquitto dir nichts sagt. Das ist ein einfacher MQTT Broker (unter anderem auf dem Raspberry Pi - https://mosquitto.org/).
Wenn ich die Steckdose boote/reboote erhalte ich folgende Message von der Steckdose (Name: Steckdose02):
MQQTT_Start.png
Wenn ich den Stromfluß der Steckdose einschalte (mosquitto_pub -h 127.0.0.1 -t Steckdose02/setRelay -m "on" -d) erhalte ich folgende Nachricht:
MQQTT_On.png
Wenn ich den Status der Steckdose abfrage (mosquitto_pub -h 127.0.0.1 -t Steckdose02/setRelay -m "?" -d), erhalte ich folgende Message:
MQQTT_RelayStatus.png
Diese Message enthält keinen Status der Steckdose.
Mein Problem ist, dass ich den Zustand (on, off, delayOn, …) also nur beim Booten und beim Schalten der Steckdose erhalte. Kann diesen aber später nicht nochmal Abfragen. Beim Status wäre eine Abfragemöglichkeit sinnvoll oder? Mein Szenario ist, dass der Heimautomationsserver Startet und als erstes den Status der Steckdose abfragt...
Kann die leider nicht ganz folgen:
Alle Punkte sind bei mir gefüllt:
Bildschirmfoto 2018-09-13 um 09.18.56.png
Nur folgende Punkte sind aktiv:
Bildschirmfoto 2018-09-13 um 09.21.25.png
Also nur hier kannst du Werte reinschreiben. Die anderen Ändern sich bei Änderungen in der Dose.
Was fehlt dir da? Bin kein Experte für MQTT, habe nur so nach besten Wissen implementiert.
Hallo,
du suchst eine Möglichkeit beim Start den Status der Dose abzufragen:
1. Wenn du ein -v in deinen Aufruf hinzufügst, siehst du die Datenpunkte:
mosquitto_sub -v -t /SW-50/5/#
Bildschirmfoto 2018-09-15 um 09.13.25.png
Mit
mosquitto_pub -t /SW-50/5/setRelay -m "??"
Bekommst du dann:
Bildschirmfoto 2018-09-15 um 09.17.29.png
Allerdings erst ab Version 1.1.9d
Warum nicht bei ? schon ->wenn man mit iobroker auf change von relay_i arbeitet würde er darauf reagieren.
firmware_1_1_9d.zip
code_1_1_9d.zip `
-
Kannst Du in zukünftige Versionen mit einbauen, dass man die blaue Lampe auswählen kann, ob an oder aus?
Die rote Lampe leuchtet so schwach nach unten , dass man nicht sehen kann, ob die Dose an oder aus ist.
Hab die Version 1.1.1 bei allen installiert, weil da noch die blaue Led beim Zustand: EIN dauerhaft leuchtet.
-
Kannst Du in zukünftige Versionen mit einbauen, dass man die blaue Lampe auswählen kann, ob an oder aus?
Die rote Lampe leuchtet so schwach nach unten , dass man nicht sehen kann, ob die Dose an oder aus ist.
Hab die Version 1.1.1 bei allen installiert, weil da noch die blaue Led beim Zustand: EIN dauerhaft leuchtet. `
Steckdose umdrehen?
Sorry haselchen, der Ball lag da so schön auf dem Elfmeterpunkt, und der Torwart musste ans Telefon…
-
Ich liebe Klugscheisser
Natürlich auch dran gedacht, aber einerseits ist für mich die Farbe rot immer mit Problemen behaftet :lol:
Und 2. passen die Dosen an den Plätzen immer nur mit dem langen Teil nach unten
-
Ich liebe Klugscheisser
Natürlich auch dran gedacht, aber einerseits ist für mich die Farbe rot immer mit Problemen behaftet :lol:
Und 2. passen die Dosen an den Plätzen immer nur mit dem langen Teil nach unten `
Bin ja nicht nur Klugscheißer, sondern auch Weltverbesserer :lol:. Die Ampeln kann ich zwar nicht auf Dauergrün schalten :D, aber ich hab dir die letzte Firmware so geändert, dass die blaue LED sich wie früher verhält. Das ganze in der Laufzeit zu ändern, würde etwas mehr Veränderungen im Code benötigen, da pfusche ich Sissi lieber nicht einfach so ins Handwerk.
Version BETA 1.1.9dh (lt. Fußzeile auf der Webseite):
Grüße,
Alex
-
Bist jetzt schon mein Tagesheld
Ne eigene Firmware hat nicht jeder :lol:
-
Ich liebe Klugscheisser
Natürlich auch dran gedacht, aber einerseits ist für mich die Farbe rot immer mit Problemen behaftet :lol:
Und 2. passen die Dosen an den Plätzen immer nur mit dem langen Teil nach unten `
Bin ja nicht nur Klugscheißer, sondern auch Weltverbesserer :lol:. Die Ampeln kann ich zwar nicht auf Dauergrün schalten :D, aber ich hab dir die letzte Firmware so geändert, dass die blaue LED sich wie früher verhält. Das ganze in der Laufzeit zu ändern, würde etwas mehr Veränderungen im Code benötigen, da pfusche ich Sissi lieber nicht einfach so ins Handwerk.
Version BETA 1.1.9dh (lt. Fußzeile auf der Webseite):
firmware_obi_1_1_9d.haselchen.bin.zip
Grüße,
Alex `
Hi,
und hier mit Schalter:
/blueLEDmode?=
0 = aus
1 = wie rote = Relais-Status
2 = wie bisher, Activity etc.
-
Was ihr aus dem Ding rausholt, ist schon abgefahren
Hab mal nen Screenshot nem OBI Mitarbeiter gezeigt, der hat gleich seine ganze Belegschaft zum Gucken geholt :lol: :lol: :lol: :lol:
-
Kann nicht mehr lange dauern, dann haben wir den http://11errat.eu/Fotos/Gumbomat.png :lol:
-
Ergomatischer Eumel….
You made my Day :mrgreen:
-
Hallo sissiwup,
ist es möglich die Zeile "TIME to Event" farblich hervorzuheben ähnlich On/Off ?
Ich möchte eine Steckdose zum Laden meines E-Bike-Akkus benutzen,
Dazu gebe ich den Link ein: http://192.168.xxx.xxx/ONdelayOFF?=18000
Nun habe ich gesehen das man nicht auf Anhieb erkennt wann mit Laden fertig bzw. Restzeit.
Manchmal dauert es auch ein paar Sekunden bis die Zeile da ist, wäre ne schöne Lösung danke
Vorteil der Akku bzw. Ladegerät hängt nicht unnötig lange an der Netzspannung!
-
Keine Verbindung zu Mosquitto
Ich benutze als Test-Broker Mosquitto auf einem Raspberry zero mit Dietpi von Andreads Spiess (the man with the swiss accent)
Die Version 1.20 stellt keine Verbindung zu Mosquitto her
11:39:51 08.10.2018 MQTT server started 11:39:51 08.10.2018 MQTT try reconnect 11:39:52 08.10.2018 MQTT NOT subscribed 11:40:42 08.10.2018 Wifi.Reconnect Time done 11:40:50 08.10.2018 MQTT try reconnect 11:40:51 08.10.2018 MQTT NOT subscribed 11:41:20 08.10.2018 MQTT try reconnect 11:41:21 08.10.2018 MQTT NOT subscribed
Im Code von handleMQTT.ino wird auch klar warum, es findet keine Authentifizierung durch user/password statt
void reconnect() { if (MQTT_active == 1) { blueLEDstartCountBlink(0.8, 4); int timeout = 2; build_wwwStatus2("MQTT try reconnect"); while ((!pubClient.connected()) && (timeout > 0)) { timeout--; Serial.println("Reconnecting MQTT..."); char devname[80]; iDevname.toCharArray(devname, 80); if (!pubClient.connect(devname)) // <-- Aufruf ohne Authentifizierung ....... {
es müsste dort stehen
if (!pubClient.connect(devname,mqtt_user,mqtt_password)) // <-- Aufruf mit Authentifizierung
wobei mqtt_user und mqtt_password vorher gesetzt sind.
Das kann aber nur über die Web-Oberfläche geschehen.
Da hängt allerdings noch eine Menge anderer Dinge dran, siehe handle_commands.ino –> handle_devName
und espEEPROMSet.Ino-->writeEEPROM
Bisher wurden 901 Nibbles von 1024 verbraucht, es scheint noch ein wenig Platz zu sein.
Es wäre schön, wenn Funktionen zum Setzen von mqtt-user und mqtt-password eingebaut werden könnten oder eine Rückmeldung, welche EEPROM-Adressen für solche Einstellungen genutzt werden sollten.
Ansonsten vielen Dank für die viele Arbeit und den gut lesbaren Code.
-
Fehler beim Compilieren von 1.20
Ich bekomme einen Compilerfehler beim übersetzen:
xxx/Firmware_1_2_0_2018_09_17\Main-Obi-wall-plug\Main-Obi-wall-plug.ino:121:21: fatal error: TimeLib.h: No such file or directory #include <timelib.h> ^ compilation terminated. exit status 1 Fehler beim Kompilieren für das Board Generic ESP8266 Modul</timelib.h>
Ich verwende esp8266 2.4.2 .
Der Wechsel auf 2.3 bringt nichts
Irgend ein Hinweis?
-
Problem teilweise gelöst, jetzt wird übersetzt und geflashed
Die fehlenden Bibliotheken TimeLib, NtpClientLib und ESP8266Ping, müssen als zip eingebunden werden.
Ich habe diese über google bzw https://www.arduinolibraries.info/libraries gefunden
Hier wäre ein Hinweis in der Source nett, der die Quellen der Libraies ausweist.
-
Hallo sissiwup,
ist es möglich die Zeile "TIME to Event" farblich hervorzuheben ähnlich On/Off ? `
Hallo meierchen006,
ich bin zwar nicht sissywup, aber hier die Lösung :
Öffne mit Arduino den Code der 1.19d und dort in der Datei webstatic.ino suche folgenden Code (im oberen Drittel zu finden)
wwwInfos = wwwInfos + String(F(" Actual Time : ")) + gerDate(NTP.getTimeDateString()) + String(F(" Time to Event : OFF "
Ersetze diesen mit
wwwInfos = wwwInfos + String(F(" Actual Time : ")) + gerDate(NTP.getTimeDateString()) + String(F(" **Time to Event : OFF** **"** ```` **Neu kompilieren und fertig ;) Sollte nun etwas kleiner als der Status darunter sein, aber größer als der Rest Grüße Tom**
-
Hallo TomT,
ok danke werde ich für mich anpassen. :mrgreen:
Edit:
Sollte das auch bei der letzten Version 1.2.0 funktionieren?
-
Ja, passt auch exakt so bei der Version 1.2.0
Grüße
Tom
-
Keine Verbindung zu Mosquitto
Ich benutze als Test-Broker Mosquitto auf einem Raspberry zero mit Dietpi von Andreads Spiess (the man with the swiss accent)
Die Version 1.20 stellt keine Verbindung zu Mosquitto her
11:39:51 08.10.2018 MQTT server started 11:39:51 08.10.2018 MQTT try reconnect 11:39:52 08.10.2018 MQTT NOT subscribed 11:40:42 08.10.2018 Wifi.Reconnect Time done 11:40:50 08.10.2018 MQTT try reconnect 11:40:51 08.10.2018 MQTT NOT subscribed 11:41:20 08.10.2018 MQTT try reconnect 11:41:21 08.10.2018 MQTT NOT subscribed
Im Code von handleMQTT.ino wird auch klar warum, es findet keine Authentifizierung durch user/password statt
void reconnect() { if (MQTT_active == 1) { blueLEDstartCountBlink(0.8, 4); int timeout = 2; build_wwwStatus2("MQTT try reconnect"); while ((!pubClient.connected()) && (timeout > 0)) { timeout--; Serial.println("Reconnecting MQTT..."); char devname[80]; iDevname.toCharArray(devname, 80); if (!pubClient.connect(devname)) // <-- Aufruf ohne Authentifizierung ....... {
es müsste dort stehen
if (!pubClient.connect(devname,mqtt_user,mqtt_password)) // <-- Aufruf mit Authentifizierung
wobei mqtt_user und mqtt_password vorher gesetzt sind.
Das kann aber nur über die Web-Oberfläche geschehen.
Da hängt allerdings noch eine Menge anderer Dinge dran, siehe handle_commands.ino –> handle_devName
und espEEPROMSet.Ino-->writeEEPROM
Bisher wurden 901 Nibbles von 1024 verbraucht, es scheint noch ein wenig Platz zu sein.
Es wäre schön, wenn Funktionen zum Setzen von mqtt-user und mqtt-password eingebaut werden könnten oder eine Rückmeldung, welche EEPROM-Adressen für solche Einstellungen genutzt werden sollten.
Ansonsten vielen Dank für die viele Arbeit und den gut lesbaren Code. `
Ok, das ist nicht das Problem. Kann mir jemand sagen wie ich beim iobroker user und passwort setze?
(zum Testen)
Was ein bischen schwieriger wird, ist das Passwort nicht im Klartext zu übertragen… mal sehen.
Kümmere mich am Wochenende darum.
PS: Wie lang müssen User und Passwort sein?