LaCrosseGateway mit Nextion Display

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

Vorheriges Thema - Nächstes Thema

amunra

Sorry, muss doch noch nerven – mit dem LaCrosseGateway Modul scheint es auch Probleme zu geben. Nach einem Reboot findet kein Reconnect statt. Mit ,,set myLGW connect" ist alles wieder gut.
Dies nur am Rande und zur Info. LGW mit AP Verbunden und mehrere Minuten online.

HCS

Zitat von: amunra am 04 Februar 2017, 21:59:03
Sorry, muss doch noch nerven – mit dem LaCrosseGateway Modul scheint es auch Probleme zu geben. Nach einem Reboot findet kein Reconnect statt. Mit ,,set myLGW connect" ist alles wieder gut.
Meinst Du FHEM-reboot oder LGW-reboot?
Wie ist beim LaCrosseGateway Modul das Attribut timeout gesetzt?

amunra

Zitat von: HCS am 05 Februar 2017, 08:19:14
Meinst Du FHEM-reboot oder LGW-reboot?
Wie ist beim LaCrosseGateway Modul das Attribut timeout gesetzt?
Ja, LGW Reboot und nein hatte keinen timeout gesetzt ::) Jetzt geht es... Danke.

amunra

LGW Nextion UI Version 0.6 (Test Version)

Changelog:
- Main#Page: Die höhe des Uhrzeit-Felds vergrößert, da die Schrift unten abgeschnitten wurde
- Main#Page: Temp Wert weiter nach rechts verschoben - damit ist die Temp Anzeige symetrischer...   
- Settings Seite überarbeitet:
   - es gibt kein "set as default" Button mehr
   - es gibt kein Button up/down mehr
   - es gibt nun ein "slider", welcher direkt die ausgewählte Helligkeit als "default setzt" -> damit wird die komlexität reduziert.
   - es gibt kein "Display auto-off" Button mehr
   - es gibt nun ein "slider", welcher direkt die ausgewählte "power off time" setzt. Wertebereich liegt zwischen 0(off=power off disabled) bis 120 Sekunden.
- (TEST) Dark Design (Main-Page und Info-Page) -> Bitte um Feedback -> Ich findes es "super! Der grau Schleier war mit der Zeit gewöhnungsbedürftig und die Fraben wirken nun frischer!"

HCS

OK, ich schaue es am WE an, vorher geht vermutlich nichts.

Ich habe noch "Sekunden abschnippeln" auf der ToDo und das war es dann.
Wenn Dir nichts mehr aufgefallen ist, dann mache ich am WE evtl. die 1.26 fertig.

amunra

Zitat von: HCS am 09 Februar 2017, 21:04:31
Wenn Dir nichts mehr aufgefallen ist, dann mache ich am WE evtl. die 1.26 fertig.
LGW seitig bisher alles "grün"

amunra

#96
LGW Nextion UI Version 0.7

Changelog:
- Umstellung auf "dark-style". Der Kontrast und die Frabsättigung ist dadurch besser geworden.
- (NEU) Wetter Forecast Seite auf Basis des FHEM Weather-Moduls. Man gelangt auf die Seite per Touch auf den Temp-Wert in der Main#Page.

Video, welches zeigt was bisher so geht, gibt es hier

Hinweise/Beschreibung zur Nutzung der Wetter Seite:
1) Es wird ein Weather Device mit dem Namen "Wetter" (Achtung der Name ist case sensitiv) vorausgesetzt.
2) Für die Übersetzung/Zuordnung der Wetter Codes und Icons wird eine Funktion benötigt - diese muss in die 99_myUtils.pm
3) "initPage7" muss gesetzt sein.

2) 99_myUtils.pm Funktion

sub MapWeatherToNextionIcon($)
{
  my ($val) = @_;
# Code  Nextion PNG "Code Description"
return 55 if ($val==0); # 0 55 12 chance_of_rain.png "0 tornado"
return 55 if ($val==1); # 1 55 13 chance_of_rain_night.png "1 tropical storm"
return 55 if ($val==2); # 2 55 14 chance_of_sleet.png "2 hurricane"
return 58 if ($val==3); # 3 58 15 chance_of_snow.png "3 severe thunderstorms"
return 58 if ($val==4); # 4 58 16 chance_of_storm.png "4 thunderstorms"
return 44 if ($val==5); # 5 44 17 chance_of_storm_night.png "5 mixed rain and snow"
return 51 if ($val==6); # 6 51 18 clear.png "6 mixed rain and sleet"
return 53 if ($val==7); # 7 53 19 cloudy.png "7 mixed snow and sleet"
return 20 if ($val==8); # 8 20 20 drizzle.png "8 freezing drizzle"
return 20 if ($val==9); # 9 20 21 drizzle_night.png "9 drizzle"
return 29 if ($val==10); # 10 29 22 dust.png "10 freezing rain"
return 12 if ($val==11); # 11 12 23 flurries.png "11 showers"
return 12 if ($val==12); # 12 12 24 fog.png "12 showers"
return 54 if ($val==13); # 13 54 25 haze.png "13 snow flurries"
return 15 if ($val==14); # 14 15 26 haze_night.png "14 light snow showers"
return 28 if ($val==15); # 15 28 27 heavyrain.png "15 blowing snow"
return 53 if ($val==16); # 16 53 28 heavysnow.png "16 snow"
return 51 if ($val==17); # 17 51 29 icy.png "17 hail"
return 51 if ($val==18); # 18 51 30 mist.png "18 sleet"
return 22 if ($val==19); # 19 22 31 mostlycloudy.png "19 dust"
return 24 if ($val==20); # 20 24 32 mostlycloudy_night.png "20 foggy"
return 25 if ($val==21); # 21 25 33 mostly_clear_night.png "21 haze"
return 52 if ($val==22); # 22 52 34 mostly_cloudy.png "22 smoky"
return 23 if ($val==23); # 23 23 35 mostly_cloudy_night.png "23 blustery"
return 59 if ($val==24); # 24 59 36 mostly_sunny.png "24 windy"
return 29 if ($val==25); # 25 29 37 na.png "25 cold"
return 19 if ($val==26); # 26 19 38 overcast.png "26 cloudy"
return 32 if ($val==27); # 27 32 39 partlycloudy.png "27 mostly cloudy (night)"
return 34 if ($val==28); # 28 34 40 partlycloudy_night.png "28 mostly cloudy (day)"
return 40 if ($val==29); # 29 40 41 partly_cloudy.png "29 partly cloudy (night)"
return 41 if ($val==30); # 30 41 42 partly_cloudy_night.png "30 partly cloudy (day)"
return 57 if ($val==31); # 31 57 43 rain.png "31 clear (night)"
return 56 if ($val==32); # 32 56 44 rainsnow.png "32 sunny"
return 33 if ($val==33); # 33 33 45 scatteredshowers.png "33 fair (night)"
return 36 if ($val==34); # 34 36 46 scatteredshowers_night.png "34 fair (day)"
return 27 if ($val==35); # 35 27 47 scatteredthunderstorms.png "35 mixed rain and hail"
return 56 if ($val==36); # 36 56 48 scatteredthunderstorms_night.png "36 hot"
return 47 if ($val==37); # 37 47 49 showers.png "37 isolated thunderstorms"
return 47 if ($val==38); # 38 47 50 showers_night.png "38 scattered thunderstorms"
return 47 if ($val==39); # 39 47 51 sleet.png "39 scattered thunderstorms"
return 45 if ($val==40); # 40 45 52 smoke.png "40 scattered showers"
return 28 if ($val==41); # 41 28 53 snow.png "41 heavy snow"
return 15 if ($val==42); # 42 15 54 snowflurries.png "42 scattered snow showers"
return 28 if ($val==43); # 43 28 55 storm.png "43 heavy snow"
return 39 if ($val==44); # 44 39 56 sunny.png "44 partly cloudy"
return 27 if ($val==45); # 45 27 57 sunny_night.png "45 thundershowers"
return 15 if ($val==46); # 46 15 58 thunderstorm.png "46 snow showers"
return 45 if ($val==47); # 47 45 59 windy.png "47 isolated thundershowers"
return 37 if ($val==3200);  # 3200 37 "3200 not available"

return 37;
}


3) "initPage7" Code

# initPage7
p0.pic={(MapWeatherToNextionIcon(ReadingsVal("Wetter","fc1_code",100)))};
t0.txt="[Wetter:fc1_day_of_week] [Wetter:fc1_date]\rmin:[Wetter:fc1_low_c] max:[Wetter:fc1_high_c]";
p1.pic={(MapWeatherToNextionIcon(ReadingsVal("Wetter","fc2_code",100)))};
t1.txt="[Wetter:fc2_day_of_week] [Wetter:fc2_date]\rmin:[Wetter:fc2_low_c] max:[Wetter:fc2_high_c]";
p2.pic={(MapWeatherToNextionIcon(ReadingsVal("Wetter","fc3_code",100)))};
t2.txt="[Wetter:fc3_day_of_week] [Wetter:fc3_date]\rmin:[Wetter:fc3_low_c] max:[Wetter:fc3_high_c]";
p3.pic={(MapWeatherToNextionIcon(ReadingsVal("Wetter","fc4_code",100)))};
t3.txt="[Wetter:fc4_day_of_week] [Wetter:fc4_date]\rmin:[Wetter:fc4_low_c] max:[Wetter:fc4_high_c]";
p4.pic={(MapWeatherToNextionIcon(ReadingsVal("Wetter","fc5_code",100)))};
t4.txt="[Wetter:fc5_day_of_week] [Wetter:fc5_date]\rmin:[Wetter:fc5_low_c] max:[Wetter:fc5_high_c]";


Viel Spaß...

HCS


kl@us

Hallo HCS, Hallo Amuran,

vielen Dank für Eure hervorragende Arbeit. Ich lese schon von Anfang an mit und versuche auch Euer Beispiel nachzuvollziehen.

Was mir allerdings nicht gelingt ist das Nextion mit dem LGW über Softserial anzubinden, sodaß es auch über LGW erkannt wird.

Die Konstellation Nextion, Nodemcu über ESP-Link funktioniert bei gleicher PIN-Belegung (5V, GND, TXD, RXD) über das Nextion-Modul ohne Probleme mit 9600 Baud.

Wenn ich dies mit LGW ( hier werkelt ein RFM69, ein BME80 und ein OLED) probiere, dann wird das Nextion im LGW leider nicht erkannt. Über das Nextion Modul ist das Display auch nicht erreichbar.

Meine Frage an HCS: Wie erkennt LGW das ein Nextion angeschlossen ist. Muss ich hier ggf. noch etwas am Nextion konfigurieren?

Vielen Dank nochmal für Eure Arbeit.

Gruß

Klaus
Produktiv: FHEM (aktuell) auf NUC; diverse HM-Sensoren und Aktoren; Z-Wave, HUE

amunra

Hört sich für mich an als wenn Du auf der Setup Page die Soft serial bridge nicht konfiguriert hättest oder nicht korrekt? Meine Konfig anbei.

HCS

Zitat von: kl@us am 12 Februar 2017, 13:36:25
Meine Frage an HCS: Wie erkennt LGW das ein Nextion angeschlossen ist. Muss ich hier ggf. noch etwas am Nextion konfigurieren?
Nein. Das muss mit der von Amunra geziegte Konfiguration gehen. Am Nextion muss man nichts machen.

OT: Ich muss noch etwas an set blabla nextionUpload arbeiten. Aktuell gibt es zwei Probleme:
1. wenn das tft File so groß ist, wie das LHWNUI, dann kommt es in FHEM zu einem Timeout. Der Upload läuft zwar durch, aber schön ist das nicht.
2. Nach dem Upload steckt das LGWNUI auf der "Booting ..." page fest. Das hatte ich mit meiner hässlichen test-UI nicht. Muss ich noch erforschen, wo es da klemmt.

Und wir werden wohl dem 42_Nextion einen Patch vorschlagen müssen, um es mit einem timeout für den reconnect wie beim LGW zu erweitern, dass man nach einem Upload, reboot, usw. nicht so ewig warten muss.

HCS


amunra

Zitat von: HCS am 12 Februar 2017, 17:12:33
OT: Ich muss noch etwas an set blabla nextionUpload arbeiten. Aktuell gibt es zwei Probleme:
1. wenn das tft File so groß ist, wie das LHWNUI, dann kommt es in FHEM zu einem Timeout. Der Upload läuft zwar durch, aber schön ist das nicht.
2. Nach dem Upload steckt das LGWNUI auf der "Booting ..." page fest. Das hatte ich mit meiner hässlichen test-UI nicht. Muss ich noch erforschen, wo es da klemmt.

Und wir werden wohl dem 42_Nextion einen Patch vorschlagen müssen, um es mit einem timeout für den reconnect wie beim LGW zu erweitern, dass man nach einem Upload, reboot, usw. nicht so ewig warten muss.
Hm, ja vermutlich hilft ja die Umstellung auf BlockingCall etwas? Ich kann mir das mal anschauen.

Zitat von: HCS am 12 Februar 2017, 17:12:33
Und wir werden wohl dem 42_Nextion einen Patch vorschlagen müssen, um es mit einem timeout für den reconnect wie beim LGW zu erweitern, dass man nach einem Upload, reboot, usw. nicht so ewig warten muss.
Ja ist mir auch schon aufgefallen. Vielleicht kann man das vom LGW-Modul adaptieren - kann ich mir auch mal auf die ToDo Liste schreiben (Prio 2).

Zitat von: HCS am 12 Februar 2017, 17:33:09
LGW V1.26 ist raus.
Siehe hier: https://forum.fhem.de/index.php/topic,43672.msg583437.html#msg583437
Sieht gut aus. Das OLED Wifi AP Icon Thema ist noch offen oder? Das Icon wird trotz AP Modus bei mir immer noch angezeigt. Aber, kein Stress, es gibt wichtigere Themen.

HCS

Zitat von: amunra am 12 Februar 2017, 18:01:14
Hm, ja vermutlich hilft ja die Umstellung auf BlockingCall etwas? Ich kann mir das mal anschauen.
Nee, lass mal, habe es schon fast umgebaut, aber mir die Ansage von Rudi, dass man kurz vor FHEM-2.8-Release keine riskanten Umbauten mehr machen soll, zu Herzen genommen. Ist also in der pipeline.

Zitat von: amunra am 12 Februar 2017, 18:01:14
Ja ist mir auch schon aufgefallen. Vielleicht kann man das vom LGW-Modul adaptieren - kann ich mir auch mal auf die ToDo Liste schreiben (Prio 2).
Kannst Du gerne übernehmen. Aber mit Prio 1  ;D ;D
Ist eigentlich recht einfach:
Ein Attribut "timeout"
Ein internal timer, der mit timeout Sekunden feuert
wenn er feuert, dann an das Nextion ein get "ping" senden (auf Nextion-Seite muss man nichts dafür tun)
Einen Moment warten und schauen, ob ein "ping" zurückkommt.
Wenn nicht, ein DevIo_CloseDev -> DevIo_OpenDev

Am besten gleich ein Attribut disable 0/1 mit einbauen, um es generell abschalten zu können, dass es keinerlei connect-Versuch (egal ob timer oder sonst wie) macht. Das disable Attribut kann man sich in 36_LaCrosseGateway abschauen.

Zitat von: amunra am 12 Februar 2017, 18:01:14
Das OLED Wifi AP Icon Thema ist noch offen oder? Das Icon wird trotz AP Modus bei mir immer noch angezeigt.
Ja, steht noch in der ToDo drin. Wollte erst mal die für LGWNUI erforderlichen Dinge raushauen, dass wir da funktionsfähig sind.

HCS

Zitat von: HCS am 12 Februar 2017, 18:58:48
Wenn nicht, ein DevIo_CloseDev -> DevIo_OpenDev
Ein "set reopen" hat 42_Nextion ja schon, also dann anstatt DevIO... einfach das aufrufen.