[gelöst] Zirkulationspumpe nur bei Anwesenheit

Begonnen von miggun, 14 Februar 2019, 12:15:40

Vorheriges Thema - Nächstes Thema

miggun

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.
Raspberry Pi 3 B+
MapleCUN
Shelly1, Shelly2, Shelly4pro, FS20

Neuhier

Aus was besteht das Device "Anwesend" ?

Jogi

#2
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.

miggun

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.
Raspberry Pi 3 B+
MapleCUN
Shelly1, Shelly2, Shelly4pro, FS20

willib

Jetzt schaltest du aber jede Minute für 10 Sekunden an. Das solltest du noch ändern.
FHEM in Debian 10 LXC unter Proxmox auf NUC, Homematic, Hue, Intertechno, Jeelink, RFXTRX, Harmony Hub, VU+ Uno 4K, Sonos, AMAD

miggun

Das war nur zum testen.
Ich wollte ja nicht immer ne halbe Stunde warten, um zu sehen, ob es funktioniert. :)
Raspberry Pi 3 B+
MapleCUN
Shelly1, Shelly2, Shelly4pro, FS20

Byte09

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

miggun

#7
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+
Raspberry Pi 3 B+
MapleCUN
Shelly1, Shelly2, Shelly4pro, FS20

Damian

#8
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.
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

miggun

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
Raspberry Pi 3 B+
MapleCUN
Shelly1, Shelly2, Shelly4pro, FS20

Damian

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.
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

miggun

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
Raspberry Pi 3 B+
MapleCUN
Shelly1, Shelly2, Shelly4pro, FS20

Damian

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ß.
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

miggun

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.
Raspberry Pi 3 B+
MapleCUN
Shelly1, Shelly2, Shelly4pro, FS20

miggun

#14
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
Raspberry Pi 3 B+
MapleCUN
Shelly1, Shelly2, Shelly4pro, FS20