[Gelöst] Heizungsumschaltung man/auto während der Sommerpause

Begonnen von FHEm2005, 19 August 2017, 16:51:53

Vorheriges Thema - Nächstes Thema

FHEm2005

Bei meiner Heizungssteuerung wird einmal täglich die Ventilsteuerung in den Räumen auf "auto" gestellt, um tagsüber vorgenommene manuelle Einstellungen wieder zu "löschen". Während der Sommerpause sollen alle Heizkörper auf manuell und off geschaltet werden, aber jeden Tag werden die Heizkörper wieder auf "auto" gestellt. >:(

define at_Th_Wz_Ez_1 at *18:00:00 set Th_Wz_Ez_Climate controlMode auto

Also habe ich einen Dummy-Schalter "Heizperiode" eingeführt:
define Heizperiode dummy
attr Heizperiode eventMap on,off
attr Heizperiode room Heizung
attr Heizperiode webCmd on:off


Ich stehe momentan auf dem Schlauch, weil ich nicht weiß mit welchem Modul ich zustandsgesteuert und nicht ereignisgesteuert den Befehl "set Th_Wz_Ez_Climate controlMode auto" absetzen kann.

Schreibprogramm  ;): Wenn ReadingsVal("Heizperiode", "state", "on") dann "set Th_Wz_Ez_Climate controlMode auto"

Den Schalter Heizperoide betätige ich im Jahr normalerweise nur zweimal: einmal "on" und im Sommer einmal "off"
Gruß Eberhard
Raspi3: FHEM, CULV3 (V1.61), EnOcean Pi 868, nanoCUL433, HUE-Bridge; Raspi4: Node-red, MQTT, Gaszähler auslesen mit ESP32-CAM

rubbertail

FHEM auf Raspi, CUL433, CUL868, RFXTRX433e, CULCuBE
FRITZ: Fritzbox7590AX, 6xFritzDECT301, 10xFritzDECT200, FritzRepeater 6000
MAX!: Fensterkontakte
netatmo: Wetterstation & Thermostat
Milights, IT, Withings, HUE

FHEm2005

Sicher könnte man/frau den disable Bfehl über die Kommandozeile absetzen, aber wo bleibt der WAF?? :)
Nein es sollte schon über die WEB-UI passieren? Schalter mit dem disable 1/disable 0 -Befehl? Wie soll der aussehen?
Gruß Eberhard
Raspi3: FHEM, CULV3 (V1.61), EnOcean Pi 868, nanoCUL433, HUE-Bridge; Raspi4: Node-red, MQTT, Gaszähler auslesen mit ESP32-CAM

sash.sc

Raspi 4B+ Bullseye ;LaCrosse; HomeMatic; MapleCUL; ZigBee; Signalduino ESP32 ; Shellys; MQTT2; Grafana mit Influxdb

FHEm2005

@ sash.sc: devStateIcon ist nicht in jedem Modul identisch, deshalb kam ich leider mit Deinem Hinweis weiter. Ich habe es mit DOIF realisiert. Zwar etwas umständlich, aber es scheint zu laufen.

dummy "Winterbetrieb" als Schalter ===> DOIF der den Dummy ausliest und 'at' aktiv/inaktiv schaltet.

Der Vollständigkeit halber:

Dummy Winterbetrieb:
define Winterbetrieb dummy
attr Winterbetrieb room Heizung
attr Winterbetrieb webCmd on:off

DOIF für den Winterbetrieb:
define di_Winterbetrieb DOIF ([Winterbetrieb:"on"]) (set at_Th_Wz_Ez_1 active) DOELSEIF ([Winterbetrieb:"off"]) (set at_Th_Wz_Ez_1 inactive)
attr di_Winterbetrieb room Heizung
attr di_Winterbetrieb webCmd on:off

Das 'at' welches den Thermostat um 18:00 Uhr auf auto zurückschaltet:
define at_Th_Wz_Ez_1 at *18:00:00 set Th_Wz_Ez_Climate controlMode auto
attr at_Th_Wz_Ez_1 disable 0
attr at_Th_Wz_Ez_1 room Heizung


Danke an alle, die mitgeholfen haben mein Problem zu lösen. Wer noch Verbesserungsvorschläge hat: Ich lerne gerne.
Viele Grüße
Eberhard
Raspi3: FHEM, CULV3 (V1.61), EnOcean Pi 868, nanoCUL433, HUE-Bridge; Raspi4: Node-red, MQTT, Gaszähler auslesen mit ESP32-CAM

Beta-User

Wenn Du schon unbedingt einen Dummy nehmen willst, um das an- und auszuschalten, warum nimmst Du dann nicht wenigstens nur ein Device für den Rest?

Also entweder darf das DOIF um 18:00 Uhr direkt den Schaltbefehl senden (natürlich nur im Winter, als Nicht-DOIF'ler geraten: "and [18:00]" im ersten Zweig), oder (für perl-Freunde oder IF-Anwender) Du machst im at einfach eine Abfrage, ob Winter ist und schaltest eben nur dann ein...

Ungetestet mit IF (als Kompromiss für perl-Skeptiker):

define at_Th_Wz_Ez_1 at *18:00:00 IF ([Winterbetrieb] eq "on") (set Th_Wz_Ez_Climate controlMode auto)
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: MiLight@ESP-GW, BT@OpenMQTTGw | MySensors: seriell, v.a. 2.3.1@RS485 | ZWave | ZigBee@deCONZ | SIGNALduino | MapleCUN | RHASSPY
svn: u.a MySensors, Weekday-&RandomTimer, Twilight,  div. attrTemplate-files

FHEm2005

#6
Das sieht ja ganz gut aus, aber was mache ich mit ([Winterbetrieb] eq "off")? Gibt es ein ELSIF?
Raspi3: FHEM, CULV3 (V1.61), EnOcean Pi 868, nanoCUL433, HUE-Bridge; Raspi4: Node-red, MQTT, Gaszähler auslesen mit ESP32-CAM

Beta-User

#7
Jein, es gibt kein ELSEIF, aber man kann es verschachteln, wie ein Blick in die commandref zu IF verrät:

define test notify lamp
IF ([lamp] eq "on") (
  IF ([outdoor:humidity] < 70)
(set lamp off)
ELSE
(set lamp on)
) ELSE
  (set switch on)

Mit perl ginge das natürlich genauso, es wären nur mehr "komische" Klammern, ";" und so weiter...
Da gibt's auch ein elsif (das "e" fehlt mit Absicht).

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

Beta-User

Noch ein Beispiel mit weekdayTimer statt at, dafür aber mit etwas perl (könnte auch mit else usw. sein und ohne die Übergabewerte aus dem weekdaytimer auskommen):

define Timer_Brunnen_Schildkroeten WeekdayTimer Wasser_Schildkroeten 10:45|1800 12:30|1800 14:00|1800 15:30|1800 17:00|1800 19:00|1800 { if (ReadingsVal("Aussentemperatur_Nord", "state", "no") > 8 && ReadingsVal("Heizung_Schildkroeten","state","active") eq "disabled") { fhem ("set $NAME on-for-timer $EVENT")}}

Das "Heizung_Schildkroeten" ist ein THRESHOLD, der verhindert, dass mir die Tierchen im Winter draußen bei extremem Frost erfrieren. Daran hängt im Winter halt ein Heizkabel statt der Brunnenpumpe...

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

FHEm2005

Hallo Beta-User,
Deine Hinweise haben die gesamte Mimik vereinfacht. Das war genau das, was in eingangs wissen wollte. Also sieht meine Sommer/Winterumschaltung jetzt so aus:
define at_Th_Wz_Ez_1 at *23:00:00 IF ([Winterbetrieb] eq "on") (set Th_Wz_Ez_Climate controlMode auto) ELSE (set Th_Wz_Ez_Climate controlMode manual)

Dein Schildkrötenteich ist ein schönes Beispiel für Zustandsabfragen. Danke für Deine Hilfe.
Gruß Eberhard
Raspi3: FHEM, CULV3 (V1.61), EnOcean Pi 868, nanoCUL433, HUE-Bridge; Raspi4: Node-red, MQTT, Gaszähler auslesen mit ESP32-CAM

Beta-User

#10
Hallo Eberhard,

Danke für die Rückmeldung, schön, dass Dir das weitergeholfen hat.

Vielleicht noch ein Verbesserungsvorschlag (weiß aber nicht, ob das mit MAX Sinn macht, da die den Zustandswechsel ja nicht rückmelden (?)):
FILTER verwenden, um dann nur zu Schalten,  wenn der Zielzustand nicht schon erreicht ist (wg. 1%-Regel). Aus der commandref:
set room=kitchen:FILTER=STATE!=off off

Geht auch  bei nur einem Device, ist aber vom Effekt her natürlich nicht der Brüller, aber man sollte es im Hinterkopf behalten, wenn die Installation wächst und irgendwann ganze Gerätegruppen zu schalten sind.

Ich habe übrigens alle meine zu Beginn eingesetzten IF durch perl-if ersetzt. M.E. sollte man sich die Mühe machen, diese Sprache wenigstens in den Grundzügen zu erlernen. Es erleichtert vieles, da man dann längere Codeblöche einfacher in myUtils auslagern kann. Wenigstens mir kommt es für komplexe Fragen am Ende einfacher vor, als "andere" Lösungen.
Just m2ct ;) .

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