FHEM Forum

FHEM => Automatisierung => Thema gestartet von: superverbleit am 24 Juli 2019, 22:12:05

Titel: Sunset in Zusammenspiel mit Lichtmessung Wetterstation
Beitrag von: superverbleit am 24 Juli 2019, 22:12:05
Hallo Zusammen,

ich würde gerne die Sunset Funktion nutzen, um abends meine Rollladen und Jalousien runter zu lassen.
Das funktioniert auch einwandfrei.
Leider kommt es häufig vor, das schon Sonnenuntergang gemeldet wird, obwohl es draussen noch einigermaßen hell ist.

Deshalb würde ich gerne die Sunset Funktion mit einer Lichtmessung der Wetterstation koppeln. Leider funktioniert das nicht richtig. Kann mir hier einer auf die Sprünge helfen.
Hier mein bisheriger Code:
*{sunset("REAL",0,"17:30","22:30")} and (Aussenbereich.DachWest.Lux < 15)  { 
  fhem("set UG.Abstell.Rollladen Ab");
  fhem("define SunsetAction1 at +00:00:30 set UG.Hobby.RollladenLinks Ab");
  fhem("define SunsetAction2 at +00:01:00 set UG.Hobby.RollladenRechts Ab");
  fhem("define SunsetAction3 at +00:01:30 set EG.Buero.Rollladen Ab");
  ...


Vielen Dank schon mal.

Grüße superverbleit
Titel: Antw:Sunset in Zusammenspiel mit Lichtmessung Wetterstation
Beitrag von: herrmannj am 24 Juli 2019, 22:55:17
ja. Wir wissen allerdings nicht was nicht funktioniert und Deine Infos (code) sind dürftig, aber:

ich vermute mal ein "at". Und so wie das geschrieben ist passiert folgendes. Wenn zum Zeitpunkt des Sunsets die Helligkeit unter 15Lux ist dann fahren die Rollläden runter ("and" Verknüpfung). Wohl eher selten, oder ? ;)

Warum triggerst Du nicht _nur_ auf die Helligkeit ?
Titel: Antw:Sunset in Zusammenspiel mit Lichtmessung Wetterstation
Beitrag von: amenomade am 24 Juli 2019, 23:37:23
Das? Ein "at"?? Neeee... So sieht ein "at" aus:
Zitatdefine <name> at [<timespec>|<datespec>] <command>
https://forum.fhem.de/index.php/topic,102522.msg960957.html#msg960957
Titel: Antw:Sunset in Zusammenspiel mit Lichtmessung Wetterstation
Beitrag von: herrmannj am 24 Juli 2019, 23:42:42
naja. man weiß es ja nicht. ... Aber so beim genaueren hinschauen - hast Recht. :) Unabhängig davon wird das "and" wohl im Sommer trotzdem eher selten wahr, Frage an te bleibt also
Titel: Antw:Sunset in Zusammenspiel mit Lichtmessung Wetterstation
Beitrag von: amenomade am 24 Juli 2019, 23:43:22
Ahja... und
{
  fhem("set UG.Abstell.Rollladen Ab");
  fhem("define SunsetAction1 at +00:00:30 set UG.Hobby.RollladenLinks Ab");
  fhem("define SunsetAction2 at +00:01:00 set UG.Hobby.RollladenRechts Ab");
  fhem("define SunsetAction3 at +00:01:30 set EG.Buero.Rollladen Ab");}

kann man auch so schreiben:
set UG.Abstell.Rollladen Ab;; sleep 30;;set UG.Hobby.RollladenLinks Ab;; sleep 30;;set UG.Hobby.RollladenRechts Ab;;sleep 30;;set EG.Buero.Rollladen Ab
Titel: Antw:Sunset in Zusammenspiel mit Lichtmessung Wetterstation
Beitrag von: superverbleit am 25 Juli 2019, 07:20:43
Hallo,

das Problem habt ihr genau richtig erkannt.
Zum Zeitpunkt des Sonnenuntergangs ist die Lichtmessung normalerweise nie unter 15 lux.
Deshalb passiert in meinem Konstrukt nichts.

Natürlich könnte ich nur die Lichtmessung nehmen, ich würde aber gerne zur Sicherheit den Sonnenuntergang dazu nehmen.

Gibt es eine Anweisung, die aktiv wartet, bis beide Bedingungen (Sonnenuntergang und Lichtmessung) wahr sind und dann erst meine Rollladen runterfährt?

Hier noch der Rest des Codes, es ist ein at, sorry.

define RollladenAb at *{sunset(0,"17:30","22:00")} and (Lichtmessung < 15) {
Titel: Antw:Sunset in Zusammenspiel mit Lichtmessung Wetterstation
Beitrag von: rabehd am 25 Juli 2019, 08:38:54
https://forum.fhem.de/index.php/topic,102522.msg960957.html#msg960957 (https://forum.fhem.de/index.php/topic,102522.msg960957.html#msg960957)
Da wird eins der Probleme schon behandelt....
Titel: Antw:Sunset in Zusammenspiel mit Lichtmessung Wetterstation
Beitrag von: amenomade am 25 Juli 2019, 11:37:11
Das musst Du anders lösen, z.B. mit einem DOIF
define RollladenAb DOIF ([{sunset(0,"17:30","22:00")}-03:00] and Lichtmessung < 15)
   (set UG.Abstell.Rollladen Ab)
   (set UG.Hobby.RollladenLinks Ab)
   (set UG.Hobby.RollladenRechts Ab)
   (set EG.Buero.Rollladen Ab)
attr RollladenAb wait 0:30:30:30
Titel: Antw:Sunset in Zusammenspiel mit Lichtmessung Wetterstation
Beitrag von: herrmannj am 25 Juli 2019, 12:06:04
zuerst steht ja mal die Frage des gewünschten Verhaltens:

der Rolladen geht runter wenn:
die Sonne untergeht (Zeitpunkt) _und_ die Helligkeit unter 15 Lux ist (doof)
die Sonne bereits untergegangen ist (Zustand) _und_ die Helligkeit unter 15 Lux ist. (hmm...)
die Sonne untergangen ist _oder_ die Helligkeit unter 15 Lux ist (whatever comes first)
...

Warum soll den sunset überhaupt mit den LUX gekoppelt werden ? Soll es vielleicht sowas werden:
wenn die Helligkeit unter 15 Lux ist, spätestens jedoch um 22:00?
wenn die Helligkeit unter 15 Lux ist, spätestens jedoch wenn die Sonne -6° unter dem Horizont ist? (ähnlich und adaptiv zur Jahreszeit)


Titel: Antw:Sunset in Zusammenspiel mit Lichtmessung Wetterstation
Beitrag von: amenomade am 25 Juli 2019, 12:21:23
Also... die Frage hatte ich auch.
Ich habe
Zitatbis beide Bedingungen (Sonnenuntergang und Lichtmessung) wahr sind und dann erst meine Rollladen runterfährt?
so interpretiert:
Zitatdie Sonne bereits untergegangen ist (Zustand) _und_ die Helligkeit unter 15 Lux ist. (hmm...)
Titel: Antw:Sunset in Zusammenspiel mit Lichtmessung Wetterstation
Beitrag von: rabehd am 25 Juli 2019, 12:26:44
Anforderungsinterpretation:
Wenn die Helligkeit unter 15 und die Sonne heute schon untergegangen ist

Könnte es sein.
Für mich ein nortify/DOIF mit Trigger Helligkeit und Prüfung auf Zeitpunkt.
Titel: Antw:Sunset in Zusammenspiel mit Lichtmessung Wetterstation
Beitrag von: herrmannj am 25 Juli 2019, 12:30:45
möglich. Aber er schreibt "zur Sicherheit". Das könnte also auch dies sein:

Zitatwenn die Helligkeit unter 15 Lux ist, spätestens jedoch um 22:00?
wenn die Helligkeit unter 15 Lux ist, spätestens jedoch wenn die Sonne -6° unter dem Horizont ist? (ähnlich und adaptiv zur Jahreszeit)

Sonne bereits untergegangen _und_ Helligkeit unter 15Lux führt im Zweifel ja höchstens dazu dass die Fenster im Winter bei echt miesem Wetter (tm)* auch _vor_ sunset offen bleiben. (hmmm... )

*Sonne noch 'oben' _und_ weniger als 15Lux.. da ist schon was 'sehr seltenes' los ..
Titel: Antw:Sunset in Zusammenspiel mit Lichtmessung Wetterstation
Beitrag von: rabehd am 25 Juli 2019, 12:54:40
Zitatdie Fenster im Winter bei echt miesem Wetter (tm)* auch _vor_ sunset offen bleiben
Wir wissen nicht ob er das so will. ;)
Manche Leute wollen kein schlechtes Wetter sehen, andere finden es schön aus der !warmen Stube" rauszuschauen.
Titel: Antw:Sunset in Zusammenspiel mit Lichtmessung Wetterstation
Beitrag von: herrmannj am 25 Juli 2019, 13:03:14
es steht mir auch fern das zu beurteilen. Es ist mir wichtig zu hinterfragen ob dies so das Ziel ist damit der code auch macht was er soll ..
Titel: Antw:Sunset in Zusammenspiel mit Lichtmessung Wetterstation
Beitrag von: rabehd am 25 Juli 2019, 13:22:14
geht mir auch so.
Woran scheitern die meisten IT-Projekte? An ungenügenden, unklar formulierten Anforderungen. :(
Titel: Antw:Sunset in Zusammenspiel mit Lichtmessung Wetterstation
Beitrag von: amenomade am 25 Juli 2019, 13:58:20
Naja, die IT-Abteilung sagt auch: "Erläutere Deine Bedürfnisse, wir werden erklären, wie Du darauf verzichten kannst"
Titel: Antw:Sunset in Zusammenspiel mit Lichtmessung Wetterstation
Beitrag von: superverbleit am 25 Juli 2019, 22:23:12
Hallo Leute,

hier nochmals meine Anforderung, hoffentlich klarer formuliert. ;)

Ich will das Ereignis sunset nützen, welches frühestens um 17:30 und spätestens 22:30 passieren muss, um meine Rollladen und Jalousien runter zu lassen.
Heute war das mit der real Option bei mir um 21:07.

Wird das Ereignis sunset getriggert, soll gleichzeitig geprüft werden, ob die Lichtmessung der Wetterstation < 15 Lux meldet.
Ist es noch heller als 15 Lux (Wert ist größer als 15 Lux), soll das System solange mit dem Befehl zum herunterlassen der Rollladen/Jalousien warten, bis die Wetterstation ein unterschreiten des Werts meldet.

Unter Sicherheit verstehe ich, das zum Herablassen der Rolll/Jal ein Sonnenuntergang passiert sein muss.
Evtl. geht ja mal die Welt kurzfristig um 3Uhr mittags unter, wir unterschreiten 15 Lux, dann sollen ja nicht die Rollladen runter gehen.


Ich probier mal den Vorschlag mit der DOIF Lösung.

Titel: Antw:Sunset in Zusammenspiel mit Lichtmessung Wetterstation
Beitrag von: Christoph Morrison am 25 Juli 2019, 22:43:36
Zitat von: superverbleit am 25 Juli 2019, 22:23:12
Ich probier mal den Vorschlag mit der DOIF Lösung.

Oder du schaust dir mal AutoShuttersControl an. Das kann deine Anforderung iirc bereits built in.
Titel: Antw:Sunset in Zusammenspiel mit Lichtmessung Wetterstation
Beitrag von: superverbleit am 01 August 2019, 22:47:56
Hallo,

jetzt stellt sich bei mir doch noch ein Problem raus.
Der DOIF mit meiner Lichtmessung und der Sunset Abfrage funktioniert nicht richtig.
Sunset funktioniert, jedoch die Bedingung der Lichtmessung nicht.
Und zwar meldet die Lichtmessung vermutlich keinen numerischen Wert zurück

Hier nochmals das DOIF:
define RollladenAb DOIF ([Aussenbereich.DachWest.Lux] < 15 and [{sunset("REAL",0,"17:30","22:30")}])
{...}


Sehe hier die warning:
condition c01: Argument "1.00 lux" isn't numeric in numeric lt (<)

Das Device hat z.B. folgende Readings:
Readings
Lux-get 1.00 lux 2019-08-01 22:38:00
last-Sender 1/1/27 2019-08-01 22:38:00
state 1.00 lux 2019-08-01 22:38:00


Habe auch schon unter anderem folgendes probiert:
[Aussenbereich.DachWest.Lux:d] < 15
Leider alles ohne Erfolg.

Was ich ja will ist, das die Bedingung true liefert, wenn der Wert 15 lux unterschreitet.

Wie müsste die Abfrage richtig lauten? Ist das ein String Vergleich oder wie muss das richtig umgewandelt/formatiert werden?

Titel: Antw:Sunset in Zusammenspiel mit Lichtmessung Wetterstation
Beitrag von: amenomade am 02 August 2019, 17:19:58
:d ist schon richtig. Poste bitte ein vollständiges "list" vom DOIF, wenn es deiner Meinung nach "nicht funktioniert" hat.
Titel: Antw:Sunset in Zusammenspiel mit Lichtmessung Wetterstation
Beitrag von: superverbleit am 02 August 2019, 21:56:57
Hier der list vom doif

Internals:
   CFGFN     
   DEF        ([Aussenbereich.DachWest.Lux:d] < 15 and [{sunset("REAL",0,"17:30","22:30")}])
   (set UG.Abstell.Rollladen Ab)
   (define SunsetAction1 at +00:00:30 set UG.Hobby.RollladenLinks Ab)
   (define SunsetAction2 at +00:01:00 set UG.Hobby.RollladenRechts Ab)
   (define SunsetAction3 at +00:01:30 set EG.Buero.Rollladen Ab)
   (define SunsetAction4 at +00:02:00 set EG.Kueche.Rollladen Ab)
   (define SunsetAction5 at +00:02:30 set EG.Wohnz.Rollladen Ab)
   (define SunsetAction6 at +00:03:00 set EG.Essz.Jalousie.TerrasseLinks Ab)
   (define SunsetAction7 at +00:03:30 set EG.Essz.Jalousie.TerrasseRechts Ab)
   (define SunsetAction8 at +00:04:00 set EG.Essz.Jalousie.Sitzfenster Ab)
   (define SunsetAction9 at +00:04:30 set EG.Wohnz.Jalousie.Eck Ab)
   (define SunsetAction10 at +00:05:00 set EG.Wohnz.Jalousie.FrontLinks Ab)
   (define SunsetAction11 at +00:05:30 set EG.Wohnz.Jalousie.FrontRechts Ab)
   (define SunsetAction12 at +00:06:00 set DG.Treppenhaus.Jalousie Ab)
   (define SunsetAction13 at +00:06:30 set DG.Bad.Rollladen Ab)
   (define SunsetAction14 at +00:07:00 set DG.Kind2.RollladenLinks Ab)
   (define SunsetAction15 at +00:07:30 set DG.Kind2.RollladenRechts Ab)
   (define SunsetAction16 at +00:08:00 set DG.Schlafzimmer.Jalousie Ab)

   MODEL      FHEM
   NAME       RollladenAb
   NR         120108
   NTFY_ORDER 50-RollladenAb
   STATE      cmd_2
   TYPE       DOIF
   READINGS:
     2019-08-02 21:54:32   cmd             2
     2019-08-02 21:54:32   cmd_event       RollladenAb
     2019-08-02 21:54:32   cmd_nr          2
     2019-08-02 21:53:00   mode            enabled
     2019-08-02 21:54:32   state           cmd_2
     2019-08-02 21:53:00   timer_01_c01    03.08.2019 20:54:13
     2019-08-02 21:54:40   warning         condition c01: Argument "" isn't numeric in numeric lt (<)

   Regex:
   attr:
     cmdState:
     wait:
     waitdel:
   condition:
     0          ReadingValDoIf($hash,'Aussenbereich.DachWest.Lux','d') < 15 and DOIF_time_once($hash,0,$wday)
   days:
   devices:
     0           Aussenbereich.DachWest.Lux
     all         Aussenbereich.DachWest.Lux
   do:
     0:
       0          set UG.Abstell.Rollladen Ab
       1          define SunsetAction1 at +00:00:30 set UG.Hobby.RollladenLinks Ab
       10         define SunsetAction10 at +00:05:00 set EG.Wohnz.Jalousie.FrontLinks Ab
       11         define SunsetAction11 at +00:05:30 set EG.Wohnz.Jalousie.FrontRechts Ab
       12         define SunsetAction12 at +00:06:00 set DG.Treppenhaus.Jalousie Ab
       13         define SunsetAction13 at +00:06:30 set DG.Bad.Rollladen Ab
       14         define SunsetAction14 at +00:07:00 set DG.Kind2.RollladenLinks Ab
       15         define SunsetAction15 at +00:07:30 set DG.Kind2.RollladenRechts Ab
       16         define SunsetAction16 at +00:08:00 set DG.Schlafzimmer.Jalousie Ab
       2          define SunsetAction2 at +00:01:00 set UG.Hobby.RollladenRechts Ab
       3          define SunsetAction3 at +00:01:30 set EG.Buero.Rollladen Ab
       4          define SunsetAction4 at +00:02:00 set EG.Kueche.Rollladen Ab
       5          define SunsetAction5 at +00:02:30 set EG.Wohnz.Rollladen Ab
       6          define SunsetAction6 at +00:03:00 set EG.Essz.Jalousie.TerrasseLinks Ab
       7          define SunsetAction7 at +00:03:30 set EG.Essz.Jalousie.TerrasseRechts Ab
       8          define SunsetAction8 at +00:04:00 set EG.Essz.Jalousie.Sitzfenster Ab
       9          define SunsetAction9 at +00:04:30 set EG.Wohnz.Jalousie.Eck Ab
     1:
   helper:
     globalinit 1
     last_timer 1
     sleeptimer -1
     timerdev   
     timerevent
     timerevents
     timereventsState
     triggerDev
     DOIF_eventas:
       cmd_nr: 2
       cmd: 2
       cmd_event: RollladenAb
       state: cmd_2
   internals:
   intervalfunc:
   itimer:
   localtime:
     0          1564858453
   readings:
     0           Aussenbereich.DachWest.Lux:d
     all         Aussenbereich.DachWest.Lux:d
   realtime:
     0          20:54:13
   time:
     0          {sunset("REAL",0,"17:30","22:30")}
   timeCond:
     0          0
   timer:
     0          0
   timers:
     0           0
   triggertime:
     1564858453:
       localtime  1564858453
       hash:
   uiState:
   uiTable:
Attributes:
Titel: Antw:Sunset in Zusammenspiel mit Lichtmessung Wetterstation
Beitrag von: amenomade am 03 August 2019, 02:37:19
Ein "list" von Aussenbereich.DachWest.Lux bitte. Er sagt
Zitat"" is not numeric
d.h. er findet keinen Wert
Titel: Antw:Sunset in Zusammenspiel mit Lichtmessung Wetterstation
Beitrag von: rabehd am 03 August 2019, 06:46:41
ZitatHier der list vom doif

Ein DOIF, welches bei erfüllen zwei Bedingung ein Reihe von at anlegt.  :'(

Ein at auf diesem Weg sollte man mit "defmod" anlegen.
Deine ganzen "SunsetAction" kannst Du Dir sparen, wenn Du das Attribut "wait" bein DOIF verwendest.

Nach meinem Dafürhalten sagt die Definiton "wenn das Licht bei Sonnenuntergang unter 15, dann..."
Sinnvoller erscheint mir "Wenn zwischen 17:30 und 22:30 das Licht unter 15 ist"
([17:30-22:30] and [Aussenbereich.DachWest.Lux:d] < 15)


Titel: Antw:Sunset in Zusammenspiel mit Lichtmessung Wetterstation
Beitrag von: superverbleit am 03 August 2019, 22:56:18
Hier der List zu Aussenbereich.DachWest.Lux

Internals:
   DEF        4/2/3:dpt9.004:Lux
   DEVNAME    Aussenbereich.DachWest.Lux
   FIRSTGADNAME Lux
   GETSTRING  Lux:noArg
   IODev      KNX
   KNX_MSGCNT 26231
   KNX_RAWMSG C0111bw042030064
   KNX_TIME   2019-08-03 22:46:44
   LASTInputDev KNX
   MSGCNT     26231
   NAME       Aussenbereich.DachWest.Lux
   NR         28
   NTFY_ORDER 50-Aussenbereich.DachWest.Lux
   SETSTRING  Lux:slider,-670760,13415,670760
   STATE      1.00 lux
   TYPE       KNX
   GADDETAILS:
     Lux:
       CODE       04203
       GROUP      4/2/3
       MODEL      dpt9.004
       NO         1
       OPTION     
       RDNAMEGET  Lux-get
       RDNAMEPUT  Lux-put
       RDNAMESET  Lux-set
       SETLIST    :slider,-670760,13415,670760
   GADTABLE:
     04203      Lux
   READINGS:
     2019-08-03 22:46:44   Lux-get         1.00 lux
     2019-08-03 22:46:44   last-sender     1/1/27
     2019-08-03 22:46:44   state           1.00 lux
Attributes:
   IODev      KNX
   group      Lichtstaerke
   room       Aussenbereich
   webCmd     :


Den Sunset Aufruf will ich nur zur Sicherheit, das die Rollladen nur nach Sonnenuntergang runter gehen. Sollte die Lichtmessung zuvor kleiner 15 lux werden, soll nix passieren.

Das mit attr wait stimmt, ist ein bißchen eleganter. Das mit defmode guck ich mir mal an.
Titel: Antw:Sunset in Zusammenspiel mit Lichtmessung Wetterstation
Beitrag von: rabehd am 05 August 2019, 08:26:32
Zitatdas die Rollladen nur nach Sonnenuntergang runter gehen
Da gäbe es in den verschiedenen Devices eine Reihe von Readings. Auf Anhieb fällt mir das Astromodul ein. Für andere habe ich den Namen nicht im Kopf.

"Wenn zwischen 17:30 und 22:30 (das Licht unter 15 ist und es Nacht ist)"
Titel: Antw:Sunset in Zusammenspiel mit Lichtmessung Wetterstation
Beitrag von: amenomade am 05 August 2019, 13:28:17
([{sunset("REAL",0,"17:30","22:30")}-08:00] and [Aussenbereich.DachWest.Lux:state:d] < 15)

"Zwischen sunset und 8 Uhr Morgens, wenn Licht unter 15 kommt"
Titel: Antw:Sunset in Zusammenspiel mit Lichtmessung Wetterstation
Beitrag von: superverbleit am 05 August 2019, 21:54:33
Super. Es funktioniert endlich.
Das mit state:d war die Lösung.

Danke an alle. :)