Hauptmenü

Dummywert setzen

Begonnen von karpate, 09 Juli 2013, 20:25:35

Vorheriges Thema - Nächstes Thema

karpate

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"")}}
# Pi3 (BBB;FB7390)
# TCM310, CUL V4, HM-CFG-LAN,JeeLink,Tradfri,ESP32-Cam@MQTT: Wasseruhr

betateilchen

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.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

karpate

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
# Pi3 (BBB;FB7390)
# TCM310, CUL V4, HM-CFG-LAN,JeeLink,Tradfri,ESP32-Cam@MQTT: Wasseruhr

noor

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

fiedel

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
FeatureLevel: 6.1 auf Wyse N03D ; Deb. 11 ; Perl: v5.14.2 ; IO: HM-MOD-RPI-PCB + VCCU|CUL 868 V 1.66|LinkUSBi |TEK603
HM: SEC-SCO|SCI-3-FM|LC-SW4-PCB|ES-PMSW1-PL|RC-4-2|SEN-MDIR-O|SEC-WDS-2
CUL: HMS100TF|FS20 S4A-2 ; OWDevice: DS18S20|DS2401|DS2406|DS2423

karpate

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")}\
}\
}
# Pi3 (BBB;FB7390)
# TCM310, CUL V4, HM-CFG-LAN,JeeLink,Tradfri,ESP32-Cam@MQTT: Wasseruhr

fiedel

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
FeatureLevel: 6.1 auf Wyse N03D ; Deb. 11 ; Perl: v5.14.2 ; IO: HM-MOD-RPI-PCB + VCCU|CUL 868 V 1.66|LinkUSBi |TEK603
HM: SEC-SCO|SCI-3-FM|LC-SW4-PCB|ES-PMSW1-PL|RC-4-2|SEN-MDIR-O|SEC-WDS-2
CUL: HMS100TF|FS20 S4A-2 ; OWDevice: DS18S20|DS2401|DS2406|DS2423

karpate

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} ;;\
}

# Pi3 (BBB;FB7390)
# TCM310, CUL V4, HM-CFG-LAN,JeeLink,Tradfri,ESP32-Cam@MQTT: Wasseruhr

fiedel

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
FeatureLevel: 6.1 auf Wyse N03D ; Deb. 11 ; Perl: v5.14.2 ; IO: HM-MOD-RPI-PCB + VCCU|CUL 868 V 1.66|LinkUSBi |TEK603
HM: SEC-SCO|SCI-3-FM|LC-SW4-PCB|ES-PMSW1-PL|RC-4-2|SEN-MDIR-O|SEC-WDS-2
CUL: HMS100TF|FS20 S4A-2 ; OWDevice: DS18S20|DS2401|DS2406|DS2423