Benötige mal eure Hilfe. Ich habe eine Rolladensteuerung per Twilight (Sonnenstand) gebaut die aber nur aktiviert wird, wenn gewisse WEttervoraussetzungen gegeben sind. Die Abfrage funktioniert aber irgendwie nicht:
define DummycheckA at *01:00:00 { if ((ReadingsVal("WetterProplanta","fc0_tempMax",0) > 25 && (ReadingsVal("WetterProplanta","fc0_sun", 0) > 20)) {fhem("set Sonnenstanddummy true")} else {fhem("set Sonnenstanddummy false")}}
Relativ einfach: Um 1:00 Uhr soll abgefragt werden ob die MaxTemp des Tages über 25 und die Sonnenscheindauer in % des Tages über 20 ist. Wenn ja soll der Dummy den Wert "true" sonst "false" erhalten. Die Syntax gibt kein MEcker in FHEM aber der Dummy wird nicht beschrieben. Wo mache ich einen Fehler?
Hier noch ein List des Proplanta:
Internals:
DEF Essen de
INTERVAL 3600
NAME WetterProplanta
NR 574
STATE Tmin: 21 Tmax: 35 T: 29.5 H: 37 W: 3.6 P: 1010.1
TYPE PROPLANTA
URL https://www.proplanta.de/Wetter/profi-wetter.php?SITEID=60&PLZ=Essen&STADT=Essen&WETTERaufrufen=stadt&Wtp=&SUCHE=Wetter&wT=
.attraggr:
.attrminint:
READINGS:
2018-08-07 10:42:06 dewPoint 13.1
2018-08-07 10:42:06 durationFetchReadings 33.43
2018-08-07 10:42:06 fc0_chOfRain00 0
2018-08-07 10:42:06 fc0_chOfRain03 0
2018-08-07 10:42:06 fc0_chOfRain06 0
2018-08-07 10:42:06 fc0_chOfRain09 0
2018-08-07 10:42:06 fc0_chOfRain12 0
2018-08-07 10:42:06 fc0_chOfRain15 0
2018-08-07 10:42:06 fc0_chOfRain18 5
2018-08-07 10:42:06 fc0_chOfRain21 50
2018-08-07 10:42:06 fc0_chOfRainDay 0
2018-08-07 10:42:06 fc0_chOfRainNight 50
2018-08-07 10:42:06 fc0_cloud00 0
2018-08-07 10:42:06 fc0_cloud03 0
2018-08-07 10:42:06 fc0_cloud06 0
2018-08-07 10:42:06 fc0_cloud09 0
2018-08-07 10:42:06 fc0_cloud12 0
2018-08-07 10:42:06 fc0_cloud15 0
2018-08-07 10:42:06 fc0_cloud18 12.5
2018-08-07 10:42:06 fc0_cloud21 100
2018-08-07 10:42:06 fc0_date 07.08.2018
2018-08-07 10:42:06 fc0_dew 0
2018-08-07 10:42:06 fc0_evapor 3
2018-08-07 10:42:06 fc0_frost 0
2018-08-07 10:42:06 fc0_gust00 18
2018-08-07 10:42:06 fc0_gust03 14.4
2018-08-07 10:42:06 fc0_gust06 14.4
2018-08-07 10:42:06 fc0_gust09 14.4
2018-08-07 10:42:06 fc0_gust12 18
2018-08-07 10:42:06 fc0_gust15 18
2018-08-07 10:42:06 fc0_gust18 14.4
2018-08-07 10:42:06 fc0_gust21 28.8
2018-08-07 10:42:06 fc0_moonRise 01:42
2018-08-07 10:42:06 fc0_moonSet 17:41
2018-08-07 10:42:06 fc0_rad 7
2018-08-07 10:42:06 fc0_rain 3.5
2018-08-07 10:42:06 fc0_rain00 0
2018-08-07 10:42:06 fc0_rain03 0
2018-08-07 10:42:06 fc0_rain06 0
2018-08-07 10:42:06 fc0_rain09 0
2018-08-07 10:42:06 fc0_rain12 0
2018-08-07 10:42:06 fc0_rain15 0
2018-08-07 10:42:06 fc0_rain18 0
2018-08-07 10:42:06 fc0_rain21 3.5
2018-08-07 10:42:06 fc0_sun 100
2018-08-07 10:42:06 fc0_temp00 25
2018-08-07 10:42:06 fc0_temp03 22
2018-08-07 10:42:06 fc0_temp06 24
2018-08-07 10:42:06 fc0_temp09 30
2018-08-07 10:42:06 fc0_temp12 34
2018-08-07 10:42:06 fc0_temp15 35
2018-08-07 10:42:06 fc0_temp18 33
2018-08-07 10:42:06 fc0_temp21 28
2018-08-07 10:42:06 fc0_tempMax 35
2018-08-07 10:42:06 fc0_tempMin 21
2018-08-07 10:42:06 fc0_uv 8
2018-08-07 10:42:06 fc0_weatherDay sonnig
2018-08-07 10:42:06 fc0_weatherDayIcon https://www.proplanta.de/wetterdaten/images/symbole/t1.gif
2018-08-07 10:42:06 fc0_weatherEvening heiter
2018-08-07 10:42:06 fc0_weatherEveningIcon https://www.proplanta.de/wetterdaten/images/symbole/n2.gif
2018-08-07 10:42:06 fc0_weatherMorning sonnig
2018-08-07 10:42:06 fc0_weatherMorningIcon https://www.proplanta.de/wetterdaten/images/symbole/t1.gif
2018-08-07 10:42:06 fc0_weatherNight unterschiedlich bewölkt, vereinzelt Schauer und Gewitter
2018-08-07 10:42:06 fc0_weatherNightIcon https://www.proplanta.de/wetterdaten/images/symbole/n8.gif
2018-08-07 10:42:06 fc0_wind00 7.2
2018-08-07 10:42:06 fc0_wind03 3.6
2018-08-07 10:42:06 fc0_wind06 7.2
2018-08-07 10:42:06 fc0_wind09 7.2
2018-08-07 10:42:06 fc0_wind12 10.8
2018-08-07 10:42:06 fc0_wind15 10.8
2018-08-07 10:42:06 fc0_wind18 7.2
2018-08-07 10:42:06 fc0_wind21 10.8
2018-08-07 10:42:06 fc0_windDir00 90
2018-08-07 10:42:06 fc0_windDir03 180
2018-08-07 10:42:06 fc0_windDir06 176
2018-08-07 10:42:06 fc0_windDir09 198
2018-08-07 10:42:06 fc0_windDir12 209
2018-08-07 10:42:06 fc0_windDir15 211
2018-08-07 10:42:06 fc0_windDir18 195
2018-08-07 10:42:06 fc0_windDir21 147
Zitat von: darkness am 07 August 2018, 10:56:32
Deine Überschrift passt nicht zur Frage :o
Das ist ein AT und kein DOIF.
Mit deinen Klammern stimmt was nicht.
Mal ungetesteter Code:
define DummycheckA at *01:00:00 {
if (ReadingsVal("WetterProplanta","fc0_tempMax",0) > 25 && ReadingsVal("WetterProplanta","fc0_sun", 0) > 20))
fhem("set Sonnenstanddummy true");
else
fhem("set Sonnenstanddummy false");
}
UPS da hast du recht mit der Überschrift. Geändert!
Hab deinen Code getetstet aber kommt:
"IF: no left bracket: ) Unknown command fhem("set"
Dein DOIF ist ein AT.
Die Klammern passen nicht.
define DummycheckA at *01:00:00 {
if (ReadingsVal("WetterProplanta","fc0_tempMax",0) > 25 && ReadingsVal("WetterProplanta","fc0_sun", 0) > 20))
fhem("set Sonnenstanddummy true");
else
fhem("set Sonnenstanddummy false");
}
EDIT:
Alten Beitrag gelöscht und neu verfasst, daher andere Reihenfolge...
Zitat von: Dia81 am 07 August 2018, 11:00:09
UPS da hast du recht mit der Überschrift. Geändert!
Hab deinen Code getetstet aber kommt:
"IF: no left bracket: ) Unknown command fhem("set"
Ups. Naja, so wie es da steht. Eine Klammer neben der 20 ist zu viel.
define DummycheckA at *01:00:00 {
if (ReadingsVal("WetterProplanta","fc0_tempMax",0) > 25 && ReadingsVal("WetterProplanta","fc0_sun", 0) > 20)
fhem("set Sonnenstanddummy true");
else
fhem("set Sonnenstanddummy false");
}
Alerdings solltest du vielleicht überlegen ein Notify/DOIF einzusetzen. Die Werte können sich ja auch im Laufe des Tages ändern (Je nachdem wie oft du Proplanta aktualisierst)
Hmm klappt trotzdem nicht :( habe das so direkt in die CFG gesetzt, was wahrscheinlich der Fehler ist. JA ich weiss direkte CFG-Bearbeitung ist der Tod aber gerade bei Anfängern irgendwie einfacher :/
Zitat von: darkness am 07 August 2018, 11:03:11
Ups. Naja, so wie es da steht. Eine Klammer neben der 20 ist zu viel.
define DummycheckA at *01:00:00 {
if (ReadingsVal("WetterProplanta","fc0_tempMax",0) > 25 && ReadingsVal("WetterProplanta","fc0_sun", 0) > 20)
fhem("set Sonnenstanddummy true");
else
fhem("set Sonnenstanddummy false");
}
hatte ich überlegt aber mir reicht da die nächtliche grobe Abfrage des Tages. Da noch andere Rollo steuerungen laufen kommt bei nem Update am Tage sonst alles durcheinander :D
Alerdings solltest du vielleicht überlegen ein Notify/DOIF einzusetzen. Die Werte können sich ja auch im Laufe des Tages ändern (Je nachdem wie oft du Proplanta aktualisierst)
Zitat von: Dia81 am 07 August 2018, 11:07:08
Hmm klappt trotzdem nicht :( habe das so direkt in die CFG gesetzt, was wahrscheinlich der Fehler ist. JA ich weiss direkte CFG-Bearbeitung ist der Tod aber gerade bei Anfängern irgendwie einfacher :/
Gut, aber bei der Einstellung bin ich dann raus... Die Diskussion über das editieren der CFG-Datei starte ich jetzt nicht.
Zitat von: Dia81 am 07 August 2018, 11:07:08
Hmm klappt trotzdem nicht :( habe das so direkt in die CFG gesetzt, was wahrscheinlich der Fehler ist.
sehr wahrscheinlich ist das so!
Zitat von: Dia81 am 07 August 2018, 11:07:08
JA ich weiss direkte CFG-Bearbeitung ist der Tod aber gerade bei Anfängern irgendwie einfacher :/
wenn du es weißt, warum machst du es dann??
wieso das einfacher sein soll, ist mir ehrlich gesagt nicht klar!
wohl kein rereadcfg gemacht....
gerade Anfänger sollten die Finger von der cfg lassen!
Zitat von: nils_ am 07 August 2018, 11:10:04
sehr wahrscheinlich ist das so!
wenn du es weißt, warum machst du es dann??
wieso das einfacher sein soll, ist mir ehrlich gesagt nicht klar!
Weil wenn man sich am Anfang es so beigebracht hat ohne überhaupt eine Ahnung zu haben als Anfänger man dann sicherheit hat wenn man weiss was man tut. Natürlich geb ich dir recht, das man sich da umgewöhnen muss wenn es um "komliziertere" Sachen geht, steh nämlich jetzt vor dem Problem gar nicht zu wissen wie ich das jetzt korrekt in die Oberfläche bekomme. Fuchse mich aber mal rein..
So schwer ist es nicht stimmt, bekomme aber trotzdem ein Fehler
*12:00:00 {
if (ReadingsVal("WetterProplanta","fc0_tempMax",0) > 25 && ReadingsVal("WetterProplanta","fc0_sun", 0) > 20)
fhem("set Sonnenstanddummy true");
else
fhem("set Sonnenstanddummy false");
}
bekomme dann
syntax error at (eval 913797) line 3, near ")
fhem"
öffne im Browser dein at und klicke auf "DEF"
da und nur da werden Änderungen gemacht.
nochmal auf
*12:00:00 {
if (ReadingsVal("WetterProplanta","fc0_tempMax",0) > 25 && (ReadingsVal("WetterProplanta","fc0_sun", 0) > 20)
fhem("set Sonnenstanddummy true");
else
fhem("set Sonnenstanddummy false");
}
geändert aber irgendwas stimmt noch nicht
} else {
Zitat von: Dia81 am 07 August 2018, 11:20:47
... steh nämlich jetzt vor dem Problem gar nicht zu wissen wie ich das jetzt korrekt in die Oberfläche bekomme. Fuchse mich aber mal rein..
https://wiki.fhem.de/wiki/Hauptseite
Dort Link Quick-Start und Link zur Doku commandref
Und wenn ich den Syntax von { if () {} else {} } sehe, dann braucht es auch noch den hier: ;D ;D ;D
http://perldoc.perl.org/index.html
Gruß Otto
Zitat von: CoolTux am 07 August 2018, 11:31:02
} else {
*12:00:00 {
if (ReadingsVal("WetterProplanta","fc0_tempMax",0) > 25 && (ReadingsVal("WetterProplanta","fc0_sun", 0) > 20)
fhem("set Sonnenstanddummy true");
} else {
fhem("set Sonnenstanddummy false");
}
Syntax error at (eval 916248) line 3, near ")
fhem"
syntax error at (eval 916248) line 4, near "} else"
syntax error at (eval 916248) line 6, near "}}"
Irgendwie will es nicht. Danke für eure Geduld und ja ich editiere nicht die CFG. :(
{ if () {} else {} }
Zitat von: Otto123 am 07 August 2018, 11:35:51
{ if () {} else {} }
wenn ich das richtig raffe müsste das dann so sein:
Zitat*12:00:00 {
if (ReadingsVal("WetterProplanta","fc0_tempMax",0) > 25 && ReadingsVal("WetterProplanta","fc0_sun", 0) > 20)
{fhem("set Sonnenstanddummy true");}
else {
fhem("set Sonnenstanddummy false");}
}
Syntax meckert nicht, ich gucke mal obs klappt
*12:00:00 {
if( ReadingsVal("WetterProplanta","fc0_tempMax",0) > 25 and ReadingsVal("WetterProplanta","fc0_sun", 0) > 20) {
fhem("set Sonnenstanddummy true");
} else {
fhem("set Sonnenstanddummy false");
}
}
Funktioniert. Danke für eure Hilfe und Geduld!
Und da es nun geht hier das ganze etwas eleganter
*12:00:00 { fhem("set Sonnenstanddummy " . (ReadingsVal("WetterProplanta","fc0_tempMax",0) > 25 and ReadingsVal("WetterProplanta","fc0_sun", 0) > 20 ? 'true' : 'false')) }