LaCrosseGateway mit Nextion Display

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

Vorheriges Thema - Nächstes Thema

HCS

Habe gerade eine PeMue 1.1 Platine bestückt und gleich mal das Nextion dran gehängt.
Nein, Platine neben dem Display ist nicht der Endausbau  ;D
Zu der geschlachteten WS-9140IT passt das dunkle Layout super.

Zitat von: amunra am 28 Januar 2017, 22:00:45
- (*1) Mit ein paar Werten die das LGW liefert bsp. temp, hum etc. werden ohne units gesendet (bzw. konfigurierbar über setup-page) rssi werden grds. mit unit gesendet.
(*1) Idee ist, abhängig von den Werten -90dBm, dann ist links in der Ecke die signalstärke weniger und evtl. rot bzw. die Schrift rechts "xyz dBm" = "rot".
OK. IP, FPM und heap kommen immer ohne units. RSSI hänge ich noch die Einstellung der Setup-Page mit dran.

Zitat von: amunra am 28 Januar 2017, 22:00:45
- (*2) LGW LGW#prog wird direkt angesprochen/adressiert, das sollte mit der Page0 "Main" analog erfolgen.
(*2) Hintergrund ist, dass ich eine Boot Seite einblenden möchte Page0, diese ist jedoch belegt (Hauptseite). Aus diesem Grund musste ich einen Workaround bauen - unschön.
OK, dann sollte die Seite LGW#main heißen und ich stelle es darauf um.
LGW#main ist dann die Seite, die das LGW setzt, wenn es mit der Initialisierung fertig ist (oder wenn es einen Progress wieder verschwinden lässt)

Zitat von: amunra am 28 Januar 2017, 22:00:45
Wünsche:
- Auf der Infos Seite die LGW Version -> das LGW sendet "nur die Version" an "tInfo01.txt" -> Dann würde auf der Info Seite "Version, IP, FPM, Heap" stehen. Vorschläge für weitere Werte? z.B. Uptime?
Dann setze ich noch LGW#ver und LGW#up

Probleme / Fragen
An den meisten Stellen passt meine IP nicht drauf (siehe Anhänge)
Wie schaltet man den "nach-10-Sekunden-Dunkel-Mode" wieder ab?
Welche Namen haben Datum/Uhrzeit?
Sollten wir bei extended die eingebaute RTC verwenden, dass man (42_Nextion) es nur einmal am Tag schicken muss?
Rückst Du das HMI auch raus (dann müsste ich nicht nach den Namen von Datum/Urzeit fragen  ;) )?

amunra

Zitat von: amunra am 28 Januar 2017, 22:00:45
Was geht:[/u]
- eigentlich alles  ;)
- Display Dimmen - (Spielerei)
- Display schaltet sich nach 10 sek ab - wenn kein touch event. (Optional/Manuell: Siehe Settings Page) - (Spielerei)
- Uhrzeit kann an Textbox "tHour" geschickt werden
- Datum kann an Textbox "tDate" geschickt werden

.......
Sorry - bin leider kurz angebunden... melde mich...

HCS

#47
Zitat von: amunra am 28 Januar 2017, 22:00:45
- Uhrzeit kann an Textbox "tHour" geschickt werden
- Datum kann an Textbox "tDate" geschickt werden

Es scheint mir eine schlaue Strategie zu sein, dass ich Deine Beiträge erst mal lese, bevor ich sie beantworte.  :-[ ;D ;D
Dann hat sich ja ein Punkt schon erledigt.

amunra

Ein Vorschlag, wir sammeln zunächst die Themen/ToDo's, die im LGW umgesetzt werden müssen bzw. wir sprechen darüber, wenn wir aus der Alpha Phase raus sind (Vermutlich ab der nächsten Version). Hintergrund ist, dass ich teilweise massive Änderungen an der UI vornehmen muss, weil ich ein paar Ideen habe und mein bisheriges Konzept so nicht aufgeht. Das ist auch der Grund warum ich das HMI File noch nicht rausrücke. Ich möchte ungerne Verwirrung stiften und Diskussionen entfachen, die in der nächsten Version nicht mehr relevant sind. Und ja es macht Sinn, dass Du (@HCS) auch unter der Haube schauen können musst... (<- hört sich komisch an - na,ja  ;))

Zitat von: HCS am 29 Januar 2017, 11:14:10
An den meisten Stellen passt meine IP nicht drauf (siehe Anhänge)
Ja, ich weiß :-\ – das meinte ich mit massive Probleme mit den Schriftarten.
Zitat von: HCS am 29 Januar 2017, 11:14:10
Wie schaltet man den "nach-10-Sekunden-Dunkel-Mode" wieder ab?
In der aktuellen Version: Stromversorgung trennen. Das Einschalten und auch Ausschalten dieser Funktion kommt mit der nächsten Version.
Zitat von: HCS am 29 Januar 2017, 11:14:10
Welche Namen haben Datum/Uhrzeit?
Uhrzeit Feld wird sich - mit sehr hoher Wahrscheinlichkeit - in der neuen Version ändern – es muss eigentlich ,,tTime" heißen und nicht ,,tHour".
Zitat von: HCS am 29 Januar 2017, 11:14:10
Sollten wir bei extended die eingebaute RTC verwenden, dass man (42_Nextion) es nur einmal am Tag schicken muss?
Ich habe keine extended Version und kann daher nichts dazu sagen  - es klingt aber sinnvoll. Muss auf der UI-Seite dafür etwas getan werden?

Zitat von: HCS am 29 Januar 2017, 11:14:10
OK. IP, FPM und heap kommen immer ohne units. RSSI hänge ich noch die Einstellung der Setup-Page mit dran.
Hört sich gut an, bedeutet gleichzeitig auch viel Logik in Nextion ausgelagert -> bei Änderung muss die FW neu drauf. Ich bin unschlüssig, ob das gut oder schlecht ist.
Kann aber vermutlich auf die ToDo-Liste

Zitat von: HCS am 29 Januar 2017, 11:14:10
OK, dann sollte die Seite LGW#main heißen und ich stelle es darauf um.
LGW#main ist dann die Seite, die das LGW setzt, wenn es mit der Initialisierung fertig ist (oder wenn es einen Progress wieder verschwinden lässt)
Kann auf die ToDo-Liste

Zitat von: HCS am 29 Januar 2017, 11:14:10
Dann setze ich noch LGW#ver und LGW#up
Kann auf die ToDo-Liste

HCS

Zitat von: amunra am 30 Januar 2017, 12:30:16
Uhrzeit Feld wird sich - mit sehr hoher Wahrscheinlichkeit - in der neuen Version ändern – es muss eigentlich ,,tTime" heißen und nicht ,,tHour".
Ist für mich nicht relevant, schickt man ja von 42_Nextion aus.
Abgestimmt müssen nur die Elemente sein, die das LGW selbst versorgt.

Zitat von: amunra am 30 Januar 2017, 12:30:16
Ich habe keine extended Version und kann daher nichts dazu sagen  - es klingt aber sinnvoll. Muss auf der UI-Seite dafür etwas getan werden?
Bestimmt. Aber ist für mich auch nicht relevant, da das LGW auch keine Urzeit kennt, muss man die von 42_Nextion aus schicken.
War nur so ein Gedanke.

Auf der ToDo steht nun:
- bei RSSI die Einheit nur senden, wenn auf der Setup-Page konfiguriert (wie bei LGW#temp, LGW#hum, LGW#pres)
- anstatt "page 0" die Seite LGW#main setzen
- LGW#ver und LGW#up senden

Und dann muss ich noch den "set nextionUpload" auf non blocking umbauen.
Dein tft ist so groß, dass es in dem blockend wartenden FHEM zu einem Timeout kommt.
Es wurde zwar hochgeladen, aber bis das LGW es dann auch auf das Display draufgeschoben hat, ist reichlich Zeit rum.
Das ist übrigens einer der Nachteile der "komplette Hintergrundbilder"-Strategie. Das tft wird sehr groß, weil man pro page dann auch noch zwei braucht.

amunra

Ja, stimmt/ich weiß – Speicherverbrauch steht bei mir auch noch auf der ToDo-Liste – ich habe ein/zwei Ideen, aber grds. sollte das LGW es Händeln können. Ich hantiere aktuell mit einer Karte rum, weil es einfach schneller ist - das ist/sollte aber kein Prod-Szenario sein.

HCS

Zitat von: amunra am 30 Januar 2017, 13:21:29
aber grds. sollte das LGW es Händeln können.
-->
Zitat von: HCS am 30 Januar 2017, 13:09:40
Und dann muss ich noch den "set nextionUpload" auf non blocking umbauen.
Dein tft ist so groß, dass es in dem blockend wartenden FHEM zu einem Timeout kommt.
Es wurde zwar hochgeladen, aber bis das LGW es dann auch auf das Display draufgeschoben hat, ist reichlich Zeit rum.

Da Problem aktuell ist "nur", dass FHEM auf die Rückmeldung vom LGW wartet, irgendwann einen Timeout bekommt (während man auf dem Nextion noch die Prozente in der genialen roten Schrift hochzählen sieht) und dann natürlich auch kein Endergebnis anzeigt. Das tft war aber hochgeladen und ist "angesprungen"
Das passiert in zwei Schritten: 36_LaCrosseGateway lädt das tft auf das LGW hoch (was noch relativ schnell geht), wo es erst mal im SPIFFS zwischengelagert wird und von dort schiebt es das LGW dann recht gemütlich auf das Nextion drauf (mit 57600, mehr packt die soft serial nicht).

Ich will aber das Blocken bei allen Uploads (LGW-Firmware, AddOn-Firmware und Nextion) loswerden, es ist eh uncool, dass das ganze FHEM in der Zeit steht.
Ist nur nicht gerade mal schwups umgebaut.  :(

amunra

Das hast bestimmt schon gesehen, aber Du könntest Dir HttpUtils_NonblockingGet anschauen. Das sieht jetzt nicht all zu schwer aus das in das Modul einzubauen. Und ja es stimmt - es ist nicht mal eben

HCS

Zitat von: amunra am 30 Januar 2017, 14:24:35
Das hast bestimmt schon gesehen, ...
Ich hatte das im Auge: https://wiki.fhem.de/wiki/Blocking_Call

Hatte ich schon erwähnt? Baut man nicht mal eben ein.  ;D ;D

amunra

Mit Blocking_Call habe ich auch schon ein paar Sachen realisiert – ich hebe aber jetzt nicht die Hand ;)

amunra

#55
@HCS LGW Nextion UI (LGW-NUI) 0.4 (pre-Beta)

Achtung: "Nur" für den LGW Entwickler und die LGW V:1.2(6->x)! (Es funktioniert eingeschränkt mit LGW V1.25)

Changelog:
- Umstellung auf globale Variablen. Das fürhrt dazu, dass die Werte nicht erneut gesendet werden müssen, damit diese angezeigt werden.
- Settings: Funktion "Display Auto off" lässt sich aktivieren und wieder deaktivern. Aktiv=>"rot" Inaktiv="kein rot"   ;) - An die Seite muss ich eh noch dran...
- LGW#prog Schrifgröße bzw. die Felder angepasst. Kommentar: Nicht glücklich, aber es passt.
- Info Seite: Schriftgröße und Felder angepasst damit Werte passen
- Info Seite: Es gibt jetzt eine zweite. Man kann durch Klicken auf den Info Button zwischen Seite 1 und 2 hin und her schalten.
- Icon Main-Temperatur-Anzeige entfernt - fand die Seite zu überladen mit Icons. Ist das schlimm und vermisst man es?
- WiFi dBm Value passt sich der entsprechenden Werten wie folgt an:
   -0  bis -30 dBm => Amazing    => HELL GRÜN
   -31 bis -67 dBm => Very Good => GRÜN
   -68 bis -70 dBm => Okay     => GRÜN
   -71 bis -80 dBm => Not Good  => ORANGE
   -81 bis -90 dBm => Unusable  => ROT
- Das Nextion Display muss ohne "Add units" - Option auf der LGW Config Page - laufen. Es ist kompatibel, aber die Werte werden ggf. abgeschnitten (worst-case: Werte werden nicht dargestellt) und es gibt keine Ververbung der Werte (siehe dBm).
- Bootpage animiert (Spielerei muss sein ;o))
- HUM und WIND postfix machen immer noch Probleme(Font-Frust macht sich breit). Idee: Ich mache eine Textbox mit einer kleineren Schrift für den HUM und WIND postfix. Ferner wird davon ausgegangen, dass Wind nur Einstellig angezeigt wird.
- tHour heißt nun tTime
- Sollte Bootpage hängen bleiben oder was auch immer, dann gelangt man per Touch auf die Schrift "booting..." auf die "LGW#main" Page.   
- Design: Infos Seite - hoffentlich schöner?

Offene Punkte:
- (Prio 1+++++++ ;o)) Wie soll das ganze Projekt den heißen "LGWNUI" (LGW Nextion UI)?
- (Prio 1+++) Schriftart - Schon vier durchprobiert... *(Etwas für Mutter und Vater ersch**** grrrr)
- (Prio 1) Ver-/Einfärben der Werte für HUM,PRES,WIND,TEMP. Ich würde gerne die Farben nach einem Ampel-System einfärben. Beispiel: 0°C => Blau - | größer 0°C bis X°C => GELB | 21°C => Grün | ab 25°C => Rot. hat jemand einen Vorschlag für die zuvor genannten Werte - sonst suche ich etwas raus und definiere selbst, wie bei dBm.  :-\
- (Prio 2) Räumlichkeiten: Lampe an/aus, Rollo rauf/runter...
- Weitere Themen später...

Sorry für das 1:1 Spiel => Wir sind bald soweit...
@HCS: Welche Displays hast Du bzw. auf welche Displays kannst Du zurückgreifen?

amunra

Zitat von: HCS am 30 Januar 2017, 13:09:40
Auf der ToDo steht nun:
- bei RSSI die Einheit nur senden, wenn auf der Setup-Page konfiguriert (wie bei LGW#temp, LGW#hum, LGW#pres)
- anstatt "page 0" die Seite LGW#main setzen
- LGW#ver und LGW#up senden
Ganz vergessen zu erwähnen - die o.g Punkte können so umgesetzt werden - die pre-Beta ist dafür vorbereit bzw. funktioniert erst ordnungsgemäß (siehe dBm), wenn die Punkte umgesetzt sind.

HCS

Zitat von: amunra am 01 Februar 2017, 00:31:16
- Icon Main-Temperatur-Anzeige entfernt - fand die Seite zu überladen mit Icons. Ist das schlimm und vermisst man es?
Muss ich heute abend hochladen und anschauen.
Aber das wird wohl leider wieder eine Geschmacksfrage sein.

Zitat von: amunra am 01 Februar 2017, 00:31:16
- WiFi dBm Value passt sich der entsprechenden Werten wie folgt an:
   -0  bis -30 dBm => Amazing    => HELL GRÜN
   -31 bis -67 dBm => Very Good => GRÜN
   -68 bis -70 dBm => Okay     => GRÜN
   -71 bis -80 dBm => Not Good  => ORANGE
   -81 bis -90 dBm => Unusable  => ROT
bei -81 dBm funktioniert das LGW bei mir noch

Zitat von: amunra am 01 Februar 2017, 00:31:16
Ferner wird davon ausgegangen, dass Wind nur Einstellig angezeigt wird.
:o dann wäre ja bei 9 km/h schon Schluss. Hatte kürzlich 80 km/h als Spitze im Chart.

Zitat von: amunra am 01 Februar 2017, 00:31:16
- (Prio 1+++++++ ;o)) Wie soll das ganze Projekt den heißen "LGWNUI" (LGW Nextion UI)?
Oder ANNA (Amunras Neue Nextion Anzeige)  ;D ;D

Zitat von: amunra am 01 Februar 2017, 00:31:16
- (Prio 1) Ver-/Einfärben der Werte für HUM,PRES,WIND,TEMP. Ich würde gerne die Farben nach einem Ampel-System einfärben. Beispiel: 0°C => Blau - | größer 0°C bis X°C => GELB | 21°C => Grün | ab 25°C => Rot. hat jemand einen Vorschlag für die zuvor genannten Werte - sonst suche ich etwas raus und definiere selbst, wie bei dBm.  :-\
Wem so was nicht gefällt, der kann es sich ja dann ausbauen (z.B. ich)

Zitat von: amunra am 01 Februar 2017, 00:31:16
- (Prio 2) Räumlichkeiten: Lampe an/aus, Rollo rauf/runter...
Es ist doch kaum vorhersehbar, was jemand außer dem, was das LGW (Temp, Hum, Pres, ...) liefert, benötigt.
Eine Idee wäre eine Universalwaffe (für Leute, die den Nextion-Editor nicht lernen wollen) in der Art:
Eine "Values" page mit Beschriftung- / Wert-Paaren
lblV1:   val1
lblV2:   val2
lblV3:   val3
...
Die Labels könnte man dann im 42_Nextion in den initCommands mit dem belegen, was man braucht und mit irgend welchen notify die Werte liefern.

Sinngemäß dann noch eine "Steuer" page
lblB1:   [buttton1On]  [buttton1Off]
lblB2:   [buttton2On]  [buttton2Off]
lblB3:   [buttton3On]  [buttton3Off]

Zitat von: amunra am 01 Februar 2017, 00:31:16
@HCS: Welche Displays hast Du bzw. auf welche Displays kannst Du zurückgreifen?
2,4" enhanced (NX3224K024) und 3.2" enhanced (NX4024K032)

Zitat von: amunra am 01 Februar 2017, 08:37:38
Ganz vergessen zu erwähnen - die o.g Punkte können so umgesetzt werden - die pre-Beta ist dafür vorbereit bzw. funktioniert erst ordnungsgemäß (siehe dBm), wenn die Punkte umgesetzt sind.
Umgesetzt sind sie. Muss nur noch eine LGW-Pre-Beta bilden, dann kannst Du damit probieren.

HCS

Zitat von: HCS am 01 Februar 2017, 08:53:17
Sinngemäß dann noch eine "Steuer" page
lblB1:   [buttton1On]  [buttton1Off]
lblB2:   [buttton2On]  [buttton2Off]
lblB3:   [buttton3On]  [buttton3Off]

oder gar so:
lblB1:   [buttton1On]  [buttton1Off] lblS1
lblB2:   [buttton2On]  [buttton2Off] lblS1
lblB3:   [buttton3On]  [buttton3Off] lblS1

noch ein label für den State dahinter

Dann könnte man:


Klospülung: [Ein]  [Aus]  spült
Licht:      [Ein]  [Aus]  aus
Lüftung:    [Ein]  [Aus]  error

amunra

Zitat von: HCS am 01 Februar 2017, 08:53:17
Muss ich heute abend hochladen und anschauen.
Aber das wird wohl leider wieder eine Geschmacksfrage sein.
Stimmt, sonst baue ich es wieder ein.
Zitat von: HCS am 01 Februar 2017, 08:53:17
bei -81 dBm funktioniert das LGW bei mir noch
Ja "Unusable" ist auch leicht übertrieben...  ;)
Zitat von: HCS am 01 Februar 2017, 08:53:17
:o dann wäre ja bei 9 km/h schon Schluss. Hatte kürzlich 80 km/h als Spitze im Chart.
Sorry, gemeint war "keine Nachkommastellen"
Zitat von: HCS am 01 Februar 2017, 08:53:17
Oder ANNA (Amunras Neue Nextion Anzeige)  ;D ;D
;D ;D ;D - ne ne das lassen wir mal...
Zitat von: HCS am 01 Februar 2017, 08:53:17
Wem so was nicht gefällt, der kann es sich ja dann ausbauen (z.B. ich)
Dann stelle ich das mal zurück - dBm sollte erstmal reichen.
Zitat von: HCS am 01 Februar 2017, 08:53:17
Es ist doch kaum vorhersehbar, was jemand außer dem, was das LGW (Temp, Hum, Pres, ...) liefert, benötigt.
Eine Idee wäre eine Universalwaffe (für Leute, die den Nextion-Editor nicht lernen wollen) in der Art:
Eine "Values" page mit Beschriftung- / Wert-Paaren
lblV1:   val1
lblV2:   val2
lblV3:   val3
...
Die Labels könnte man dann im 42_Nextion in den initCommands mit dem belegen, was man braucht und mit irgend welchen notify die Werte liefern.

Sinngemäß dann noch eine "Steuer" page
lblB1:   [buttton1On]  [buttton1Off] lblS1
lblB2:   [buttton2On]  [buttton2Off] lblS1
lblB3:   [buttton3On]  [buttton3Off] lblS1
Ja, so hatte ich mir das auch vorgestellt - sonst werde ich nie fertig  ;D ;) Ich baue mal was zusammen - Feintuning/Details können wir dann noch klären...