FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: Fabiango am 09 Juli 2019, 13:24:20

Titel: at Befehl als Perl Code wo und wie eingeben?
Beitrag von: Fabiango am 09 Juli 2019, 13:24:20
Hallo zusammen,

ich möchte gerne folgenden Perl Code aus einer Anleitung in FHEM einfügen.
Wo muss ich den kompletten Code eingeben?
Über die Kommandozeile nimmt er es nicht an.

define at_Sonnenauf-untergang-Timer
*00:05 {
my $s = sunrise_abs();
fhem("set du_Sonnenaufgang $s");
my $u =sunset_abs();
fhem("set du_Sonnenuntergang $u");
}


Danke & Gruss,
Fabian
Titel: Antw:at Befehl als Perl Code wo und wie eingeben?
Beitrag von: t1me2die am 09 Juli 2019, 13:28:21
Moin Fabian, ich glaube Dir fehlt der Befehl "at"


define at_Sonnenauf-untergang-Timer at
*00:05 {
my $s = sunrise_abs();
fhem("set du_Sonnenaufgang $s");
my $u =sunset_abs();
fhem("set du_Sonnenuntergang $u");
}


Gruß
Mathze
Titel: Antw:at Befehl als Perl Code wo und wie eingeben?
Beitrag von: Fabiango am 09 Juli 2019, 13:29:50
Gebe ich das ganze wie folgt ein, bekomme ich folgenden Fehler

define at_SonnenaufuntergangTimer at *00:05 { my $s = sunrise_abs(); fhem("set du_Sonnenaufgang $s"); my $u =sunset_abs(); fhem("set du_Sonnenuntergang $u");; } }

Missing right curly or square bracket at (eval 17368) line 1, at end of line
syntax error at (eval 17368) line 1, at EOF

Unknown command fhem("set, try help.
Unknown command my, try help.
Unknown command fhem("set, try help.
Titel: Antw:at Befehl als Perl Code wo und wie eingeben?
Beitrag von: Meck am 09 Juli 2019, 13:31:21
Auf den ertsen Blick glaube ich ist die letzte geschweifte Klammer und ein Semikolon zuviel.

Gruß
Meck
Titel: Antw:at Befehl als Perl Code wo und wie eingeben?
Beitrag von: t1me2die am 09 Juli 2019, 13:31:48
Ungetestet:


define at_SonnenaufuntergangTimer at *00:05 { my $s = sunrise_abs(); fhem("set du_Sonnenaufgang $s"); my $u =sunset_abs(); fhem("set du_Sonnenuntergang $u"); }


Gruß
Mathze
Titel: Antw:at Befehl als Perl Code wo und wie eingeben?
Beitrag von: Fabiango am 09 Juli 2019, 13:33:38
Zitat von: Meck am 09 Juli 2019, 13:31:21
Aus den ertsen Blick glaube ich ist die letzte geschweifte klammer zuviel.

Gruß
Meck

Ne leider auch kein Erfolg. Hbe auch schon die Kommas entfernt oder nur eins gemacht usw.
Titel: Antw:at Befehl als Perl Code wo und wie eingeben?
Beitrag von: Fabiango am 09 Juli 2019, 13:37:03
Zitat von: t1me2die am 09 Juli 2019, 13:31:48
Ungetestet:


define at_SonnenaufuntergangTimer at *00:05 { my $s = sunrise_abs(); fhem("set du_Sonnenaufgang $s"); my $u =sunset_abs(); fhem("set du_Sonnenuntergang $u"); }


Gruß
Mathze

Nimmt er so ebenfalls nicht an.
Bei dem Sunrise_abs gibt es auch noch Unterscheide. Einmal ist das Gleichheitszeichen mit Leerzeichen und einmal ohne Leerzeichen.
Titel: Antw:at Befehl als Perl Code wo und wie eingeben?
Beitrag von: Meck am 09 Juli 2019, 13:41:15
schau mal hier https://wiki.fhem.de/wiki/Klammerebenen
somit müsste es wie folgt sein:

define at_SonnenaufuntergangTimer at *00:05 { my $s = sunrise_abs(); my $u = sunset_abs(); fhem("set du_Sonnenuntergang $u;; set du_Sonnenaufgang $s") }


ist aber ungetestet.


solllte auch gehen, wenn du die deklaration der Skalare weg lässt und sunrise und sunset dierkt auf rufst.
Gruß

Meck
Titel: Antw:at Befehl als Perl Code wo und wie eingeben?
Beitrag von: Fabiango am 09 Juli 2019, 13:48:44
Zitat von: Meck am 09 Juli 2019, 13:41:15
schau mal hier https://wiki.fhem.de/wiki/Klammerebenen
somit müsste es wie folgt sein:

define at_SonnenaufuntergangTimer at *00:05 { my $s = sunrise_abs(); my $u = sunset_abs(); fhem("set du_Sonnenuntergang $u;; set du_Sonnenaufgang $s") }


ist aber ungetestet.


solllte auch gehen, wenn du die deklaration der Skalare weg lässt und sunrise und sunset dierkt auf rufst.
Gruß

Meck


Hier bekomme ich schon weniger Fehler als Rückmeldung aber geht dennoch nicht.

Missing right curly or square bracket at (eval 17638) line 1, at end of line
syntax error at (eval 17638) line 1, at EOF

Unknown command my, try help.
Unknown command fhem("set, try help.
Titel: Antw:at Befehl als Perl Code wo und wie eingeben?
Beitrag von: Fabiango am 09 Juli 2019, 14:08:19
Zitat von: Meck am 09 Juli 2019, 14:01:16
define at_SonnenaufuntergangTimer at *00:05 { my $s = sunrise_abs(); my $u = sunset_abs(); fhem("set du_Sonnenuntergang $u; set du_Sonnenaufgang $s") }

sollte gehen

Bei dieser Code Variante kommt der Fehler:

Missing right curly or square bracket at (eval 17898) line 1, at end of line
syntax error at (eval 17898) line 1, at EOF

Unknown command my, try help.
Unknown command fhem("set, try help.


Im Logfile steht dabei folgendes:
2019.07.09 14:09:16 1: ERROR evaluating {return undef; { my $s = sunrise_abs()}: Missing right curly or square bracket at (eval 17916) line 1, at end of line
syntax error at (eval 17916) line 1, at EOF

2019.07.09 14:09:16 1: define at_SonnenaufuntergangTimer at *00:05 { my $s = sunrise_abs(): Missing right curly or square bracket at (eval 17916) line 1, at end of line
syntax error at (eval 17916) line 1, at EOF


Mir selber ist echt unklar wo ich wann welches Zeichen setzen muss.
Eventuell dachte ich das nach dem fhem auch ein Leerzeichen sein muss. ABer auch das geht leider nicht.
Titel: Antw:at Befehl als Perl Code wo und wie eingeben?
Beitrag von: Otto123 am 09 Juli 2019, 14:16:43
Hi,

bei einem define in der Kommandozeile von FHEM mit Perl Code müssen die ; verdoppelt werden!
https://commandref.fhem.de/#command

Gruß Otto
Titel: Antw:at Befehl als Perl Code wo und wie eingeben?
Beitrag von: Fabiango am 09 Juli 2019, 14:19:27
Zitat von: Otto123 am 09 Juli 2019, 14:16:43
Hi,

bei einem define in der Kommandozeile von FHEM mit Perl Code müssen die ; verdoppelt werden!
https://commandref.fhem.de/#perl

Gruß Otto

Und es Funktioniert.
Vielen Dank für eure Unterstützung

Eventuell hat jemand auch Interesse mir bei einem anderen Problem zu Helfen.
https://forum.fhem.de/index.php?topic=102130.msg956470#msg956470 (https://forum.fhem.de/index.php?topic=102130.msg956470#msg956470)