FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: Dia81 am 07 August 2018, 10:50:47

Titel: [gelöst] AT mit if klappt nicht
Beitrag von: Dia81 am 07 August 2018, 10:50:47
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
Titel: Antw:AT mit If klappt nicht
Beitrag von: Dia81 am 07 August 2018, 11:00:09
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"
Titel: Antw:DOIF klappt nicht
Beitrag von: darkness am 07 August 2018, 11:01:10
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...
Titel: Antw:AT mit If klappt nicht
Beitrag von: darkness am 07 August 2018, 11:03:11
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)
Titel: Antw:AT mit if klappt nicht
Beitrag 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 :/
Titel: Antw:AT mit If klappt nicht
Beitrag von: Dia81 am 07 August 2018, 11:08:45
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)
Titel: Antw:AT mit if klappt nicht
Beitrag von: darkness am 07 August 2018, 11:09:50
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.
Titel: Antw:AT mit if klappt nicht
Beitrag von: nils_ am 07 August 2018, 11:10:04
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!
Titel: Antw:DOIF klappt nicht
Beitrag von: Frank_Huber am 07 August 2018, 11:12:00
wohl kein rereadcfg gemacht....

gerade Anfänger sollten die Finger von der cfg lassen!
Titel: Antw:AT mit if klappt nicht
Beitrag von: Dia81 am 07 August 2018, 11:20:47
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"
Titel: Antw:AT mit if klappt nicht
Beitrag von: Frank_Huber am 07 August 2018, 11:25:09
öffne im Browser dein at und klicke auf "DEF"

da und nur da werden Änderungen gemacht.
Titel: Antw:AT mit if klappt nicht
Beitrag von: Dia81 am 07 August 2018, 11:29:20
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
Titel: Antw:AT mit if klappt nicht
Beitrag von: CoolTux am 07 August 2018, 11:31:02
} else {
Titel: Antw:AT mit if klappt nicht
Beitrag von: Otto123 am 07 August 2018, 11:32:49
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
Titel: Antw:AT mit if klappt nicht
Beitrag von: Dia81 am 07 August 2018, 11:35:25
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. :(
Titel: Antw:AT mit if klappt nicht
Beitrag von: Otto123 am 07 August 2018, 11:35:51
{ if () {} else {} }
Titel: Antw:AT mit if klappt nicht
Beitrag von: Dia81 am 07 August 2018, 11:43:51
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
Titel: Antw:AT mit if klappt nicht
Beitrag von: CoolTux am 07 August 2018, 11:47:04

*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");
    }
}
Titel: Antw:AT mit if klappt nicht
Beitrag von: Dia81 am 07 August 2018, 11:50:43
Funktioniert. Danke für eure Hilfe und Geduld!
Titel: Antw:[gelöst] AT mit if klappt nicht
Beitrag von: CoolTux am 07 August 2018, 13:06:05
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')) }