Hauptmenü

Dynamischer Parameter

Begonnen von Gonzolo, 10 Mai 2017, 16:31:52

Vorheriges Thema - Nächstes Thema

Gonzolo

Hallo,

ich brauche mal wieder Eure Hilfe.

Ich habe mir einen Parameter für meine Heizungssteuerung gebaut:

define Steuerung dummy

Diesem Parameter wird am Tag "TempTag" und Nachts "TempNacht" zugewiesen.
DOIF [06:00]
SET Steuerung "TempTag
DOELSEIF [22:00]
SET Steuerung "TempNacht"


Wie warm es am Tag bzw. in der Nacht sein soll habe ich dem Parameter "Steuerung" per


setreading Steuerung TempTag 21.0
setreading Steuerung TempNacht 18.0


mitgeteilt.

Ist es morgens beim wechsel von TempNacht auf TempTag bereits schon wärmer als 21.0C, so werden die Heizungen ausgeschaltet.

Wird es nun im laufe des Tages oder in der folgenden Nacht kälter als die jeweilige Temperatur (also bis 22:00Uhr < 21C bzw. ab 22:00Uhr bis 06:00Uhr < 18C), soll die Heizung wieder angestellt werden.

So und nun zu meiner Frage....

Ist es möglich die Abfrage wie folgt zu bauen?

Zitat
wenn die Temperatur < Steurung:[das was gerade in STEUERUNG:STATE steht]
dann Heizung AN

Bestimmt ist das möglich, oder?!  Wie genau ist da die Syntax? Kann mir da einer von Euch helfen?

Vielen Dank!

Beste Grüße

Gonzolo

Amenophis86

Möchtest du das mit einem DOIF lösen, so solltest du den Post in DOIF Board verschieben.

Und ja, was du möchtest ist möglich, aber ich steige noch nicht durch um dir Helfen zu können. Sry. Kannst du vielleicht mal ohne dein Dummy und dein DOIF beschreiben was du möchtest in der Form:

Wenn xxx und yyy dann zzz Der Umweg über das DOIF und dein Dummy erscheint mir nicht nötig. Daher nochmal die Frage nach dem genauen Wunsch.
Aktuell dabei unser neues Haus mit KNX am einrichten. Im nächsten Schritt dann KNX mit FHEM verbinden. Allein zwei Dinge sind dabei selten: Zeit und Geld...

CoolTux


set Steuerung [TempTag]


So kann es gehen.
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

Gonzolo

Danke für Deine Antwort....



Okay... ich versuche es mal genauer zu erklären was ich mache :)

Ich will an einer zentralen Stelle in FHEM eingeben, welche Temperatur in der Wohnung herschen soll. Für Tag und für Nacht will ich es natürlich nicht gleich warm haben. Jetzt möchte ich, wenn diese Temperatur auch ohne heizen erreicht wird, dass FHEM die Heizung aus macht. Wenn im laufe des Tages die Temperatur absinkt und unter die vorgegebene Tagestemperatur fällt, soll FHEM die Heizung wieder mit der Tagestemperatur an machen! Wenn das erst in der Nacht die Temperatur unter die vorgegebene Nachttemperatur fällt, dann soll FHEM die Heizung mit der Nachttempereratur an machen.

Da ich jetzt zwischen TagTemperatur und NachtTemperatur unterscheide, will ich das dynamisch machen. Also wenn es Tag ist, dann steht in dem Steurungs-Parameter "es ist Tag" und an einer anderen Stelle steht, wie warm es am Tag sein soll. Wenn es Nacht ist, dann steht im Steuerungs-Parameter, das es Nacht ist und an einer anderen Stelle wie warm es in der Nacht sein soll. ...

Ich will das so machen, weil ich noch viele andere Sachen abhängig von Tag- oder Nachtbetrieb steuern will.

ZitatWenn xxx und yyy dann zzz


Wenn Heizung aus UND
Temperatur < SollTemperatur
DANN
Setzte die Heiztemperatu auf die SollTemperatur

Ergänzung: Die SollTemperatur ist am Tag eine andere als in der Nacht

Hoffe jetzt ist es klarer??

Danke für die Hilfe!

Gruß

Gonzolo

Thorsten Pferdekaemper

Hi,
das könnte man jetzt mit einem notify oder einem DOIF machen, aber ich würde das mit einem at lösen. Dann muss man sich nicht überlegen, welche Events man überwachen muss (Änderung der Ist-Temperatur, Änderung der Soll-Temperatur, Änderung der Tag/Nacht Zeiten...). Außerdem ist es dann weniger nervös, wenn die Temperatur ungefähr die Soll-Temperatur ist.
Also in etwa...

define heizungsSchalter at +*00:05:00 ...

Im Kommandoteil (also die drei Punkte oben) müsste dann sowas stehen wie

IF ([Steuerung] eq "TempTag" and [Thermometer:Temperatur] < [Steuerung:TempTag] or [Steuerung] ne "TempTag" and [Thermometer:Temperatur] < [Steuerung:TempNacht]) (set Heizung on) ELSE (set Heizung off)

Du solltest außerdem bei "set Steuerung "Temp..." " die """ weglassen.
Gruß,
  Thorsten


FUIP

Gonzolo

Hallo Thorsten,

danke für Deine ausführliche Antwort.


Mir geht es allerdings darum, wie man die Abfragen [Steuerung:TempTag] dynamisieren kann.


also sowas wie [Steuerung:"Platzhalter"]

Ich will genau nicht
IF ([Steuerung] eq "TempTag" and [Thermometer:Temperatur] < [Steuerung:TempTag]  or "TempNacht" and [Thermometer:Temperatur] < [Steuerung:TempNacht])

Ich will sowas wie


IF [Thermometer:Temperatur] < [Steuerung:"Platzhalter"]  THEN set Heizung


Und in den Platzhalte kommt dann das rein, was zu dem Zeitpunkt in Steuerung:State seht (also entweder TempTag oder TempNacht)

Danke für Euere Geduld und Hilfe

Gruß

Gonzolo

Icinger

Ich würde gern auch noch das threshold-Modul in den Raum werfen.
Zusammen mit einem at oder einem DOIF, welches desired_temp setzt, sollte das ruhiger laufen.

lg, Stefan
Verwende deine Zeit nicht mit Erklärungen. Die Menschen hören (lesen) nur, was sie hören (lesen) wollen. (c) Paulo Coelho

Thorsten Pferdekaemper

Hi,
achso. Ich glaube nicht, dass das mit "set magic" geht, da würde es dann so aussehen:

IF ([Thermometer:Temperatur] < [Steuerung:[Steuerung:state]])  (set Heizung ...

Aber wie gesagt, ich bezweifle, dass das geht. Da muss man dann auf die Perl-Ebene gehen, also

{ if(ReadingsVal("Thermometer","Temperatur",0) < ReadingsVal("Steuerung",ReadingsVal("Steuerung","state","blabla"),22)) { fhem("set Heizung on")} }

Gruß,
   Thorsten
FUIP

Damian

Zufällig weiß ich ;) , dass THRESHOLD sogar eine dynamische Komponente hat:

Auszug aus der Commandref zu THRESHOLD:

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

define TH_heating THRESHOLD flow:temperature:2:outdoor:temperature heating
attr TH_heating target_func -0.578*_tv+33.56


Hier wird die Vorgabetemperatur aus dem Reading outdoor:temperature und der target_func dynamisch gebildet. _tv ist der Platzhalter für outdoor:temperature


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

KernSani

#9
Jetzt mal dumm gefragt... Warum setzt du dir nicht statt eines Dummies, der der sagt, ob Tag oder Nachsteuerung aktiv ist gleich die gewünschte Temperatur?


also:


DOIF [06:00]
setreading Steuerung desired_temp [Steuerung:tempTag]
DOELSEIF [22:00]
setreading Steuerung desired_temp [Steuerung:tempNacht]



und dann

IF ([Thermometer:Temperatur] < [Steuerung:desired_temp] ...


Edit: Irgendwie waren die Code Tags zerschossen...
RasPi: RFXTRX, HM, zigbee2mqtt, mySensors, JeeLink, miLight, squeezbox, Alexa, Siri, ...

Damian

#10
Zitat von: KernSani am 10 Mai 2017, 21:29:14
Jetzt mal dumm gefragt... Warum setzt du dir nicht statt eines Dummies, der der sagt, ob Tag oder Nachsteuerung aktiv ist gleich die gewünschte Temperatur?


also:


[/code]

DOIF [06:00]
setreading Steuerung desired_temp [Steuerung:tempTag]
DOELSEIF [22:00]
setreading Steuerung desired_temp [Steuerung:tempNacht]



und dann

IF ([Thermometer:Temperatur] < [Steuerung:desired_temp] ...

ja, aber auch das ist der Standardfall beim THRESHOLD:

ZitatZeitgesteuertes Heizen mit Hilfe des DOIF-Moduls:

define TH_room THRESHOLD temp_room heating
define di_room DOIF ([05:30-23:00|8] or [07:00-23:00|7]) (set TH_room desired 20) DOELSE (set TH_room desired 18)

Da braucht mal noch nicht mal ein IF ;)

Edit: selbst die feste Vorgabe von 20 oder 18 kannst du als Reading angeben.
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

KernSani

Zitat von: Damian am 10 Mai 2017, 21:41:20
ja, aber auch das ist der Standardfall beim THRESHOLD:

Da braucht mal noch nicht mal ein IF ;)

Edit: selbst die feste Vorgabe von 20 oder 18 kannst du als Reading angeben.
Um Missverständnissen vorzubeugen. Ich hatte mich bei meinem Post auf den Ursprungspost des TE bezogen, nicht auf deinen Threshold Vorschlag.

RasPi: RFXTRX, HM, zigbee2mqtt, mySensors, JeeLink, miLight, squeezbox, Alexa, Siri, ...

Damian

#12
Zitat von: KernSani am 10 Mai 2017, 21:58:12
Um Missverständnissen vorzubeugen. Ich hatte mich bei meinem Post auf den Ursprungspost des TE bezogen, nicht auf deinen Threshold Vorschlag.

Das ist mir schon klar, nur, die ganzen IF-Vorschläge müssen ja noch in ein notify eingepackt werden (IF ist ja kein Modul), und das sollte bei zyklisch sendenden Sensoren ein ständiges Schalten unterbinden  und genau das macht das THRESHOLD-Modul.

Edit: Als nächstes wird ihm auffallen, dass bei schwankender Temperatur um den Sollpunkt hin und her geschaltet wird, also braucht er eine Hysterese und schon sind wir wieder bei THRES....
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

nils_

Zitat von: Damian am 10 Mai 2017, 22:04:54
Edit: Als nächstes wird ihm auffallen, dass bei schwankender Temperatur um den Sollpunkt hin und her geschaltet wird, also braucht er eine Hysterese und schon sind wir wieder bei THRES....
nicht das sowas schonmal erwähnt wurde  ::) --> https://forum.fhem.de/index.php/topic,63488.0.html
viele Wege in FHEM es gibt!

Thorsten Pferdekaemper

Hi,
deshalb ja mein Vorschlag, das mit einem at zu machen. Das ist einfach und wahrscheinlich wirkungsvoll.
Dann "schwankt" es auch, aber eben nur maximal alle 5 Minuten (oder welches Intervall auch immer eingestellt ist).
Gruß,
   Thorsten
FUIP