gelöst: THRESHOLD - ohne value?

Begonnen von Absolute Beginner, 11 April 2015, 13:57:30

Vorheriges Thema - Nächstes Thema

Absolute Beginner

Hier kommt mal so eine richtige Anfängerfrage. Meine Heizungssteuerung funktioniert, aber mir fallen im Plot immer diese Überschwinger auf.

define Heizungsschalter DOIF (([WZ_Thermostat_Climate:desired-temp] > [WZ_Thermostat_Weather:temperature]) and ([WZ_Terrassentuer] eq "closed")) (set Heizung on) DOELSEIF (([WZ_Thermostat_Climate:desired-temp] <= [WZ_Thermostat_Weather:temperature]) or ([WZ_Terrassentuer] eq "open")) (set Heizung off)
attr Heizungsschalter do always
attr Heizungsschalter wait 600:600


Deshalb dachte ich, ich könnte das THRESHOLD-Modul verwenden und hätte damit auch die Totzeit (wait 600:600) verhindert. Wenn ich als Test aber

define WZ_Temperatur THRESHOLD WZ_Thermostat_Weather:temperature Heizung|on:off
set WZ_Temperatur desired WZ_Thermostat_Climate:desired-temp
attr Heizungsschalter do always


eingebe, erwartet FHEM einen festen Wert statt des ausgelesenen. Geht das grundsätzlich nicht?
Raspberry Pi 3 - CUL868 - Jessie - FHEM5.8 - MQTT - Node-RED
HM-TC-IT-WM-W-EU, HM-LC-BI1PBU-FM, HM-Sec-SCo, HM-WDS30-0T2-SM, SOMFY, Echo, ESP, SonOff

Markus Bloch

Hi,

da sich keiner traut, versuch ichs mal ;-)

Zitat von: Absolute Beginner am 11 April 2015, 13:57:30
erwartet FHEM einen festen Wert statt des ausgelesenen. Geht das grundsätzlich nicht?

Nein, das geht nicht, dass was Du da versuchst ist eine DOIF-Syntax im THRESHOLD-Modul anzuwenden. Das eine hat aber leider nichts mit dem anderen zu tun. Das Threshold-Modul erwartet immer eine absolute Zahl. Wenn du aber als desired-Wert für dein WZ_Temperatur die eingestellte Temperatur vom WZ_Thermostat_Climate haben willst, dann könnte man das als folgenden Perl-Befehl machen:

{fhem("set WZ_Temperatur desired ".ReadingsVal("WZ_Thermostat_Climate","desired-temp", "20"))}

Dann würde bei Ausführung dieses Befehls der aktuelle Wert von desired-temp von deinem Wandthermostat genommen werden und dann als aktuelle Wunschtemperatur im Threshold gesetzt werden. Optimal wäre es, wenn du an deinem Thermostat dabei "event-on-change-reading desired-temp" als Attribut setzt, dir ein notify auf "WZ_Thermostat_Climate:desired-temp" legst und dann den oben genannten Befehl ausführst. Somit würde bei jeder Temperaturänderung am Wandthermostat dein THRESHOLD-Device aktualisiert werden und entsprechend schalten.

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)

Absolute Beginner

danke Markus - immer bist Du das Opfer... :-)

Wäre ja schön, wenn Software so einfach zu verstehen wäre. Ich habe Folgendes eingegeben:

define WZ_Temperatur THRESHOLD WZ_Thermostat_Weather:temperature Heizung
define Heizungsschalter notify Heizung {fhem("set WZ_Temperatur desired ".ReadingsVal("WZ_Thermostat_Climate","desired-temp", "20"))} $EVENT


Aber die Wunschtemperatur wird wohl nicht übernommen - weder dass die Heizung angeht noch dass die Wunschtemperatur im Plot weiter angezeigt wird. Habe ich da noch was vergessen?

Im 'Heizungschalter' steht diese Mitteilung:
To add a regexp an eventTypes definition is needed
Raspberry Pi 3 - CUL868 - Jessie - FHEM5.8 - MQTT - Node-RED
HM-TC-IT-WM-W-EU, HM-LC-BI1PBU-FM, HM-Sec-SCo, HM-WDS30-0T2-SM, SOMFY, Echo, ESP, SonOff

Markus Bloch

Dein Notify müsste aber heißen:

define Heizungsschalter notify WZ_Thermostat_Climate:desired-temp {fhem("set WZ_Temperatur desired ".ReadingsVal("WZ_Thermostat_Climate","desired-temp", "20"))}

In der commandref zu THRESHOLD (http://fhem.de/commandref_DE.html#THRESHOLD) findest du übrigens folgendes Beispiel, was doch bestimmt zu 100% auf dein Vorhaben passt, oder?:

Zitat
Steuerung einer Heizung durch ein Wandthermostat mit Übernahme der Soll- und Ist-Temperatur vom Wandthermostat:

define TH_Heizung THRESHOLD WT_ch1:measured-temp:1:WT_ch2:desired-temp Heizung

Mit set TH_Heizung desired 17 wird die Vorgabe vom Wandthermostat übersteuert bis set TH_Heizung external aufgerufen wird.

Die Meldung im Heizungsschalter ist normal, eventTypes ist ein Hilfsmodul was es dem Anwender erleichtern soll Regexp's zu verwenden in dem es versucht passende vorzuschlagen. Nutze ich persönlich nicht, da ich weis damit umzugehen. Daher werde ich auch kein eventType bei mir definieren. Das Modul macht nichts anderes als sämtliche Events die jemals im System auftreten in einer Datei zu sammeln um sie dann dem Nutzer anbieten zu können als Regexp für ein neues notify.

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)

Absolute Beginner

Heute ist mal wieder Zeit, sich an dass Thema zu begeben. Die commandref zu THRESHOLD habe ich gelesen, aber das erwähnte Beispiel kam mir zu theoretisch vor. Es hat für mich keine Ähnlichkeit mit der Grunddefinition

define <name> THRESHOLD <sensor> <actor>

Habe das Beispiel jetzt eben mal eingespielt. In der Theorie funktioniert es. Zum Testen wäre es jetzt praktisch, wenn es es mal wieder in bisschen kälter würde...

Bedeutet die "1"  1°C Schaltschwelle? Und kann bei diesem Beispiel die Auswertung des Türkontaktes (HM-Sec-SCo) mit der ODER-Verknüpfung aus dem danach folgenden Beispiel koppeln, also so:

define Heizungsschalter THRESHOLD WZ_Thermostat_Weather:temperature:1:WZ_Thermostat_Climate:desired-temp OR WZ_Terrassentuer Heizung

damit bei geöffneter Tür die Heizung ausgeht?
Raspberry Pi 3 - CUL868 - Jessie - FHEM5.8 - MQTT - Node-RED
HM-TC-IT-WM-W-EU, HM-LC-BI1PBU-FM, HM-Sec-SCo, HM-WDS30-0T2-SM, SOMFY, Echo, ESP, SonOff

Markus Bloch

Die 1 ist die Hysteresis.

Du kannst das mit einem Türkontakt/Fensterkontakt kombinieren. Allerdings nur einmal. Eine mehrfache Verknüpfung von Sensoren ist damit nicht möglich, da wäre die Alternative dann eine structure zu verwenden die alle Sensoren zusammenfasst, welche man dann in ein THRESHOLD einbinden kann.

Dein Beispiel zur Verknüpfung der Terassentür würde so funktionieren, ja.

In der englischen Version der commandref zu THRESHOLD stehen die einzelnen Parameter im Define-Statement ausführlicher drin. In der deutschen Version wird darauf nicht eingegangen.

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)

Absolute Beginner

Super, alles funktioniert bestens. Danke Markus! Bin immer wieder überrascht, wie mächtig die FHEM-Sprache ist!
Raspberry Pi 3 - CUL868 - Jessie - FHEM5.8 - MQTT - Node-RED
HM-TC-IT-WM-W-EU, HM-LC-BI1PBU-FM, HM-Sec-SCo, HM-WDS30-0T2-SM, SOMFY, Echo, ESP, SonOff