[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

Otto123

Aus DOELSE (set Zirkulationspumpe off)
mach sowasDOELSEIF([Zirkulationspumpe:ReadingWelchesAnzeigtObDiePumpeImOn-For-TimerIst] eq "WertDesReadingsDasDiePumpeNichtImOn-For-Timer-Ist") (set Zirkulationspumpe off)

Gruß Otto
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

miggun

Raspberry Pi 3 B+
MapleCUN
Shelly1, Shelly2, Shelly4pro, FS20

miggun

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

Jogi

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

miggun

Ah, da muss ich mich gleich zu Hause  mal belesen, wie das funktioniert.
Danke.
Raspberry Pi 3 B+
MapleCUN
Shelly1, Shelly2, Shelly4pro, FS20

miggun

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

Otto123

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
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

miggun

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

Otto123

Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

miggun

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