Neues Modul - THRESHOLD

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

Vorheriges Thema - Nächstes Thema

Damian

Hallo Steve,

die entsprechende Doku befindet sich in dem jeweiligen Modul.

In der Commandref (link auf der Startseite von FHEM) sollte nach einem update das THRESHOLD-Modul zu finden sein. Ich unterstelle, dass das Update-Kommando auch die Doku in der Commandref aktualisiert.

Da ich FHEM unter Windows laufen habe, funktioniert das update-Kommando bei mir nicht. Deswegen rufe ich ./contrib/commandref_join.pl immer manuell auf, um die Commandref zu aktualisieren.

Gruß

Damian

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

cwagner

Hallo zusammen,

die sehr hilfreiche Dokumentation ist auch auf einem Windows-8 bei mir unter den Browsern Chrome wie auch Internet-Explorer dann vollständig über Commandref und dem Link im mittleren Bock "devices" vorhanden, wenn das eingecheckte Modul über die update-Funktion aufgerufen wird (seit Montag). Die aus den Postings heruntergeladenen früheren Versionen wurden nicht eingelesen.
Alternative, die auch völlig ohne FHEM funktioniert: http://fhem.de/commandref.html

Die jüngsten Veränderung von Threshold habe ich jetzt in den ersten Tagen des Einsatzes als äußerst hilfreich erlebt und zugleich eröffnen sich über die Option zwei Sensoren mit und/oder abzufragen und auch Befehlsketten auszulösen, vielversprechende Optionen. Bei mir hat das Modul an vielen Stellen zuverlässig vielzeilige, komplizierte Bedingungskonstruktionen ersetzt und ist zugleich auch noch reaktionsschneller.

Aktuell erprobe ich eine Brennersteuerung mit Parameter-Anpassung bei Warmwasserbedarf und Anpassung an den Wärembedarf im Haus durch Verschiebung des Sollwertes und Anpassung der Hysterese (also Abstand zwischen Ein- und Ausschaltpunkt) mit zwei verschachtelten THRESHOLDs. Hier bewährt sich die Entscheidung, nicht mehr eine Plus/minus-Konstruktion zu machen (Soll = z.B. 55 +/- 5 bedeutet erster Schaltpunkt bei 50 und zweiter Schaltpunkt bei 60, sondern den oberen Schaltpunkt zu setzen und von diesem dann die Hysterese abzuziehen. Damit läßt sich eine Verschiebung des oberen Punktes ganz simpel auch gleich zur Erhöhung der Spreizung benutzen - dies ist bei Öl-Heizung, die wegen Korrosionsgefahr eine untere Kesseltemperatur nicht unterschreiten darf, ganz toll: Je größer der Unterschied zwischen Ein- und Ausschaltpunkt nämlich ist, umso seltener muss sie umweltschädlich und verschleissend starten.
Z.B.: Wenig Bedarf: Threshold 50; Hysteresis 10 (40° Brenner ein, 50° Brenner aus).
Mehr Bedarf: Threshold 50+5; Hysteresis 10+5 (40° Brenner ein, 55° Brenner aus)
Viel Bedarf: Threshold 50+10; Hysteresis 10+10 (40° Brenner ein, 60° Brenner aus).
Da Threshold als Parameter nur Zahlen akzeptiert, muss man diese Werte-Veränderung in einem Scalar errechnen.

Christian
PI 2B+/3B+ Raspbian 12, Perl 5.36.0, FHEM 6.3: 295 Module in ConfigDB: Steuerung Heizkessel, FBH, Solarthermie, kontr. Lüftung mit WRG. Smarthome u.a. HMCUL, 1-Wire (FT232RL ; DS2480B), EnOcean (TCM EPS3), MQTT2. DOIF, PID20, Threshold, OWX; Micropelt IRTV, Volkszähler, SolarForecast; MariaDB

Markus Bloch

Hallo Damian,

vielen Dank schonmal. Ich würde aber auf jedenfall in der Commandref THRESHOLD unter "Helper modules" führen und nicht unter "Devices".

Viele Grüße

Markus
Developer für Module: YAMAHA_AVR, YAMAHA_BD, FB_CALLMONITOR, FB_CALLLIST, PRESENCE, Pushsafer, LGTV_IP12, version

aktives Mitglied des FHEM e.V. (Technik)

Damian

Zitat von: Markus Bloch schrieb am Do, 14 März 2013 16:40Hallo Damian,
vielen Dank schonmal. Ich würde aber auf jedenfall in der Commandref THRESHOLD unter "Helper modules" führen und nicht unter "Devices".

Sehe ich auch so. Die erste Version wurde vom Rudi eingecheckt, da hatte ich noch keinen Zugang zu SourceForge. Man müsste das Modul offensichtlich unter Helper modules in der commandref_frame.html eintragen. Ich weiß nicht ob das jeder Entwickler für sich macht oder ob man es lieber den Rudi eintragen lässt.

Gruß

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

Markus Bloch

Hi Damian,

mir ist noch etwas aufgefallen. Ich habe laut Doku eine eigene Hysteresis von 0 gesetzt. Dennoch ist die Hysteresis 20.


Internals:
   DEF        Verbrauch_Waschmaschine:current:0:0.02 |{Log 2,"Waschmaschine läuft"}|{prowl("Waschmaschine ist fertig")}
   NAME       Alarm_Waschmaschine
   NR         332
   NTFY_ORDER 50-Alarm_Waschmaschine
   STATE      active 0.02
   TYPE       THRESHOLD
   hysteresis 20
   sensor     Verbrauch_Waschmaschine
   sensor_reading current
   CHANGETIME:
   Readings:
     2013-03-14 23:32:51   cmd             wait for next cmd
     2013-03-14 23:32:51   desired_value   0.02
     2013-03-11 00:52:07   sensor_max      0.06
     2013-03-11 00:52:07   sensor_min      0.02
     2013-03-14 23:30:19   sensor_value    0.01
     2013-03-14 23:32:51   state           active 0.02
     2013-03-14 23:32:51   threshold_min   -19.98
   Helper:
     actor_cmd1 {Log 2,"Waschmaschine läuft"}
     actor_cmd2 {prowl("Waschmaschine ist fertig")}
     actor_cmd_default 0
Attributes:
   loglevel   2


Kann es sein, dass das ein Fehler ist?

Viele Grüße
Markus
Developer für Module: YAMAHA_AVR, YAMAHA_BD, FB_CALLMONITOR, FB_CALLLIST, PRESENCE, Pushsafer, LGTV_IP12, version

aktives Mitglied des FHEM e.V. (Technik)

rudolfkoenig

Hab die beiden commandref_frame.html Dateien angepasst und eingecheckt.

Damian

Zitat von: Markus Bloch schrieb am Do, 14 März 2013 23:33Hi Damian,
Kann es sein, dass das ein Fehler ist?

ja.

Fehler wurde korrigiert. Korrektur kommt morgen per Update.


Gruß

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

det.

Hallo Damian,
Modul funktioniert prima. Vielen Dank! Kann mir jemand einen Tip geben, wie ich den Wert dieses Dummys:define Buero_desired_temp dummy
attr Buero_desired_temp alias Solltemperatur
attr Buero_desired_temp group Heizung
attr Buero_desired_temp room Buero
attr Buero_desired_temp setList state:slider,16,1,25
attr Buero_desired_temp stateFormat state  °C
attr Buero_desired_temp webCmd state
anset Thermostat desired ...zur einfachen Änderung der Solltemperatur über den Slider übergeben kann. Bekomme da immer die Meldung das alle meine Versuche nicht "numeric" sind.
Danke!
LG
det.

Damian

Zitat von: rudolfkoenig schrieb am Fr, 15 März 2013 10:20Hab die beiden commandref_frame.html Dateien angepasst und eingecheckt.

Danke.

Gruß

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

Damian

Zitat von: det. schrieb am Fr, 15 März 2013 17:37Bekomme da immer die Meldung das alle meine Versuche nicht "numeric" sind.
Danke!

Ich habe bisher keinen dummy benutzt, aber vielleicht liegt es an der Grad-Einheit, die würde THRESHOLD nicht akzeptieren.

Gruß

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

det.

Leider nicht, der state ist z.b. 20, wenn ich ReadingsVal (Dummy, "state","6") verwende und der Slider  auf 20*C steht
LG
det.

Damian

Zitat von: det. schrieb am Fr, 15 März 2013 22:39Leider nicht, der state ist z.b. 20, wenn ich ReadingsVal (Dummy, "state","6") verwende und der Slider  auf 20*C steht

Das sollte bei auch dir funktionieren:

{my $a=ReadingsVal ("Buero_desired_temp", "state","6");;fhem("set Thermostat desired $a")}

Gruß

Damian

P.S: Ab morgen ist THRESHOLD gesprächiger, was Fehlermeldungen angeht;)
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

Markus Bloch

Funktioniert jetzt sauber.

Vielen Dank und schönes Wochenende

Gruß
Markus
Developer für Module: YAMAHA_AVR, YAMAHA_BD, FB_CALLMONITOR, FB_CALLLIST, PRESENCE, Pushsafer, LGTV_IP12, version

aktives Mitglied des FHEM e.V. (Technik)

det.

Hallo Damian,
Danke, funktioniert prima! Da ich das thermische Heizungsventil und den Fensterkontakt über einen 1-wire DS2406 mit OWSWITCH schalte/überwache und mit Perl noch so meine Schwierigkeiten habe, war der Fenstersensor nicht mein Freund in Zusammenarbeit mit Deinem Modul. Habe das mit dem Slider für die Temperatureinstellung, dem Fensterkontakt, der Vorlauftemperatur und der Uhrzeit jetzt so gelöst:
define Buero_desired_temp dummy
attr Buero_desired_temp alias Solltemperatur
attr Buero_desired_temp setList state:slider,16,1,25
define Dummy_notify notify (Buero_desired_temp:.*|OWSWITCHB) {\
 my $a=ReadingsVal ("Buero_desired_temp", "state","6");;\
 my $temp_OWX_HZ_RUECK = ReadingsVal("OWX_HZ_RUECK","temperature","20");;\
 if (($temp_OWX_HZ_RUECK > 39) && (ReadingsVal("OWSWITCHB","B","20") ne "OFF") && ($hour>=7) && ($hour<22)) {fhem "set Thermostat desired $a";;}\
else {fhem "set Thermostat desired 12";;}\
}
define Thermostat THRESHOLD BueroTemp_KG:temperature |{fhem"set OWSWITCHB output A OFF"}|{fhem"set OWSWITCHB output A ON"}|1
nur so als Anregung, falls jemand Lust verspürt, das zu optimieren
LG
det.

Damian

Zitat von: det. schrieb am Sa, 16 März 2013 19:11Hallo Damian,
Danke, funktioniert prima! Da ich das thermische Heizungsventil und den Fensterkontakt über einen 1-wire DS2406 mit OWSWITCH schalte/überwache und mit Perl noch so meine Schwierigkeiten habe, war der Fenstersensor nicht mein Freund in Zusammenarbeit mit Deinem Modul. Habe das mit dem Slider für die Temperatureinstellung, dem Fensterkontakt, der Vorlauftemperatur und der Uhrzeit jetzt so gelöst:
define Buero_desired_temp dummy
attr Buero_desired_temp alias Solltemperatur
attr Buero_desired_temp setList state:slider,16,1,25
define Dummy_notify notify (Buero_desired_temp:.*|OWSWITCHB) {\
 my $a=ReadingsVal ("Buero_desired_temp", "state","6");;\
 my $temp_OWX_HZ_RUECK = ReadingsVal("OWX_HZ_RUECK","temperature","20");;\
 if (($temp_OWX_HZ_RUECK > 39) && (ReadingsVal("OWSWITCHB","B","20") ne "OFF") && ($hour>=7) && ($hour<22)) {fhem "set Thermostat desired $a";;}\
else {fhem "set Thermostat desired 12";;}\
}
define Thermostat THRESHOLD BueroTemp_KG:temperature |{fhem"set OWSWITCHB output A OFF"}|{fhem"set OWSWITCHB output A ON"}|1
nur so als Anregung, falls jemand Lust verspürt, das zu optimieren

das sollte einfacher gehen mit:

define Thermostat THRESHOLD BueroTemp_KG:temperature OR OWSWITCHB:B:OFF OWSWITCHB|set @ output A OFF|set @ output A ON

Dann könntest du dein notify weiter abspecken.

Ich unterstelle dabei, dass ein offenes Fenster beim Reading "B" vom OWSWITCHB "OFF" liefert.

Gruß

Damian

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