LaCrosseGateway mit Nextion Display

Begonnen von HCS, 27 Dezember 2016, 00:27:04

Vorheriges Thema - Nächstes Thema

amunra

Zitat von: HCS am 01 Februar 2017, 08:59:29

Klospülung: [Ein]  [Aus]  spült

Klingt interessant - die Umsetzung würde mich interessieren ;D ;)

HCS

Zitat von: amunra am 01 Februar 2017, 09:11:39
Ich baue mal was zusammen - Feintuning/Details können wir dann noch klären...
Ein Problem wird es geben: wenn man die labels nur ein mal bei der Initialisierung schickt, dann können sie irgend wann mal weg sein.
Aber sicherheitshalber alle paar Sekunden den gleichen Text schicken ist auch blöd, das LGW hat ja sonst noch was zu tun (ich glaube LaCrosse und PCA301 und so  :) )

Kann man im Nextion das irgendwie so hinbekommen, dass ein label seinen zuletzt gesetzten Text nach einem power cycle noch hat?
Oder das Nextion müsste bei einem boot bei 42_Nextion seine Initialisierung explizit anfordern.

Zumindest das enhanced hat ja EEPROM drauf und es gibt:
wepo t0.txt,10
repo t0.txt,10

Irgendwie muss auch mal die Grenze ausgelotet werden, wie viel Daten wie oft über die Bridge noch akzeptabel sind.
Das LGW muss im Vollausbau handhaben:
- 5 Radios
- interne Sensoren
- MCP23008 incl. Kommunikation zu FHEM
- den Analogport  incl. Kommunikation zu FHEM
- Zwei transparente Brücken mit z.B. CUL dran
- PCA301 timinggerecht kommunizieren
- bis zu drei FHEMs versorgen (und deren Wünsche entgegennehmen)
- jemanden, der auf dem WebFrontend rumturnt, glücklich machen
- das ganze interne Status-Handling
- die Versorgung des Nextion mit eigenen Werten
- Die bridge (soft serial) für das Nextion

- und alles, was ich jetzt nicht explizit aufgeschrieben habe (Alarmausgang, ...)

Manchmal wir mir mulmig, wann das aus dem Ruder läuft.
Ist eh faszinierend, was der 8266 stemmen kann.  8) 8)

amunra

Zitat von: HCS am 01 Februar 2017, 10:15:08
Kann man im Nextion das irgendwie so hinbekommen, dass ein label seinen zuletzt gesetzten Text nach einem power cycle noch hat?
Oder das Nextion müsste bei einem boot bei 42_Nextion seine Initialisierung explizit anfordern.
Bezogen auf LGW#Daten hätte ich spontan folgende Idee, also nicht gleich schlagen. Das Display sendent nach einem "PowerOn" ein "ich-bin-eingeschaltet-worden", das LGW hört auf diesen Trigger und sendet dann die Daten neu. Das Nextion Display sendet das "ich-bin-eingeschaltet-worden" solange (aber max. 1/2/3/4/5 Minuten oder was auch immer) bis das LGW ein "ich-bin-eingeschaltet-worden"="habe dich gehört" zurück schickt. Man kann das dann auch so spielen, dass das Nextion "ich-bin-eingeschaltet-worden" solange sendet bis er ein eindeutigen Wert erhält, der von LGW immer gesendet wird (z.B. dBm) ... Nur so als Idee... ...und ja ist ne Krücke...

amunra

Zitat von: HCS am 01 Februar 2017, 10:15:08
Ein Problem wird es geben: wenn man die labels nur ein mal bei der Initialisierung schickt, dann können sie irgend wann mal weg sein.
Aber sicherheitshalber alle paar Sekunden den gleichen Text schicken ist auch blöd, das LGW hat ja sonst noch was zu tun (ich glaube LaCrosse und PCA301 und so  :) )

Kann man im Nextion das irgendwie so hinbekommen, dass ein label seinen zuletzt gesetzten Text nach einem power cycle noch hat?
Oder das Nextion müsste bei einem boot bei 42_Nextion seine Initialisierung explizit anfordern.

Zumindest das enhanced hat ja EEPROM drauf und es gibt:
wepo t0.txt,10
repo t0.txt,10

Bezogen auf LGW#Daten hätte ich spontan folgende Idee, also nicht gleich schlagen. Das Display sendent nach einem "PowerOn" ein "ich-bin-eingeschaltet-worden", das LGW hört auf diesen Trigger und sendet dann die Daten neu. Das Nextion Display sendet das "ich-bin-eingeschaltet-worden" solange (aber max. 1/2/3/4/5 Minuten oder was auch immer) bis das LGW ein "ich-bin-eingeschaltet-worden"="habe dich gehört" zurück schickt. Man kann das dann auch so spielen, dass das Nextion "ich-bin-eingeschaltet-worden" solange sendet bis er ein eindeutigen Wert erhält, der von LGW immer gesendet wird (z.B. dBm) ... Nur so als Idee... ...und ja ist ne Krücke...

Ich revidiere den Vorschlag mal und frage mal zwecks Verständnis nach.
Zitat von: HCS am 01 Februar 2017, 10:15:08
Ein Problem wird es geben: wenn man die labels nur ein mal bei der Initialisierung schickt, dann können sie irgend wann mal weg sein.
Welche Szenarien siehst Du bzw. was meinst Du mit "mal weg".

Was es gibt ist:
Zitat0X88    System successful start up    This data is sent after a successful power-on initialization on the device
Darauf könnte man reagieren. Das funktioniert (zuverlässig => getestet) jedoch nur, wenn die Verbindung LGW inkl. 42_Nextion steht.

Wenn das LGW weg ist, dann ist 42_Nextion auch closed und irgenwann mal opened. Darauf kann man reagieren.

Oder verstehe ich etwas falsch bzw. übersehe ich etwas?

amunra

Vorschlag für die Schaltzentralle (siehe Anhang).

HCS

#65
Zitat von: amunra am 01 Februar 2017, 20:59:25
Ich revidiere den Vorschlag mal und frage mal zwecks Verständnis nach.Welche Szenarien siehst Du bzw. was meinst Du mit "mal weg".
LGW läuft, Display läuft und ist initialisiert und mit den Caption-Texten versorgt.
1) Nun Spannung vom Dispaly trennen und wieder dran
  oder
2) Per OTA neue Firmware aufspielen
  oder
3) LGW und Display gemeinsam aus-an

Danach müsste das Display von 42_Nextion die captions neu geschickt bekommen.

Fall 1) kann man evtl. als Pech berachten und ignorieren
Das könnte ich aber im LGW als "man in the middle" mitbekommen (indem ich die 0x88 auf der Bridge durchkommen sehe) und etwas veranlassen.

Im Fall 2) könnte ich im LGW irgend wie reagieren (weiß ja, das wir geflasht haben) und irgend was veranlassen.

In beiden Fällen könnte ich dem 42_Nextion vorgaukeln, dass auf eine bestimmte Seite gewechselt wurden, für die es dann die dafür definierten initCommands schickt (initPage0). Ist Deine boot-page "page 0"? Dann könnte man genau die nehmen.
Oder mit einem kleinen Patch im 42_Nextion ihm beibringen, dass ich mit dem LGW die generellen initCommands neu anfordern kann.

Fall 3) sollte gehen, wenn das 42_Nextion sich wieder auf die Bridge verbindet sollte es die initCommands auch neu schicken.

-> evtl. kann ich das Thema im LGW abhandeln.
Wir probieren es mal so. Muss nur die Zeit dazu finden.

Bin dann doch nicht mehr dazu gekommen, Dein tft aufzuspielen. Drum andres rum: habe schnell mal eine Pre-V1.26 mit den besprochenen Änderungen gebildet und angehängt (völlig ungetestet).

Zitat von: amunra am 01 Februar 2017, 22:45:35
Vorschlag für die Schaltzentralle (siehe Anhang).
Genau so hatte ich mir das vorgestellt.
Der Hammer wäre jetzt, wenn der Schalter rechts nur sichtbar wird, wenn links eine caption gesetzt wurde.
Aber notfalls könnte man die Schalter unsichtbar machen und in den initCommands noch ein vis mitschicken

Beta entfernt, siehe weiter unten

amunra

Zitat von: HCS am 01 Februar 2017, 22:55:33
Der Hammer wäre jetzt, wenn der Schalter rechts nur sichtbar wird, wenn links eine caption gesetzt wurde.
Aber notfalls könnte man die Schalter unsichtbar machen und in den initCommands noch ein vis mitschicken
Das kann man alles mit Nextion abhandeln - sowas mache ich schon auf der Main Page.

Den Rest beantworte ich demnächst...

amunra

Zitat von: HCS am 01 Februar 2017, 22:55:33
Pre-V1.26 mit den besprochenen Änderungen gebildet und angehängt (völlig ungetestet).
Mal eben angetestet - Läuft gut... es gibt aber noch Probleme mit den Pages (vielleicht auch selbst verursacht... muss es mal untersuchen) und mit der Uptime (Leerzeichen ist ein Fluch (mag das Nextion Display nicht) :-\ :() nähere Infos folgen...

HCS

Zitat von: amunra am 01 Februar 2017, 23:22:17
Leerzeichen ist ein Fluch (mag das Nextion Display nicht) :-\ :()
Das Problem wird man in den Griff bekommen müssen, ganz ohne Leerzeichen wird es nicht gehen.
Spätestens wenn jemand von 42_Nextion "Durchfluss Klo" und "5 l/m" rüber schickt.

amunra

Zitat von: HCS am 02 Februar 2017, 08:31:39
Das Problem wird man in den Griff bekommen müssen, ganz ohne Leerzeichen wird es nicht gehen.
Spätestens wenn jemand von 42_Nextion "Durchfluss Klo" und "5 l/m" rüber schickt.
Habe mich falsch ausgedrückt - Leerzeichen machen dem Nextion keine Probleme, es gibt nur ein Darstellungsproblem -> der Text wird mit den Leerzeichen zu lang und dadurch nicht mehr im der Textbox angezeigt. Also, hilft da nur quetschen (Leerzeichen weg) also kleinere oder andere Schriftart.

amunra

Zitat von: HCS am 01 Februar 2017, 22:55:33
LGW läuft, Display läuft und ist initialisiert und mit den Caption-Texten versorgt.
1) Nun Spannung vom Dispaly trennen und wieder dran
  oder
2) Per OTA neue Firmware aufspielen
  oder
3) LGW und Display gemeinsam aus-an

Danach müsste das Display von 42_Nextion die captions neu geschickt bekommen.

Fall 1) kann man evtl. als Pech berachten und ignorieren
Das könnte ich aber im LGW als "man in the middle" mitbekommen (indem ich die 0x88 auf der Bridge durchkommen sehe) und etwas veranlassen.

Im Fall 2) könnte ich im LGW irgend wie reagieren (weiß ja, das wir geflasht haben) und irgend was veranlassen.

In beiden Fällen könnte ich dem 42_Nextion vorgaukeln, dass auf eine bestimmte Seite gewechselt wurden, für die es dann die dafür definierten initCommands schickt (initPage0). Ist Deine boot-page "page 0"? Dann könnte man genau die nehmen.
Oder mit einem kleinen Patch im 42_Nextion ihm beibringen, dass ich mit dem LGW die generellen initCommands neu anfordern kann.

Fall 3) sollte gehen, wenn das 42_Nextion sich wieder auf die Bridge verbindet sollte es die initCommands auch neu schicken.

-> evtl. kann ich das Thema im LGW abhandeln.
Wir probieren es mal so. Muss nur die Zeit dazu finden.

zum Fall 1: In diesem Fall geht die 0x88 bis an das 42_Nextion Modul durch. Das läuft recht zuverlässig, aber auch nur wenn LGW und 42_Nextion Verbindung steht - das tut sie in der Regel genau in diesem Moment auch). Die 0x88 sehe ich immer wenn ich die FW auf den Nextion aufspiele und anschließend kurz das Display von der Spanmmung trenne. Ich sehe eigentlich keinen Handlungsbedarf auf der LGW Seite. Dieser Fall tritt eher in der Entwicklungsphase ein...

zum Fall 2: Nach dem Aufspielen der Firmware tritt Fall 1 oder Fall 3 ein, aber eher Fall 3. Oder?

zum Fall 3: Ja, irgendwann verbindet sich das 42_Nextion Modul und schickt die initCommands neu - hier gibt es einen gewissen Zeitverzug durch 42_Nextion reconnect verursacht.

HCS

Zitat von: amunra am 02 Februar 2017, 12:14:12
zum Fall 1: In diesem Fall geht die 0x88 bis an das 42_Nextion Modul durch. Das läuft recht zuverlässig, aber auch nur wenn LGW und 42_Nextion Verbindung steht - das tut sie in der Regel genau in diesem Moment auch). Die 0x88 sehe ich immer wenn ich die FW auf den Nextion aufspiele und anschließend kurz das Display von der Spanmmung trenne. Ich sehe eigentlich keinen Handlungsbedarf auf der LGW Seite. Dieser Fall tritt eher in der Entwicklungsphase ein...

zum Fall 2: Nach dem Aufspielen der Firmware tritt Fall 1 oder Fall 3 ein, aber eher Fall 3. Oder?

zum Fall 3: Ja, irgendwann verbindet sich das 42_Nextion Modul und schickt die initCommands neu - hier gibt es einen gewissen Zeitverzug durch 42_Nextion reconnect verursacht.

Grundlage: mit "Aufspielen der Firmware" meinte ich, das man mit Hilfe von 36_LaCrosseGateway "set nextionUpload" sie hochlädt.
Dann wird ja die Firmware auf das Nextion geladen und danach macht es einen Reset, ohne von der Spannungsversorgung weg gewesen zu sein. Und das LGW läuft da auch einfach weiter.
Da zu diesem Zeitpunkt Die Verbindung FHEM->LGW->Nextion durchgehend steht (sonst wäre kein Upload gegangen) müsste dann eigentlich 0x88 durchgehen.

Dann müsste es eigentlich so werden, dass 42_Nextion die initCommands schickt, wenn es die TCP Verbindung zum Datenport aufgebaut hat und immer, wenn es vom Display ein 0x88 bekommt, weil dann das Display initialisiert wurde und somit die initCommands braucht.

Wenn das so wäre, ist auch die Option offen, ob das LGW noch irgend welche Fälle erkennt und einfach ein 0x88 raushaut, um einen Dispaly-Reset vorzugaukeln.

amunra

Zitat von: HCS am 02 Februar 2017, 12:26:21
Dann wird ja die Firmware auf das Nextion geladen und danach macht es einen Reset, ohne von der Spannungsversorgung weg gewesen zu sein. Und das LGW läuft da auch einfach weiter.
Den Fall - mit dem Reset - habe ich noch nicht getestet, aber ich gehe davon aus, dass das Nextion dannach ein 0x88 schickt. Ich bin mir ziemlich sicher, dass das 42_Nextion auf 0x88 nicht reagiert. Das könnte man über einen Notfiy lösen, welcher dann ein "initCommands" auslöst bzw. ein reopen initiiert - dabei werden die initCommands geschickt.

Ich kann(muss) das mal durchspielen/testen bzw. ich werde alle Fälle durchspielen, wenn mir etwas auffällt, dann melde ich mich.

HCS

Zitat von: amunra am 02 Februar 2017, 12:50:54
Das könnte man über einen Notfiy lösen, welcher dann ein "initCommands" auslöst bzw. ein reopen initiiert - dabei werden die initCommands geschickt.
Oder, falls sich das als der richtige Weg erweist, durch Einreichen eins Patch für 42_Nextion

amunra

#74
Statusbericht, was mir so aufgefallen ist:
- Wenn das Nextion weg ist, dann erkennt das LGW es nicht.
- Nach der init und connect Phase schaltet das LGW immer noch auf page 0 und nicht auf LGW#main
- Das Icon oben links heißt was genau? Mit einem AP verbunden? oder LGW ist in AP-Mode? Und warum wird auf dem OLED ein WiFi Symbol angezeigt und auf dem Nextion nicht.
- Wenn das LGW im "LGW-AP-Mode" ist, weil er keine Verbindung zum AP aufbauen konnte. Warum werden dann positive dBm Werte angezeigt. Warum ist das so?
- Vorschlag für Uptime: Die Schriftart ist so breit und damit gut zu lesen, dass man auf die Leerzeichen zwischen Tg./Std./Min. verzichten kann.

Zum Thema "initCommands":
Es ist so, dass nicht "alle" Nextion labels vorbefüllt werden können. Man "muss" sich auf der entsprechenden Nextion Page befinden, um die Daten zu senden. Dafür gibt es im 42_Nextion Modul die Attribute initPage1-9. Damit erkennt das 42_Nextion, dass man sich auf der entsprechenden page beindet, und man kann dann die gewünschten Daten senden. Klingt gut! - muss ich mal testen.