Ich steh mal wieder ein wenig auf dem Schlauch.
Ich habe meine Zirkulationspumpe, die jeden Tag von 5:30 bis 22 Uhr jede halbe Stunde für 5 Minuten eingeschaltet wird. Also Standard.
Jetzt habe ich mir eine ganz simple Anwesenheitserkennung gebaut, die einfach nur erkennt, wurde heute ein Schalter betätigt und dann den Status auf Anwesend setzt. Das reicht für das was ich vorhabe....erst mal....
Jetzt versuche ich Anwesend on irgendwie mit der Steuerung der Zirkulationspumpe zu verknüpfen, aber das bekomme ich nicht hin.
defmod di_Zirkulationspumpe DOIF ([05:30-22:00,+:01]){if(Value('Anwesend' eq "on")}(set Zirkulationspumpe on-for-timer 10)
attr di_Zirkulationspumpe do always
attr di_Zirkulationspumpe room DOIF
Das geht nicht
defmod di_Zirkulationspumpe DOIF ([05:30-22:00,+:01] and [Anwesend on])(set Zirkulationspumpe on-for-timer 10)
attr di_Zirkulationspumpe do always
attr di_Zirkulationspumpe room DOIF
und das hier auch nicht. Tu mich ein wenig schwer, dass richtig aus den Dokumentationen umzusetzen.
Ich würde mich über Hilfe von Eurer Seite freuen.
Aus was besteht das Device "Anwesend" ?
Probiere es doch mal damit:
([05:30-22:00] and [Anwesend] eq "on")(set Zirkulationspumpe on-for-timer 10)
Funktioniert natürlich nur, wenn "anwesend" ein Device mit dem state "on" ist.
Anwesend ist ein Dummy
Der wird einmal über ein notify angeschmissen, sobald irgendein Schalter betätigt wird und über einen at Befehl um 3 Uhr Nachts zurück gesetzt.
Habe es hin bekommen. Ist blöd, wenn man wie ich keine Ahnung vom Programmieren hat und tausend Varianten durch probieren durchtesten muss.
So klappt es:
defmod di_Zirkulationspumpe DOIF ([05:30-22:00,+:01] and [?Anwesend:state] eq "on")(set Zirkulationspumpe on-for-timer 10)
attr di_Zirkulationspumpe do always
attr di_Zirkulationspumpe room DOIF
Edit, wollte gerade Antworten, da kam noch der Tip von Jogi.... :)
Vielen, vielen Dank... Ihr seid Spitze.
Jetzt schaltest du aber jede Minute für 10 Sekunden an. Das solltest du noch ändern.
Das war nur zum testen.
Ich wollte ja nicht immer ne halbe Stunde warten, um zu sehen, ob es funktioniert. :)
Fast schon OT, aber trotzdem:
ich weiss ja nicht wie dein 'anwesenheitsverhalten' ist , aber ich würde dafür sorge tragen , das die pumpe auch bei längerer abwesenheit regelmässig läuft. Mir sind im 'VorFhemZeitalter' zwei Pumpen ( Namenhaft ) festgegangen , während einer jeweils 2-3 wöchigen abwesenheit , in der ich sie ( dämlicherweise ) ausgeschaltet hatte.
gruss Byte09
Ahhh, sehr guter Einwand. Bisher lief die über ne Zeitschaltuhr, da lief die ja immer.
Also muss ich noch was einbauen, dass die einmal am Tagfür 5min läuft.
Hm, und dann habe ich noch ein anderes Problem.
Die Pumpe fungiert bei mir auch als Ladepumpe.
Vorgelagert ist ein Multispeicher. Sobald der 10 Grad wärmer ist, soll die Zirkulationspumpe laufen, bis nur noch 7 Grad Differenz da ist.
Hatte das mit einem zweiten DOIF gemacht, aber die beiden DOIF's stören sich wohl gegenseitig.
Das Problem normale Zirkulationsfunktion ist on-for-timer, Ladefunktion nur on.
Jetzt habe ich keine Ahnung, wie ich die beiden DOIF's zusammen bekomme.
Raspberry Pi 3 B+
Du kannst doch in einem separaten Zweig einmal pro Tag unabhängig von sonst was deine Pumpe für paar Minuten anwerfen.
Oder einfach in der Bedingung
or [16:00]
dranhängen.
Vielen Dank. :)
Also:
defmod di_Zirkulationspumpe DOIF (([05:30-22:00,+:01] and [?Anwesend:state] eq "on") or 16:00:00]) (set Zirkulationspumpe on-for-timer 10)
attr di_Zirkulationspumpe do always
attr di_Zirkulationspumpe room DOIF
Bekomme ich da denn auch das hier integriert?
defmod di_Speicherladung DOIF (([Waermepumpe_Temp:Temperature1]+10) <= [Multispeicher_Temp:Temperature2]) (set Zirkulationspumpe on) DOELSE (set Zirkulationspumpe off)
attr di_Speicherladung do always
attr di_Speicherladung room DOIF
Zitat von: miggun am 14 Februar 2019, 20:58:57
Bekomme ich da denn auch das hier integriert?
defmod di_Speicherladung DOIF (([Waermepumpe_Temp:Temperature1]+10) <= [Multispeicher_Temp:Temperature2]) (set Zirkulationspumpe on) DOELSE (set Zirkulationspumpe off)
attr di_Speicherladung do always
attr di_Speicherladung room DOIF
do always solltest du hier weglassen.
Ah, danke. Mache ich.
Stören sich die beiden DOIF's nicht, weil die ja beide die gleiche Pumpe ansprechen.
defmod di_Speicherladung DOIF (([Waermepumpe_Temp:Temperature1]+10) <= [Multispeicher_Temp:Temperature2]) (set Zirkulationspumpe on) DOELSE (set Zirkulationspumpe off)
attr di_Speicherladung room DOIF
Zitat von: miggun am 14 Februar 2019, 21:10:34
Ah, danke. Mache ich.
Stören sich die beiden DOIF's nicht, weil die ja beide die gleiche Pumpe ansprechen.
defmod di_Speicherladung DOIF (([Waermepumpe_Temp:Temperature1]+10) <= [Multispeicher_Temp:Temperature2]) (set Zirkulationspumpe on) DOELSE (set Zirkulationspumpe off)
attr di_Speicherladung room DOIF
natürlich stören die sich, wenn der eine von dem anderen nichts weiß.
Mist, ich habe es befürchtet. Dann übersteigt das jetzt gerade mal das bißchen Wissen, was ich habe.
Außer ich lasse jeweils ein Dummy mit setzen, was dann das entsprechende andere DOIF blockiert.
Also Speicherladung Dummy aktiv, Zirkulationspumpen DOIF wird nicht ausgeführt.
Ich versuche es immer noch ohne Dummy hin zu bekommen. Leider unterbricht der letzte Befehl ( DOELSE (set Zirkulationspumpe off) ) den Befehl on-for-timer 300, ohne das die Zeit abgelaufen ist. Hat einer eine Idee, wie ich das verhindern kann?
Hier mein Code.
defmod di_Speicherladung DOIF (([Waermepumpe_Temp:Temperature1]+16) <= [Multispeicher_Temp:Temperature2]) (set Zirkulationspumpe on) DOELSEIF (([05:30-22:00,+:30] and\
[?Anwesend:state] eq "on" and [?Zirkulationspumpe:state] eq "off") or [16:00:00])(set Zirkulationspumpe on-for-timer 300) DOELSE (set Zirkulationspumpe off)
attr di_Speicherladung do always
attr di_Speicherladung room DOIF
Aus DOELSE (set Zirkulationspumpe off)
mach sowasDOELSEIF([Zirkulationspumpe:ReadingWelchesAnzeigtObDiePumpeImOn-For-TimerIst] eq "WertDesReadingsDasDiePumpeNichtImOn-For-Timer-Ist") (set Zirkulationspumpe off)
Gruß Otto
Klasse, danke probiere ich.
Ich glaube, ich mache etwas bei den Redings falsch, oder? Es funktioniert nicht, was wahrscheinlich daran liegt, dass ich etwas falsch eingebe.
defmod di_Zirkulationspumpe DOIF (([Waermepumpe_Temp:Temperature1]+14) <= [Multispeicher_Temp:Temperature2]) (set Zirkulationspumpe on)\
DOELSEIF (([05:30-22:00,+:30] and [?Anwesend:state] eq "on" and [?Zirkulationspumpe:state] eq "off") or [16:00:00])(set Zirkulationspumpe on-for-timer 300)\
DOELSEIF([di_Zirkulationspumpe:state] eq "cmd_1") (set Zirkulationspumpe off)
attr di_Zirkulationspumpe do always
attr di_Zirkulationspumpe room DOIF
Zitat von: miggun am 20 Februar 2019, 14:18:14
Hat einer eine Idee, wie ich das verhindern kann?
Ich würde mit dem Attribut "wait" arbeiten und on-for-timer rausnehmen.
Gruß,
Jogi
Ah, da muss ich mich gleich zu Hause mal belesen, wie das funktioniert.
Danke.
Ich habe es nicht hin bekommen.
Jetzt habe ich doch erst mal den unschönen Weg gewählt. :(
defmod di_Speicherladung DOIF (([Waermepumpe_Temp:Temperature1]+14) <= [Multispeicher_Temp:Temperature2]) (set Zirkulationspumpe on,set du_Speicherladung on)\
DOELSE (set Zirkulationspumpe off,set du_Speicherladung off)
attr di_Speicherladung room DOIF
defmod du_Speicherladung dummy
attr du_Speicherladung room Dummy
defmod di_Zirkulationspumpe DOIF ((([05:30-22:00,+:30] and [?Anwesend:state] eq "on") or [16:00:00]) and [du_Speicherladung:state] eq "off")(set Zirkulationspumpe on-for-timer 300)
attr di_Zirkulationspumpe do always
attr di_Zirkulationspumpe room DOIF
Zitat von: miggun am 20 Februar 2019, 20:47:32
Ich habe es nicht hin bekommen.
Da wäre ja für die Mithilfe gut zu wissen was denn nicht geklappt hat. Ein list vom device ist auch wesentlich besser als die Definition.
Dein Versuch mit dem Reading ist aus meiner Sicht die falsche Stelle, Du fragst das eigene DOIF ab ob es im Zustand cmd_1 ist? Ich hätte gedacht es gibt am Gerät selbst etwas. Und wenn schon dieser Weg, dann wäre doch cmd_3 richtig oder?
Gruß Otto
Im Device bekomme ich on-for-timer nicht raus. Das geht einfach nur auf on. Da bekam ich nichts raus.
den Befehl habe ich nicht ans laufen bekommen, wegen den ganzen Bedingungen.
Speicherladung Vorrang vor Zirkulation
Zirkulation nur wenn Anwesend, Speicherladung aus und wenn Abwesend, dann einmal am Tag um 16 Uhr für 5min.
Mal bitte ein list Zirkulationspumpe
https://forum.fhem.de/index.php/topic,71806.0.html
Gruß Otto
Internals:
CFGFN
CID shelly4pro_4BCB83
DEF shelly4pro_4BCB83
DEVICETOPIC Zirkulationspumpe
IODev MQTT2_SERVER
LASTInputDev MQTT2_SERVER
MQTT2_SERVER_MSGCNT 163164
MQTT2_SERVER_TIME 2019-02-20 22:01:04
MSGCNT 163164
NAME Zirkulationspumpe
NR 8719
STATE on
TYPE MQTT2_DEVICE
READINGS:
2019-02-20 22:01:04 1 on
2019-02-20 22:01:04 2 on
2019-02-20 22:01:04 3 off
2019-02-20 16:42:22 announce_fw_ver 20190122-162215/v1.4.5@5cbc6229
2019-02-20 16:42:22 announce_id shelly4pro-4BCB83
2019-02-20 16:42:22 announce_ip 192.168.1.34
2019-02-20 16:42:22 announce_mac D436394BCB83
2019-02-20 16:42:22 announce_new_fw false
2019-02-20 22:01:04 energy 0
2019-02-20 16:42:22 online true
2019-02-20 22:01:04 power 0.00
2019-02-20 22:01:03 shellies/shelly4pro-4BCB83/relay/0 off
2019-02-20 21:59:32 state on
TIMED_OnOff:
CMD on-for-timer
DURATION 300
NEXTCMD off
START 1550696372
START_FMT 2019-02-20 21:59:32
Attributes:
IODev MQTT2_SERVER
getList shelly4pro_4BCB83:shellies/shelly4pro-4BCB83/relay/1:.* state
readingList shelly4pro_4BCB83:shellies/shelly4pro-4BCB83/online:.* online
shelly4pro_4BCB83:shellies/announce:.* { json2nameValue($EVENT, 'announce_', $JSONMAP) }
shelly4pro_4BCB83:shellies/shelly4pro-4BCB83/relay/0/power:.* power
shelly4pro_4BCB83:shellies/shelly4pro-4BCB83/relay/0:.* shellies/shelly4pro-4BCB83/relay/0
shelly4pro_4BCB83:shellies/shelly4pro-4BCB83/relay/1/power:.* power
shelly4pro_4BCB83:shellies/shelly4pro-4BCB83/relay/1:.* 1
shelly4pro_4BCB83:shellies/shelly4pro-4BCB83/relay/2/power:.* power
shelly4pro_4BCB83:shellies/shelly4pro-4BCB83/relay/2:.* 2
shelly4pro_4BCB83:shellies/shelly4pro-4BCB83/relay/3/power:.* power
shelly4pro_4BCB83:shellies/shelly4pro-4BCB83/relay/3:.* 3
shelly4pro_4BCB83:shellies/shelly4pro-4BCB83/relay/0/energy:.* energy
shelly4pro_4BCB83:shellies/shelly4pro-4BCB83/relay/1/energy:.* energy
shelly4pro_4BCB83:shellies/shelly4pro-4BCB83/relay/2/energy:.* energy
shelly4pro_4BCB83:shellies/shelly4pro-4BCB83/relay/2/energy:.* energy
shelly4pro_4BCB83:shellies/shelly4pro-4BCB83/relay/2/energy:.* energy
room 10_Keller,11_Heizung,Homekit,MQTT2_DEVICE
setList off:noArg shellies/shelly4pro-4BCB83/relay/1/command off
on:noArg shellies/shelly4pro-4BCB83/relay/1/command on