NEWS
TEST - Adapter Fully Browser mit MQTT (0.0.11)
-
MOD-EDIT: Dieser Adapter wird nicht mehr gepflegt. Bitte hier https://forum.iobroker.net/topic/69729/fullybrowser-3-0 weitermachen
Edit, 24.03.23: Update auf 0.0.11
Edit, 14.03.23: Update von 0.0.1-alpha auf 0.0.4
Aktuelle Test Version 0.0.11 Veröffentlichungsdatum 24.03.2023 Github Link https://github.com/Acgua/ioBroker.fully-mqtt Siehe Forum-Thread Fully Browser Adapter: MQTT?
Dieser Adapter basiert auf den Fully-Adapter von @arteck, habe ich aber komplett neu geschrieben in TypeScript.
Der bisherige Adapter nutzt nur die REST API, diese neue Testversion bietet nun auch optional an, dass man MQTT nutzt zum Empfang von Daten.
Dank MQTT kommen nun Status-Änderungen wie Bildschirm an/aus oder Bewegungsmelder quasi in Echtzeit in den Datenpunkten an.
(Senden von Commands erfolgt weiterhin nur über die REST API, da der Fully Browser dies über MQTT nicht unterstützt.)
Neben MQTT ein Auszug aus weiteren Neuerungen im Vergleich zum bisherigen Adapter:
- Datenpunkte wie screenOn / screenOff usw. werden mit ack:true bestätigt, wenn das Setzen erfolgreich war. Dies ist hilfreich, um etwa in VIS dies entsprechend darzustellen.
- Objekte (Datenpunkte) werden nicht mehr im Format
fullybrowser.0.192_168_10_10...
angelegt (also nicht mehr anhand IP), sondern anhand des Namens, also etwafully-mqtt.0.Tablet-Flur...
. Für Abwärtskompatibilität kann man im Namen die IP mit Unterstrich statt Punkt setzen, siehe hier 2. Zeile.
- Mehrere Commands / Status sind zusammengefasst, wie etwa
fully-mqtt.0.Tablet-Flur.screenSwitch
: Hiermit kann im Beispiel der Bildschirm an- und abgeschaltet werden, gleichzeitig wird der Status aktualisiert, wenn anderweitig der Bildschirm an/abgeschaltet wird. - ...noch weiteres, das ich nach und nach ergänze...
Adapter-Installation:
- ioBroker -> Admin -> Adapter
- Installieren aus eigener URL
- Benutzerdefiniert -> URL
https://github.com/Acgua/ioBroker.fully-mqtt
einfügen, mit "Installieren" bestätigen - Adapter sollte nun installiert werden und als "Fully Kiosk Browser (MQTT)" erscheinen. Nun eine Instanz hinzufügen.
- Adapter-Einstellungen entsprechend vornehmen.
Einrichtung MQTT
- In der Fully Browser App: Settings -> Other Settings -> MQTT Integration (PLUS)
- Enable MQTT -> einschalten
- MQTT Broker URL:
mqtt://192.168.30.30:3000
, dabei ist 192.168.30.30 die IP von ioBroker und3000
der Port, den MQTT verwendet. - MQTT Broker Username / Password: Kann man vergeben oder auch leer lassen. Wenn nicht gesetzt wird nur geprüft, dass die empfangenen Topics auch von Fully kommen und ob die IP von Fully mit der in den Adapter-Einstellungen übereinstimmt. Mit User/Passwort kann man halt noch zusätzlich absichern...
- MQTT Client ID: kann man leer lassen
- MQTT Device Info Topic und MQTT Event Topic: kann man Default so lassen, wertet der Adapter nicht weiter aus
- In den Adapter-Einstellungen entsprechend bei "Use MQTT" des entsprechenden Tablets den Haken setzen und unter "MQTT Configuration" ggf. User, Passwort, sowie - wichtig - Port setzen - also selbe Port-Nummer wie in den Fully Browser App Settings (siehe oben).
Hinweise zum Testen
- Am besten am Anfang den Adapter auf Debug stellen. Dann bekommt ihr mehr Infos. Keine Angst, das Log wird nicht alle paar ms gefüllt
- Fehler/Probleme/Vorschläge gerne hier im Thread, oder - noch besser zusätzlich - als Github Issue unter https://github.com/Acgua/ioBroker.fully-mqtt/issues
So, ich hoffe ich habe nichts vergessen und würde mich sehr freuen, wenn ihr das ganze Testen könntet.
Auch bitte mal ohne MQTT testen, also in den Adapter-Einstellungen "Use MQTT" deaktivieren. Auch gerne bitte mit mehreren Tablets und unterschiedlichen Einstellungen testen. -
Noch was zu den "Expert Settings" (kommt dann auch noch in die Adapter-Doku ausführlicher:
Remote Admin (REST API)
- Request Timeout: Wenn ein Request an den Fully gesendet wird und der Fully nicht reagiert, wird nach dieser Anzahl ms abgebrochen.
- Request Interval: Wenn MQTT nicht aktiviert ist, wird regelmäßig vom Fully per REST API Infos abgerufen. Hier legst du das Intervall in Sekunden fest, also wie oft die Info abgefragt wird und die Datenpunkte unterhalb
fully-mqtt.0.Lenovo.Tablet-xxx.Info...
gefüllt werden. - Always update info objects: Wenn gesetzt, dann werden die Datenpunkte unterhalb
fully-mqtt.0.Lenovo.Tablet-xxx.Info...
immer aktualisiert, d.h. auch wenn es keine Wertänderung gab. Wenn deaktiviert, dann nur bei Wertänderung.
MQTT
- Do not process published info more than every x seconds: Normalerweise sollte der Fully aktualisierte Infos lt. Doku nur alle 60s senden, aber er macht das bei mir deutlich öfter. Egal, dies hier entschleunigt das Ganze und sorgt dafür, dass nur nach den angegebenen Sekunden die generellen Infos aktualisiert werden. Wichtig: Änderungen an Events (z.B. "Bildschirm aus") kommen immer sofort rein.
- Do not verify user and password: Hiermit kann die Prüfung auf MQTT Benutzername und Passwort abgeschalten werden.
- Always update info objects: siehe oben unter REST API
-
Super, vielen Dank!
Funktioniert hier einwandfrei, sauber programmiert, nur eins wird gemeldet:Meine den hier:
Info: fully-mqtt.0 (290320) State value to set for "fully-mqtt.0.Huawei-WZDG.Info.sensorInfo" has to be stringified but received type "object"
-
@ilovegym muss das log sooooo groß sein?
es lähmt die ganze Seite!Wenn ja, dann ja!
-
Sorry hab ausversehen alles kopiert.. aber jetzt geändert..
-
@ilovegym komme jetzt auch wieder auf die Seite!
Danke -
@ilovegym said in TEST - Adapter Fully Browser mit MQTT (0.0.1-alpha):
Super, vielen Dank!
Funktioniert hier einwandfrei, sauber programmiert, nur eins wird gemeldet:Cool, das freut mich
Info: fully-mqtt.0 (290320) State value to set for "fully-mqtt.0.Huawei-WZDG.Info.sensorInfo" has to be stringified but received type "object"
- Kannst du bitte in den Objekten bei
fully-mqtt.0.Huawei-WZDG.Info.sensorInfo
rechts auf den Stift klicken und dann posten was angezeigt wird. - MQTT hast du aktiviert und läuft, richtig? Ich frage, weil ansonsten die Info via REST API kommt...
- Kannst du bitte in den Objekten bei
-
-
Läuft bis jetzt bei mir auch sehr gut.
Alles wird vermutlich nicht funktionieren, da ich eine Show15 habe.
Fehlermeldungen bekomme ich noch wenn ich Datenpunkte unter Commands ändere.
Danach stet im DP ein true und es kommen die Fehler.State value to set for "fully-mqtt.0.Show15.Commands.setAudioVolume" has to be type "number" but received type "boolean" State value to set for "fully-mqtt.0.Show15.Commands.textToSpeech" has to be type "string" but received type "boolean" State value to set for "fully-mqtt.0.Show15.Commands.loadURL" has to be type "string" but received type "boolean"
-
@acgua jetzt doch ein extra Adapter .. ?? dann motte ich meinen ein ..
-
@arteck hmmf dachte ihr haettet euch abgesprochen.. aber sieh's mal so: da hast du weniger Support-Arbeit..
Zigbee fordert doch genug nerven.. oder
-
ab und zu gibts n keep alive timeout, komischerweise bei den Tablets auch, die per LAN verbunden sind.. kann ich da das Timeout irgendwo einstellen??
Hier meine Config vom Adapter:
oder kann man das im Fullybrowser einstellen? Hab da nix gefunden..
-
@ilovegym leck mich fett, du bist aber gut mit Anzeigen ausgestattet ... Gutes Argument wenn meine Frau mal wieder meint ich würde überteiben ...
-
@bananajoe Oehm, hat nicht alles auf den Screen gepasst, hab im Haus paarundzwanzig Tablets verstreut.. die meisten Android mit Fully, natürlich auch n paar IPads und 5x 55" TV und n 86" fuer die Dashboards
Die Tablets waren am Anfang zur Steuerung gedacht, genutzt wird ziemlich genau davon eins.. die anderen zeigen nur die Grafana-Playlist.. sorry, hab sonst kein Hobby..
-
@arteck said in TEST - Adapter Fully Browser mit MQTT (0.0.1-alpha):
jetzt doch ein extra Adapter .. ?? dann motte ich meinen ein ..
Nein, bitte nicht einmotten Ich habe jetzt erst mal einen separaten Adapter gebaut, da es doch sehr umfangreich wurde wegen MQTT etc. Auch damit erst mal getestet werden kann, Fehler behoben werden können, ggf. noch paar Features einbauen falls notwendig/sinnvoll. Sobald stabil, dann am liebsten in deinen Adapter "verschmelzen" unter https://github.com/arteck/ioBroker.fullybrowser. Habe auch versucht, soweit abwärtskompatibel zu sein, lediglich fehlen noch paar Zeichen Code, um die alten Settings in die vom neuen Adapter zu überführen.
@ilovegym und @mrjeschke
Danke für eure Rückmeldungen, schaue ich mir alsbald an, nur heute komme ich nicht dazu. -
@mrjeschke said in TEST - Adapter Fully Browser mit MQTT (0.0.1-alpha):
Alles wird vermutlich nicht funktionieren, da ich eine Show15 habe.
Eigentlich sollte auch in Verbindung mit Show15 der Adapter korrekt laufen, sofern halt die Fully App das unterstützt...
@mrjeschke said in TEST - Adapter Fully Browser mit MQTT (0.0.1-alpha):
Fehlermeldungen bekomme ich noch wenn ich Datenpunkte unter Commands ändere.
Danach stet im DP ein true und es kommen die Fehler.Danke für deine Rückmeldung, war ein Bug und ist sollte nun behoben sein.
Bitte Adapter noch mal neu installieren von URL (https://github.com/Acgua/ioBroker.fully-mqtt) -
@ilovegym said in TEST - Adapter Fully Browser mit MQTT (0.0.1-alpha):
Funktioniert hier einwandfrei, sauber programmiert, nur eins wird gemeldet:
Meine den hier:
Info: fully-mqtt.0 (290320) State value to set for "fully-mqtt.0.Huawei-WZDG.Info.sensorInfo" has to be stringified but received type "object"Danke für die Rückmeldung. Hier beschrieben:
@paul53 said in Fehler nach update js-controller 3.3.9:Ab Version 3.3 des js-controllers sollen keine Objekte / Arrays mehr in Datenpunkte geschrieben werden, sondern nur noch per JSON.stringify(obj) gewandelte Objekte. Diese Info-Logs sollen die Adapter-Entwickler informieren, dies anzupassen.
Wenn die Logs stören, stelle die Log-Stufe des js-controllers in der Datei /opt/iobroker/iobroker-data/iobroker.json auf "warn" (anschließend ioBroker neu starten).Ich mache jetzt
const newVal = typeof infoObj[key] === 'object' ? JSON.stringify(infoObj[key]) : infoObj[key];
Ich verstehe zwar diese ioBroker-Einschränkung nicht wirklich, aber nun eingebaut
Bitte Adapter noch mal neu installieren von URL (https://github.com/Acgua/ioBroker.fully-mqtt) und testen. -
@ilovegym said in TEST - Adapter Fully Browser mit MQTT (0.0.1-alpha):
ab und zu gibts n keep alive timeout, komischerweise bei den Tablets auch, die per LAN verbunden sind.. kann ich da das Timeout irgendwo einstellen??
2023-03-10 11:48:30.069 - warn: fully-mqtt.0 (1061251) [MQTT] Huawei-FlurOG is not alive! 2023-03-10 11:48:30.717 - error: fully-mqtt.0 (1061251) [MQTT]🔥 Client error - keep alive timeout 2023-03-10 11:48:30.718 - warn: fully-mqtt.0 (1061251) [MQTT] Client Huawei-FlurOG 2023-03-10 11:48:42.253 - info: fully-mqtt.0 (1061251) [MQTT]🔑 Client Huawei-FlurOG (10.1.1.56) authenticated successfully. 2023-03-10 11:48:42.253 - info: fully-mqtt.0 (1061251) [MQTT] Huawei-FlurOG is alive. 2023-03-10 11:48:42.253 - info: fully-mqtt.0 (1061251) [MQTT]🔗 Client Huawei-FlurOG (10.1.1.56) successfully connected.
(hier stand vorher eine andere, falsche, Antwort von mir)
Hier hat sich tatsächlich der Client, also der Fully Browser und/oder das Tablet, verabschiedet.
Das kann ich nicht wirklich beeinflussen mit dem Adapter.
Kommt das öfter vor, und in welchem Abstand in Sekunden wird "is not alive" -> "is alive" angezeigt im Log (also jeweils separate Log-Zeilen), so im Durchschnitt? -
@acgua sagte in TEST - Adapter Fully Browser mit MQTT (0.0.1-alpha):
Hier hat sich tatsächlich der Client, also der Fully Browser und/oder das Tablet, verabschiedet.
Das kann ich nicht wirklich beeinflussen mit dem Adapter.
Kommt das öfter vor, und in welchem Abstand in Sekunden wird "is not alive" -> "is alive" angezeigt im Log (also jeweils separate Log-Zeilen), so im Durchschnitt?hmm das ist komisch, denn ich komme ganz normal auf die Gui von Fullybrowser, wenn das kommt. . und dann ist er ja nach 12 Sek. auch wieder fuer den Adapter erreichbar.. hier sieht es mir nach einem timeout problem aus.. ich hab zeitgleich mal n ping durchlaufen lassen, da gibts keine breaks/interrupts und auch keine lost packets oder so..
Was mich wundert, es sind bei der Meldung immer 12sek, dann ist er wieder erreichbar..
naja, ich behalts mal im Auge.. denn:
98% meiner Tablets schalten sich um 23.00 Uhr aus, und um 5 / 7 uhr morgens wieder ein, in der zwischenzeit sind die natuerlich offline.
Auch da sollte der Adapter das abkoennen, oder das log zu zu pflastern.. kannste das vielleicht so machen, wie beim mqtt oder sonoff adapter, dass man in den Instanzen sieht, welcher client verbunden ist?Dann hat der Adapter noch Probleme, die Datenpunkte im '/Info directory anzulegen, das geht meist erst, wenn ich mqtt im Adapter ausschalte, dann legt er alle Datenpunkte an, schalte ich dann mqtt ein, funktionierts...
Hab jetzt den alten Adapter geloscht, auch die Datenpunkte, neu von Git installiert, die Konfig importiert, und alles neu anlegen lassen.
Es kommen immer noch Warnings mit
-
@ilovegym
Nochmals vielen Dank fürs Testen!Info-Datenpunkte
Das war ein Bug, wenn mehrere Tablets konfiguriert sind und ist nun behoben auf Github, werden nun also für alle Tablets sauber angelegt.
MQTT Keep Alive Timeout
Ich hatte zunächst mit einem Lenovo-Tablet getestet, da kam das nie. Aber beim Testen mit einem Huawei-Tablet habe ich das auch schon mal gesehen jetzt.
Was hier passiert: Der Aedes MQTT Server bekommt einen "client error" Event gemeldet vom Tablet.
Aktuell wird im Adapter bei einem solchen Client Error sofort ein Error "[MQTT] Client error - ..." ausgegeben und der Status des Tablets auf "not alive" gesetzt.
Ich überlege, hier "keep alive timeout" Error abzufangen und nicht gleich einen Error auszugeben. Meldet sich das Tablet länger nicht, geht es eh auf "not alive".
Hab bei mir auch kurzzeitig ein "Huawei: Client error - read ECONNRESET" Error, und paar Sekunden später ist das Tablet aber wieder verbunden.
Ich bleib dran und verbessere das mit Logausgaben und Fehler abfangen.Zu "welcher Client verbunden ist"
@ilovegym said in TEST - Adapter Fully Browser mit MQTT (0.0.1-alpha):
98% meiner Tablets schalten sich um 23.00 Uhr aus, und um 5 / 7 uhr morgens wieder ein, in der zwischenzeit sind die natuerlich offline.
Auch da sollte der Adapter das abkoennen, oder das log zu zu pflastern.. kannste das vielleicht so machen, wie beim mqtt oder sonoff adapter, dass man in den Instanzen sieht, welcher client verbunden ist?Absolut muss ein Adapter das abkönnen
Wie meinst du das mit den "in den Instanzen sehen"?
Derzeit wird der Status für jedes Tablet überfully-mqtt.0.Tablet-Name.alive
angezeigt. Zusätzlich geht die Adapter-Instanz von gelb auf grün, wenn alle Clients verbunden sind. Ist ein Client nicht verbunden -> gelb. (überfully-mqtt.0.info.connection
).