Text auf LCDd server ausgeben

Begonnen von Klaus Heynen, 05 August 2021, 14:21:47

Vorheriges Thema - Nächstes Thema

Klaus Heynen

besser aber jetzt scheint es wie eine Endlosschleife zu sein.
Es wiederholt sich wieder und wieder

Klaus Heynen

ich versuche es morgen weiter.
Frage am Rande, ist es nicht besser doch anstelle der 99_myUtls.pm subroutine das Programm mit "perl fhem2lcdd.pl eins zwei" auf zurufen, denn dann läuft es im Hintergrund und blockiert nicht den Rest?

Otto123

Ich wollte sagen: das sleep 5 blockiert für 5 sec. Ich wüsste nicht wozu das gut sein soll?
Aber ja, Du kannst auch ein Script aufrufen, ist für diese Anwendung vielleicht egal.

Das es als Schleife läuft ist mir nicht ergründlich? Du rufst einmal in der FHEM Kommandozeile
{ myLCDd("fuenf", "Sieben") }
Und dann läuft es in Schleife?
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

Klaus Heynen

nur zur info falls mal jemand das gleiche Problem hat.
Es ist der LCDd service zyklisch er scrollt durch alle client Fenster und die Perl Library mach die Fenster nicht mehr zu (da hab ich bestimmt was falsch gemacht).

Am Ende habe ich mich für Perl über die command line Variante entschieden:

define Pin23_ESCAPE_notify_1 notify Pin23_ESCAPE:Pinlevel:.low "sudo perl /home/pi/LCDd_Perl/fhem2lcdd.pl  Escape "Pin23 ist low""

fhem2lcdd.pl:
use IO::LCDproc;
use strict;


my $client = IO::LCDproc::Client->new(host => "localhost", name => "MYNAME", port => "13666");

my $screen = IO::LCDproc::Screen->new(name => "screen");


my $first = IO::LCDproc::Widget->new(
name => "first", align => "center", type => "string", xPos => 1, yPos => 1
);
my $second = IO::LCDproc::Widget->new(
name => "second", align => "center", type => "string", xPos => 1, yPos => 2
);


$client->add ( $screen );
$screen->add ($first, $second);
$client->connect() or die "Cannot Connect: $!";
$client->initialize();

$first->set( data => "$ARGV[0]");
$second->set( data => "$ARGV[1]" );

sleep 5;
exit 1;