FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: fetzz am 23 Juni 2014, 08:54:05

Titel: [gelöst] notify UND-Verknüpfungen, Syntax & Semantik
Beitrag von: fetzz am 23 Juni 2014, 08:54:05
Hallo.

Bei meiner ersten blutigen Anfängerfrage wurde mir hier schnell geholfen. Vielen Dank.
Ich habe noch einer weitere Frage.

Gerne würde ich meine Rollläden automatisch fahren und zwar wie in dem Beispiel im Wiki :
http://www.fhemwiki.de/wiki/Funktionsbeschreibung_zu_notify (http://www.fhemwiki.de/wiki/Funktionsbeschreibung_zu_notify)

Wenn ich das Gerät im Web-Editor definiere und dann über DEF die Werte/Bedingungen eintrage, erhalte ich folgenden Codeauszug in der fhem.cg :


#PV
###
define sv SolarView 192.168.178.1 15000 wr1 60
attr sv event-on-change-reading currentPower,totalEnergyDay
attr sv room Photovoltaik
define log_sv FileLog /var/log/fhem-sv-%Y-%m-%d.log sv:(currentPower|totalEnergyDay).*
attr log_sv room Logfile
define plot_sv SVG log_sv:solarview:CURRENT
attr plot_sv room Photovoltaik

#Verschattung
#########

define Fenster_PV notify (sv:currentPower.*) { \
my $hm == sprintf("%%02d:%%02d", $hour, $min);;\
if ( $hm gt "07:30" && $hm lt "17:00") { \
if (%EVTPART1 > 1000 ) {\
  fhem('set Fenster_Halbmast Runter');;\
  } \
  }\
}


Im DEF des Gerätes sieht der Code wie folgt aus:


(sv:currentPower.*) {
my $hm == sprintf("%%02d:%%02d", $hour, $min);
if ( $hm gt "07:30" && $hm lt "17:00") {
if (%EVTPART1 > 1000 ) {
  fhem('set Fenster_Halbmast Runter');
  }
  }
}


Nun wird der Befehl Fenster_Halbmast Runter aber nicht wie geplant ausgeführt, obwohl currentPower größer 1000 und die Uhrzeit später als 07:30 und früher als 17:00.

Den Hinweis von Puschel74 in meinem ersten Beitrag %EVENTPART1 gegen $EVENT zu ersetzten hat bei mir nicht geklappt.

Ich habe die Syntaxhervorhebung aktiviert und der zeigt mir auch alle Klammern richtig gesetzt an.
Als Programmieranfänger tue ich mich schwer die Syntax und Semantik auf Fehler zu überprüfen.


Wo liegt im Codebeispiel mein Fehler?

Danke für Eure Hilfe
Titel: Antw:notify UND-Verknüpfungen, Syntax & Semantik
Beitrag von: Puschel74 am 23 Juni 2014, 16:37:46
Hallo,

ich weiß nicht obs an der Klammer liegt (vermutlich nicht da es bei mehreren Bedingungen mit Klammer geht) aber versuch mal folgendes:

sv:currentPower.* {
my $hm = sprintf("%%02d:%%02d", $hour, $min);
Log(3,"%EVTPART1");
Log(3,"$hm");
if ( $hm gt "07:30" && $hm lt "17:00") {
if (%EVTPART1 > 1000 ) {
  fhem('set Fenster_Halbmast Runter');
  }
  }
}

So siehst du im Logfile welche Werte du hast.

Ich hab grad gesehen das du $hm == geschrieben hast.
Du willst den Wert ja nicht vergleichen sondern zuweisen - also =

Fehlermeldungen finden sich idR auch immer im FHEM-Logfile und können recht hilfreich sein  ;)

Grüße
Titel: Antw:notify UND-Verknüpfungen, Syntax & Semantik
Beitrag von: fetzz am 23 Juni 2014, 21:09:02
Jetzt gehts.

Nun wollen wir mal den nächsten Tag bwarten,ob es wirklich so rennt,wie geplant.