Forum

Bitte oder Registrieren, um Beiträge und Themen zu erstellen.

Binding für OpenHab2?

!!!!WICHTIG: Dateiendung der Datei "Jarolift_MQTTv3.pdf" auf .zip ändern !!!!!!

Hallo an alle,

hier kurz vor Weihnachten schon mal ein kleines Weihnachtsgeschenk. Im Anhang findet Ihr meine erste MQTT Version des Jarolift Sketchs. Dieser nutzt MQTT anstatt UDP Verbindungen zur Datenübertragung. Somit kann diese Version mit OpenHab und anderen MQTT Kompatiblen Systemen verwendet werden. Des weiteren bringt der Sketch ein kleines Webinterface mit, mit dem man neben den WLAN-Einstellungen  auch die Seriennummern, den Jarolift Key sowie den MQTT Broker konfigurieren kann. Außerdem kann man für alle Channel die Funktion "Lean, UP, DOWN, STOP, SHADE sowie SET SHADE" direkt über das Webinterface triggern.

Bekannte Probleme:

  •  Aktuell funktioniert nur die Seriennummer 12345600. Wenn man eine andere eingibt, so kann man die Motoren nicht anlernen. Hat jemand eine Idee warum?
  • Wenn keine Verbindung zum MQTT Broker hergestellt werden kann, dann funktioniert auch das Webinterface nicht. Muss noch mal schauen warum.
  • Die Konfiguration "Remote serial list" im Webinterface ist aktuell noch ohne Funktion. Da soll es möglich sein, die Seriennummern von Original-Fernbedienungen einzutragen, um den Status später per MQTT er erhalten (noch in Arbeit)
  • Webinterface zeigt sporadisch falsche HTML Syntax. Dies kommt wahrscheinlich vom fragmentierten Speicher. Der HTML Code wird derzeit als String gespeichert und daher im Speicher gehalten. Evtl. gibt es dafür eine bessere Lösung.

Konfiguration:

Eigentlich muss man den Sketch nur auf den ESP8266 packen. Alle Einstellungen werden dann über das Webinterface gemacht. Nachdem der ESP gebootet ist, steht für 180 Sekunden ein Access-Point mit der SSID "Jarolift-Dongle" und dem Passwort "12345678" zur Verfügung. Einmal damit verbunden kann man den ESP Via http://192.168.4.1 initial konfigurieren. Der Access-Point Mode wird nach 180 Sekunden automatisch wieder deaktiviert. Danach ist der ESP nur noch im heimischen WLAN verfügbar.

MQTT Topics:

Der Sketch lauscht auf dem Topic "cmd/jarolift/shutter/{0-15}", status informationen (100 für geschlossen, 0 für geöffnet und 90 für Shade) wird über das Topic "stat/jarolift/shutter/{0-15}" gesendet.

Im openHAB könnte die Config dann so aussehen:

Rollershutter Badezimmer_Rolladen "Rolladen Badezimmer" {mqtt=">[mosquitto:cmd/jarolift/shutter/0:command:*:default], <[mosquitto:stat/jarolift/shutter/0:state:default]"}
Rollershutter Schlafzimmer_Rolladen_Balkonfenster "Rolladen Schlafzimmer" {mqtt=">[mosquitto:cmd/jarolift/shutter/2:command:*:default], <[mosquitto:stat/jarolift/shutter/2:state:default]"}
Viel Spaß beim testen und einen fleißigen Weihnachtsmann.
Gruß
Hochgeladene Dateien:

Hi und sorry, aber ich habe erst jetzt gesehen, dass Steffen inzwischen geantwortet hat...

Aber das macht nichts denn meine Implementierung ist zwar vom Ansatz ähnlich wie meine aber noch lange nicht soweit wie deine!

Habe es zum Laufen gebracht und kurz angetestet.  Das mit Accesspoint hat nicht so funktioniert, ging nur mit einem Hack indem ich meine WLAN Konfiguration in den Sketch direkt geschrieben habe.

Das Problem mit dem Webinterface wenn keine Verbindung zum MQTT Broker hergestellt werden kann, liegt wohl daran dass er in der Schleife hängt beim reconnect zum Broker. Wie wäre es wenn man dort 3 Versuche mit einem Delay von 5 Sekunden einbaut und dann abbricht. Sobald man dann über das Webinterface die Konfiguration anpasst und speichert, gibt es ja einen Neustart und er versucht es erneut bzw. ansonsten versucht er den reconnect ja bei der nächsten Durchlauf von 'loop'.??

Und ich habe den connect mit username und Passwort:

if (mqttClient.connect(APP, MQTT_USERNAME, MQTT_PASSWORD)) {

Vielleicht stellt man die Sketches ja auf GitHub und entwickelt gemeinsam?

 

Hi slinb,

 

danke für deine Antwort. Welches ESP-Board verwendest du? Ich nutze das Witty Cloud board http://amzn.to/2Ea4MUK . Dies unterstütze die WLAN Modi AP, STA und AP+STA. Dies ist natürlich notwendig, um den ESP auch in den AP Mode zu setzen. Evtl. unterstützt dein Modul das nicht?

 

das mit dem Loop macht Sinn. Das werde ich mal testen. Wir müssen nur sicherstellen, dass auch ein reconnect zum MQTT Broker stattfindet, wenn mal die Verbindung unterbrochen ist.

Nutzt du zum Verbinden die verschlüsselte oder unverschlüsselte Variante mit Authentifizierung? Wenn es nur der Benutzername/Passwort ist, so könne man das ja als Optional in das Webinterface aufnehmen. Die Idee des Web interfaces war es, dass man alles darüber konfigurieren kann und keine manuellen Änderungen mehr am Sketch vornehmen muss.

 

Das mit dem GibHub finde ich eigentlich eine gute Idee. Somit könnten wir von allen das beste Verwenden und in eine Version packen. Gern kannst du das mal aufsetzen 🙂

 

 

Super!

Das mit dem Github finde ich eine hervorragende Idee. Evtl. können wir bei der First-Start-Sache auch mal bei anderen Projekten wie Tasmota oder ESPeasy schauen, man muss im OpenSource-Bereich nicht jedes Rad neu erfinden.

 

Hi,

bin immer noch am Testen bzw. jetzt erst wieder  dazu gekommen. Nutze einen WEMOS D1 mini :

  • das mit dem AP funktioniert mit dem WEMOS zumindest so nicht
  • damit der WLAN connect funktioniert, musste ich das "ConfigureWifi();" vor "// initialize the Transceiver Chip" setzen sonst funktioniert der WLAN Connect nicht!?!? Auserdem musste ich die Methode so anpassen:

void ConfigureWifi()
{
Serial.print("Connecting to ");
Serial.print(config.ssid.c_str());
WiFi.begin(config.ssid.c_str(), config.password.c_str());

while(WiFi.waitForConnectResult() != WL_CONNECTED) {
WiFi.begin(config.ssid.c_str(), config.password.c_str());
delay(500);
Serial.println("WiFi connection failed. Retry.");
}

Serial.print("Wifi connection successful - IP-Address: ");
Serial.println(WiFi.localIP());

}

Serial.print("Wifi connection successful - IP-Address: ");
Serial.println(WiFi.localIP());

}

  • MQTT habe ich mit Username und Passwort: if (mqttClient.connect(APP, MQTT_USERNAME, MQTT_PASSWORD)) {
  • warum nur der Serial 12345600 funktioniert, kann ich leider nicht erklären...? Hätte gerne eine anderen, da durch das ganze Testen, nun mehrere  Rollläden auf einen reagieren nd ich nicht an den Rollläden wieder löschen will

Auch mit der Aktuellen geht nur die 12345600?

Hatte vor ca 3 Wochen mal was geändert.

Hallo Zusammen,

bin auch an einer openHAB Variante Interessiert. Gibt es schon ne neu Auflage?

Bin grade mit dem aufsetzen von openHAB beschäftigt. 

 

Sobald es steht ,teste ich auch gerne mit.

Hi,

 

im Anhang findest ihr meine letzte Version der MQTT Variante. Diese funktioniert seit mehreren Wochen bei mir Stabil und ohne Probleme. Dieser Version habe ich ein besseres Web Interface spendiert und ein paar Probleme beseitigt.

 

Die .PDF wie immer in .ZIP umbenennen und entpacken. Die HTML/CSS und JS Files, welche sich im Ordner DATA befinden, müssen in den SPIFFS des ESP8266 geladen werden. Ich habe dafür folgendes Plugin verwendet: https://github.com/esp8266/arduino-esp8266fs-plugin

 

Viel Spaß beim testen.

 

Hochgeladene Dateien:

Danke für eure Arbeit!!!!

bin jetzt mal zum Testen gekommen.

  • das mit DATA funktioniert mit dem Plugin wie beschrieben auch auf dem Wemos
  • schönes Webinterface
  • das "ConfigureWifi();" muss ich mit dem Wemos vor "// initialize the Transceiver Chip" setzen, sonst funktioniert der WLAN Connect nicht
  • und es funktioniert auch nur mit meiner "ConfigureWifi();" Methode (s.o.)
  • das mit dem AP funktioniert so nicht auf dem Wemos (brauch ich wie gesagt auch nicht, nur falls jemand anderes auch einen Wemos nutzt)
  • bei mir funktioniert nur 12345600 (obwohl zwischendurch mal kurz den Eindruck hatte das ein anderer Serial funktioniert)
  • beim Editieren der Channnels werden die neuen Werte nicht gespeichert? (aber auch nicht wichtig)
  • MQ mit Passwort und User funktioniert

(P.s. Broker schreibt man ohne "a")

 

Nochmal ergänzend zum Serial....

Generieren und speichern funktioniert, aber das Anlernen nicht, Rolladen zuckt nicht!

Funktioniert es denn inzeschen bei euch? bei dir Taucher?