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

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

Vorheriges Thema - Nächstes Thema

Achim

Hallo,

ich habe da mal eine Frage. Wäre es möglich, als Device das Display nicht nur über das Netzwerk sondern auch direkt über Seriell/USB am RPi anzusprechen? Das 00_MYSENSORS Modul kann das. Und wenn ich mir das so als Perl-Laie so ansehe, wird zumindest beim Öffnen von DevIO bei MYSENSORS nichts anders gemacht als beim NEXTION Modul.

Mein Modul ist leider noch unterwegs, sonst hätte ich es einfach mal versucht.

Viele Grüße
Achim
1x RPi V1, COC, 6x FHT, 1x S300TH, 2x DS18B20, 1x KS300
1x Arduino Nano mit Firmata, 2x DS2423old, 4x DS18B20, HIH5030, verschiedene Ein/Ausgangsschaltungen am Arduino
Mysensors-Seriell Gateway, Si7021, BH1750, Relais

PeMue

#76
Zitat von: Pf@nne am 06 April 2016, 06:06:27
Sind die "Spuren" des Druckverlaufs eigentlich immer zu sehen, also auch wenn man sich etwas auf einer industriellen Maschine drucken lässt?
Ja, leider ist nichts anderes möglich. Ein Kollege meinte, wenn man mit Aceton drübergeht wird es deutlich glatter - habe ich aber noch nie probiert ...

Gruß PeMue

Edit: Sorry, habe erst jetzt gelesen, dass das Thema Aceton schon diskutiert wurde ...
RPi3Bv1.2 rpiaddon 1.66 6.0 1xHM-CC-RT-DN 1.4 1xHM-TC-IT-WM 1.1 2xHB-UW-Sen-THPL-O 0.15 1x-I 0.14OTAU  1xCUNO2 1.67 2xEM1000WZ 2xUniroll 1xASH2200 3xHMS100T(F) 1xRFXtrx 90 1xWT440H 3xTFA30.3150 5xFA21
RPi1Bv2 LCDCSM 1.63 5.8 2xMAX HKT 1xMAX RT V200KW1 Heizung Wasser

UweH

Moin Mitstreiter,

nach endlosen Versuchen muss ich nochmal ein paar Fragen loswerden...und auf fachkundige Hilfe hoffen.
Ich habe eine kleine Testseite zusammengestöpselt, auf der ich u.A. einen Button habe, auf den FHEM nun partout nicht reagieren will. Ich bin mir ziemlich sicher, alle Hinweise aus der commandref und dem Modul selber berücksichtigt zu haben, komme aber auf keinen grünen Zweig. Ich hänge die HMI-Datei mal mit an, vielleicht mag sich das mal jemand ansehen und mir sagen, was falsch ist. Das Senden von Text und Zahlen an entsprechende Felder im Display funktioniert.

Weiterhin habe ich bei eingeschaltetem Attribut "expectAnswer" z.B. folgende Meldungen im Log:
2016.05.25 18:13:06 1: Nextion_SendCommand Error :Message received:
2016.05.25 18:13:06 1: Nextion_Set nxt: page failed with :Message received:

Da vermisse ich die empfangene Nachricht, funktioniert die Kommunikation mit dem Display doch noch nicht? Auch das reading "currentPage" ändert sich nie, steht immer auf -1.

Auch das Attribut "initPage0" hat keine Wirkung. Der eingetragene Wert "n0.val=100" bewirkt nichts. "initCommands" dagegen funktioniert.

s.List:

Internals:
   Clients    :NEXTION:
   DEF        192.168.xxx.xxx:23
   DeviceName 192.168.xxx.xxx:23
   FD         17
   NAME       nxt
   NR         49
   PARTIAL     
   READ_TS    1464201384.71848
   STATE      opened
   TYPE       Nextion
   Matchlist:
     1:NEXTION  .*
   Readings:
     2016-05-25 20:32:04   cmdResult       empty
     2016-05-25 20:32:04   cmdSent         n0.val=10
     2016-05-25 18:11:23   currentPage     -1
     2016-05-25 20:32:04   state           opened
Attributes:
   expectAnswer 0
   hasSendMe  1
   initCommands t1.txt="Hallo";n0.val=10;
   initPage0  n0.val=100
   


Möglicherweise habe ich nur eine klitzekleine Einstellung übersehen, aber ich sehe den Wald vor lauter Bäumen nicht mehr....

Danke und Gruß
Uwe

rippi46

Hallo UweH,

wie ist dein Display angeschlossen und welche Software benutzt du auf dem ESP.
Hast du die richtige Baudrate eingestellt. (9600)

Das Listing von meinem Display sieht wie folgt aus:
Internals:
   Clients    :NEXTION:
   DEF        192.168.x.x:23
   DeviceName 192.168.x.x:23
   FD         38
   NAME       W_Display
   NR         611
   PARTIAL
   STATE      opened
   TYPE       Nextion
   Matchlist:
     1:NEXTION  .*
   Readings:
     2016-05-26 08:28:55   cmdResult       empty
     2016-05-26 08:28:55   cmdSent         bt0.val=1
     2016-05-01 18:14:28   currentPage     -1
     2016-05-26 08:29:28   old1            H24($) H62(b) H74(t) H30(0) H2e(.) H76(v) H61(a) H6c(l) H20( ) H71(q) H01 H00 H00 H00
     2016-05-26 08:29:28   old2            H65(e) H01 H04 H00
     2016-05-26 08:29:28   old3            H24($) H62(b) H74(t) H30(0) H2e(.) H76(v) H61(a) H6c(l) H20( ) H71(q) H01 H00 H00 H00
     2016-05-26 08:29:28   old4            H65(e) H01 H04 H01
     2016-05-26 08:29:22   old5            H24($) H62(b) H74(t) H30(0) H2e(.) H76(v) H61(a) H6c(l) H20( ) H71(q) H00 H00 H00 H00
     2016-05-26 08:29:43   received        H86
     2016-05-26 08:29:43   rectext
     2016-05-26 08:22:15   state           opened
Attributes:
   initCommands thsp=15;thup=1
   initPage1  bt0.val=1
   room       Display,Büro
   verbose    0


und über ein DOIF reagiere ich auf das Betätigen einer Taste um z.B. eine Lampe zu schalten.

Internals:
   DEF        ([W_Display:received] eq "H65(e) H01 H04 H01") (set IT_0FFF0FF0FF toggle)
   NAME       d_e_lampe1
   NR         612
   NTFY_ORDER 50-d_e_lampe1
   STATE      cmd_1
   TYPE       DOIF
   Readings:
     2016-05-26 08:34:48   Device          W_Display
     2016-05-26 08:29:28   cmd             1
     2016-05-26 08:29:28   cmd_event       W_Display
     2016-05-26 08:29:28   cmd_nr          1
     2016-05-26 08:29:43   e_W_Display_received H86
     2016-05-26 08:29:28   state           cmd_1
   Condition:
     0          ReadingValDoIf($hash,'W_Display','received','','',AttrVal($hash->{NAME},'notexist',undef)) eq "H65(e) H01 H04 H01"
   Devices:
     0           W_Display
     all         W_Display
   Do:
     0:
       0          set IT_0FFF0FF0FF toggle
     1:
   Helper:
     event      CONNECTED
     globalinit 1
     last_timer 0
     sleeptimer -1
     timerdev   W_Display
     timerevent received: H65(e) H01 H04 H01,rectext:
     triggerDev W_Display
     timerevents:
       received: H65(e) H01 H04 H01
       rectext:
     timereventsState:
       received: H65(e) H01 H04 H01
       rectext:
     triggerEvents:
       CONNECTED
     triggerEventsState:
       CONNECTED
   Internals:
   Itimer:
   Readings:
     0           W_Display:received
     all         W_Display:received
   Regexp:
     0:
     All:
   State:
   Trigger:
Attributes:
   addStateEvent 1
   checkReadingEvent 1
   disable    0
   do         always
   event-on-change-reading 1
   event-on-update-reading 1
   room       Büro,Display 


Gruß rippi
FHEM, LMS, VDR ,Dell 9010 Ubuntu 20.04,Raspimatic, HM/HMIP, Max, Elro, Brennenstuhl u. Intertechno mit Connair.
Picoreplayer, Raspi IR-Lanadapter, Firmata(wifi), LaCrosse,
nanocul433, nanocul868, Signalduino, Connexoon,
MySensor-GW+Sensoren, RGBWW, Zigbee2mqtt,Xiaomi,Nextion,LEDMatrix,Alexa

UweH

Moin,

die serielle Kommunikation mit dem Display funktioniert, aber ich benutze zur Zeit nicht den ESP8266, sondern ein anderes WLAN/seriell-Modul (Das da:https://forum.fhem.de/index.php/topic,18996.msg156739.html#msg156739 http://www.ebay.de/itm/380663884742?ssPageName=STRK:MEWNX:IT&_trksid=p3984.m1497.l2649). Daten senden an's Display funktioniert ja auch, nur ich bekomme vom Button keinen Befehl. Somit habe ich wohl bei der Display-Konfiguration selbst was falsch gemacht. Auf den einzelnen Display-Seiten "sendme" habe ich eingetragen, auf page0 "bkcmd=3" ist auch drin.
Weiterhin habe ich als "postinitialize event" folgendes eingetragen:
print "$b0="
get 1

Damit sollte doch FHEM registrieren, dass der Button gedrückt wurde...

Danke und Gruß
Uwe

rippi46

#80
Hallo UweH,

Ich habe im Nextion Editor beim Button unter "Touch Press Event"  "Send Component ID" ausgewählt und als "User Code" folgenden Eintrag:
print "$bt0.val "
get bt0.val

Sieht das bei die auch so aus?

Gruß rippi

PS: Ich sehe gerade, dass in deiner HMI-Datei diese Eintragungen fehlen. Damit du zwischen den Seiten wechseln kannst musst du als user code die Seite eintragen (page 1  oder page 0). Ich habe als Button einen Dual-State-Button gewählt und übergebe bt.val.
FHEM, LMS, VDR ,Dell 9010 Ubuntu 20.04,Raspimatic, HM/HMIP, Max, Elro, Brennenstuhl u. Intertechno mit Connair.
Picoreplayer, Raspi IR-Lanadapter, Firmata(wifi), LaCrosse,
nanocul433, nanocul868, Signalduino, Connexoon,
MySensor-GW+Sensoren, RGBWW, Zigbee2mqtt,Xiaomi,Nextion,LEDMatrix,Alexa

UweH

Ja, genau das fehlt bzw. ist nicht so wie bei Deiner Definition. Danke für den Tipp, werde ich testen, wenn ich wieder zu Hause bin.

Gruß
Uwe

UweH

Sodele, trotz des richtigen Codes hat es anfänglich nicht funktioniert, dann hab ich das Display per LAN/RS232-Adapter (Kristech) angeschlossen und damit lief es dann.

Danke für die Unterstützung. Nun muss ich nur noch Zeit finden, um mich mit dem ESP8266 auseinander zu setzen...

Gruß
Uwe

UweH

Moin,

funktioniert! Danke für die Hilfe.

Gruß
Uwe

UweH

Nochmal kurz zum Thema Levelshifter...bei meiner Suche nach Lösungen bin ich darauf gestoßen...klar, einfachste funktionierende Möglichkeit.

Gruß
Uwe

UweH

Moin,

ich habe mal ein paar Suchmaschinen bemüht, aber nichts Passendes gefunden, daher hier: Kennt jemand eine Möglichkeit bzw. hat es vielleicht in Gebrauch, die .hmi-Datei direkt per WLAN auf das Display zu beamen? Spätestens wenn das Teil  mehr oder weniger fest verbaut ist, wird das Udate der Datei zu einer umständlichen Angelegenheit...

Gruß
Uwe

rippi46

Hallo UweH,

hatte das gleiche Problem und habe dann folgendes Programm gefunden:

HW VSP3 - Virtual Serial Port.
http://www.hw-group.com/products/hw_vsp/index_en.html

Ich benutze die Single-Version (diese ist frei für Privatpersonen).

Gruß rippi
FHEM, LMS, VDR ,Dell 9010 Ubuntu 20.04,Raspimatic, HM/HMIP, Max, Elro, Brennenstuhl u. Intertechno mit Connair.
Picoreplayer, Raspi IR-Lanadapter, Firmata(wifi), LaCrosse,
nanocul433, nanocul868, Signalduino, Connexoon,
MySensor-GW+Sensoren, RGBWW, Zigbee2mqtt,Xiaomi,Nextion,LEDMatrix,Alexa

viegener

@rippi46: Klasse, ich hatte bisher nur kommerzielle Lösungen für Windows gefunden ich werde das auch mal ausprobieren
Kein Support über PM - Anfragen gerne im Forum - Damit auch andere profitieren und helfen können

UweH

@rippi46: Danke, wenn man weiß, wonach man suchen soll, ist wieder alles ganz einfach. Momentan weigert sich das Prog noch, einen virtuellen Com-Port zu erstellen...mal sehen, werd ich noch hinbekommen.

Ein anderes Programm (http://www.virtual-serial-port.org/de/products/serial-over-ethernet/) funktioniert zwar problemlos, aber so langsam, dass das Display irgendwann genervt den Upload abbricht.

Gruß
Uwe

rippi46

Hallo,

um ein Port zu erstellen, muß man sich ins Programm einloggen.
Unter Virtual Serial Port den Com-Port auswählen und die IP de ESP eintragen Port 23.
Unter Settings habe ich bis jetzt die besten Erfolge mit Hacken bei Log und Strict Baudrate Emulation.
Alles andere abwählen.

Baudrate beim Display auf 115200 stellen und in der µC-Console von ESP-Link

Gruß rippi
FHEM, LMS, VDR ,Dell 9010 Ubuntu 20.04,Raspimatic, HM/HMIP, Max, Elro, Brennenstuhl u. Intertechno mit Connair.
Picoreplayer, Raspi IR-Lanadapter, Firmata(wifi), LaCrosse,
nanocul433, nanocul868, Signalduino, Connexoon,
MySensor-GW+Sensoren, RGBWW, Zigbee2mqtt,Xiaomi,Nextion,LEDMatrix,Alexa