Modul für Panasonic Comfort Cloud API?

Begonnen von joker4791, 26 Juni 2019, 07:52:04

Vorheriges Thema - Nächstes Thema

joker4791

Hi,

hier ist eine Panasonic Split-Klimaanlage vom Typ Etherea CS-E12QKEW (Innen-Einheit) verbaut. Für das Gerät wurde eine WLAN-Einheit vom Typ CZ-TACG1 angeschafft und über den CN-CNT Connector angeschlossen. Der Einbau in der QKEW-Serie ist etwas tricky, Panasonic hat zu dem Zeitpunkt wohl die Möglichkeit einer Erweiterung vorgesehen, die ist aber leider hier (noch) nicht besonders benutzerfreundlich ausgeführt. Das Erweitungsmodul funktioniert jedoch einwandfrei und wird über die Panasonic Comfort Cloud verwaltet, so dass Statusabfrage und Steuerung per Internet möglich sind. Für die API hat der user lostfields hier eine Python-Implementation entwickelt. Jetzt ist meine Frage, wie man diese in FHEM integrieren kann? Ich selbst habe leider von Python und PERL keine Ahnung...
Wärmepumpenanlagen von Panasonic kann man über die API wohl auch verwalten.

Grüße,
j.

CoolTux

Habe mal reingeschaut. Sieht relativ einfach aus, ich denke das kann man gut nach Perl bringen.
Jetzt müsstest nur noch Perl lernen. Oder Du findest einen anderen Weg. Man kann sicherlich das Python Skript über FHEM auf rufen und die Werte übergeben oder auslesen.


Grüße
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

woerni1701

Würde mich auch dafür interessieren (: Kann ich irgendwie unterstützen? Kenn mich allerdings weder mit Python noch Perl wirklich aus.

ritter_runkel

Hier in Leipzig besteht auch Interesse  ;D
FHEM auf Raspberry Pi 2B
2x eService 1WireHu, 7x DS1820, 2x Multisensoren Wiregate AMS 2.11 für Temperatur DS1820, relativer Luftfeuchte HIH4031, zwei IO-Ports DS2438, Analog-Eingang 0-10 V (bzw. 0-20 mA) DS2413
FritzDECT; HUE; 5xFibaro RollerShutter, Rauchmelder

gadget

Ich denke auch gerade an die Anschaffung einer Panasonic Multisplit. Bin eigentlich kein Fan von Cloud. Wäre sowas hier ggf. eine Alternative ?

https://www.voltus.de/hausautomation/knx-eib/nach-hersteller/intesis-o/enocean/intesis-pa-ac-eno-1i-schnittstelle-enocean-868-mhz-europa.html

Enocean habe ich sowieso schon mit fhem im Einsatz ...

Grüße,

gadget

der-Lolo

Vorsicht bei Intesis - hier geht ohne Cloud auch nix...

gadget

sicher ? Für mich sieht das so aus als ob damit eine direkte fhem Anbindung via enocean funk machbar wäre.

joker4791

Alternative wäre vielleicht noch eine IR-Schnittstelle, falls im Raum in der Nähe z. B. ohnehin schon ein RPi steht. Da müsste aber auch noch softwaretechnisch einiges gebastelt werden, dafür ist man unabhängig von der Fremd-Cloud.

TomS85

Ich hätte auch Interesse an einem Modul für die Panasonic Cloud in Perl - leider mangels Programmierkenntnisse für mich derzeit nicht realisierbar :(

Ich habe das Python Script mal auf meinem RaspberryPi installiert - funktioniert auch super. Vielleicht lassen sich die Werte dort ja durch FHEM auslesen? Über die Shell kann ich damit folgende Werte anzeigen lassen:
airSwingVertical     : Auto
temperature          : 20.0
power                : Off
eco                  : Auto
temperatureInside    : 12
temperatureOutside   : 8
airSwingHorizontal   : Auto
mode                 : Heat
fanSpeed             : Auto

Ebenso lässt sich das Teil über Shell Aufrufe steuern. Das sollte sich ja über FHEM abbilden lassen, vermute ich mal (also ein Scriptaufruf starten). Wenn man die angezeigten Werte auch noch importieren könnte, wäre das natürlich super. Dann könnte man die Wärmepumpe z.B. bei unterschreiten einer Innentemperatur einschalten bzw. wieder abschalten, wenn die Temperatur hoch genug ist.

Gruß,
Tom

TomS85

Ich habe nun das Python Script nun mal notdürftig in FHEM eingebunden, indem ich die Ausgaben in eine Textdatei schreibe und diese dann per at alle 5 Minuten in FHEM auslese und die Werte in Readings schreibe. So habe ich nun zumindest mal die Einstellungen und Temperaturen im FHEM vorliegen. Über Shellcommands kann ich die Panasonic Heizung nun auch ein- und ausschalten (mache ich aktuell über Whatsapp/yowsup und über ein at prüfe ich alle 30 Minuten, ob die Innenraumtemperatur unter 5°C fällt, um so automatisiert die Heizung einzuschalten, um eine Frostschutzfunktion sicherzustellen. Bei 16°C wird die Heizung dann wieder ausgeschaltet, bis die Temperatur wieder unter 5°C fällt. Muss im Winter dann mal testen, ob das so funktioniert, wie es soll.

amenomade

Pi 3B, Alexa, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, Debmatic und HM / HmIP Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten, Proteus

TomS85

#11
Ich habe aktuell ein Problem mit dem Aufruf der Python Pcomfortapi über FHEM. Beim auslesen (-get) funktioniert alles einwandfrei. Beim schreiben der Werte, d.h. einschalten der Heizung bekomme ich im FHEM Logfile folgende Meldung und der Befehl wird nicht ausgeführt:
Traceback (most recent call last):
  File "/usr/local/bin/pcomfortcloud", line 6, in <module>
    from pkg_resources import load_entry_point
  File "/usr/lib/python2.7/dist-packages/pkg_resources/__init__.py", line 3191, in <module>
    @_call_aside
  File "/usr/lib/python2.7/dist-packages/pkg_resources/__init__.py", line 3175, in _call_aside
    f(*args, **kwargs)
  File "/usr/lib/python2.7/dist-packages/pkg_resources/__init__.py", line 3204, in _initialize_master_working_set
    working_set = WorkingSet._build_master()
  File "/usr/lib/python2.7/dist-packages/pkg_resources/__init__.py", line 583, in _build_master
    ws.require(__requires__)
  File "/usr/lib/python2.7/dist-packages/pkg_resources/__init__.py", line 900, in require
    needed = self.resolve(parse_requirements(requirements))
  File "/usr/lib/python2.7/dist-packages/pkg_resources/__init__.py", line 794, in resolve
    new_requirements = dist.requires(req.extras)[::-1]
  File "/usr/lib/python2.7/dist-packages/pkg_resources/__init__.py", line 2700, in requires
    dm = self._dep_map
  File "/usr/lib/python2.7/dist-packages/pkg_resources/__init__.py", line 2666, in _dep_map
    self.__dep_map = self._filter_extras(self._build_dep_map())
  File "/usr/lib/python2.7/dist-packages/pkg_resources/__init__.py", line 2681, in _filter_extras
    invalid_marker(marker)
  File "/usr/lib/python2.7/dist-packages/pkg_resources/__init__.py", line 1360, in invalid_marker
    evaluate_marker(text)
  File "/usr/lib/python2.7/dist-packages/pkg_resources/__init__.py", line 1378, in evaluate_marker
    return marker.evaluate()
  File "/usr/lib/python2.7/dist-packages/pkg_resources/_vendor/packaging/markers.py", line 297, in evaluate
    current_environment = default_environment()
  File "/usr/lib/python2.7/dist-packages/pkg_resources/_vendor/packaging/markers.py", line 261, in default_environment
    "platform_machine": platform.machine(),
  File "/usr/lib/python2.7/platform.py", line 1358, in machine
    return uname()[4]
  File "/usr/lib/python2.7/platform.py", line 1288, in uname
    processor = _syscmd_uname('-p','')
  File "/usr/lib/python2.7/platform.py", line 1023, in _syscmd_uname
    rc = f.close()
IOError: [Errno 10] No child processes


Jemand eine Idee?

Ich rufe das Programm über Perl mit folgendem Befehl auf:
system('pcomfortcloud user passwort set -p On 1');

Wenn ich das Tool über die Konsole direkt (mit gleichem Befehl) ausführe, läuft es jedoch...

MCh76

Hallo Tom,

dürfte ich nach dem Ausgang deines Projekts fragen? Ich würde ebenfalls eine über die Comfort Cloud steuerbare Pana Klimaanlage (CS-Z50VKEW) in FHEM anbinden.
Hast du es denn hinbekommen oder gab es irgendwo unüberwindbare Hindernisse?

VG,
Chris

joker4791

#13
Hi,

das Python-Skript wurde installiert und liefert auf der Konsole folgende Ausgaben:
root@S720:/usr/local/src/python-panasonic-comfort-cloud# ls
LICENSE  pcomfortcloud  pcomfortcloud.py  README.md  requests.http  setup.py
root@S720:/usr/local/src/python-panasonic-comfort-cloud# python3 ./pcomfortcloud.py -s 1 -r 1 xxx@xxx xxx list
--- token found
--- _get_groups()
--- raw beginning ---
{"groupCount":1,"groupList":[{"groupId":25030,"groupName":"My House","deviceIdList":[{"deviceGuid":"C420435xxx","deviceType":"1","deviceName":"CS-E12QKEW","permission":3,"summerHouse":0,"iAutoX":false,"nanoe":false,"autoMode":true,"heatMode":true,"fanMode":false,"dryMode":true,"coolMode":true,"ecoNavi":false,"powerfulMode":true,"quietMode":true,"airSwingLR":true,"ecoFunction":0,"temperatureUnit":0,"modeAvlList":{"autoMode":1,"fanMode":1},"parameters":{"operate":0,"operationMode":2,"temperatureSet":20.0,"fanSpeed":0,"fanAutoMode":1,"airSwingLR":2,"airSwingUD":0,"ecoMode":0,"ecoNavi":1,"nanoe":0,"iAuto":0,"actualNanoe":0,"airDirection":0,"ecoFunctionData":0}}]}]}
--- raw ending    ---

list of devices and its device id (1-x)
device #1
    group                : My House
    id                   : 979bef0b5188aa59be996e6a9251xxxx
    model                :
    name                 : CS-E12QKEW

root@S720:/usr/local/src/python-panasonic-comfort-cloud# python3 ./pcomfortcloud.py -s 1 -r 1 xxx@xxx xxx get 1
--- token found
--- _get_groups()
--- raw beginning ---
{"groupCount":1,"groupList":[{"groupId":25030,"groupName":"My House","deviceIdList":[{"deviceGuid":"C420435xxx","deviceType":"1","deviceName":"CS-E12QKEW","permission":3,"summerHouse":0,"iAutoX":false,"nanoe":false,"autoMode":true,"heatMode":true,"fanMode":false,"dryMode":true,"coolMode":true,"ecoNavi":false,"powerfulMode":true,"quietMode":true,"airSwingLR":true,"ecoFunction":0,"temperatureUnit":0,"modeAvlList":{"autoMode":1,"fanMode":1},"parameters":{"operate":1,"operationMode":2,"temperatureSet":20.0,"fanSpeed":0,"fanAutoMode":1,"airSwingLR":2,"airSwingUD":0,"ecoMode":0,"ecoNavi":1,"nanoe":0,"iAuto":0,"actualNanoe":0,"airDirection":0,"ecoFunctionData":0}}]}]}
--- raw ending    ---

reading from device 'CS-E12QKEW' (979bef0b5188aa59be996e6a9251xxxx)
--- get_device()
--- raw beginning ---
{"deviceGuid":"C420435xxx","timestamp":1592489463514,"summerHouse":0,"iAutoX":false,"nanoe":false,"autoMode":true,"heatMode":true,"fanMode":false,"dryMode":true,"coolMode":true,"ecoNavi":false,"powerfulMode":true,"permission":3,"quietMode":true,"airSwingLR":true,"ecoFunction":0,"temperatureUnit":0,"modeAvlList":{"autoMode":1,"fanMode":1},"parameters":{"devGuid":"C420435xxx","eventTime":null,"online":true,"operate":1,"operationMode":2,"temperatureSet":20.0,"fanSpeed":0,"fanAutoMode":1,"airSwingLR":2,"airSwingUD":0,"airDirection":0,"ecoMode":0,"ecoNavi":1,"nanoe":0,"iAuto":0,"defrosting":-255,"errorCode":"KgAACwEBRjAwMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==","errorCodeStr":"F00","insideTemperature":126,"outTemperature":28,"devRacCommunicateStatus":-255,"errorStatus":-255,"errorStatusFlg":false,"httpErrorCode":-255,"actualNanoe":0,"airQuality":0,"ecoFunctionData":0,"updateTime":null},"autoTempMax":-1,"dryTempMax":-1,"heatTempMax":-1,"coolTempMax":-1,"autoTempMin":-1,"dryTempMin":-1,"heatTempMin":-1,"coolTempMin":-1,"fanSpeedMode":-1,"fanDirectionMode":-1}
--- raw ending    ---
parameters
    eco                  : Auto
    temperatureInside    : 126
    temperature          : 20.0
    airSwingHorizontal   : Mid
    airSwingVertical     : Up
    nanoe                : Unavailable
    temperatureOutside   : 28
    fanSpeed             : Auto
    mode                 : Cool
    power                : On
id                       : 979bef0b5188aa59be996e6a9251xxxx

Einstellungen mit On / 20.0 / Mid / Up passen auch.
Nun müssen diese Werte nur noch irgendwie als readings nach FHEM gebracht werden.

Bedienung auf der Kommandozeile zum Ausschalten:
root@S720:/usr/local/src/python-panasonic-comfort-cloud# python3 ./pcomfortcloud.py -s 1 -r 1 xxx@xxx xxx set 1 -p Off

Grüße,
j.

MCh76

#14
Ich habe es nun geschafft, mit Hilfe von HTTMOD meine Panasonic Klimaanlage zu steuern.
Vielleicht kann es ja der ein oder andere gebrauchen.

Für die Kontrolle der Klimaanlage per FHEM habe ich folgendes erstellt:

  • HTTPMOD Device für die Kommunikation zur Klimaanlage
  • Dummy-Device für das Steuern der Werte
  • 2 Notify's für den Abgleich zwischen Dummy Device und HTTPMOD
  • eine Funktion in der 99_myUtils

Wird am Dummy-Device eine Einstellung vorgenommen, setzt die myUtils Funktion die Parameterliste zusammen, die dann als POST request im BODY an das HTTPMOD und von dort an die Comfort Cloud übergeben wird. Jede Minute wird zudem mit "get wz_klima Status" der aktuelle Status der Klimaanlage beschafft und so ggf. Änderungen außerhalb FHEMs (z.B. mittels App oder FB) in das Dummy Device zurückgeschrieben.

Hier im Detail die Bestandteile:

HTTPMOD:

mit dem Befehl "get Devicegroup" und ExtractAllJSON auf 1 kann man sich im ersten Schritt Modell und Device-ID etc. beschaffen.


defmod wz_klima HTTPMOD https://accsmart.panasonic.com/deviceStatus/[MODELL]+[DEVICE-ID] 0
attr wz_klima DbLogExclude .*
attr wz_klima disable 0
attr wz_klima enableCookies 1
attr wz_klima event-on-change-reading actual_.*
attr wz_klima get01Name Devicegroup
attr wz_klima get01URL https://accsmart.panasonic.com/device/group
attr wz_klima get02ExtractAllJSON 0
attr wz_klima get02Name Status
attr wz_klima get02URL https://accsmart.panasonic.com/deviceStatus/[MODELL]+[DEVICE-ID]
attr wz_klima getHeader1 X-APP-TYPE: 1
attr wz_klima getHeader2 X-APP-VERSION: 2.0.0
attr wz_klima getHeader3 Accept: application/json
attr wz_klima getHeader4 Content-Type: application/json
attr wz_klima getHeader5 User-Agent: G-RAC
attr wz_klima getHeader6 X-User-Authorization: $sid
attr wz_klima group Klimaanlage
attr wz_klima httpVersion 1.1
attr wz_klima reAuthJSON message
attr wz_klima reAuthRegex Token expires
attr wz_klima reading01JSON parameters_operate
attr wz_klima reading01Name actual_operate
attr wz_klima reading02JSON parameters_temperatureSet
attr wz_klima reading02Name actual_desired-temp
attr wz_klima reading03JSON parameters_actualNanoe
attr wz_klima reading03Name actual_nanoe
attr wz_klima reading04JSON parameters_ecoMode
attr wz_klima reading04Name actual_ecomode
attr wz_klima reading05JSON parameters_operationMode
attr wz_klima reading05Name actual_operationmode
attr wz_klima replacement01Mode reading
attr wz_klima replacement01Regex ##PARAMS##
attr wz_klima requestHeader01 X-APP-TYPE: 1
attr wz_klima requestHeader02 X-APP-VERSION: 2.0.0
attr wz_klima requestHeader03 Accept: application/json
attr wz_klima requestHeader04 Content-Type: application/json
attr wz_klima requestHeader05 User-Agent: G-RAC
attr wz_klima requestHeader06 X-User-Authorization: $sid
attr wz_klima room 01_Wohnzimmer
attr wz_klima set01Data {"deviceGuid": "[MODELL]+[DEVICE-ID]","parameters": {"operate": 1}}
attr wz_klima set01Name PowerOn
attr wz_klima set01URL https://accsmart.panasonic.com/deviceStatus/control
attr wz_klima set02Data {"deviceGuid": "[MODELL]+[DEVICE-ID]","parameters": {"operate": 0}}
attr wz_klima set02Name PowerOff
attr wz_klima set02URL https://accsmart.panasonic.com/deviceStatus/control
attr wz_klima set03Data {"deviceGuid": "[MODELL]+[DEVICE-ID]","parameters": {##PARAMS##}}
attr wz_klima set03Name Control
attr wz_klima set03Replacement01Value wz_d_klima:params
attr wz_klima set03URL https://accsmart.panasonic.com/deviceStatus/control
attr wz_klima setHeader1 X-APP-TYPE: 1
attr wz_klima setHeader2 X-APP-VERSION: 2.0.0
attr wz_klima setHeader3 Accept: application/json
attr wz_klima setHeader4 Content-Type: application/json
attr wz_klima setHeader5 User-Agent: G-RAC
attr wz_klima setHeader6 X-User-Authorization: $sid
attr wz_klima sid01Data {"language": "0","loginId": "[MAILADRESSE_PANASONIC_ID]","password": "[meinPASSWORD]"}
attr wz_klima sid01Header1 X-APP-TYPE: 1
attr wz_klima sid01Header2 X-APP-VERSION: 2.0.0
attr wz_klima sid01Header3 Accept: application/json
attr wz_klima sid01Header4 Content-Type: application/json
attr wz_klima sid01Header5 User-Agent: G-RAC
attr wz_klima sid01IdJSON uToken
attr wz_klima sid01URL https://accsmart.panasonic.com/auth/login
attr wz_klima stateFormat {InternalVal("wz_d_klima", "STATE", "")}


Dummy-Device:

defmod wz_d_klima dummy
attr wz_d_klima DbLogExclude .*
attr wz_d_klima event-on-change-reading params
attr wz_d_klima group Klimaanlage
attr wz_d_klima readingList state desired-temp nanoe operationmode ecomode
attr wz_d_klima room 01_Wohnzimmer
attr wz_d_klima setList state:1,0 desired-temp nanoe:2,1 operationmode:0,1,2,3,4 ecomode:0,1,2
attr wz_d_klima stateFormat {\
if (ReadingsVal("wz_d_klima","state","") eq "1" ) {\
my $state_info = "Eingeschaltet";;\
\
my $temperature = ReadingsVal("wz_d_klima","desired-temp","");;\
$temperature .= "°C";;\
\
\
my $ecomode;;\
if (ReadingsVal("wz_d_klima","ecomode","") eq "0" ){\
$ecomode = "EcoMode Auto";;\
}\
elsif (ReadingsVal("wz_d_klima","ecomode","") eq "1" ){\
$ecomode = "EcoMode Powerful";;\
}\
elsif (ReadingsVal("wz_d_klima","ecomode","") eq "2" ){\
$ecomode = "EcoMode Quiet";; \
}\
\
\
my $operationmode;;\
if (ReadingsVal("wz_d_klima","operationmode","") eq "0" ){\
$operationmode = "Modus Auto";;\
}\
elsif (ReadingsVal("wz_d_klima","operationmode","") eq "1" ){\
$operationmode = "Modus Dry";;\
}\
elsif (ReadingsVal("wz_d_klima","operationmode","") eq "2" ){\
$operationmode = "Modus Cool";; \
}\
elsif (ReadingsVal("wz_d_klima","operationmode","") eq "3" ){\
$operationmode = "Modus Heat";;\
}\
elsif (ReadingsVal("wz_d_klima","operationmode","") eq "4" ){\
$operationmode = "Modus NANOE";;\
}\
\
my $nanoe;;\
if (ReadingsVal("wz_d_klima","nanoe","") eq "1" ){\
$nanoe = "Nanoe Aus";;\
}\
elsif (ReadingsVal("wz_d_klima","nanoe","") eq "2" ){\
$nanoe = "Nanoe An";;\
}\
else {\
$nanoe = "Nanoe Aus";;\
}\
\
$state_info = join(" / ", $state_info, $temperature, $nanoe, $operationmode, $ecomode);;\
\
}\
else {\
return "Ausgeschaltet";; \
}\
}
attr wz_d_klima userReadings params {wz_klima_control()}
attr wz_d_klima widgetOverride desired-temp:slider,16.0,0.5,30.0,1


myUtilsFunktion zum Setzen der Parameter-Kommandos an das HTTPMOD:

sub wz_klima_control {
my $operate;
my $temperature;
my $nanoe;
my $operationmode;
my $ecomode;
my $paramslist;
#fhem("get wz_klima Status");
if (ReadingsVal("wz_d_klima", "state", "0") eq "1"){
   # operate: 1: An
   $operate = '"operate": 1';
   
   #temperatureSet: Temperatur setzen
   $temperature = '"temperatureSet": ';
   $temperature .= ReadingsVal("wz_d_klima","desired-temp",23.0);
   
   # nanoe -> 1:Aus / 2:An
   $nanoe = '"nanoe": ';
   $nanoe .= ReadingsVal("wz_d_klima","nanoe",2);
   
   #ecoMode -> "Auto": 0, "Powerful": 1, "Quiet": 2
   $ecomode = '"ecoMode": ';
   $ecomode .= ReadingsVal("wz_d_klima","ecomode",0);
   
   # operationMode -> "Auto": 0, "Dry": 1, "Cool": 2, "Heat": 3, "Nanoe": 4
   $operationmode = '"operationMode": ';
   $operationmode .= ReadingsVal("wz_d_klima","operationmode",0); 
   
   $paramslist = join(',', $operate,$temperature, $ecomode, $operationmode, $nanoe);
   
    #Log3('Klimaanlage',3,"Parameterliste: $paramslist ");
}
else{
   # operate: 0: Aus
   $operate = '"operate": 0';
   $paramslist = $operate;
}
return $paramslist;
}


Notify welches auf Einstellungen vom Dummy-Device reagiert:

defmod n.wz_d_klima_notify notify wz_d_klima:params.* {\
fhem("define at_trigger_klima at +00:00:03 set wz_klima Control 1");;\
fhem("defmod at_trigger_klima_status_update at +00:00:10 get wz_klima Status");;\
fhem("defmod at_trigger_klima_status_update_cycle at +*00:01:00 get wz_klima Status");;\
}
attr n.wz_d_klima_notify DbLogExclude .*


Notify, welches evtl. per Fernbedienung oder Handy App gemachte Einstellungen ins Dummy Device zurückschreibt:

defmod n.wz_klima_update_dummy notify wz_klima.* {\
#fhem('setreading wz_d_klima actual_operate [wz_klima:actual_operate]');;\
#fhem('setreading wz_d_klima actual_desired-temp [wz_klima:actual_desired-temp]');;\
if (ReadingsVal("wz_klima", "actual_operate", "0") eq "1"){\
fhem('setreading wz_d_klima state 1');;\
}\
elsif (ReadingsVal("wz_klima", "actual_operate", "0") eq "0") {\
fhem('setreading wz_d_klima state 0');;\
}\
fhem('setreading wz_d_klima nanoe [wz_klima:actual_nanoe]');;\
fhem('setreading wz_d_klima desired-temp [wz_klima:actual_desired-temp]');;\
fhem('setreading wz_d_klima operationmode [wz_klima:actual_operationmode]');;\
fhem('setreading wz_d_klima ecomode [wz_klima:actual_ecomode]');;\
}
attr n.wz_klima_update_dummy DbLogExclude .*