Solved: Umschreiben von Befehlen? (in Verbindung mit smartvisu und HM-CC-RT-DN)

Begonnen von Grinsekatze, 05 Februar 2016, 14:56:35

Vorheriges Thema - Nächstes Thema

Grinsekatze

Hallo ins Rund,

auf meinem Weg zu einem Smarthome habe ich nun neben meinen Lampen auch begonnen, meine Heizung (HM-CC-RT-DN) zu integrieren.
Jedoch habe ich hierbei ein Problem.

Ich bekomme von meinem Frontend (smartvisu) ein Kommando, welches FHEM nicht versteht. Daher muss ich es umschreiben - doch wie?

Der von smartvisu erzeugte Befehl lautet "set WZ.HeizkoerperthermostatLinks_Clima controlMode:night 1" bzw. "set WZ.HeizkoerperthermostatLinks_Clima controlMode:night 0". Ich benötige jedoch für FHEM "set WZ.HeizkoerperthermostatLinks_Clima controlMode:night" bzw. "set WZ.HeizkoerperthermostatLinks_Clima controlMode:day".

Zunächst habe ich daran gedacht, dies mittels Notify umzusetzen, jedoch weiß ich nicht wie ich es im Detail schreiben muss, damit es auch funktioniert.
Denn so wird es vermutlich nicht ok sein:
define WZ.HeizkoerperthermostatLinks_night notify "set WZ.HeizkoerperthermostatLinks_Clima controlMode:night 1" "set WZ.HeizkoerperthermostatLinks_Clima controlMode:night"
define WZ.HeizkoerperthermostatLinks_day notify "set WZ.HeizkoerperthermostatLinks_Clima controlMode:night 0" "set WZ.HeizkoerperthermostatLinks_Clima controlMode:day"

Könnt ihr mir hier weiterhelfen?
Danke

marvin78

Ich verstehe nicht, wofür du das in SmartVisu benötigst. Der FHEM-Befehl heißt ja

set DEVICE controlMode day

Das geht ganz einfach über den Direct Converter.

(http://forum.fhem.de/index.php?action=dlattach;topic=48789.0;attach=45774;image)

Grinsekatze

Ich habe in smartvisu das device.rtr genommen. Die Temperaturen kann ich auch ändern, doch nicht die Icons nutzen (auto, day/night, burst, on/off?).
Eigentlich habe ich es so, wie Du es gepostet hast auch gemacht.

Doch im Fhem-Log erhalte ich dann beim drücken nur
Zitatset WZ.HeizkoerperthermostatLinks_Clima controlMode 1 : invalid 1:select of mode [auto|boost|day|night] or controlManu,controlParty


ich habe, wie gesagt device.rtr genutzt:
{{ device.rtr(WZ.HeizkoerperthermostatLinks, 'Heizung', WZ.HeizkoerperthermostatLinks_actual', WZ.HeizkoerperthermostatLinks_set', WZ.HeizkoerperthermostatLinks_mode', WZ.HeizkoerperthermostatLinks_night', WZ.HeizkoerperthermostatLinks_frost', WZ.HeizkoerperthermostatLinks_state') }}

In Fhem sind diese GADs wie folgt belegt:
"WZ.HeizkoerperthermostatLinks_actual" : {
"mode" : "item",
"device" : "WZ.HeizkoerperthermostatLinks_Clima",
"reading" : "measured-temp",
"converter" : "NumDirect",
"cmd set" :""
},

"WZ.HeizkoerperthermostatLinks_frost" : {
"mode" : "item",
"device" : "WZ.HeizkoerperthermostatLinks_Clima",
"reading" : "controlMode",
"converter" : "Direct",
"cmd set" :"controlMode"
},

"WZ.HeizkoerperthermostatLinks_mode" : {
"mode" : "item",
"device" : "WZ.HeizkoerperthermostatLinks_Clima",
"reading" : "controlMode",
"converter" : "Direct",
"cmd set" :"controlMode"
},

"WZ.HeizkoerperthermostatLinks_night" : {
"mode" : "item",
"device" : "WZ.HeizkoerperthermostatLinks_Clima",
"reading" : "controlMode",
"converter" : "Direct",
"cmd set" :"controlMode"
},

"WZ.HeizkoerperthermostatLinks_set" : {
"mode" : "item",
"device" : "WZ.HeizkoerperthermostatLinks_Clima",
"reading" : "desired-temp",
"converter" : "NumDirect",
"cmd set" :"desired-temp"
},

"WZ.HeizkoerperthermostatLinks_state" : {
"mode" : "item",
"device" : "WZ.HeizkoerperthermostatLinks_Clima",
"reading" : "controlMode",
"converter" : "Direct",
"cmd set" :"controlMode"
},


Grinsekatze

Ok, ich habe nun eine Lösung für mein Problem gefunden - wie eingangs erwähnt mithilfe von Dummys und Notifys.

Das Problem ist generell, dass Smartvisu bei Verwendung von device.rtr immer eine 1 oder 0 mit übergibt, wenn man die Symbole wählt (ja nachdem, ob das Symbol aktiviert oder wieder deaktiviert wurde). Damit kommt der HM-CC-RT-DN jedoch niht klar - ich habe leider keine direkte Möglichkeit gefunden dies zu lösen.

Daher habe ich nun für jedes Symbol (Manual/Auto, Day/Night (Comfort/Eco), Boost, On/Off(?)) ein Dummy und zwei Notifys geschrieben.
Die entsprechenden GADs habe ich dann mit den Dummys verknüpft.

fhem.cfg:
define WZ.Heizkoerperthermostat_ClimaManualAutoDummy dummy
attr WZ.Heizkoerperthermostat_ClimaManualAutoDummy comment Dummy fuer Heizkoerperthermostat im Wohnzimmer - zur Erkennung der Manual- oder Auto-Betriebsart

define WZ.Heizkoerperthermostat_ClimaManualNotify notify WZ.Heizkoerperthermostat_ClimaManualAutoDummy:off { fhem "set WZ.Heizkoerperthermostat_Clima controlMode manual;;set WZ.Heizkoerperthermostat burstXmit" }
attr WZ.Heizkoerperthermostat_ClimaManualNotify comment Notify fuer Heizkoerperthermostat im Wohnzimmer - zur Erkennung der Manual-Betriebsart

define WZ.Heizkoerperthermostat_ClimaAutoNotify notify WZ.Heizkoerperthermostat_ClimaManualAutoDummy:on { fhem "set WZ.Heizkoerperthermostat_Clima controlMode auto;;set WZ.Heizkoerperthermostat burstXmit" }
attr WZ.Heizkoerperthermostat_ClimaAutoNotify comment Notify fuer Heizkoerperthermostat im Wohnzimmer - zur Erkennung der Auto-Betriebsart



define WZ.Heizkoerperthermostat_ClimaDayNightDummy dummy
attr WZ.Heizkoerperthermostat_ClimaDayNightDummy comment Dummy fuer Heizkoerperthermostat im Wohnzimmer - zur Erkennung der Night- oder Day-Betriebsart

define WZ.Heizkoerperthermostat_ClimaNightNotify notify WZ.Heizkoerperthermostat_ClimaDayNightDummy:on { fhem "set WZ.Heizkoerperthermostat_Clima controlMode night;;set WZ.Heizkoerperthermostat burstXmit" }
attr WZ.Heizkoerperthermostat_ClimaNightNotify comment Notify fuer Heizkoerperthermostat im Wohnzimmer - zur Erkennung der Night-Betriebsart

define WZ.Heizkoerperthermostat_ClimaDayNotify notify WZ.Heizkoerperthermostat_ClimaDayNightDummy:off { fhem "set WZ.Heizkoerperthermostat_Clima controlMode day;;set WZ.Heizkoerperthermostat burstXmit" }
attr WZ.Heizkoerperthermostat_ClimaDayNotify comment Notify fuer Heizkoerperthermostat im Wohnzimmer - zur Erkennung der Day-Betriebsart



define WZ.Heizkoerperthermostat_ClimaBoostDummy dummy
attr WZ.Heizkoerperthermostat_ClimaBoostDummy comment Dummy fuer Heizkoerperthermostat im Wohnzimmer - zur Erkennung der Boost-Betriebsart

define WZ.Heizkoerperthermostat_ClimaBoostNotify notify WZ.Heizkoerperthermostat_ClimaBoostDummy:on { fhem "set WZ.Heizkoerperthermostat_Clima controlMode boost;;set WZ.Heizkoerperthermostat burstXmit" }
attr WZ.Heizkoerperthermostat_ClimaBoostNotify comment Notify fuer Heizkoerperthermostat im Wohnzimmer - zur Erkennung der Boost-Betriebsart

define WZ.Heizkoerperthermostat_ClimaBoostOffNotify notify WZ.Heizkoerperthermostat_ClimaBoostDummy:off { fhem "set WZ.Heizkoerperthermostat_Clima controlMode auto;;set WZ.Heizkoerperthermostat burstXmit" }
attr WZ.Heizkoerperthermostat_ClimaBoostOffNotify comment Notify fuer Heizkoerperthermostat im Wohnzimmer - zur Erkennung der Boost-Betriebsart



define WZ.Heizkoerperthermostat_ClimaOnOffDummy dummy
attr WZ.Heizkoerperthermostat_ClimaOnOffDummy comment Dummy fuer Heizkoerperthermostat im Wohnzimmer - zur Erkennung der Ein- oder Aus-Betriebsart

define WZ.Heizkoerperthermostat_ClimaOnNotify notify WZ.Heizkoerperthermostat_ClimaOnOFfDummy:on { fhem "set WZ.Heizkoerperthermostat_Clima desired-temp on;;set WZ.Heizkoerperthermostat burstXmit" }
attr WZ.Heizkoerperthermostat_ClimaOnNotify comment Notify fuer Heizkoerperthermostat im Wohnzimmer - zur Erkennung der On-Betriebsart

define WZ.Heizkoerperthermostat_ClimaOffNotify notify WZ.Heizkoerperthermostat_ClimaOnOffDummy:off { fhem "set WZ.Heizkoerperthermostat_Clima desired-temp off;;set WZ.Heizkoerperthermostat burstXmit" }
attr WZ.Heizkoerperthermostat_ClimaOffNotify comment Notify fuer Heizkoerperthermostat im Wohnzimmer - zur Erkennung der Off-Betriebsart


GADs:
"WZ.Heizkoerperthermostat_actual" : {
"mode"      : "item",
"device"    : "WZ.Heizkoerperthermostat_Clima",
"reading"   : "measured-temp",
"converter" : "NumDirect",
"cmd set"   : ""
},

"WZ.Heizkoerperthermostat_frost" : {
"mode"      : "item",
"device"    : "WZ.Heizkoerperthermostat_ClimaBoostDummy",
"reading"   : "state",
"converter" : "OnOff",
"cmd set"   : "state"
},

"WZ.Heizkoerperthermostat_mode" : {
"mode"      : "item",
"device"    : "WZ.Heizkoerperthermostat_ClimaManualAutoDummy",
"reading"   : "state",
"converter" : "OnOff",
"cmd set"   : "state"
},

"WZ.Heizkoerperthermostat_night" : {
"mode"      : "item",
"device"    : "WZ.Heizkoerperthermostat_ClimaDayNightDummy",
"reading"   : "state",
"converter" : "OnOff",
"cmd set"   : "state"
},

"WZ.Heizkoerperthermostat_set" : {
"mode"      : "item",
"device"    : "WZ.Heizkoerperthermostat_Clima",
"reading"   : "desired-temp",
"converter" : "NumDirect",
"cmd set"   : "desired-temp"
},

"WZ.Heizkoerperthermostat_state" : {
"mode"      : "item",
"device"    : "WZ.Heizkoerperthermostat_ClimaOnOffDummy",
"reading"   : "state",
"converter" : "OnOff",
"cmd set"   : "state"
}


Smartvisu:
{{ device.rtr(WZ.Heizkoerperthermostat, 'Heizung', WZ.Heizkoerperthermostat_actual', WZ.Heizkoerperthermostat_set', WZ.Heizkoerperthermostat_mode', WZ.Heizkoerperthermostat_night', WZ.Heizkoerperthermostat_frost', WZ.Heizkoerperthermostat_state') }}

Anmerkungen:
Um Day/Night, Boost oder Ein/Aus schalten zu können muss der Thermostat auf Manual stehen und nicht im Auto Modus sein. Das wird oben berücksichtigt, indem er bei diesen Befehlen zunächst in den manuellen Modus versetzt wird.
Das Kommando "set WZ.Heizkoerperthermostat burstXmit" muss zunächst freigeschaltet werden. Es erhöht die Sendelast des Empfängers und verringert die Batteriehaltbarkeit. Wenn dies nicht gewünscht ist, dann können diese Codefragmente entfernt werden - dann reagiert jedoch der Thermostat träger.

Da ich weiterhin an der Optimierung interessiert bin freue ich mich über Korrekturvorschläge und Anregungen.