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

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

Vorheriges Thema - Nächstes Thema

UweH

Hast Du im Event der Seite unter "Preinitialize Event" "bkcmd=3" und unter "Postinitialize Event" "sendme" eingetragen?

andies

Das war es, danke. Trage ich gleich im Wiki ein. rectext kriege ich zwar immer noch nicht, aber da kann ich mit notifies eine andere Lösung hinbekommen.
FHEM 6.3 auf RaspPi4 (Raspbian:  6.6.28+; Perl: v5.36.0)
SIGNALduino (433 MHz) und HM-UART (868 MHz), Sonoff, Blitzwolf, Somfy RTS, CAME-Gartentor, Volkszähler, Keyence-Sensor, Homematic-Sensoren und -thermostat, Ferraris-Zähler für Wasseruhr, Openlink-Nachbau Viessmann

UweH

Hier mal eine Testseite. Das muss beim Dual-State-Button eingetragen werden, um den state des Buttons in den rectext zu übertragen:

UweH


andies

Ich habe da inzwischen nur reine Texte drinstehen (print "Lampe" etc), aber glaube, dass ich ein ganz anderes Problem habe. Der Wemos, der sich mit dem WLAN verbinden soll, verliert manchmal die connection. Ich vermute, dass das die tiefere Ursache ist. Wie hast Du den gekoppelt? Ich habe die serielle Schnittstelle des Nextion einfach mit dem Wemos mini verbunden und der wiederum hängt an einem einfachen USB-Anschluss, der 5V liefert (allerdings bestimmt 1A oder so). Die Verbindungsabbrüche zeigen aber, dass da vermutlich der Haken liegt. Auf dem Wemos ist ESP-Link drauf.
FHEM 6.3 auf RaspPi4 (Raspbian:  6.6.28+; Perl: v5.36.0)
SIGNALduino (433 MHz) und HM-UART (868 MHz), Sonoff, Blitzwolf, Somfy RTS, CAME-Gartentor, Volkszähler, Keyence-Sensor, Homematic-Sensoren und -thermostat, Ferraris-Zähler für Wasseruhr, Openlink-Nachbau Viessmann

andies

#575
Oh mann, ich kriege es nicht hin. Gestern hatte ich so viele Ausfälle, dass ich mich entschlossen habe, den Wemos neu aufzuspielen. Ich war der Meinung, dass die Verbindung mit ESPLink das Problem ist. Also ESPEasy drauf.

Dort habe ich die serielle Schnittstelle eingerichtet (Baud 115200, auch auf dem Nextion) und ich komme an die Oberfläche. Aber es ist immer noch disconnected. Im Log des ESP habe ich Dinge wie
346423: Command unknown: 'ffe'
361884: WD : Uptime 6 ConnectFailures 0 FreeMem 17120
374339: Command: felichtausqefussgaengerqegarageqeautoqegarageqfe
374340: Command unknown: 'felichtausqefussgaengerqegarageqeautoqegarageqfe'
391884: WD : Uptime 7 ConnectFailures 0 FreeMem 17080
399738: Command: felichtausqfe
399738: Command unknown: 'felichtausqfe'

und die Worte wie Fussgaenger etc sind aus den Buttons des Displays. Es bleibt disconnected. Kann es sein, dass ich mir das display zerschossen habe? Hatte nicht hier im Thread jemand davon berichtet? Der Wemos hat ja eigentlich nur 3.3V, das hatte ich auch durchgemessen, aber ich habe sonst keine Idee, wieso sich die beiden Geräte nicht verbinden? Das Display leuchtet schön, hat aber seriell keinen Kontakt.

PS
Build:⋄ 20103 - Mega
Libraries:⋄ ESP82xx Core 2_4_2, NONOS SDK 2.2.1(cfd48f3), LWIP: 2.0.3 PUYA support
GIT version:⋄ mega-20181220


<edit> Ich musste bei den Geräten noch den seriellen Server einstellen. Trage ich jetzt auch ins Wiki ein. Was wir für Zeit vergeuden, weil wir die Infos nicht zentral vorhalten. Und was das für Nerven kostet.
FHEM 6.3 auf RaspPi4 (Raspbian:  6.6.28+; Perl: v5.36.0)
SIGNALduino (433 MHz) und HM-UART (868 MHz), Sonoff, Blitzwolf, Somfy RTS, CAME-Gartentor, Volkszähler, Keyence-Sensor, Homematic-Sensoren und -thermostat, Ferraris-Zähler für Wasseruhr, Openlink-Nachbau Viessmann

UweH

Zitat von: andies am 04 März 2019, 22:38:23
Wie hast Du den gekoppelt?
Anfänglich auch über WLAN, aber das versuche ich weitestgehend zu vermeiden, darum bin ich auf LAN und USB umgestiegen.
LAN:https://forum.fhem.de/index.php/topic,51267.msg528282.html#msg528282
WLAN:https://forum.fhem.de/index.php/topic,51267.msg537394.html#msg537394
und USB ist ja die einfachste Geschichte, den Adapter dafür dürfte jeder zu Hause haben.

Gruß
Uwe

andies

ich traue mich schon gar nicht mehr zu posten. Es gibt ein neues Problem: Die WLAN-Verbindung an der Stelle, an der das Ding nun endgültig hängen soll, ist zu schlecht (Stromversorgung ist dagegen ok). Jetzt muss ich schauen, wie ich den WLAN-Empfang an der Haustür besser hinbekomme. Schlitzen ist leider keine Option (mehr).
FHEM 6.3 auf RaspPi4 (Raspbian:  6.6.28+; Perl: v5.36.0)
SIGNALduino (433 MHz) und HM-UART (868 MHz), Sonoff, Blitzwolf, Somfy RTS, CAME-Gartentor, Volkszähler, Keyence-Sensor, Homematic-Sensoren und -thermostat, Ferraris-Zähler für Wasseruhr, Openlink-Nachbau Viessmann

Olly

Hallo,

bin gerade dabei mein Nextion Display am LaCrosseGateway in Betrieb zu nehmen.
Gibt es noch die Möglichkeit die TFT-Datei über FHEM auf das Display zu laden?
Hab im LaCrosse-Thread was von
set <nextionname> nextionUpload
gelesen.#
Das funktioniert aber nicht mehr und lt. Commandref gibt es diesen Befehl auch nicht (mehr).

Danke und Gruß

      Olly
BananaPi 1GB;NetCSM 868MHz, miniCUL 433MHz, LaCrosseGateway, 2x SignalESP; FHEM 6.2

Olly

Hi nochmal,

hab meinen Fehler gefunden. Der Befehl gehört zum LaCrosseGateway-Modul, nicht zum Nextion-Modul.
Funktioniert nur leider nicht:
2019-03-05 22:36:13 Global global    Upload started, this can take 10 minutes or more ...
2019-03-05 22:37:27 Global global   
2019-03-05 22:37:27 Global global    --- LGW reports ---------------------------------------------------------------------------
2019-03-05 22:37:27 Global global    Start receiving 'nextion.tft'
2019-03-05 22:37:27 Global global    File: /nextion.tft Size: 2343498
2019-03-05 22:37:27 Global global    Starting upload
2019-03-05 22:37:27 Global global    :-) could not start upload mode
2019-03-05 22:37:27 Global global    Upload finished
2019-03-05 22:37:27 Global global    ----------------------------------------------------------------------------------------------------
2019-03-05 22:37:27 Global global    myLaCrosse opened
2019-03-05 22:37:27 Global global    Finshed

Aber damit bin ich wohl drüben beim LaCrosseGateway besser aufgehoben.

Gruß

    Olly
BananaPi 1GB;NetCSM 868MHz, miniCUL 433MHz, LaCrosseGateway, 2x SignalESP; FHEM 6.2

UweH

Zitat von: Olly am 05 März 2019, 22:30:02
Gibt es noch die Möglichkeit die TFT-Datei über FHEM auf das Display zu laden?
Es gibt noch eine Alternative. Du baust einen virtuellen COM-Port auf und verbindest Dich darüber und per Nextion-Editor mit dem Display. Damit wird die HMI-Datei direkt übertragen.
Bei mir recht einfach, da ich diese Module benutze. Dazu gibt's vom Hersteller gleich eine entsprechende Software (USR-VCOM).


Gruß
Uwe

andies

In der commandref steht, dass man initPage0 etc auch mit Perl-Kommandos verwenden kann. Bei mir geht das aber nicht. Wenn ich schreibe
attr Nextion initPage0 {NextionAktualisieren()}
und dieser Befehl sieht in etwa so aus

sub NextionAktualisieren() {

#Wetterbeschreibung setzen
my $Nextion_cmd = "Temperatur0.txt=\"".ReadingsVal("BresserTemeo_1", "temperature", "")."°C (".ReadingsVal("BresserTemeo_1","temperature_at", "")."°C)\";";
$Nextion_cmd .= "t2.txt=\"".ReadingsVal("MeinWetter", "fc0_weather03", "")."\";";
$Nextion_cmd .= "t9.txt=\"".ReadingsVal("MeinWetter", "fc0_chOfRain03", "")."\"\";";
$Nextion_cmd .= "t6.txt=\"".ReadingsVal("MeinWetter", "fc0_temp03", "")."°C\";";
$Nextion_cmd .= "t3.txt=\"".ReadingsVal("MeinWetter", "fc0_weather06", "")."\";";
$Nextion_cmd .= "t10.txt=\"".ReadingsVal("MeinWetter", "fc0_chOfRain06", "")."\%\";";
$Nextion_cmd .= "t7.txt=\"".ReadingsVal("MeinWetter", "fc0_temp06", "")."°C\";";
$Nextion_cmd .= "t5.txt=\"".ReadingsVal("MeinWetter", "fc0_weather09", "")."\";";
$Nextion_cmd .= "t11.txt=\"".ReadingsVal("MeinWetter", "fc0_chOfRain09", "")."\%\";";
$Nextion_cmd .= "t8.txt=\"".ReadingsVal("MeinWetter", "fc0_temp09", "")."°C\";";

#Fondsgroessen setzen
my $Nextion_font = (length(ReadingsVal("MeinWetter", "fc0_weather03", ""))>8) ? "2" : "1";
$Nextion_cmd .= "t2.font=".$Nextion_font.";";
$Nextion_font = (length(ReadingsVal("MeinWetter", "fc0_weather06", ""))>8) ? "2" : "1";
$Nextion_cmd .= "t3.font=".$Nextion_font.";";
$Nextion_font = (length(ReadingsVal("MeinWetter", "fc0_weather09", ""))>8) ? "2" : "1";
$Nextion_cmd .= "t5.font=".$Nextion_font.";";

#Abbildungen setzen
#typischer Pfad https://www.proplanta.de/wetterdaten/images/symbole/n3.gif
my $Wetter_Icon_Path = ReadingsVal("MeinWetter","fc0_weather03Icon", "");
$Wetter_Icon_Path  =~ /https:\/\/www.proplanta.de\/wetterdaten\/images\/symbole\/[nt](\d+).gif/;  #
my $Wetter_Icon_Id = $1+1;     
$Nextion_cmd .= "p1.pic=".$Wetter_Icon_Id.";";

$Wetter_Icon_Path = ReadingsVal("MeinWetter","fc0_weather06Icon", "");
$Wetter_Icon_Path  =~ /https:\/\/www.proplanta.de\/wetterdaten\/images\/symbole\/[nt](\d+).gif/;  #
$Wetter_Icon_Id = $1+1;     
$Nextion_cmd .= "p0.pic=".$Wetter_Icon_Id.";";

$Wetter_Icon_Path = ReadingsVal("MeinWetter","fc0_weather09Icon", "");
$Wetter_Icon_Path  =~ /https:\/\/www.proplanta.de\/wetterdaten\/images\/symbole\/[nt](\d+).gif/;  #
$Wetter_Icon_Id = $1+1;     
$Nextion_cmd .= "p2.pic=".$Wetter_Icon_Id.";";

return $Nextion_cmd;
}

dann führt ein Ausführen im Log leider nur zu
2019.03.16 19:28:07 4: Nextion_InitPage Nextion: page  :0: with commands :{NextionAktualisieren()}:
2019.03.16 19:28:07 4: Nextion_SendCommand Nextion: send commands :{NextionAktualisieren()}:
2019.03.16 19:28:07 4: Nextion: Nextion_SendCommand ReplaceSetmagic commnds after :{NextionAktualisieren()}:
2019.03.16 19:28:07 4: Nextion_SendCommand Nextion: send command :{NextionAktualisieren()}:
2019.03.16 19:28:07 4: Nextion_SendCommand Success

und die Daten auf dem Display ändern sich gar nicht. Was mache ich da falsch?
FHEM 6.3 auf RaspPi4 (Raspbian:  6.6.28+; Perl: v5.36.0)
SIGNALduino (433 MHz) und HM-UART (868 MHz), Sonoff, Blitzwolf, Somfy RTS, CAME-Gartentor, Volkszähler, Keyence-Sensor, Homematic-Sensoren und -thermostat, Ferraris-Zähler für Wasseruhr, Openlink-Nachbau Viessmann

andies

#582
Zitat von: andies am 16 März 2019, 19:32:12
In der commandref steht, dass man initPage0 etc auch mit Perl-Kommandos verwenden kann. Bei mir geht das aber nicht.
Kein Wunder, der Code gibt es nicht her. Wenn man etwa ab Zeile 470 folgendes einfügt, geht es:

#    Log3 $name, 4, "$name: Nextion_SendCommand ReplaceSetmagic commnds after :".$msg.":";
#  }   <======= VORHANDENER CODE (Zeile 470)

## Versuch, auch Perlcode auszuwerten  <== NEUER CODE
  if ($msg =~ m/^\{.*\}$/) {
  my $new_msg = eval $msg;
  if($@) {
  Log3 $name, 1, "Error: Perl command $msg could not be executed and returned ".$@;
  return undef;
  } else {
  $msg = $new_msg;
  }
  }


  # Split commands into separate elements at single semicolons (escape double ;; before) <=== VORHANDENER CODE, nach Einführung jetzt Zeile 484


Kann man das "irgendwie" als Patch vorschlagen? Liest Johannes überhaupt mit?

Edit:Siehe Post auf nächster Seite. Unnötig.
FHEM 6.3 auf RaspPi4 (Raspbian:  6.6.28+; Perl: v5.36.0)
SIGNALduino (433 MHz) und HM-UART (868 MHz), Sonoff, Blitzwolf, Somfy RTS, CAME-Gartentor, Volkszähler, Keyence-Sensor, Homematic-Sensoren und -thermostat, Ferraris-Zähler für Wasseruhr, Openlink-Nachbau Viessmann

viegener

Zitat von: andies am 16 März 2019, 20:20:15
Kein Wunder, der Code gibt es nicht her. Wenn man etwa ab Zeile 470 folgendes einfügt, geht es:

Kann man das "irgendwie" als Patch vorschlagen? Liest Johannes überhaupt mit?

Ja, Johannes liest gelegentlich mit  ;)

Ich würde den Patch ungerne einspielen, da es ja schon heute die Möglichkeit gibt über entsprechende Einbettung in die initCommands auch Perl-Auszuführen (siehe auch Beispiele in der Commandref) . Oder habe ich hier was übersehen?

Ein


attr Nextion initPage0 {(NextionAktualisieren())}


sollte eigentlich heute schon funktionieren (Beschreibung dazu siehe auch set-Befehl in der Commandref (set magic))



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

andies

Zitat von: viegener am 17 März 2019, 22:24:42

attr Nextion initPage0 {(NextionAktualisieren())}


sollte eigentlich heute schon funktionieren (Beschreibung dazu siehe auch set-Befehl in der Commandref (set magic))
Hmm, komisch. Ich bilde mir ein, genau das getestet zu haben (kann aber auch sein, dass ich da wieder mal was falsch gemacht habe) und in der Commandref habe ich kein "echtes" Perl-Beispiel gefunden; SetMagic ging, aber eben reiner Code.

Wenn das geht, braucht man keinen "Patch", klar. Kann mal jemand mit dem Original prüfen, ob ich da Mist gebaut habe?
FHEM 6.3 auf RaspPi4 (Raspbian:  6.6.28+; Perl: v5.36.0)
SIGNALduino (433 MHz) und HM-UART (868 MHz), Sonoff, Blitzwolf, Somfy RTS, CAME-Gartentor, Volkszähler, Keyence-Sensor, Homematic-Sensoren und -thermostat, Ferraris-Zähler für Wasseruhr, Openlink-Nachbau Viessmann