at Befehl als Perl Code wo und wie eingeben?

Begonnen von Fabiango, 09 Juli 2019, 13:24:20

Vorheriges Thema - Nächstes Thema

Fabiango

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

t1me2die

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

Fabiango

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.

Meck

#3
Auf den ertsen Blick glaube ich ist die letzte geschweifte Klammer und ein Semikolon zuviel.

Gruß
Meck

t1me2die

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

Fabiango

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.

Fabiango

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.

Meck

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

Fabiango

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.

Fabiango

#9
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.

Otto123

#10
Hi,

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

Gruß Otto
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

Fabiango

#11
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