Neues Modul - THRESHOLD

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

Vorheriges Thema - Nächstes Thema

Damian

#255
Zitat von: Bartimaus am 20 März 2014, 20:29:11
Danke für das tolle Tool. Bin ja noch blutiger Anfänger, steuere allerdings seit heute mit nem simplen DS18B20 und nem FS20ST meine Fussbodenheizung im KinoKeller.

Wenn du die ersten Posts des Threads liest, dann wirst du feststellen, dass ich genau für diesen Zweck dieses Modul entwickelt haben. Mittlerweile hat es sich zu einem Universal-Tool entwickelt.  :)

Edit: Ich sehe gerade: Die Sache hat bereits hier angefangen: http://forum.fhem.de/index.php/topic,10409.msg58833.html#msg58833

Gruß

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

Damian

#256
Ich habe zwei neue Attribute im THRESHOLD-Modul eingebaut: target_func und number_format

target_func

Hier kann ein Perlausdruck angegeben werden, um insb. aus dem Vorgabewert eines externen Sensors (target_value) einen Sollwert zu berechnen. Der Sensorwert wird mit "_tv" im Ausdruck angegeben.

Beispiel:

Berechnung der Solltemperatur für die Vorlauftemperatur für Fußbodenheizung mit Hilfe der 0,8-Heizkennlinie anhand der Außentemperatur :

define TH_Heizung THRESHOLD Vorlauf:temperature:3:Aussen:temperature Heizung
attr TH_Heizung target_func -0.578*_tv+33.56


Nachtabsenkung lässt sich dann zeitgesteuert durch das Setzen von "offset" realisieren:

Von 22:00 bis 5:00 Uhr soll die Vorlauftemperatur um 10 Grad herabgesetzt werden:

define W_Heizung weekdaytimer TH_Heizung 05:00|0 22:00|-10 set @ offset %

number_format

Das angegebene Format wird im Status für die Formatierung von desired_value (_dv) und sensor_value (_s1v) über die sprintf-Funktion benutzt. Voreingestellt ist "%.1f" für eine Nachkommastelle. Weiter Formatierungsmöglichkeiten - siehe Formatierung  der sprintf-Funktion in der Perldokumentation. Wenn das Attribut gelöscht wird, werden Zahlen im Status nicht formatiert.

Die neue Version kommt in den nächsten Tagen per Update.

Gruß

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

Bennemannc

Hallo,

ich habe Steuerungen (von Lüftern) bei denen ich regelmäßig zwischen activ und deactivated umschalte. Ist es möglich, bei schalten von activ (THRESHOLD hat einen Actor geschaltet, weil der Grenzwert überschritten war) auf deactivated auch den geschalteten Actor mit abzuschalten?

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 19 Mai 2014, 20:26:24
Hallo,

ich habe Steuerungen (von Lüftern) bei denen ich regelmäßig zwischen activ und deactivated umschalte. Ist es möglich, bei schalten von activ (THRESHOLD hat einen Actor geschaltet, weil der Grenzwert überschritten war) auf deactivated auch den geschalteten Actor mit abzuschalten?

Gruß Christoph

Du wirst es nicht  glauben, aber ich habe es vor paar Minuten eingebaut:)
Ab morgen per Update verfügbar.

Gruß

Damian

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

Bennemannc

Hallo Damian,

Super Danke. 8)

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

Auszug aus der Doku:

set <name> deactivated <command>
Modul wird deaktiviert.
<command> ist optional. Es kann "cmd1_gt" oder "cmd2_lt" übergeben werden, um vor dem Deaktivieren des Moduls einen definierten Zustand zu erreichen.

Gruß

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

Bennemannc

Hallo Damian,

ich schalte per devStateIcon
disabled:rc_RED:active active:rc_GREEN:deactivated
kann man das da auch irgendwie durchreichen ?

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 20 Mai 2014, 20:03:13
Hallo Damian,

ich schalte per devStateIcon
disabled:rc_RED:active active:rc_GREEN:deactivated
kann man das da auch irgendwie durchreichen ?

Gruß Christoph

Die Frage ist, ob Leerzeichen bei cmd erlaubt sind.

wenn

disabled:rc_RED:active active:rc_GREEN:deactivated cmd2_lt

nicht funktioniert, dann muss man sich was anders überlegen.

Gruß

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

Bennemannc

Hallo Damian,

das mit dem Anhängen funktioniert nicht. Das Leerzeichen ist ja normaler Weise die Trennung zwischen den einzelne States. Wie kann man das denn sonst machen - klar mit einem notify - noch andere Ideen?

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 20 Mai 2014, 22:16:41
Hallo Damian,

das mit dem Anhängen funktioniert nicht. Das Leerzeichen ist ja normaler Weise die Trennung zwischen den einzelne States. Wie kann man das denn sonst machen - klar mit einem notify - noch andere Ideen?

Gruß Christoph

In anderen Modulen z. B. WeekdayTimer kann man Leerzeichen durch Doppelpunkt angeben (was sich der Programmierer so einfallen lässt), hier wird das wohl nicht funktionieren. Da fällt mir in diesem Fall nur noch die Lösung über Dummy und notify ein.

Gruß

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

Bennemannc

Hallo Damian,

... oder der Programmierer ist so freundlich und ändert den Code, so das der default Wert schon in der Definition als zusätzlicher Parameter mit angegeben werden kann (am Ende des define, Leerzeichen getrennt). Wird nichts angegeben - verhalten wie bisher - cmd1_gt oder cmd2_lt wird beim disablen dieser Schaltzustand gesetzt.

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 21 Mai 2014, 06:58:50
Hallo Damian,

... oder der Programmierer ist so freundlich und ändert den Code, so das der default Wert schon in der Definition als zusätzlicher Parameter mit angegeben werden kann (am Ende des define, Leerzeichen getrennt). Wird nichts angegeben - verhalten wie bisher - cmd1_gt oder cmd2_lt wird beim disablen dieser Schaltzustand gesetzt.

Gruß Christoph

Hallo Christoph,

das könnte man machen, allerdings sind jetzt schon die Define-Optionen so umfangreich geworden, dass man langsam den Überblick verlieren könnte.

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

Gruß

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

Bennemannc

Hallo Damian,

das hatte ich auch schon überlegt. Da ich aber nicht genau weiß wie der Quellcode ist, hatte ich gemeint, dass das mit dem define einfacher einzupflegen wäre - von wegen Wert prüfen, in Variabele speichern und an der Stelle einsetzten, an der der Wert jetzt auch schon übergeben wird.
Aber als attribut wäre das auch ok. Es geht ja nur darum, einen definierten Zustand beim deaktivieren zu haben.

Gruß Christoph

PS: wenn Du Tester benötigst - her mit dem Code  ;)
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

Holgi0815

Hallo Damian,

nicht, dass es gerade wichtig ist, (Draussen noch 25° :)), aber da Du z.Zt. augenscheinlich aktiv bist ....

Mir war im Winter mal aufgefallem, daß, wenn ich set hysteresis auf z.B. "0.7" setzte + SAVE ;), nach einem restart vom fhem immer der default von "1" gesetzt ist, wohingegen ein "1.2" erhalten bleibt?!

Viele Grüße
Holger


Damian

#269
Zitat von: Holgi0815 am 21 Mai 2014, 21:29:26
Hallo Damian,

nicht, dass es gerade wichtig ist, (Draussen noch 25° :)), aber da Du z.Zt. augenscheinlich aktiv bist ....

Mir war im Winter mal aufgefallem, daß, wenn ich set hysteresis auf z.B. "0.7" setzte + SAVE ;), nach einem restart vom fhem immer der default von "1" gesetzt ist, wohingegen ein "1.2" erhalten bleibt?!

Viele Grüße
Holger

Das hängt wohl weniger mit den Zahlenwerten zusammen, als mit der Definition deines Moduls.

z. B.

define TH_TEST THRESHOLD Sensor switch

bekommt defaultmäßig Hysterese von 1

define TH_TEST THRESHOLD Sensor:temperature:0.7 switch

wird nach dem Neustart 0.7 erhalten oder was du an dieser Stelle sonst angibst.

"set TH_TEST hysteresis Wert" überlebt dagegen nicht den Neustart, weil es als Internal durch einen der obigen Werte überschrieben wird.

Gruß

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