Nextion - günstiges Touch-Display an FHEM (auch remote)

Begonnen von viegener, 24 März 2016, 00:06:06

Vorheriges Thema - Nächstes Thema

tiwo85

Hallo,
Mein Nextiondisplay läuft mittlerweile auch soweit. Ich habe ein HMI erstellt mit 3 Seiten. Auf der Startseite wird die Aussentemperatur angezeigt, sowie der Status des Flurlichts mit einem Touchfeld, welches einen Timer startet. Auf der 2. Seite wird der Wert des Timers dargestellt. Um diesen zu ändern, muss man einfach nur aufs Feld tippen.
Mein Problem ist, das ich den Wert nicht vernünftig in FHEM bearbeiten kann. Ich habe im Nextion Editor folgendes stehen im OK Button:


prints "$NLichttimer ",0
get show.txt


Ich habe schon print,prints und get versucht. Im Nextion Debugger, wird der Wert gesendet. Dieser kommt auch in FHEM an. Problem ist nur, er wird wahrscheinlich nicht von HEX umgewandelt und taucht dementsprechend nicht im Reading rectext auf.


018-01-09 09:00:43 Nextion nxt cmdSent: t0.txt="300"
2018-01-09 09:00:43 Nextion nxt cmdResult: empty
2018-01-09 09:00:50 Nextion nxt received: H24($) H4e(N) H4c(L) H69(i) H63(c) H68(h) H74(t) H74(t) H69(i) H6d(m) H65(e) H72(r) H20( ) H70(p) H33(3) H30(0) H30(0) H7c(|)
2018-01-09 09:00:50 Nextion nxt rectext:
2018-01-09 09:00:50 Nextion nxt received: H66(f) H01
2018-01-09 09:00:50 Nextion nxt rectext: page 1
2018-01-09 09:00:50 Nextion nxt currentPage: 1
2018-01-09 09:00:50 Nextion nxt cmdSent: t0.txt="300"
2018-01-09 09:00:50 Nextion nxt cmdResult: empty


der Text page 0 + 2 wird merkwürdigerweise übertragen.

UweH

Zitat von: tiwo85 am 09 Januar 2018, 09:05:01
Mein Problem ist, das ich den Wert nicht vernünftig in FHEM bearbeiten kann.
Die Antwort darauf ist schon mehrfach gegeben worden und zuletzt auf Seite 25.

viegener

@tiwo85: Wie auch in der commandref beschrieben muss das Format $<name>=<wert> sein

print "$NLichttimer="
get show.txt
Kein Support über PM - Anfragen gerne im Forum - Damit auch andere profitieren und helfen können

viegener

Generell würde ich nochmal eine Frage bezüglich des Nextion-Moduls aufwerfen:

Bisher ist es ja relativ aufwändig Auf Events des Displays in FHEM oder auf Events in FHEM mit Anzeigen im Nextion zu reagieren. Bei grösseren Anzeigen mit vielen Seiten erfordert das einiges an Notifys / DOIFs und ähnlichem.

Ich hatte deshalb über das Wochenende überlegt, dass man dem Modul doch Funktionen hinzufügen könnte, die
- Ein Reading überwachen und bei Änderungen des Readings den neuen Wert an Nextion übergeben (auch eingeschränkt auf eine Seite)
- Auf bestimmte Signale vom Display (ähnlich wie bei den initCommands für pages weitere Befehle abarbeiten.

Frage 1 - Gibt es Interesse das zu nutzen?

Eine geeignete Syntax müsste ich noch überlegen, es wäre aber wohl ähnlich wie die initCommands, wobei es eben noch zusätzliche Möglichkeiten für Angabe von Reading oder Event bzw. Befehl vom Display geben müsste. Ich möchte natürlich ungerne die gesamte Mechanik von DOIF einbauen, aber für die meisten Aufgaben bei mir reicht es wenn bestimmte Events abgefangen werden könnten.

Frage 2 - Wenn Interesse da ist, reicht das auch für Eure Anwendungen?




Kein Support über PM - Anfragen gerne im Forum - Damit auch andere profitieren und helfen können

oli82

Ich bin noch in den Anfängen meiner Steuerung mit dem Nextion, aber das hört sich echt hilfreich an.

Tobias

ich arbeite auch an einem relativ aufwändigem Status-und Steuerdisplay mit einem ESp32.
Ist es da nicht einfacher die Funktionalität im ESp abzubilder anstatt über die fhem?
FHEM liefert per MQTT nur die Basiszahlen, der ESP fungiert dann als Backend und steuert das Display, das Display als reines Frontend
Maintainer: Text2Speech, TrashCal, MediaList

Meine Projekte: https://github.com/tobiasfaust
* PumpControl v2: allround Bewässerungssteuerung mit ESP und FHEM
* Ein Modbus RS485 zu MQTT Gateway für SolarWechselrichter

UweH

Zitat von: viegener am 09 Januar 2018, 13:02:25
Bei grösseren Anzeigen mit vielen Seiten erfordert das einiges an Notifys / DOIFs und ähnlichem.
Mittlerweile habe ich 6 Displays in Verwendung und die Anzahl der darauf werkelnden Buttons und Checkboxen, Slider usw. ist enorm. Fast jedes notify, welches irgendwo in FHEM einen Wert setzt oder auf einen Event reagiert, schickt diese Info auch an eines der Displays.
Auf die Buttons eines Displays reagiere ich mit einem notify, welches in myUtils eine Funktion auslöst. Das ist pro Display zwar nur ein notify, die Anzahl der Zeilen in myUtils wächst aber ständig...
Insofern wäre es wirklich eine riesige Erleichterung, wenn man solche Aktionen mit ins Modul aufnehmen könnte.


Gruß
Uwe

UweH

Zitat von: Tobias am 09 Januar 2018, 14:19:29
Ist es da nicht einfacher die Funktionalität im ESp abzubilder anstatt über die fhem?
Und was ist mit denen, die keinen ESP verwenden? Meine Displays sind ausschließlich kabelgebunden.

Shojo

Zitat von: UweH am 09 Januar 2018, 14:25:53
Mittlerweile habe ich 6 Displays in Verwendung und die Anzahl der darauf werkelnden Buttons und Checkboxen, Slider usw. ist enorm.

[ot] Hast Du davon mal paar Bilder, habe auch paar Displays liegen aber noch nicht so recht die Idee zu Umsetzung :) [/ot]
FHEM auf: Shuttle PC (x64) (Docker)
Bridge: SignalESP 433mHz, ConBee (deCONZ in Docker)
Rest: ESP8266, SONOFF, Sonos, Echo Dot, Xiaomi Vacuum (root), ESP RGBWW Wifi Led Controller, Node-RED, LEDMatrix, Pixel It

viegener

Zitat von: Tobias am 09 Januar 2018, 14:19:29
ich arbeite auch an einem relativ aufwändigem Status-und Steuerdisplay mit einem ESp32.
Ist es da nicht einfacher die Funktionalität im ESp abzubilder anstatt über die fhem?
FHEM liefert per MQTT nur die Basiszahlen, der ESP fungiert dann als Backend und steuert das Display, das Display als reines Frontend

Mir ist nicht klar, welche Funktionalität Du im ESP abbilden willst?
Annahme der ESP soll einen Longpoll auf Änderungen machen - dazu müsste aber irgendwo konfiguriert werden, welche devices/readings benötigt werden - das läge dann vermutlich ausserhalb von FHEM. Ich finde das schon beim tablet UI manchmal viel Arbeit Änderungen / Erweiterungen immer an mehreren Stellen zu machen.

Einfacher - sehe ich in dem Fall nicht weder bei der Implementierung - noch für die Konfiguration
Schneller - ja - es wäre wohl schneller - denn momentan sind bei vielen Änderungen die Langsamkeit der Displays durchaus ein störender Faktor.

Generell würde die Erweiterung des Nextion-Moduls, Dich ja nicht einschränken, das in eine ESP32-Software einzubauen.

Ich betreibe allerdings einen Teil meiner Displays an einem LacrosseGateway, da bin ich nicht sicher, ob das auch alles noch da zu integrieren wäre.

Generell: Danke für all das Feedback, es gibt also durchaus Interesse und ich werde mal anfangen ein Konzept auszudenken
Kein Support über PM - Anfragen gerne im Forum - Damit auch andere profitieren und helfen können

ext23

Mal ganz nebenbei, ich habe auch einige von den Display rumliegen in verschiedenen Größen, aber irgendwie fehlt mir die Kreativität die auch einzusetzen. :-(

Und ich bin auch etwas verzweifelt an den Rückgabewerten etc., dann ging kein Zeilenumbruch im Text und und und, naja...

Aber Uwe falls du da mal ein paar Bilder von einer Installation hast kannst du die ja mal als Anregung publizieren.

/Daniel
HM, KNX, FS20, 1-Wire, PanStamp, AVR-NET-IO, EM1000EM, PCA301, EC3000, HM-LAN, CUL868, RFXtrx433, LGW, DMX @Ubuntu-Server (Hauptsystem) & Raspberry Pi (Satellit)

UweH

Zitat von: viegener am 09 Januar 2018, 16:17:36
denn momentan sind bei vielen Änderungen die Langsamkeit der Displays durchaus ein störender Faktor.
Wann ist das Display langsam? Das kann ich jetzt nicht ganz nachvollziehen. Ein Display-Update dauert mit 115200 zwar ein paar Minuten, aber das macht man ja nicht jeden Tag. Und die Reaktion auf einen Button ist unmittelbar.


Gruß
Uwe

UweH

Zitat von: Shojo am 09 Januar 2018, 14:30:34
Hast Du davon mal paar Bilder
Zitat von: ext23 am 09 Januar 2018, 16:30:27
Aber Uwe falls du da mal ein paar Bilder von einer Installation hast kannst du die ja mal als Anregung publizieren.

Hättet ihr diesen Thread aufmerksam gelesen, bräuchte ich jetzt nicht diese Zeile schreiben.  >:(

yamfhem

#418
@viegener: Frage1 -> JA, bitte, ich habe Interesse.

@all: ... ich bin (sicher mangels Wissen) aktuell nicht in der Lage, die ankommenden Events von meinem Display in FHEM Aktionen umzuwandeln. Ich möchte, wenn $bt2.val=1 meinen Stecker3 on schalten und bei $bt2.val=0 den Stecker3 off schalten.

$bt2.val kommt zuverlässig an

... so funktioniert es mal nicht  :(
define Stecker3_NXT DOIF ([Nextion_1:rectext eq "\$bt2.val=q\1\0\0\0"]) (set Stecker3 on) DOELSE (set Stecker3 off)

/edit
... das schaltet nur aus /edit

... gehört sicher in den Anfängerbereich, aber wegen dem Kontext doch eher hierher - kann mir jemand helfen??
Gruß Rene

tiwo85

#419
Zitat von: UweH am 09 Januar 2018, 11:38:13
Die Antwort darauf ist schon mehrfach gegeben worden und zuletzt auf Seite 25.
Danke, das war's. Wer lesen kann ist klar im Vorteil  ::) Man sollte nicht nach der Nachtschicht noch 3 Stunden vorm Laptop hängen.

Ich habe aber jetzt das nächste Problem. Ist die Variable 3 Ziffern, steht im rectext Müll. Hat sie weniger oder mehr als 3 Stellen, ist alles i.O.

2018-01-09 19:49:52 Nextion nxt received: H24($) H4e(N) H4c(L) H69(i) H63(c) H68(h) H74(t) H74(t) H69(i) H6d(m) H65(e) H72(r) H3d(=) H70(p) H31(1) H30(0)
2018-01-09 19:49:52 Nextion nxt rectext: $NLichttimer=p10
2018-01-09 19:49:52 Nextion nxt received: H66(f) H01
2018-01-09 19:49:52 Nextion nxt rectext: page 1
2018-01-09 19:49:52 Nextion nxt currentPage: 1
2018-01-09 19:49:52 Nextion nxt cmdSent: t0.txt="300"
2018-01-09 19:49:52 Nextion nxt cmdResult: empty
2018-01-09 19:50:02 Nextion nxt received: H24($) H4e(N) H4c(L) H69(i) H63(c) H68(h) H74(t) H74(t) H69(i) H6d(m) H65(e) H72(r) H3d(=) H70(p) H33(3) H30(0) H30(0)
2018-01-09 19:50:02 Nextion nxt rectext: $NLichttimer=808465264
2018-01-09 19:50:02 Nextion nxt cmdResult: empty


ankommen tut sie aber richtig.