Neues Modul - THRESHOLD

Begonnen von Damian, 25 Januar 2013, 22:51:43

Vorheriges Thema - Nächstes Thema

Damian

Zitat von: Damian am 21 Mai 2014, 12:45:24

Ich denke es ist besser, ich definiere ein neues Attribut z. b. setOnDeactivated, das man mit cmd1_gt oder cmd2_lt belegen kann.


eingecheckt, morgen per Update verfügbar.

Gruß

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

eldrik

Hi,

kann ich mit THRESOLD auch folgendes Szenario abbilden?

Ist Luftfeuchtigkeit im Raum >70% = Fenster 100% öffnen, fällt Luftfeuchtigkeit auf <=55% für min. 15 Minuten dann Fenster schließen, fängt es an zu regnen oder regnet es bereits dann Fenster nur 30% öffnen.
Ist die Alarmanlage eingeschaltet oder wird aktiviert das Fenster schließen + bei übertreten der Luftfeuchtigkeit während aktiver Alarmanlage soll das Fenster nicht geöffnet werden.

Ist das generell möglich? Wahrscheinlich müssen noch ein paar Dummys oder Watchdogs eingebunden werden oder?

Greetz
Eldrik

strauch

Ja das ist möglich und ich denke auch garnicht so kompliziert, du brauchst dafür eine If Schleife und ein Watchdog für die 15 min. Die Alarmanlage einfach als zweiten Sensor in den Threshold einbinden und wenn die auf on steht soll nichts passieren. Einen Dummy brauchst du nicht.
FHEM 5.6 VMware mit Debian. 1 CUL für FS20 und HMLAN für Homematic, HM-CC-RT-DN, HM-LC_Sw1PBU-FM, HM-LC-Bl1PBU-FM,  HM-SEC-SC, HM-SEC-SC-2, HM-LC-Sw1-Pl2, HM-Sec-RHS, ASH2200, FHT80B, S20KSE, Sonos, XBMC, FB_Callmonitor, SMLUSB, Arduino Firmata, uvm.

Bennemannc

Hallo Damian,

ich habe ein THRESHOLD mit folgender DefinitionDEF
Temp_1:temperature:3:26 AND 4_CH_PLATINE_02:battery:ok 4_CH_PLATINE_02_Sw_01|set @ on|set @ off|2

Es soll temperaturabhängig ein Lüfter eingeschaltet werden. Da dieser an eine Bleiakku hängt, soll der natürlich keine Tiefentladung erzeugen - also Batterieüberwachung. Der Akku wird über zwei Solarzellen geladen.
Jetzt habe ich folgendes Problem:
Die Temperatur ist überschritten aber die Batterie leer => Lüfter schaltet nicht ein, wird die Batterie geladen und der Status wechselt auf ok springen die Lüfter nicht an. Ich habe keine Erklärung dafür.
Könntest Du mal nachsehen, ob da etwas im Code nicht richtig läuft ? Wenn ich das richtig verstanden habe, wird in regelmäßigen Abständen geprüft, ob etwas gemacht werden muss. Wird der "State" der und Verknüpfung jedes mal mit aktualisiert ?

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

Damian

Zitat von: Bennemannc am 24 Juni 2014, 16:19:03
Hallo Damian,

ich habe ein THRESHOLD mit folgender DefinitionDEF
Temp_1:temperature:3:26 AND 4_CH_PLATINE_02:battery:ok 4_CH_PLATINE_02_Sw_01|set @ on|set @ off|2

Es soll temperaturabhängig ein Lüfter eingeschaltet werden. Da dieser an eine Bleiakku hängt, soll der natürlich keine Tiefentladung erzeugen - also Batterieüberwachung. Der Akku wird über zwei Solarzellen geladen.
Jetzt habe ich folgendes Problem:
Die Temperatur ist überschritten aber die Batterie leer => Lüfter schaltet nicht ein, wird die Batterie geladen und der Status wechselt auf ok springen die Lüfter nicht an. Ich habe keine Erklärung dafür.
Könntest Du mal nachsehen, ob da etwas im Code nicht richtig läuft ? Wenn ich das richtig verstanden habe, wird in regelmäßigen Abständen geprüft, ob etwas gemacht werden muss. Wird der "State" der und Verknüpfung jedes mal mit aktualisiert ?

Gruß Christoph

Poste bitte das Ergebnis von list <dein_threshold_modul>


Gruß

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

Bennemannc

Hallo Damian,

kommt:
Internals:
   DEF        Temp_1:temperature:3:26 AND 4_CH_PLATINE_02:battery:ok 4_CH_PLATINE_02_Sw_01|set @ on|set @ off|2
   NAME       Zuluft_Wiga
   NR         258
   NTFY_ORDER 50-Zuluft_Wiga
   STATE      active
   TYPE       THRESHOLD
   cmd1_gt    set 4_CH_PLATINE_02_Sw_01 on
   cmd2_lt    set 4_CH_PLATINE_02_Sw_01 off
   cmd_default 2
   hysteresis 3
   init_desired_value 26
   offset     0
   operator   AND
   sensor     Temp_1
   sensor2    4_CH_PLATINE_02
   sensor2_reading battery
   sensor2_state ok
   sensor_reading temperature
   Readings:
     2014-06-24 13:00:52   cmd             cmd1_gt
     2014-06-23 17:08:59   desired_value   26
     2014-06-24 05:30:00   mode            active
     2014-06-24 13:00:52   sensor2_state   ok
     2014-06-24 19:54:32   sensor_value    27.4
     2014-06-24 05:30:00   state           active
     2014-06-23 17:08:59   threshold_max   26
     2014-06-23 17:08:59   threshold_min   23
Attributes:
   alias      Automatik Lüfter 1 Wintergarten
   devStateIcon disabled:control_x@red:active active:vent_ventilation_level_automatic@green:deactivated
   group      Lüftung
   icon       vent_ventilation_level_0
   number_format %.1f
   room       Steuerung,Wintergarten
   setOnDeactivated cmd2_lt
   sortby     04
   state_format _m


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

Damian

Zitat von: Bennemannc am 24 Juni 2014, 20:00:53
Hallo Damian,

kommt:
Internals:
   DEF        Temp_1:temperature:3:26 AND 4_CH_PLATINE_02:battery:ok 4_CH_PLATINE_02_Sw_01|set @ on|set @ off|2
   NAME       Zuluft_Wiga
   NR         258
   NTFY_ORDER 50-Zuluft_Wiga
   STATE      active
   TYPE       THRESHOLD
   cmd1_gt    set 4_CH_PLATINE_02_Sw_01 on
   cmd2_lt    set 4_CH_PLATINE_02_Sw_01 off
   cmd_default 2
   hysteresis 3
   init_desired_value 26
   offset     0
   operator   AND
   sensor     Temp_1
   sensor2    4_CH_PLATINE_02
   sensor2_reading battery
   sensor2_state ok
   sensor_reading temperature
   Readings:
     2014-06-24 13:00:52   cmd             cmd1_gt
     2014-06-23 17:08:59   desired_value   26
     2014-06-24 05:30:00   mode            active
     2014-06-24 13:00:52   sensor2_state   ok
     2014-06-24 19:54:32   sensor_value    27.4
     2014-06-24 05:30:00   state           active
     2014-06-23 17:08:59   threshold_max   26
     2014-06-23 17:08:59   threshold_min   23
Attributes:
   alias      Automatik Lüfter 1 Wintergarten
   devStateIcon disabled:control_x@red:active active:vent_ventilation_level_automatic@green:deactivated
   group      Lüftung
   icon       vent_ventilation_level_0
   number_format %.1f
   room       Steuerung,Wintergarten
   setOnDeactivated cmd2_lt
   sortby     04
   state_format _m


Gruß Christoph

Hallo Christoph,

dieser Zustand ist so wie er definiert wurde, denn:

27.4>26 und sensor2=ok => cmd1_gt (set 4_CH_PLATINE_02_Sw_01 on)

der Lüfter sollte jetzt laufen.

Gruß

Damian

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

Bennemannc

Hallo Damian,

jetzt ja ... aber der Akku (mittlerweile ausgetauscht) war defekt und hat deswegen Battery "low" ausgelöst. Eigentlich sollte die Solaranlage (20 W), bzw. der Laderegler (max. 50 W) die Lüfter (zus. ca. 6 W) und die Schaltung speisen können. Zwischendurch war die Battery auch wieder "ok", die Temperatur war oberhalb des Einschaltpunktes (30 Grad). Trotzdem haben die Lüfter nicht angefangen zu laufen. Nach einem "deactivated" und anschließendem "active" liefen die sofort an und blieben auch an.
Daher meine Bitte zu prüfen, ob wenn der Level überschritten ist und die zweite "Einschaltbedingung" nicht gegeben ist, ob eingeschaltet wird, wenn die zweite "Einschaltbedingung" sich ändert. Speziell ob die zweite Bedingung auch regelmäßig aktualisiert bzw. kontrolliert wird.

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

Damian

Zitat von: Bennemannc am 24 Juni 2014, 22:38:03
Hallo Damian,

Daher meine Bitte zu prüfen, ob wenn der Level überschritten ist und die zweite "Einschaltbedingung" nicht gegeben ist, ob eingeschaltet wird, wenn die zweite "Einschaltbedingung" sich ändert. Speziell ob die zweite Bedingung auch regelmäßig aktualisiert bzw. kontrolliert wird.

Gruß Christoph

Hallo Christoph,

das brauche ich nicht zu überprüfen, so etwas habe ich bei mir in mehrfacher Ausführung  seit einem Jahr täglich im Einsatz.

THRESHOLD schaltet nur nach Zustandswechsel, d. h. der Lüfter geht nur dann wieder an, wenn die Bedingung zwischendurch "false" war, bei dir also: Temperatur < 23 oder battery nicht ok.

Gruß

Damian

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

AndyOne

Hallo Damien,

ich komme mit dem Modul noch nicht zu recht, kannst Du mir bitte helfen.

Ich möchte mehrere Rollladen zum Sonnenschutz steuern und zwar einfach über die Aussen Temperatur und die Uhrzeit. Wenn in der Zeit von 12:00 bis 17:00 Uhr die Temperatur über 25° steigt sollen die Rollläden nach unten gehen. Bei einer Temperatur von unter 25° sollen sie wieder hoch. Das ganze soll eigentlich nicht ständig geprüft werden, alle 30 Minuten würde reichen.

VG Andy

Damian

Zitat von: AndyOne am 25 Juni 2014, 12:16:28
Hallo Damien,

ich komme mit dem Modul noch nicht zu recht, kannst Du mir bitte helfen.

Ich möchte mehrere Rollladen zum Sonnenschutz steuern und zwar einfach über die Aussen Temperatur und die Uhrzeit. Wenn in der Zeit von 12:00 bis 17:00 Uhr die Temperatur über 25° steigt sollen die Rollläden nach unten gehen. Bei einer Temperatur von unter 25° sollen sie wieder hoch. Das ganze soll eigentlich nicht ständig geprüft werden, alle 30 Minuten würde reichen.

VG Andy

Das Beispiel Beschattungssteuerung hast du schon gelesen? Siehe: zu http://fhem.de/commandref_DE.html#THRESHOLD

Wenn dir die Syntax zu kompliziert ist, kannst du auch das neue Modul DOIF aus dem Nachbar-Thread ausprobieren. Im Gegensatz zum obigen Bespiel brauchst du nur ein Modul und nicht zwei.

z. B.

define DI_Rolladen DOIF ([Sensor:temperature]> 25 and $hms gt "12:00" and $hms lt "17:00") (set Rollo runter) DOELSE (set Rollo hoch)


Damit deine Rolladen bei kleinen Temperaturschwankungen nicht ständig rauf und runter fahren, würde ich noch eine Verzögerung einbauen:

attr DI_Rolladen wait 600:600

Übrigens: THRESHOLD und DOIF arbeiten rein ereignisgesteuert (Ausführung erfolgt sofort) und pollen (ständiges Abfragen) selbst nicht.


Gruß

Damian


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

AndyOne

Hallo Damien,

danke für den Tip und das Beispiel mit dem DOIF, das gefällt mir sogar noch besser, weil einfacher.
Ich werde das baldmöglichst ausprobieren und berichten.

VG Andy

AndyOne

Ich konnte das gestern Abend nach dem Fußballspiel noch testen. Funktioniert prima und ist einfach und klasse.
Danke!  :)

Damian

Zitat von: AndyOne am 27 Juni 2014, 08:10:11
Ich konnte das gestern Abend nach dem Fußballspiel noch testen. Funktioniert prima und ist einfach und klasse.
Danke!  :)

Schön, wenn es funktionniert.

Ich habe inzwischen das Beispiel mit einer Sonnenuntergangsfunktion in der Doku von DOIF aufgenommen. Falls dein Sensor starke Schwankungen hat, so kannst du auch eine Art "Hysterese" z. B. von einem Grad einbauen.

Beispiel

define DI_Rolladen DOIF ([Sensor:temperature]> 26 and $hms gt "12:00" and $hms lt "17:00") (set Rollo runter) DOELSEIF (([Sensor:temperature]< 25 and $hms gt "12:00" and $hms lt "17:00") or ($hms lt "12:00" or $hms gt "17:00") (set Rollo hoch)

Hier wird der Rolladen nur dann wieder hoch gefahren, wenn die Temperatur unter 25 Grad fällt oder vor 12:00 bzw. nach 17:00 Uhr. Das Attribut wait kannst du dann weglassen.

Gruß

Damian

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

michael-sp

Hallo zusammen,
ich benutze das THRESHOLD-Modul um eine Wärmelampe im einem Terrarium zu schalten.
Lampe schaltet bei 20°C ein und bei 25°C wieder aus.
das funktioniert soweit.
Nun möchte ich das nur zwischen 07:00 Uhr und 17:00Uhr die Lampe über Temperatur geschaltet wird.

Temp_AU_SK:temperature:5:25.0 Licht_SK on

Nehm ich den Weekdaytimer, Heatcontrol oder schreibe ich was beim Threshold? Was muss ich eintragen?

Vielen Dank
Michael