Schalten mit mehreren Bedingungen

Begonnen von Mellowback, 11 August 2017, 15:34:11

Vorheriges Thema - Nächstes Thema

Mellowback

Hallo zusammen,

Ich möchte gerne einen Aktor schalten, sobald sich bei den anderen 3Aktoren der Status auf on setzt.
Ich habe einen HM-LC-SW4-SM die 4Aktoren sind wie folgt belegt:

01: Pumpe
02: Bad Kreislauf
03: Küche Kreislauf
04: WZ Kreislauf

Die Pumpe soll Über Fhem auf on gesetzt werden sobald  einer von 02-04 den Status on hat.

Desweiteren soll Fhem die Pumpe abschalten sobald 02-04 den Status off haben.

Kann mir jemand eine Befehlszeile liefern ?

Vorab Danke für eure Hilfe

Otto123

#1
ungetestet!
Edit: Zeile ergänzt, Geräte Namen sind so nicht gültig und nur beispielhaft!
define 02-04 structure schalter 02 03 04
attr 02-04 clientstate_behavior relative
attr 02-04 clientstate_priority on off
define n_Pumpe notify 02-04:(on|off) set 01 $EVENT

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

MadMax-FHEM

Wird schwer ohne zu wissen wie die gefeuerten Events aussehen und wie genau der "Einschaltbefehl" aussieht/aussehen muss...

Aber per Notify:

define nSchaltePumpe regex_welche_auf_02-04_triggert set PUMPE $EVENT

Eventuell auch $EVTPART1

Kommt halt sehr drauf an...

Mal ein list des/der Geräte und ein Auszug aus dem Eventmonitor, wenn die jeweiligen Kanäle/Geräte (02-04) schalten...

Siehe hier:

https://wiki.fhem.de/wiki/Notify

Oder fhem commandref:

https://fhem.de/commandref_DE.html#notify

Gruß, Joachim
FHEM PI3B+ Bullseye: HM-CFG-USB, 40x HM, ZWave-USB, 13x ZWave, EnOcean-PI, 15x EnOcean, HUE/deCONZ, CO2, ESP-Multisensor, Shelly, alexa-fhem, ...
FHEM PI2 Buster: HM-CFG-USB, 25x HM, ZWave-USB, 4x ZWave, EnOcean-PI, 3x EnOcean, Shelly, ha-bridge, ...
FHEM PI3 Buster (Test)

Beta-User

E
Zitat von: Otto123 am 11 August 2017, 15:40:59
ungetestet!
define 02-04 structure schalter 02 03 04
attr 02-04 clientstate_behavior relative
define n_Pumpe notify 02-04:(on|off) set 01 $EVENT


So sollte es eigentlich gehen, mit priority state auf Any_On|on All_Off|off.

Gruß, Beta-User
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: ZigBee2mqtt, MiLight@ESP-GW, BT@OpenMQTTGw | ZWave | SIGNALduino | MapleCUN | RHASSPY
svn: u.a Weekday-&RandomTimer, Twilight,  div. attrTemplate-files, MySensors

DeeSPe

@Otto123 und @MadMax-FHEM:

Ihr habt beide leider nicht beachtet dass - kein gültiges Zeichen in einem Gerätenamen ist.

Gruß
Dan
MAINTAINER: 22_HOMEMODE, 98_Hyperion, 98_FileLogConvert, 98_serviced

Als kleine Unterstützung für meine Programmierungen könnt ihr mir gerne einen Kaffee spendieren: https://buymeacoff.ee/DeeSPe

Otto123

Zitat von: DeeSPe am 11 August 2017, 15:47:32
@Otto123 und @MadMax-FHEM:

Ihr habt beide leider nicht beachtet dass - kein gültiges Zeichen in einem Gerätenamen ist.

Gruß
Dan
Er hat die Gerätenamen vorgegeben, ob die gültig sind hat er nicht gefragt.  ;D
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

MadMax-FHEM

Zitat von: DeeSPe am 11 August 2017, 15:47:32
@Otto123 und @MadMax-FHEM:

Ihr habt beide leider nicht beachtet dass - kein gültiges Zeichen in einem Gerätenamen ist.

Gruß
Dan

Da ich keine Gerätenamen (sondern irgendwie nur beschreibend [so habe ich das interpretiert] geschildert war wie es ist) "gesehen" habe...
...habe ich auch keine angegeben ;)

Ich habe lediglich einen Beschreibungsversuch gegeben, wie ich es evtl. lösen würde bzw. versuchen würde es zu lösen...  8)

Gruß, Joachim
FHEM PI3B+ Bullseye: HM-CFG-USB, 40x HM, ZWave-USB, 13x ZWave, EnOcean-PI, 15x EnOcean, HUE/deCONZ, CO2, ESP-Multisensor, Shelly, alexa-fhem, ...
FHEM PI2 Buster: HM-CFG-USB, 25x HM, ZWave-USB, 4x ZWave, EnOcean-PI, 3x EnOcean, Shelly, ha-bridge, ...
FHEM PI3 Buster (Test)

Otto123

stimmt bei mir fehlt wohl noch attr 02-04 clientstate_priority on off
Um konsistent aber ungültig zu bleiben  ;)
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

Mellowback

ich habe die Ansätze von Euch wie folgt bei mir eingegeben (natürlich mit den richtigen Bezeichnungen).
Dennoch funktioniert es nicht.  :(


define UmwelzpumpeOnOff structure schalter SchaltaktorFussbodenheizung_Sw_02 SchaltaktorFussbodenheizung_Sw_03 SchaltaktorFussbodenheizung_Sw_04
attr UmwelzpumpeOnOff clientstate_behavior relative
attr UmwelzpumpeOnOff clientstate_priority on off
define n_SchaltaktorFussbodenheizung_Sw_01 notify UmwelzpumpeOnOff: (on|off) set 01 $EVENT

Beta-User

Das Event dürfte das Problem sein (Leerzeichen):
Zitat von: Mellowback am 11 August 2017, 17:23:31
define n_SchaltaktorFussbodenheizung_Sw_01 notify UmwelzpumpeOnOff: (on|off) set 01 $EVENT
Probiers mal so:
define n_SchaltaktorFussbodenheizung_Sw_01 notify UmwelzpumpeOnOff:.(on|off) set 01 $EVENT
Ansonsten mal in den Eventmonitor gucken, was die structure liefert...
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: ZigBee2mqtt, MiLight@ESP-GW, BT@OpenMQTTGw | ZWave | SIGNALduino | MapleCUN | RHASSPY
svn: u.a Weekday-&RandomTimer, Twilight,  div. attrTemplate-files, MySensors

Otto123

#10
dann ist das & in copy & paste kaputt  :odefine n_SchaltaktorFussbodenheizung_Sw_01 notify UmwelzpumpeOnOff:(on|off) set SchaltaktorFussbodenheizung_Sw_01 $EVENT

das hatte ich nicht UmwelzpumpeOnOff: (on|off) sondern 02-04:(on|off) - Leerzeichen sind wichtig oder falsch, auf keine Fall nur leer ???

Und  den Aktor musst du schon auch hinschreiben, set 01 muss doch einen Fehler liefern?  :'(
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

Mellowback

Immer diese copy/paste Fehler  ;D

Funktioniert wunderbar!

Besten Dank

Mellowback

Hallo zusammen,

nachdem diese Funktion erfolgreich in der Praxis getest wurde, möchte ich jetzt noch zusätzlich die Angabe vom TemperaturSensor ergänzen.

Das bedeutet, zusätzlich zur Überwachung von SchaltaktorFussbodenheizung_Sw_02/03/04 soll generell nur geschaltet werden sobald  Temperatursensor_T1 über 35°C .

Was möchte ich damit bezwecken:

Es so, das heute die Ventile (Schaltaktor 02-04) den Schalzaktor (01 ->Pumpe) einschalten bzw. ausschalten.
Nun habe ich aber das Problem wenn der Heizungskessel garnicht an ist und Schaltaktor (02-04) geschalten wird die Pumpe umsonst läuft (kaltes Wasser pumpt).
Ich habe einen Temperatursensor am Heizkessel befestitgt, so das ich messen kann ob das Wasser warm oder kalt ist.

Sw_01 soll also nur noch auf Sw02/03/04 regieren wenn Temperatursensor_T1 über 35°C steht

Vorab Danke

Beta-User

Hallo Mellowback,

dann kannst du z.B. den Ausführungsteil um die Abfrage der Temperatur erweitern und nur schalten, wenn es notwendig ist. Kleine Beispiele dazu stehen in der commandref zu perl-Specials. Da hier noch ein anderes Device abgefragt werden soll, ausnahmsweise mal fertigen code.

Statt set SchaltaktorFussbodenheizung_Sw_01 $EVENT

sollte dann folgendes zum gewünschten Ergebnis führen:

{ if (ReadingsVal("Temperatursensor_T1", "state", "no") > 35) { fhem ("set SchaltaktorFussbodenheizung_Sw_01 $EVENT")}}
Allerdings ist mir nicht ganz klar, ob das auch für off gelten soll ;) . Dann müßtest du die Abfrage mit einer Afrage beginnen, ob $EVENT "off" ist beginnen, und dann das if oben durch ein elsif ersetzen...

Gruß, Beta-User
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: ZigBee2mqtt, MiLight@ESP-GW, BT@OpenMQTTGw | ZWave | SIGNALduino | MapleCUN | RHASSPY
svn: u.a Weekday-&RandomTimer, Twilight,  div. attrTemplate-files, MySensors

Wuppi68

#14
Zitat von: Mellowback am 18 Oktober 2017, 11:52:50
Das bedeutet, zusätzlich zur Überwachung von SchaltaktorFussbodenheizung_Sw_02/03/04 soll generell nur geschaltet werden sobald  Temperatursensor_T1 über 35°C .

das ist ein wenig tricky ...

es kann passieren, dass ein Kreislauf an ist - aber die Temperatur noch unter 35 Grad ist --> Pumpe aus

Kessel geht später an --> Temperatur > 35 Grad --> Pumpe bleibt aus

--------------------------------------
Ich würde die Logik ein wenig umbauen

In Abhängigkeit von der Temperatur, da diese das Hauptargument für Deine Heizung ist ...

dieser Code ist nur Logik und nicht für FHEM direkt geeignet :-)

die Structure bleibt, das Notify auf die Structure fällt weg und wird durch ein neues Notify auf die Temperatur ersetzt :-)

übrig bleibt dann ungefähr folgendes:

define Pumpe an Notify Temperatursensor_T1:temperature:.* {
  if (Temperatursensor_T1:temperature > 35 {
    if (Structure01 eq 'on') { Pumpe ein } else {Pumpe aus}
  } else {
    Pumpe aus
  }
}

FHEM unter Proxmox als VM