[Gelöst] DOIF mit Homematik Wandthermostat

Begonnen von HJ, 05 November 2020, 13:24:46

Vorheriges Thema - Nächstes Thema

HJ

Hallo zusammen,

ich bin vor 6 Monate mit fhem gestartet und sehr zufrieden mit den Unmengen an Möglichkeiten. Ich arbeite mich immer weiter ein, aber aktuell habe ich folgende Anforderungen bei der im Eventmonitor ein Fehler angezeigt wird. Ich gehe stark davon aus, dass es ein Syntaxfehler ist, aber trotz eines Wochenendes mit Doku komme ich nicht weiter:

Also:
Im Kinderzimmer ein Homematic Wandthermostat, gepeert mit einem Homematic Heizkörperventil. Das funktioniert sauber.
Mein Sohn ist jetzt nur (fast) jedes Wochenende da und da muss die Heizung nicht immer voll laufen.
Meine Idee: ich nutze die drei Wochenprogramme des Wandthermostats,
prog1 für "Wochenende regeln, in der Woche absenken"
prog2 für: "Immer regeln"
prog3 für: "immer absenken"
Im Wandthermostat sind die Temperaturen korrekt eingestellt.
Das ganze funktioniert auch, wenn ich an der Weboberfläche die entsprechenden Befehle eingebe, z. B.
set KiZi_Wandthermostat_Climate regSet prog1

Jetzt war meine Idee, das Ganze über ein Dropdown Feld zu realisieren, dass ich später dann auch über z. B. ein Tablet steuern zu können.
Das sieht in der fhem.cfg aktuell so aus:

attr KiZi_Status setList state:Immer,Wochenende,Abwesend
attr KiZi_Status webCmd state
define Set_KiZi_Status DOIF ([KiZi_Status] eq "Immer") \
  (set myLamp2 on, set KiZi_Wandthermostat_Climate regSet "prog2")\
DOELSEIF ([KiZi_Status] eq "Wochenende") \
  (set myLamp2 on, set KiZi_Wandthermostat_Climate regSet "prog1")\
DOELSE (set myLamp2 off, set KiZi_Wandthermostat_Climate regSet "prog3")

Die DOIF Funktion funktioniert, denn die Lampe wird korrekt geschaltet, allerdings wird das Register im Wandthermostat nicht gesetzt.
Da dieser "set" Befehl an der Weboberfläche ohne di "" bei progx eingegeben wird, hab ich das natürlich auch (ohne Erfolg) probiert.

Der Event Monitor sagt mir, dass

2020-11-05 13:14:36.274 dummy myLamp2 on
2020-11-05 13:14:36.288 DOIF Set_KiZi_Status cmd_nr: 1
2020-11-05 13:14:36.288 DOIF Set_KiZi_Status cmd: 1
2020-11-05 13:14:36.288 DOIF Set_KiZi_Status cmd_event: KiZi_Status
2020-11-05 13:14:36.288 DOIF Set_KiZi_Status error:  set KiZi_Wandthermostat_Climate regSet "prog2": param 2:'-value-' => is required but missing regSet: [(prep|{exec})] -regName- -value- [-peerChn-]
2020-11-05 13:14:36.288 DOIF Set_KiZi_Status cmd_1
2020-11-05 13:14:36.289 dummy KiZi_Status Immer

Meine Frage: Was ist an dem Befehl falsch?

Vielen Dank im Voraus für Eure Antworten
HJ







Otto123

#1
Hallo HJ,

bitte beachte bei Deinen Posts die angepinnten Beiträge z.B: https://forum.fhem.de/index.php/topic,71806.0.html

regSet ist zum Register setzen, wie man Programme im Thermo setzt weiß ich allerdings nicht.
Der Hilfetext erklärt doch alles wenn Du den Befehl in der Webui auswählst?
ZitatregSet [prep|exec] <regName> <value> <peerChannel>
Für einige Hauptregister gibt es eine lesbarere Version die Registernamen <regName> und Wandlung der Werte enthält. Nur ein Teil der Register wird davon unterstützt.
Der optionale Parameter [prep|exec] erlaubt das Packen von Nachrichten und verbessert damit deutlich die Datenübertragung. Benutzung durch senden der Befehle mit Parameter "prep". Daten werden dann für das Senden gesammelt. Der letzte Befehl muss den Parameter "exec" habe um die Information zu übertragen.
<value> enthält die Daten in menschenlesbarer Form die in das Register geschrieben werden.
<peerChannel> wird benötigt falls das Register 'peerChan' basiert definiert wird. Kann ansonsten auf '0' gesetzt werden. Siehe getRegRaw für komplette Definition.
Unterstützte Register eines Geräts können wie folgt bestimmt werden:
set regSet ? 0 0
Eine verkürzte Beschreibung der Register wird zurückgegeben mit:
set regSet <regname> ? 0

Du hast da wirklich Programem im Thermostaten? Ich kenne nur Temperaturlisten und manuellen Betrieb. Im manuellen Betrieb kannst Du prima per FHEM die Soll Temperatur vorgeben, im Automatik Betreib hat er die eingespeicherten Listen.

Der Satz macht mich noch wuschig:
ZitatDas sieht in der fhem.cfg aktuell so aus:

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

MadMax-FHEM

#2
Zitat von: Otto123 am 05 November 2020, 15:58:44
Du hast da wirklich Programem im Thermostaten? Ich kenne nur Temperaturlisten und manuellen Betrieb. Im manuellen Betrieb kannst Du prima per FHEM die Soll Temperatur vorgeben, im Automatik Betreib hat er die eingespeicherten Listen.

@Otto: das ist bei den Wandthermostaten so, also das mit prg1-prg3 (wenn man das verwendet ;)  )...

Ich kann nachher mal schauen...

Aber: ich kann das nicht mit DOIF ;) Ich könnte das höchstens mit notify und myUtils-Sub "liefern" :)

EDIT:
Zitat von: HJ
Das ganze funktioniert auch, wenn ich an der Weboberfläche die entsprechenden Befehle eingebe, z. B.
set KiZi_Wandthermostat_Climate regSet prog1
Jetzt wo ich das sehe: kann so (meiner Meinung nach) NICHT stimmen/gehen! Weil: es fehlt ja der Registername (in diesem Fall: weekPrgSel)! Also wenn dann muss der Aufruf so lauten:

set KiZi_Wandthermostat_Climate regSet weekPrgSel prog1


EDIT: was ja auch die Fehlermeldung "ausdrückt":
Zitatparam 2:'-value-' => is required but missing
Gut hier steht, dass "value" also der Wert fehlt, weil "fälschlicherweise" der Wert (prog1) als Registername "interpretiert" wird und somit fehlt für den "Aufruf-Parser" der Wert (obwohl der Registername fehlt ;)  )...

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

Wieso überhaupt ein dummy/Eventhandler-Gespann?

Einfach den passenden Kanal sauber konfigurieren und ggf. eventMap und/oder widgetOverride anpassen sollte doch genügen? Oder bin ich durch mein "multifunktionales devStateIcon" schon zu verwöhnt?
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

MadMax-FHEM

#4
Zitat von: Beta-User am 05 November 2020, 16:43:34
Wieso überhaupt ein dummy/Eventhandler-Gespann?

Einfach den passenden Kanal sauber konfigurieren und ggf. eventMap und/oder widgetOverride anpassen sollte doch genügen? Oder bin ich durch mein "multifunktionales devStateIcon" schon zu verwöhnt?

Klar kann man das so machen...
...ich mache es über eine readingsGroup ähnlich (weil ich da dann alle WDTs sehen und "steuern" kann).
Wobei ich jetzt keine Programmumschaltung (dort) mache aber klar: kann/könnte man/ich/der TE ;) auch das tun...

EDIT: hm, dein "Ansatz" wäre evtl. eine Alternative für mich. Also direkt beim Device und nicht in der readingsGroup. Hmmm. Wobei ich die Devices an sich eher nie direkt bediene... Dann bleibt es wohl egal ;) Aber ich werd mir das mal anschauen 8)

EDIT: aber für jemanden mit grad mal einem Post (gut man weiß nicht wie fit er trotzdem in fhem ist) ist das evtl. etwas viel auf einmal ;)  /   aber wenn das mit dem dummy so geht wie er will und weiß wie es (zukünftig) besser gehen könnte, dann kann er ja bei Gelegenheit "umsatteln" ;)

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)

HJ

#5
Hallo Otto,
hallo MadMAx,

@Otto,
vielen Dank für deine Antwort. Ich hab mir schon zig mal das regSet Kommando durchgelesen und nach Anleitung auch eingegeben (dachte ich  ;))
Nach deiner Antwort hab ich mir das nochmal angesehen und ..... naja..
Und.. Ja, das Wandthermostat hat drei Wochenprogramme, bei denen ich Temperaturen pro Tag zeitlich setzen kann kann. Das entsprechende Wochenprogramm kann ich dann aktivieren, indem ich ... und jetzt kommt es: den Wert prog1, prog2 oder prog3 in das weekPrgSel Register schreibe, was ich natürlich bei mir vergessen habe.

@MadMax
als ich deine Antwort gelesen habe... alles klar.. manchmal hat mal ein Brett vor dem Kopf. Und ich dachte immer ... "value fehlt.. wieso denn.. steht doch deutlich da.. prog2"


ich hab es jetzt wir folgt (und es funktioniert):

DOIF ([KiZi_Status] eq "Immer")
  (set myLamp2 on,set KiZi_Wandthermostat_Climate regSet weekPrgSel prog2)
DOELSEIF ([KiZi_Status] eq "Wochenende")
  (set myLamp2 blink, set KiZi_Wandthermostat_Climate regSet weekPrgSel prog1)
DOELSE (set myLamp2 off, set KiZi_Wandthermostat_Climate regSet weekPrgSel prog3)


Danke Euch allen (und danke auch Beta-User, das werde ich mir mal näher ansehen)

Damian

Alternativ kann man mit zeitgesteuerter Vorgabe der Solltemperatur arbeiten:

https://wiki.fhem.de/wiki/DOIF/Automatisierung#Zeitgesteuerte_Heizungsregelung_mit_Hilfe_von_Raumthermostaten

Mir ist das Einsehen/Ändern/Anpassen der Profile im Thermostat zu umständlich.

Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

Beta-User

Zitat von: Damian am 05 November 2020, 17:20:32
Mir ist das Einsehen/Ändern/Anpassen der Profile im Thermostat zu umständlich.
Na ja, geht, wenn man die Profile mal runtergeladen hat und dann die ersten weitereditiert, macht man ja eigentlich nicht ständig (https://wiki.fhem.de/wiki/HomeMatic_Type_Thermostat#Templates)...

Falls das der Möglichkeiten nicht genug sind: Man kann auch weekpofile verwenden. Ist nicht ganz so "hübsch" wie die DOIF-Lösung, kann aber wohl auch das aktuelle Profil als Basis runterladen und dann daraus weitere (über einen web-Editor) Profile erstellen, die man dann auch ruck- zuck (und via Differenzabgleich zum aktuellen) an die Thermostate (nicht beschränkt auf die Homematic-Teile) verteilen kann. Damit bekommt man dann verschiedenstes Zeug unter einen Hut, sofern es Temperaturen und/oder on/off versteht (ggf. über den "Umweg" WeekdayTimer)...

(Bestimmt kommt gleich noch Der_Tom um's Eck und zeigt uns, wie es mit MSwitch geht...).
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