Verarbeitung von Daten aus der Homematic Wetterstation mit DOIF

Begonnen von FHEM_Seb, 30 Oktober 2015, 20:55:50

Vorheriges Thema - Nächstes Thema

FHEM_Seb

Hallo zusammen,

ich habe eine Homematic (HM-WDS100-C6-O Funk-Kombi-Sensor OC3) Wetterstation als Windwächter für unsere Rollos im Einsatz.

Bisher habe ich das folgendermaßen gelöst:

define Windwaechter_Rollo THRESHOLD Wetterstation:windSpeed:0:16|set windanfaellige_Rollos oben
attr Windwaechter_Rollo number_format %.1f
attr Windwaechter_Rollo state_format _m _dv


Das Problem dabei ist, dass das Rollo natürlich jedes mal hoch geschaltet wird, wenn die Bedingung erfüllt wird, auch wenn das Rollo schon längst oben ist.
Um das zu verhindern wollte ich gerne die DOIF-Funktion nutzen. Mein Code dazu sieht folgendermaßen aus:

define Windwaechter_Rollos DOIF ([Wetterstation:windSpeed] > 16 and [windanfaellige_Rollos] ne "oben") (set windanfaellige_Rollos oben)

Leider funktioniert das nur genau einmal, danach nicht mehr.
Also habe ich "do always" verwendet:

attr Windwaechter_Rollos do always

Leider führt dies dazu, dass FHEM mehrmals pro Sekunde versucht die Rollos zu schalten. Das hat sogar dazu geführt, dass das Logfile so groß geworden ist, dass FHEM hin und wieder abstürzte.

Hat jemand eine gute Idee, wie ich das umsetzen kann.

Vielen Dank vorab für Eure Hilfe.

Gruß Sebastian

Damian

Zitat von: FHEM_Seb am 30 Oktober 2015, 20:55:50

Leider funktioniert das nur genau einmal, danach nicht mehr.


Das stimmt nicht.

Dein DOIF  würde wieder schalten, wenn Temperatur zwischendurch unter 16 Grad war, da der Zustand dann auf cmd_2 wechselt.

Gruß

Damian
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

Bennemannc

Hallo,

bei THRESHOLD kann man mit AND auch einen Zustand - in deinem Fall Rollo unten - abfragen. Dann wird nur gefahren, wenn die Rollos untern sind. Besser natürlich "ne oben" damit auch alle anderen Teilverschlossen Zustände erkannt werden.
Das hier nutze ich für einen LüfterTemp_1:temperature:1:27 AND 4_CH_PLATINE_02:battery:ok 4_CH_PLATINE_02_Sw_01|set @ on|set @ off|2 da das Teil an einem Akku hängt und der nicht Tiefentladen werden soll (Bleiakku) nutze ich ich die Batterieüberwachung mit. Wenn Battery low geht der lüfter nicht an.

Gruß Christoph
Cubietruck, Fhem 5.8
CC-RT-DN|LC-SW2-FM|RC-12|RC-19|LC-SW4-BA-PCB|LCp-SW1-BA-PCB|ES-PMSw1-Pl|LC-Bl1PBU-FM|PBI-4-FM|CC-VD|CC-TC|SEC-SC(2)|RC-KEY3-B|LC-Sw1PBU-FM|PB-2-FM|WDS100-C6-O|WDC7000|LC-Bl1-FM
Module: Dewpoint,FB_Callmonitor,HCS,Panstamp,at,notify,THRESHOLD,average,DOIF

scooty

Hallo FHEM_Seb,

schau Dir 'mal im Wiki zum HM-WDS100-C6-O den Abschnitt "Sturmerkennung" an, ich glaube, das passt besser für Dein Problem, da die Sturmerkennung des Sensors bei Erreichung von Schwellwerten sofort einen Event triggert (=windanfällige Rolladen hoch) und Du nicht auf die nur in 2-3 Minuten Abständen gesendete Windstärke reagieren musst.

Nach Anpassung der beiden Schwellwerte (stormLowThresh und stormUpThresh) verwende ich folgendes DOIF:
([WGEG_SENW:storm] eq "storm") (
   set HSXX_TELEGRAM message WETTER_Sturmwarnung ja
   )
DOELSEIF ([WGEG_SENW:storm] eq "quiet") (
   set HSXX_TELEGRAM message WETTER_Sturmwarnung nein
   )

Code ist für die Eingabe im DEF-Bereich des DOIF vorgesehen.

Außerdem habe ich für das DOIF noch das Attribut
wait 0:900
um die Sturmentwarnung ein wenig zu verzögern.

Viele Grüße,
Andreas
Fhem auf Gigabyte Brix
CUL V3 HM / CUL V3 MAX / MaxCube aFW Homematic&MAX / ZWave.me ZME_UZB1 / SDuino 433 / Velux KLF200
Homematic / MAX / Logitech Hub / ZWave / Wifi LED / div. 433 Temperatursensoren / pywws WH1080 / IO Homecontrol