FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: Ralf-F am 04 August 2018, 03:36:45

Titel: Rückgabewert eines Shell-Befehles als State setzen
Beitrag von: Ralf-F am 04 August 2018, 03:36:45
Hallo,
ich komme einfach mit der Syntax nicht klar. Ich habe viel probiert und nichts klappt.
Ich will einfach das, was ein Shellbefehlt wie z.B. 'uptime -s' (gibt Datum und Zeit des letzten Systemstarts aus) ausgibt in ein Device als State geschrieben wird.
set LetzterSystemStart system('uptime -s')
Klar, so steht dann als state von LetzterSystemStart der Text "system('uptime -s')"
Ich hätte aber gern das dort, was 'uptime -s' auf Shellebne zurückgibt in LetzterSystemStart
Also wie muss das notify
defmod setLetzterStartSystem notify TestDummy1:on set LetzterStartSystem system('uptime -s')
richtig geschrieben werden?

Kennt jemand die Syntax
Titel: Antw:Rückgabewert eines Shell-Befehles als State setzen
Beitrag von: Ellert am 04 August 2018, 07:15:51
Schon gelesen https://fhem.de/commandref_DE.html#set oder https://fhem.de/commandref_DE.html#command ?
Titel: Antw:Rückgabewert eines Shell-Befehles als State setzen
Beitrag von: CoolTux am 04 August 2018, 07:38:41
system ist eine Perl Funktion welche von einem Perlmodul zur Verfügung gestellt wird.

https://perldoc.perl.org/functions/system.html
Titel: Antw:Rückgabewert eines Shell-Befehles als State setzen
Beitrag von: Ralf-F am 07 August 2018, 18:03:39
Hallo,
ja, schon gelesen. Mir ist vollkommen klar, dass das so wie ich schrieb nicht geht. Geht auch nicht mit geschweiften Klammern, ... .
Ich finde einfach die Lösung nicht. Darum (und nur darum) habe ich es so einfach geschrieben.
Ich hoffe, dass wenn doch überall steht wie es richtig geht, mir einfach jemand mal die Klammern so setzt, dass es geht.
Also nicht nur, dass die Funktion aufgerufen wird, sondern auch das Ergebnis zurückgeschrieben wird.

Wenn ich dann nochmal lese, versteh ich vielleicht auch wo mein Fehler ist.

Danke Ralf
--
Titel: Antw:Rückgabewert eines Shell-Befehles als State setzen
Beitrag von: JoWiemann am 07 August 2018, 18:15:04
system() gibt nur den Erfolgsstatus zurück. qx() das Ergebnis des Funktionsaufrufs. Tausend mal im Forum erklärt.


Gesendet von iPhone mit Tapatalk

Grüße Jörg
Titel: Antw:Rückgabewert eines Shell-Befehles als State setzen
Beitrag von: Otto123 am 07 August 2018, 18:36:25
set LetzterSystemStart {(qx/uptime -s/)}
Titel: Antw:Rückgabewert eines Shell-Befehles als State setzen
Beitrag von: Ralf-F am 19 Oktober 2019, 02:04:44
Hallo Otto,
wollte immer mal Danke sagen, da ich so das Problem lösen konnte. So richtig ging das nicht, aber dann mit:
defmod setLetzterStartSystem notify global:INITIALIZED { my $result = qx "uptime -s";; fhem "setreading LetzterStartSystem state $result";; }

So habe ich dann immer im dummy LetzterStartSystem das letzte Startdatum der PI wie z.B. STATE = 2019-09-20 03:18:01

Und dann noch letzter Neustart der FHEM:
defmod setLetzterStartFHEM notify global:INITIALIZED {readingsSingleUpdate($main::defs{LetzterStartFHEM}, 'state', TimeNow(), 1)}

So habe ich dann immer im dummy LetzterStartFHEM das letzte Startdatum der FHEM wie z.B. STATE = 2019-10-19 01:39:10

Grüße Ralf
--