Guten Morgen! Ich ärgere mich seit geschlagenen 2 Stunden mit einem AT rum und finde meinen Fehler nicht. Wenn ich das Command direkt absetze funktioniert es:
{ if (!($we) && (Value("dyJahreszeit") eq "Winter")) { fhem("set BA_Fussbodenheizung An");; } }
Aber wenn ich das AT auslöse bekomme ich immer den Fehler:
FuBoHeizung_an: Unknown command {, try help.
Was mache ich denn nur falsch?
Hier mal ein List des at:
Internals:
COMMAND { if (!($we) && (Value("dyJahreszeit") eq "Winter"))
{
fhem("set BA_Fussbodenheizung An");;
}
}
DEF *04:30:00 { if (!($we) && (Value("dyJahreszeit") eq "Winter"))
{
fhem("set BA_Fussbodenheizung An");;
}
}
NAME FuBoHeizung_an
NR 1120
PERIODIC yes
RELATIVE no
REP -1
STATE Next: 04:30:00
TIMESPEC 04:30:00
TRIGGERTIME 1485660600
TRIGGERTIME_FMT 2017-01-29 04:30:00
TYPE at
Readings:
2017-01-28 12:00:46 state Next: 04:30:00
Attributes:
group Heizung
icon sani_floor_heating
room Z_Automatisierung
Danke für jeden Hinweis, mein Hirn ist am Ende ;-)
Viele Grüße
doc
zuviele Klammern wo keine hingehören.
Hmpf. Ich habe ja auch noch dazu ein altes Command reinkopiert. Heute ist wohl nicht mein Tag. Jetzt passen oben command und at - also so stehts bei mir drin - aber es funktioniert nur das command, beim at bleibt der Fehler bestehen.
Viele Grüße
Moin,
versuch mal so. Ungetestet und von einem PerlFastNichtsWissenden :-X
{ if (!($we) && (Value("dyJahreszeit") eq "Winter")) fhem "set BA_Fussbodenheizung An"; }
Du bist schon auf Perl Ebene. Da braucht es die zweite Klammer nicht, sagt ja die Fehlermeldung.
Und in der DEF braucht man nur ein Semikolon, nur im define müssen es zwei sein.
Steht übrigens alles hier -> https://fhem.de/commandref_DE.html#command
Wobei man auch die Hinweise auf die Kommandozeile und den notify Abschnitt genau lesen muss.
Gruß Otto
Moin, ja das ist auch mein Problem - ich mache eher try and error mit Perl, aber in der Regel klappt es...
Deine Idee
*04:30:00 { if (!($we) && (Value("dyJahreszeit") eq "Winter")){ if (!($we) && (Value("dyJahreszeit") eq "Winter")) fhem "set BA_Fussbodenheizung An"; }
gibt folgende etwas komische Meldung:
, try help.
Unknown command }
Zitat von: docb am 28 Januar 2017, 12:22:05
Moin, ja das ist auch mein Problem - ich mache eher try and error mit Perl, aber in der Regel klappt es...
Deine Idee
*04:30:00 { if (!($we) && (Value("dyJahreszeit") eq "Winter")){ if (!($we) && (Value("dyJahreszeit") eq "Winter")) fhem "set BA_Fussbodenheizung An"; }
gibt folgende etwas komische Meldung:
, try help.
Unknown command }
Das war nicht mein Vorschlag :-[
Du kannst auch nachgestelltes if versuchen:
{ fhem "set BA_Fussbodenheizung An" if(!$we && Value("dyJahreszeit") eq "Winter")}
Siehe Perl Specials Abschnitt (https://fhem.de/commandref_DE.html#perl)in der commandref.
Gruß Otto
Was ist denn da so schwer?
*04:30:00 { if (!$we && Value("dyJahreszeit") eq "Winter") { fhem( "set BA_Fussbodenheizung An" ) } }
Bei den Klammern um den logischen Vergleich war ich mir noch unsicher. Aber da hat betateilchen natürlich mehr Erfahrung :)
Ich war noch am lesen -> https://wiki.selfhtml.org/wiki/Perl/Operatoren#Operatorenrangfolge
Und es wird ein paar Varianten geben die funktionieren werden. 8)
Tja, was da so schwer ist, weiß ich auch nicht ??? Es will einfach nicht - auch nicht mit deinem Code Beta, der liefert:
2017.01.28 12:58:50 3: FuBoHeizung_an: Unknown command {, try help.
Ich werde noch wahnsinnig...
Davon FuBoHeizung_an war noch nie die Rede?
Ich glaube Du hast ein Problem mit copy & paste?
Mach bitte ein list von Deinem at.
Gruß Otto
Ich glaube auch langsam nicht mehr, dass es am Code liegt, sondern dass da was anderes hakt... (und wenn es mein Hirn ist)...
Hier der List:
Internals:
COMMAND { if (!$we && Value("dyJahreszeit") eq "Winter") { fhem( "set BA_Fussbodenheizung An" ) } }
DEF *04:30:00 { if (!$we && Value("dyJahreszeit") eq "Winter") { fhem( "set BA_Fussbodenheizung An" ) } }
NAME FuBoHeizung_an
NR 1120
PERIODIC yes
RELATIVE no
REP -1
STATE Next: 04:30:00
TIMESPEC 04:30:00
TRIGGERTIME 1485660600
TRIGGERTIME_FMT 2017-01-29 04:30:00
TYPE at
Readings:
2017-01-28 13:00:49 state Next: 04:30:00
Attributes:
group Heizung
icon sani_floor_heating
room Z_Automatisierung
und ich rufe das at mit atexec FuBuHeizung_an auf (habe ich aus der Wiki - https://wiki.fhem.de/wiki/Cmdalias):
Internals:
ALIAS atexec
DEF atexec .* AS { if($defs{$EVENT}) { if($defs{$EVENT}->{TYPE} eq "at") { at_Exec($defs{$EVENT}); 0; } else { return "$EVENT is not of TYPE at!"; }} else { return "Device $EVENT does not exist!"; }}
NAME c_atexec
NEWCMD { if($defs{$EVENT}) { if($defs{$EVENT}->{TYPE} eq "at") { at_Exec($defs{$EVENT}); 0; } else { return "$EVENT is not of TYPE at!"; }} else { return "Device $EVENT does not exist!"; }}
NR 1147
PARAM .*
STATE defined
TYPE cmdalias
Attributes:
alias atexec at-device-name
group Commands
icon edit_settings
room Z_System
Kannst Du im at bitte die ganzen Leerzeilen am Ende der DEF entfernen.
Sollte eigentlich egal sein, aber man weiß ja nie.
:D :D :D
YES - du bist mein Held des Tages! Daran lag es tatsächlich....
HERZLICHEN DANK!!!!