FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: karpate am 09 Juli 2013, 20:25:35

Titel: Dummywert setzen
Beitrag von: karpate am 09 Juli 2013, 20:25:35
Hallo,

ich habe einen Dummy definiert. Diesen möchte ich den Wert "ja" zuweisen, wenn folgende Bedingungen erfüllt sind: aktuelles Datum zwischen Mai und September und Wettervorhersage >=24 Grad.
Besonders beim letzten Teil fhem("set Schattenstellung eq "ja"")} bin ich mir nicht sicher, ob der Dummy Schattenstellung den Wert ja zugewisen wird.

Ich hoffe auf Unterstützung.
Danke und Gruß ingo


define Schattenstellung dummy
attr Schattenstellung group Dummys
attr Schattenstellung room 999_Status
attr Schattenstellung webCmd ja:nein

define SonnenSchutz_Check at *7:00 {Log 1, "Check Sonnenschutz: Vorhersage Temperatur ist ".ReadingsVal("Wetter","fc1_high_c",0)}{if (($month> 5) && ($month< 9) &&(ReadingsVal("Wetter","fc1_high_c",0) >= 24)) {fhem("set Schattenstellung eq "ja"")}}
Titel: Aw: Dummywert setzen
Beitrag von: betateilchen am 09 Juli 2013, 21:43:47
Zitat von: karpate schrieb am Di, 09 Juli 2013 20:25Besonders beim letzten Teil fhem("set Schattenstellung eq "ja"")} bin ich mir nicht sicher, ob der Dummy Schattenstellung den Wert ja zugewisen wird.

eq ist ein Vergleichsoperator für Zeichenketten, keine Zuweisung.

Was Du machen möchtest, geht einfach mit  fhem("set Schattenstellung ja"), ohne zusätzliche Anführungszeichen um das ja.
Titel: Aw: Dummywert setzen
Beitrag von: karpate am 11 Juli 2013, 19:09:03
ich habe meinen Dummy etwas erweitert:


define SonnenSchutz_Check at *7:00 {Log 1, "Vorhersage Temperatur ist ".ReadingsVal("Kirchheim_Wetter","fc1_high_c",0){\
if (($month> 5) && ($month=< 9) &&(ReadingsVal("Kirchheim_Wetter","fc1_high_c",0) >= 24)) {fhem("set Schattenstellung ja")}\
}\
else{\
{fhem("set Schattenstellung nein")}\
}\
}


das hat die Meldung zur Folge:
syntax error at (eval 4991) line 1, near "){"
syntax error at (eval 4991) line 1, near "} }"

kann mir noch mal jemand mit dem richigen syntax helfen?

Danke und Gruß ingo
Titel: Aw: Dummywert setzen
Beitrag von: noor am 12 Juli 2013, 09:28:14
Nice surprise about this shorter form. Can you tell us what it is you are talking/writing about?Has any info. about this shorter form been posted before (and i just missed
Titel: Aw: Dummywert setzen
Beitrag von: fiedel am 12 Juli 2013, 10:33:03
Hi Ingo,

benutze doch mal Notepad++ zum Programmieren und schalte die Sprache dabei auf Perl. Dann werden Klammerfehler usw. schon direkt rot markiert. Macht sich sehr gut damit... ;o)

Gruß

Frank
Titel: Aw: Dummywert setzen
Beitrag von: karpate am 12 Juli 2013, 18:05:52
Hi Frank,

Notepad++ verwendete, hatte ihn allerdings nicht auf Perl eingestellt.

Habe tatsächlich einige kleine Änderungen vorgenommen, leider aber immer noch Syntax-Fehler syntax error at (eval 5948) line 1, near "} }"



define SonnenSchutz_Check at *7:00 {Log 1, "Vorhersage Temperatur ist ".ReadingsVal("Kirchheim_Wetter","fc1_high_c",0){\
if (($month> 5) && ($month<= 9) && (ReadingsVal("Kirchheim_Wetter","fc1_high_c",0)>= 24)) {fhem("set Schattenstellung ja")}\
}\
else{\
{fhem("set Schattenstellung nein")}\
}\
}
Titel: Aw: Dummywert setzen
Beitrag von: fiedel am 12 Juli 2013, 23:33:47
Ne Programmierleuchte bin ich nicht, aber kopier mal das hier direkt in die CFG:


define SonnenSchutz_Check at *7:00 {\
\
  my $Weather = ReadingsVal("Kirchheim_Wetter","fc1_high_c",0);;\
\
  if $month gt 5 and $month le 9 and $Weather ge 24 { \
    fhem("set Schattenstellung ja");;\
    }\
 else{\
    fhem("set Schattenstellung nein");;\
}\
 Log 1, "Vorhersage Temperatur ist "$Weather ;;\
}





Viel Erfolg

Frank
Titel: Aw: Dummywert setzen
Beitrag von: karpate am 13 Juli 2013, 08:35:48
Hallo Frank,

Danke für deinen Ansatz. Mit ein paat kleinen Anpassungen erhalte ich keine Fehlermeldung mehr im Log. Auch wird die Vorhersagetemperatur ins Log geschrieben.


define SonnenSchutz_Check at *7:00 {\
\
  my $Weather = ReadingsVal("Kirchheim_Wetter","fc1_high_c",0);;\
\
  if (($month > 5) && ($month <= 9) && ($Weather >= 24)) { \
    fhem("set Schattenstellung ja");;\
{Log 1, "Schattenstellung aktiv"} ;;\
    }\
 else{\
    fhem("set Schattenstellung nein");;\
{Log 1, "Schattenstellung inaktiv"} ;;\
}\
 {Log 1, "Vorhersage Temperatur ist ".$Weather} ;;\
}

Titel: Aw: Dummywert setzen
Beitrag von: fiedel am 13 Juli 2013, 09:12:10
Na siehste... ;o)
Das mit der Klammerung ist ja oft nicht einfach. Z.B. wann muss ich was klammern und wann nicht... Ich hab da immer viel hier im Forum und Wiki abgeguckt. Mir ähnliche Konstrukte geschnappt uns sie für meine Funktion umgestrickt. Und man sollte nur so viel klammern wie nötig. Mehr klammern als nötig kann zwar trotzdem funktionieren, aber erhöht die Kompliziertheit und die Fehlerwahrscheinlichkeit. Habe da auch immer viel rumprobiert, bis irgendwas lief. ;o)

Viele Grüße

Frank