@Michi2404
Hi,
ja ich habe meine Klimaanlage eingebunden.
Aber!!!
Erstmal unterscheiden muss man ob die Mitsubishi eine "Elektrik" oder eine "Heavy" ist.
Meine Anlage ist eine Heavy und dazu kann ich gleich weiteres sagen.
Sie ist natürlich über ein WLAN-Modul über die Cloud erreichbar und in meinem WLAN-Netzwerk.
Jetzt gibt es keinen Adapter, der die ganze Geschichte mit meinem ioBroker verbindet.
Gelöst habe ich es über ein separates (Java)Skript (irgendwo aus dem Internet gediebt),
sorry wenn ich jetzt den Ursprünglichen Developper vergesse, bitte mir bescheid geben und ich korregiere das dann,
welches in einem (bei mir Linux) Verzeichnis wo auch der ioBroker zugriff hat zur Ausführung gebracht habe.
Dann habe ich mir die IP der Anlage rausgesucht und diese in meinem Skript angepasst.
Jetzt gibt es viele Möglichkeiten zu erweitern und anzupassen.
vorher ist jedoch noch zu sagen, das ich mir die dementsprechenden Datenpunkte angelegt habe, wohin auch immer ihr wollt , müsst ihr das dann natürlich auch tun und das Skript danach anpassen.
Ich habe bewusst hier als Antwort gepostet, da das Skript noch keine Datenpunkte selber erzeugen kann...
Viel Spass, und bei Fragen .... immer Fragen 😉
Hier mein Blockly...
<xml xmlns="https://developers.google.com/blockly/xml">
<block type="on_ext" id=",I/1#d[ckg_#O0.:_MBh" x="13" y="13">
<mutation xmlns="http://www.w3.org/1999/xhtml" items="1"></mutation>
<field name="CONDITION">ne</field>
<field name="ACK_CONDITION"></field>
<value name="OID0">
<shadow type="field_oid" id="]i-`+-Y%aeBk~x!AxW40">
<field name="oid">0_userdata.0.Heizung.MH-Daten.trigger1</field>
</shadow>
</value>
<statement name="STATEMENT">
<block type="controls_if" id="wM|$;P7kq6Xw_b05mmCT">
<mutation elseif="7"></mutation>
<value name="IF0">
<block type="logic_compare" id="@`nlPz|[C^$x1i$;I2[!">
<field name="OP">EQ</field>
<value name="A">
<block type="on_source" id="(UQSLz4HK+:z:#e`0y1[">
<field name="ATTR">state.val</field>
</block>
</value>
<value name="B">
<block type="math_number" id="M3[:d8}Uw)yjb}gVoNs1">
<field name="NUM">1</field>
</block>
</value>
</block>
</value>
<statement name="DO0">
<block type="procedures_callcustomnoreturn" id="yd14gs2i*^f6x:I}wC].">
<mutation name="get_power"></mutation>
<next>
<block type="control" id="@Z`.^jqpLe`b|0ykRU?0">
<mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="true"></mutation>
<field name="OID">0_userdata.0.Heizung.MH-Daten.trigger1</field>
<field name="WITH_DELAY">TRUE</field>
<field name="DELAY_MS">2000</field>
<field name="UNIT">ms</field>
<field name="CLEAR_RUNNING">FALSE</field>
<value name="VALUE">
<block type="math_number" id="2JeG;zF7s3hG$~id}F-b">
<field name="NUM">0</field>
</block>
</value>
</block>
</next>
</block>
</statement>
<value name="IF1">
<block type="logic_compare" id="yiP5yDbe-vd^[L^j?vjR">
<field name="OP">EQ</field>
<value name="A">
<block type="on_source" id="A5XE6?qnn5KxnzNvQKo8">
<field name="ATTR">state.val</field>
</block>
</value>
<value name="B">
<block type="math_number" id="nR9jFzCmY8``~Mymt+Y9">
<field name="NUM">2</field>
</block>
</value>
</block>
</value>
<statement name="DO1">
<block type="procedures_callcustomnoreturn" id="b8_OV(dMiDP{+A(/qK-y">
<mutation name="get_mode"></mutation>
<next>
<block type="control" id=":OYr-W#mT~L_l)GI1P43">
<mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="true"></mutation>
<field name="OID">0_userdata.0.Heizung.MH-Daten.trigger1</field>
<field name="WITH_DELAY">TRUE</field>
<field name="DELAY_MS">2000</field>
<field name="UNIT">ms</field>
<field name="CLEAR_RUNNING">FALSE</field>
<value name="VALUE">
<block type="math_number" id="f_hSB7![x:vMdg=v`Ci|">
<field name="NUM">0</field>
</block>
</value>
</block>
</next>
</block>
</statement>
<value name="IF2">
<block type="logic_compare" id="vVGMHm#-$Vy`h?Rvg,Je">
<field name="OP">EQ</field>
<value name="A">
<block type="on_source" id="ksHpJxBSmR?55O#gX-Df">
<field name="ATTR">state.val</field>
</block>
</value>
<value name="B">
<block type="math_number" id="AqzPMg3:v7roWu7S%2q(">
<field name="NUM">3</field>
</block>
</value>
</block>
</value>
<statement name="DO2">
<block type="procedures_callcustomnoreturn" id="g;%5noIa^Q3Qjo1+uMx%">
<mutation name="get_speed"></mutation>
<next>
<block type="control" id="ePh69Q=0ymr1Wu[$5mvh">
<mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="true"></mutation>
<field name="OID">0_userdata.0.Heizung.MH-Daten.trigger1</field>
<field name="WITH_DELAY">TRUE</field>
<field name="DELAY_MS">2000</field>
<field name="UNIT">ms</field>
<field name="CLEAR_RUNNING">FALSE</field>
<value name="VALUE">
<block type="math_number" id="ID_Q|(;,O-t6kH53EsEn">
<field name="NUM">0</field>
</block>
</value>
</block>
</next>
</block>
</statement>
<value name="IF3">
<block type="logic_compare" id="G_2!f|2_Qee8]ILfAFjP">
<field name="OP">EQ</field>
<value name="A">
<block type="on_source" id="%RLI!]y%#]%YLUD8#^]5">
<field name="ATTR">state.val</field>
</block>
</value>
<value name="B">
<block type="math_number" id="}*h1E.Zk9.47kl(nzY*5">
<field name="NUM">4</field>
</block>
</value>
</block>
</value>
<statement name="DO3">
<block type="procedures_callcustomnoreturn" id="1XfuIZGjB@%co?~VlqcE">
<mutation name="get_outside"></mutation>
<next>
<block type="control" id=",,J/qeO*E-GsCB55uD6I">
<mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="true"></mutation>
<field name="OID">0_userdata.0.Heizung.MH-Daten.trigger1</field>
<field name="WITH_DELAY">TRUE</field>
<field name="DELAY_MS">2000</field>
<field name="UNIT">ms</field>
<field name="CLEAR_RUNNING">FALSE</field>
<value name="VALUE">
<block type="math_number" id="|2Ei{a*b.[1zA1bteu_q">
<field name="NUM">0</field>
</block>
</value>
</block>
</next>
</block>
</statement>
<value name="IF4">
<block type="logic_compare" id="Q3%u:D`-2A$W~bdmC}oQ">
<field name="OP">EQ</field>
<value name="A">
<block type="on_source" id="F4Hf!RN^P:Cgp}eOb0rM">
<field name="ATTR">state.val</field>
</block>
</value>
<value name="B">
<block type="math_number" id="wIXulxmO::s|G[c!Y_zY">
<field name="NUM">5</field>
</block>
</value>
</block>
</value>
<statement name="DO4">
<block type="procedures_callcustomnoreturn" id="/mAK{$d1hIX6R-CgxpNg">
<mutation name="get_setpoint"></mutation>
<next>
<block type="control" id="S`I8w}i=[MY4=hU3]P1y">
<mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="true"></mutation>
<field name="OID">0_userdata.0.Heizung.MH-Daten.trigger1</field>
<field name="WITH_DELAY">TRUE</field>
<field name="DELAY_MS">2000</field>
<field name="UNIT">ms</field>
<field name="CLEAR_RUNNING">FALSE</field>
<value name="VALUE">
<block type="math_number" id="U?v[#Kgjx].X%p(uuRh_">
<field name="NUM">0</field>
</block>
</value>
</block>
</next>
</block>
</statement>
<value name="IF5">
<block type="logic_compare" id="3Dzxnd!eluv,EmtDa/]z">
<field name="OP">EQ</field>
<value name="A">
<block type="on_source" id="F|9y3lb__(#GHxmJnI9)">
<field name="ATTR">state.val</field>
</block>
</value>
<value name="B">
<block type="math_number" id="KUSl1d2%!%)Ja;IzR0R!">
<field name="NUM">6</field>
</block>
</value>
</block>
</value>
<statement name="DO5">
<block type="procedures_callcustomnoreturn" id="G9PPdk,={:ETQ~nd@Zt2">
<mutation name="get_roomtemp"></mutation>
<next>
<block type="control" id="p$hn1X`nsA.z4(~9MA2f">
<mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="true"></mutation>
<field name="OID">0_userdata.0.Heizung.MH-Daten.trigger1</field>
<field name="WITH_DELAY">TRUE</field>
<field name="DELAY_MS">2000</field>
<field name="UNIT">ms</field>
<field name="CLEAR_RUNNING">FALSE</field>
<value name="VALUE">
<block type="math_number" id="N`Qo^q8!,)eDuZ5/Q#qQ">
<field name="NUM">0</field>
</block>
</value>
</block>
</next>
</block>
</statement>
<value name="IF6">
<block type="logic_compare" id="`@`b|`7+6Mi/5eXO)|U[">
<field name="OP">EQ</field>
<value name="A">
<block type="on_source" id="iZxwSRB}$koe77weUzjN">
<field name="ATTR">state.val</field>
</block>
</value>
<value name="B">
<block type="math_number" id="N!10qdK@5/PpSQSI8OEm">
<field name="NUM">7</field>
</block>
</value>
</block>
</value>
<statement name="DO6">
<block type="procedures_callcustomnoreturn" id="JFl+qhMgOe:~~8m_RY#x">
<mutation name="get_hvane"></mutation>
<next>
<block type="control" id="w7}ck)7t.5,IOKtE]Ud$">
<mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="true"></mutation>
<field name="OID">0_userdata.0.Heizung.MH-Daten.trigger1</field>
<field name="WITH_DELAY">TRUE</field>
<field name="DELAY_MS">2000</field>
<field name="UNIT">ms</field>
<field name="CLEAR_RUNNING">FALSE</field>
<value name="VALUE">
<block type="math_number" id="PIb3,3+n+pK*DX*wfRIw">
<field name="NUM">0</field>
</block>
</value>
</block>
</next>
</block>
</statement>
<value name="IF7">
<block type="logic_compare" id="eku/|rN3^?Y0X2{J3nT)">
<field name="OP">EQ</field>
<value name="A">
<block type="on_source" id="{9P$*RGT8!Q!Bzj=*%zi">
<field name="ATTR">state.val</field>
</block>
</value>
<value name="B">
<block type="math_number" id="(/=-]{Jc(zy8vq#]uUQK">
<field name="NUM">8</field>
</block>
</value>
</block>
</value>
<statement name="DO7">
<block type="procedures_callcustomnoreturn" id="0-l*WBye-3kUi5jqpmN{">
<mutation name="get_vvane"></mutation>
<next>
<block type="control" id="F0B_pV*OQ@;f.5Y1;]t:">
<mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="true"></mutation>
<field name="OID">0_userdata.0.Heizung.MH-Daten.trigger1</field>
<field name="WITH_DELAY">TRUE</field>
<field name="DELAY_MS">2000</field>
<field name="UNIT">ms</field>
<field name="CLEAR_RUNNING">FALSE</field>
<value name="VALUE">
<block type="math_number" id="blL.go7vkTpg~/:{9j-q">
<field name="NUM">0</field>
</block>
</value>
</block>
</next>
</block>
</statement>
</block>
</statement>
</block>
<block type="procedures_defcustomnoreturn" id="6%^mFvfQojEh]Gkt,Y[3" x="13" y="963">
<mutation statements="false"></mutation>
<field name="NAME">get_power</field>
<field name="SCRIPT">dmFyIHJlc3VsdDsNCnJlc3VsdCA9IDA7DQpleGVjKCdiYXNoIC9vcHQvaW9icm9rZXIvYWlyY29uL2FjLnNoIDE5Mi4xNjguMS4xNzkgZ2V0IHBvd2VyJywgZnVuY3Rpb24gKGVycm9yLCByZXN1bHQsIHN0ZGVycikgew0KICAgIGNvbnNvbGUubG9nKHJlc3VsdCk7DQogIHNldFN0YXRlKCIwX3VzZXJkYXRhLjAuSGVpenVuZy5NSC1EYXRlbi5Qb3dlciIvKlBvd2VyKi8sIHBhcnNlRmxvYXQocmVzdWx0KSwgdHJ1ZSk7DQogIHJlc3VsdCA9IDA7DQp9KTsNCmNvbnNvbGUubG9nKCJleGVjOiAiICsgJ2Jhc2ggL29wdC9pb2Jyb2tlci9haXJjb24vYWMuc2ggMTkyLjE2OC4xLjE3OSBnZXQgcG93ZXInKTs=</field>
<comment pinned="false" h="80" w="160">Beschreibe diese Funktion …</comment>
</block>
<block type="procedures_defcustomnoreturn" id=")fjde3zlgv7b:Anw/=cZ" x="13" y="1013">
<mutation statements="false"></mutation>
<field name="NAME">get_mode</field>
<field name="SCRIPT">dmFyIHJlc3VsdDsNCmV4ZWMoJ2Jhc2ggL29wdC9pb2Jyb2tlci9haXJjb24vYWMuc2ggMTkyLjE2OC4xLjE3OSBnZXQgbW9kZScsIGZ1bmN0aW9uIChlcnJvciwgcmVzdWx0LCBzdGRlcnIpIHsNCiAgICBjb25zb2xlLmxvZyhyZXN1bHQpOw0KICBzZXRTdGF0ZSgiMF91c2VyZGF0YS4wLkhlaXp1bmcuTUgtRGF0ZW4uTW9kZSIvKk1vZGUqLywgcGFyc2VGbG9hdChyZXN1bHQpLCB0cnVlKTsNCiAgcmVzdWx0ID0gMDsNCn0pOw0KY29uc29sZS5sb2coImV4ZWM6ICIgKyAnYmFzaCAvb3B0L2lvYnJva2VyL2FpcmNvbi9hYy5zaCAxOTIuMTY4LjEuMTc5IGdldCBtb2RlJyk7</field>
<comment pinned="false" h="80" w="160">Beschreibe diese Funktion …</comment>
</block>
<block type="procedures_defcustomnoreturn" id="TQ*aHUZ^$6Iku9$Y{Ve." x="13" y="1063">
<mutation statements="false"></mutation>
<field name="NAME">get_speed</field>
<field name="SCRIPT">dmFyIHJlc3VsdDsNCmV4ZWMoJ2Jhc2ggL29wdC9pb2Jyb2tlci9haXJjb24vYWMuc2ggMTkyLjE2OC4xLjE3OSBnZXQgc3BlZWQnLCBmdW5jdGlvbiAoZXJyb3IsIHJlc3VsdCwgc3RkZXJyKSB7DQogICAgY29uc29sZS5sb2cocmVzdWx0KTsNCiAgc2V0U3RhdGUoIjBfdXNlcmRhdGEuMC5IZWl6dW5nLk1ILURhdGVuLlNwZWVkIi8qU3BlZWQqLywgcGFyc2VGbG9hdChyZXN1bHQpLCB0cnVlKTsNCiAgcmVzdWx0ID0gMDsNCn0pOw0KY29uc29sZS5sb2coImV4ZWM6ICIgKyAnYmFzaCAvb3B0L2lvYnJva2VyL2FpcmNvbi9hYy5zaCAxOTIuMTY4LjEuMTc5IGdldCBzcGVlZCcpOw==</field>
<comment pinned="false" h="80" w="160">Beschreibe diese Funktion …</comment>
</block>
<block type="procedures_defcustomnoreturn" id="btE-7[nRTo__JsHig{j5" x="13" y="1113">
<mutation statements="false"></mutation>
<field name="NAME">get_outside</field>
<field name="SCRIPT">dmFyIHJlc3VsdDsNCmV4ZWMoJ2Jhc2ggL29wdC9pb2Jyb2tlci9haXJjb24vYWMuc2ggMTkyLjE2OC4xLjE3OSBnZXQgb3V0c2lkZScsIGZ1bmN0aW9uIChlcnJvciwgcmVzdWx0LCBzdGRlcnIpIHsNCiAgICBjb25zb2xlLmxvZyhyZXN1bHQpOw0KICBzZXRTdGF0ZSgiMF91c2VyZGF0YS4wLkhlaXp1bmcuTUgtRGF0ZW4uQXXfZW50ZW1wZXJhdHVyIi8qQXXfZW50ZW1wZXJhdHVyKi8sIChwYXJzZUZsb2F0KHJlc3VsdCkgLyAxMCksIHRydWUpOw0KICByZXN1bHQgPSAwOw0KfSk7DQpjb25zb2xlLmxvZygiZXhlYzogIiArICdiYXNoIC9vcHQvaW9icm9rZXIvYWlyY29uL2FjLnNoIDE5Mi4xNjguMS4xNzkgZ2V0IG91dHNpZGUnKTs=</field>
<comment pinned="false" h="80" w="160">Beschreibe diese Funktion …</comment>
</block>
<block type="procedures_defcustomnoreturn" id="9nSL8+#J;dmi~$i}3d/S" x="13" y="1163">
<mutation statements="false"></mutation>
<field name="NAME">get_setpoint</field>
<field name="SCRIPT">dmFyIHJlc3VsdDsNCmV4ZWMoJ2Jhc2ggL29wdC9pb2Jyb2tlci9haXJjb24vYWMuc2ggMTkyLjE2OC4xLjE3OSBnZXQgc2V0cG9pbnQnLCBmdW5jdGlvbiAoZXJyb3IsIHJlc3VsdCwgc3RkZXJyKSB7DQogICAgY29uc29sZS5sb2cocmVzdWx0KTsNCiAgc2V0U3RhdGUoIjBfdXNlcmRhdGEuMC5IZWl6dW5nLk1ILURhdGVuLlNldHBvaW50Ii8qU2V0cG9pbnQqLywgKHBhcnNlRmxvYXQocmVzdWx0KSAvIDEwKSwgdHJ1ZSk7DQogIHJlc3VsdCA9IDA7DQp9KTsNCmNvbnNvbGUubG9nKCJleGVjOiAiICsgJ2Jhc2ggL29wdC9pb2Jyb2tlci9haXJjb24vYWMuc2ggMTkyLjE2OC4xLjE3OSBnZXQgc2V0cG9pbnQnKTs=</field>
<comment pinned="false" h="80" w="160">Beschreibe diese Funktion …</comment>
</block>
<block type="procedures_defcustomnoreturn" id="DB[XdC3(2ftKjn)7,z,," x="13" y="1213">
<mutation statements="false"></mutation>
<field name="NAME">get_roomtemp</field>
<field name="SCRIPT">dmFyIHJlc3VsdDsNCmV4ZWMoJ2Jhc2ggL29wdC9pb2Jyb2tlci9haXJjb24vYWMuc2ggMTkyLjE2OC4xLjE3OSBnZXQgcmV0dXJuJywgZnVuY3Rpb24gKGVycm9yLCByZXN1bHQsIHN0ZGVycikgew0KICAgIGNvbnNvbGUubG9nKHJlc3VsdCk7DQogIHNldFN0YXRlKCIwX3VzZXJkYXRhLjAuSGVpenVuZy5NSC1EYXRlbi5Sb29tdGVtcCIvKlJvb210ZW1wKi8sIChwYXJzZUZsb2F0KHJlc3VsdCkgLyAxMCksIHRydWUpOw0KICByZXN1bHQgPSAwOw0KfSk7DQpjb25zb2xlLmxvZygiZXhlYzogIiArICdiYXNoIC9vcHQvaW9icm9rZXIvYWlyY29uL2FjLnNoIDE5Mi4xNjguMS4xNzkgZ2V0IHJldHVybicpOw==</field>
<comment pinned="false" h="80" w="160">Beschreibe diese Funktion …</comment>
</block>
<block type="procedures_defcustomnoreturn" id="X8bGVs?|9dV,QOw:;#Of" x="13" y="1263">
<mutation statements="false"></mutation>
<field name="NAME">get_hvane</field>
<field name="SCRIPT">dmFyIHJlc3VsdDsNCmV4ZWMoJ2Jhc2ggL29wdC9pb2Jyb2tlci9haXJjb24vYWMuc2ggMTkyLjE2OC4xLjE3OSBnZXQgaHZhbmUnLCBmdW5jdGlvbiAoZXJyb3IsIHJlc3VsdCwgc3RkZXJyKSB7DQogICAgY29uc29sZS5sb2cocmVzdWx0KTsNCiAgc2V0U3RhdGUoIjBfdXNlcmRhdGEuMC5IZWl6dW5nLk1ILURhdGVuLkxhbWVsbGVuX0hvcml6b250YWwiLypMYW1lbGxlbl9Ib3Jpem9udGFsKi8sIHBhcnNlRmxvYXQocmVzdWx0KSwgdHJ1ZSk7DQogIHJlc3VsdCA9IDA7DQp9KTsNCmNvbnNvbGUubG9nKCJleGVjOiAiICsgJ2Jhc2ggL29wdC9pb2Jyb2tlci9haXJjb24vYWMuc2ggMTkyLjE2OC4xLjE3OSBnZXQgaHZhbmUnKTs=</field>
<comment pinned="false" h="80" w="160">Beschreibe diese Funktion …</comment>
</block>
<block type="procedures_defcustomnoreturn" id="dbp*%q],o6o-v:LB`q,Q" x="13" y="1313">
<mutation statements="false"></mutation>
<field name="NAME">get_vvane</field>
<field name="SCRIPT">dmFyIHJlc3VsdDsNCmV4ZWMoJ2Jhc2ggL29wdC9pb2Jyb2tlci9haXJjb24vYWMuc2ggMTkyLjE2OC4xLjE3OSBnZXQgdnZhbmUnLCBmdW5jdGlvbiAoZXJyb3IsIHJlc3VsdCwgc3RkZXJyKSB7DQogICAgY29uc29sZS5sb2cocmVzdWx0KTsNCiAgc2V0U3RhdGUoIjBfdXNlcmRhdGEuMC5IZWl6dW5nLk1ILURhdGVuLlZlcnRpa2FsX1ZhbmUiLypWZXJ0aWthbF9WYW5lKi8sIHBhcnNlRmxvYXQocmVzdWx0KSwgdHJ1ZSk7DQogIHJlc3VsdCA9IDA7DQp9KTsNCmNvbnNvbGUubG9nKCJleGVjOiAiICsgJ2Jhc2ggL29wdC9pb2Jyb2tlci9haXJjb24vYWMuc2ggMTkyLjE2OC4xLjE3OSBnZXQgdnZhbmUnKTs=</field>
<comment pinned="false" h="80" w="160">Beschreibe diese Funktion …</comment>
</block>
</xml>
Hier der Export in Java....
/**
* Beschreibe diese Funktion …
*/
function get_power() {
var result;
result = 0;
exec('bash /opt/iobroker/aircon/ac.sh 192.168.1.179 get power', function (error, result, stderr) {
console.log(result);
setState("0_userdata.0.Heizung.MH-Daten.Power"/*Power*/, parseFloat(result), true);
result = 0;
});
console.log("exec: " + 'bash /opt/iobroker/aircon/ac.sh 192.168.1.179 get power');
}
/**
* Beschreibe diese Funktion …
*/
function get_mode() {
var result;
exec('bash /opt/iobroker/aircon/ac.sh 192.168.1.179 get mode', function (error, result, stderr) {
console.log(result);
setState("0_userdata.0.Heizung.MH-Daten.Mode"/*Mode*/, parseFloat(result), true);
result = 0;
});
console.log("exec: " + 'bash /opt/iobroker/aircon/ac.sh 192.168.1.179 get mode');
}
/**
* Beschreibe diese Funktion …
*/
function get_speed() {
var result;
exec('bash /opt/iobroker/aircon/ac.sh 192.168.1.179 get speed', function (error, result, stderr) {
console.log(result);
setState("0_userdata.0.Heizung.MH-Daten.Speed"/*Speed*/, parseFloat(result), true);
result = 0;
});
console.log("exec: " + 'bash /opt/iobroker/aircon/ac.sh 192.168.1.179 get speed');
}
/**
* Beschreibe diese Funktion …
*/
function get_outside() {
var result;
exec('bash /opt/iobroker/aircon/ac.sh 192.168.1.179 get outside', function (error, result, stderr) {
console.log(result);
setState("0_userdata.0.Heizung.MH-Daten.Außentemperatur"/*Außentemperatur*/, (parseFloat(result) / 10), true);
result = 0;
});
console.log("exec: " + 'bash /opt/iobroker/aircon/ac.sh 192.168.1.179 get outside');
}
/**
* Beschreibe diese Funktion …
*/
function get_setpoint() {
var result;
exec('bash /opt/iobroker/aircon/ac.sh 192.168.1.179 get setpoint', function (error, result, stderr) {
console.log(result);
setState("0_userdata.0.Heizung.MH-Daten.Setpoint"/*Setpoint*/, (parseFloat(result) / 10), true);
result = 0;
});
console.log("exec: " + 'bash /opt/iobroker/aircon/ac.sh 192.168.1.179 get setpoint');
}
/**
* Beschreibe diese Funktion …
*/
function get_roomtemp() {
var result;
exec('bash /opt/iobroker/aircon/ac.sh 192.168.1.179 get return', function (error, result, stderr) {
console.log(result);
setState("0_userdata.0.Heizung.MH-Daten.Roomtemp"/*Roomtemp*/, (parseFloat(result) / 10), true);
result = 0;
});
console.log("exec: " + 'bash /opt/iobroker/aircon/ac.sh 192.168.1.179 get return');
}
/**
* Beschreibe diese Funktion …
*/
function get_hvane() {
var result;
exec('bash /opt/iobroker/aircon/ac.sh 192.168.1.179 get hvane', function (error, result, stderr) {
console.log(result);
setState("0_userdata.0.Heizung.MH-Daten.Lamellen_Horizontal"/*Lamellen_Horizontal*/, parseFloat(result), true);
result = 0;
});
console.log("exec: " + 'bash /opt/iobroker/aircon/ac.sh 192.168.1.179 get hvane');
}
/**
* Beschreibe diese Funktion …
*/
function get_vvane() {
var result;
exec('bash /opt/iobroker/aircon/ac.sh 192.168.1.179 get vvane', function (error, result, stderr) {
console.log(result);
setState("0_userdata.0.Heizung.MH-Daten.Vertikal_Vane"/*Vertikal_Vane*/, parseFloat(result), true);
result = 0;
});
console.log("exec: " + 'bash /opt/iobroker/aircon/ac.sh 192.168.1.179 get vvane');
}
on({id: '0_userdata.0.Heizung.MH-Daten.trigger1', change: "ne"}, function (obj) {
var value = obj.state.val;
var oldValue = obj.oldState.val;
if ((obj.state ? obj.state.val : "") == 1) {
get_power();
setStateDelayed("0_userdata.0.Heizung.MH-Daten.trigger1"/*trigger1*/, 0, 2000, false);
} else if ((obj.state ? obj.state.val : "") == 2) {
get_mode();
setStateDelayed("0_userdata.0.Heizung.MH-Daten.trigger1"/*trigger1*/, 0, 2000, false);
} else if ((obj.state ? obj.state.val : "") == 3) {
get_speed();
setStateDelayed("0_userdata.0.Heizung.MH-Daten.trigger1"/*trigger1*/, 0, 2000, false);
} else if ((obj.state ? obj.state.val : "") == 4) {
get_outside();
setStateDelayed("0_userdata.0.Heizung.MH-Daten.trigger1"/*trigger1*/, 0, 2000, false);
} else if ((obj.state ? obj.state.val : "") == 5) {
get_setpoint();
setStateDelayed("0_userdata.0.Heizung.MH-Daten.trigger1"/*trigger1*/, 0, 2000, false);
} else if ((obj.state ? obj.state.val : "") == 6) {
get_roomtemp();
setStateDelayed("0_userdata.0.Heizung.MH-Daten.trigger1"/*trigger1*/, 0, 2000, false);
} else if ((obj.state ? obj.state.val : "") == 7) {
get_hvane();
setStateDelayed("0_userdata.0.Heizung.MH-Daten.trigger1"/*trigger1*/, 0, 2000, false);
} else if ((obj.state ? obj.state.val : "") == 8) {
get_vvane();
setStateDelayed("0_userdata.0.Heizung.MH-Daten.trigger1"/*trigger1*/, 0, 2000, false);
}
});
//JTNDeG1sJTIweG1sbnMlM0QlMjJodHRwJTNBJTJGJTJGd3d3LnczLm9yZyUyRjE5OTklMkZ4aHRtbCUyMiUzRSUzQ2Jsb2NrJTIwdHlwZSUzRCUyMm9uX2V4dCUyMiUyMGlkJTNEJTIyJTJDSSUyRjElMjNkJTVCY2tnXyUyM08wLiUzQV9NQmglMjIlMjB4JTNEJTIyMTMlMjIlMjB5JTNEJTIyMTMlMjIlM0UlM0NtdXRhdGlvbiUyMGl0ZW1zJTNEJTIyMSUyMiUzRSUzQyUyRm11dGF0aW9uJTNFJTNDZmllbGQlMjBuYW1lJTNEJTIyQ09ORElUSU9OJTIyJTNFbmUlM0MlMkZmaWVsZCUzRSUzQ2ZpZWxkJTIwbmFtZSUzRCUyMkFDS19DT05ESVRJT04lMjIlM0UlM0MlMkZmaWVsZCUzRSUzQ3ZhbHVlJTIwbmFtZSUzRCUyMk9JRDAlMjIlM0UlM0NzaGFkb3clMjB0eXBlJTNEJTIyZmllbGRfb2lkJTIyJTIwaWQlM0QlMjIlNURpLSU2MCUyQi1ZJTI1YWVCa354IUF4VzQwJTIyJTNFJTNDZmllbGQlMjBuYW1lJTNEJTIyb2lkJTIyJTNFMF91c2VyZGF0YS4wLkhlaXp1bmcuTUgtRGF0ZW4udHJpZ2dlcjElM0MlMkZmaWVsZCUzRSUzQyUyRnNoYWRvdyUzRSUzQyUyRnZhbHVlJTNFJTNDc3RhdGVtZW50JTIwbmFtZSUzRCUyMlNUQVRFTUVOVCUyMiUzRSUzQ2Jsb2NrJTIwdHlwZSUzRCUyMmNvbnRyb2xzX2lmJTIyJTIwaWQlM0QlMjJ3TSU3QyUyNCUzQlA3a3E2WHdfYjA1bW1DVCUyMiUzRSUzQ211dGF0aW9uJTIwZWxzZWlmJTNEJTIyNyUyMiUzRSUzQyUyRm11dGF0aW9uJTNFJTNDdmFsdWUlMjBuYW1lJTNEJTIySUYwJTIyJTNFJTNDYmxvY2slMjB0eXBlJTNEJTIybG9naWNfY29tcGFyZSUyMiUyMGlkJTNEJTIyJTQwJTYwbmxQeiU3QyU1QkMlNUUlMjR4MWklMjQlM0JJMiU1QiElMjIlM0UlM0NmaWVsZCUyMG5hbWUlM0QlMjJPUCUyMiUzRUVRJTNDJTJGZmllbGQlM0UlM0N2YWx1ZSUyMG5hbWUlM0QlMjJBJTIyJTNFJTNDYmxvY2slMjB0eXBlJTNEJTIyb25fc291cmNlJTIyJTIwaWQlM0QlMjIoVVFTTHo0SEslMkIlM0F6JTNBJTIzZSU2MDB5MSU1QiUyMiUzRSUzQ2ZpZWxkJTIwbmFtZSUzRCUyMkFUVFIlMjIlM0VzdGF0ZS52YWwlM0MlMkZmaWVsZCUzRSUzQyUyRmJsb2NrJTNFJTNDJTJGdmFsdWUlM0UlM0N2YWx1ZSUyMG5hbWUlM0QlMjJCJTIyJTNFJTNDYmxvY2slMjB0eXBlJTNEJTIybWF0aF9udW1iZXIlMjIlMjBpZCUzRCUyMk0zJTVCJTNBZDglN0RVdyl5amIlN0RnVm9OczElMjIlM0UlM0NmaWVsZCUyMG5hbWUlM0QlMjJOVU0lMjIlM0UxJTNDJTJGZmllbGQlM0UlM0MlMkZibG9jayUzRSUzQyUyRnZhbHVlJTNFJTNDJTJGYmxvY2slM0UlM0MlMkZ2YWx1ZSUzRSUzQ3N0YXRlbWVudCUyMG5hbWUlM0QlMjJETzAlMjIlM0UlM0NibG9jayUyMHR5cGUlM0QlMjJwcm9jZWR1cmVzX2NhbGxjdXN0b21ub3JldHVybiUyMiUyMGlkJTNEJTIyeWQxNGdzMmkqJTVFZjZ4JTNBSSU3RHdDJTVELiUyMiUzRSUzQ211dGF0aW9uJTIwbmFtZSUzRCUyMmdldF9wb3dlciUyMiUzRSUzQyUyRm11dGF0aW9uJTNFJTNDbmV4dCUzRSUzQ2Jsb2NrJTIwdHlwZSUzRCUyMmNvbnRyb2wlMjIlMjBpZCUzRCUyMiU0MFolNjAuJTVFanFwTGUlNjBiJTdDMHlrUlUlM0YwJTIyJTNFJTNDbXV0YXRpb24lMjBkZWxheV9pbnB1dCUzRCUyMnRydWUlMjIlM0UlM0MlMkZtdXRhdGlvbiUzRSUzQ2ZpZWxkJTIwbmFtZSUzRCUyMk9JRCUyMiUzRTBfdXNlcmRhdGEuMC5IZWl6dW5nLk1ILURhdGVuLnRyaWdnZXIxJTNDJTJGZmllbGQlM0UlM0NmaWVsZCUyMG5hbWUlM0QlMjJXSVRIX0RFTEFZJTIyJTNFVFJVRSUzQyUyRmZpZWxkJTNFJTNDZmllbGQlMjBuYW1lJTNEJTIyREVMQVlfTVMlMjIlM0UyMDAwJTNDJTJGZmllbGQlM0UlM0NmaWVsZCUyMG5hbWUlM0QlMjJVTklUJTIyJTNFbXMlM0MlMkZmaWVsZCUzRSUzQ2ZpZWxkJTIwbmFtZSUzRCUyMkNMRUFSX1JVTk5JTkclMjIlM0VGQUxTRSUzQyUyRmZpZWxkJTNFJTNDdmFsdWUlMjBuYW1lJTNEJTIyVkFMVUUlMjIlM0UlM0NibG9jayUyMHR5cGUlM0QlMjJtYXRoX251bWJlciUyMiUyMGlkJTNEJTIyMkplRyUzQnpGN3MzaEclMjR+aWQlN0RGLWIlMjIlM0UlM0NmaWVsZCUyMG5hbWUlM0QlMjJOVU0lMjIlM0UwJTNDJTJGZmllbGQlM0UlM0MlMkZibG9jayUzRSUzQyUyRnZhbHVlJTNFJTNDJTJGYmxvY2slM0UlM0MlMkZuZXh0JTNFJTNDJTJGYmxvY2slM0UlM0MlMkZzdGF0ZW1lbnQlM0UlM0N2YWx1ZSUyMG5hbWUlM0QlMjJJRjElMjIlM0UlM0NibG9jayUyMHR5cGUlM0QlMjJsb2dpY19jb21wYXJlJTIyJTIwaWQlM0QlMjJ5aVA1eURiZS12ZCU1RSU1QkwlNUVqJTNGdmpSJTIyJTNFJTNDZmllbGQlMjBuYW1lJTNEJTIyT1AlMjIlM0VFUSUzQyUyRmZpZWxkJTNFJTNDdmFsdWUlMjBuYW1lJTNEJTIyQSUyMiUzRSUzQ2Jsb2NrJTIwdHlwZSUzRCUyMm9uX3NvdXJjZSUyMiUyMGlkJTNEJTIyQTVYRTYlM0Zxbm41S3huek52UUtvOCUyMiUzRSUzQ2ZpZWxkJTIwbmFtZSUzRCUyMkFUVFIlMjIlM0VzdGF0ZS52YWwlM0MlMkZmaWVsZCUzRSUzQyUyRmJsb2NrJTNFJTNDJTJGdmFsdWUlM0UlM0N2YWx1ZSUyMG5hbWUlM0QlMjJCJTIyJTNFJTNDYmxvY2slMjB0eXBlJTNEJTIybWF0aF9udW1iZXIlMjIlMjBpZCUzRCUyMm5SOWpGekNtWTglNjAlNjB+TXltdCUyQlk5JTIyJTNFJTNDZmllbGQlMjBuYW1lJTNEJTIyTlVNJTIyJTNFMiUzQyUyRmZpZWxkJTNFJTNDJTJGYmxvY2slM0UlM0MlMkZ2YWx1ZSUzRSUzQyUyRmJsb2NrJTNFJTNDJTJGdmFsdWUlM0UlM0NzdGF0ZW1lbnQlMjBuYW1lJTNEJTIyRE8xJTIyJTNFJTNDYmxvY2slMjB0eXBlJTNEJTIycHJvY2VkdXJlc19jYWxsY3VzdG9tbm9yZXR1cm4lMjIlMjBpZCUzRCUyMmI4X09WKGRNaURQJTdCJTJCQSglMkZxSy15JTIyJTNFJTNDbXV0YXRpb24lMjBuYW1lJTNEJTIyZ2V0X21vZGUlMjIlM0UlM0MlMkZtdXRhdGlvbiUzRSUzQ25leHQlM0UlM0NibG9jayUyMHR5cGUlM0QlMjJjb250cm9sJTIyJTIwaWQlM0QlMjIlM0FPWXItVyUyM21UfkxfbClHSTFQNDMlMjIlM0UlM0NtdXRhdGlvbiUyMGRlbGF5X2lucHV0JTNEJTIydHJ1ZSUyMiUzRSUzQyUyRm11dGF0aW9uJTNFJTNDZmllbGQlMjBuYW1lJTNEJTIyT0lEJTIyJTNFMF91c2VyZGF0YS4wLkhlaXp1bmcuTUgtRGF0ZW4udHJpZ2dlcjElM0MlMkZmaWVsZCUzRSUzQ2ZpZWxkJTIwbmFtZSUzRCUyMldJVEhfREVMQVklMjIlM0VUUlVFJTNDJTJGZmllbGQlM0UlM0NmaWVsZCUyMG5hbWUlM0QlMjJERUxBWV9NUyUyMiUzRTIwMDAlM0MlMkZmaWVsZCUzRSUzQ2ZpZWxkJTIwbmFtZSUzRCUyMlVOSVQlMjIlM0VtcyUzQyUyRmZpZWxkJTNFJTNDZmllbGQlMjBuYW1lJTNEJTIyQ0xFQVJfUlVOTklORyUyMiUzRUZBTFNFJTNDJTJGZmllbGQlM0UlM0N2YWx1ZSUyMG5hbWUlM0QlMjJWQUxVRSUyMiUzRSUzQ2Jsb2NrJTIwdHlwZSUzRCUyMm1hdGhfbnVtYmVyJTIyJTIwaWQlM0QlMjJmX2hTQjchJTVCeCUzQXZNZGclM0R2JTYwQ2klN0MlMjIlM0UlM0NmaWVsZCUyMG5hbWUlM0QlMjJOVU0lMjIlM0UwJTNDJTJGZmllbGQlM0UlM0MlMkZibG9jayUzRSUzQyUyRnZhbHVlJTNFJTNDJTJGYmxvY2slM0UlM0MlMkZuZXh0JTNFJTNDJTJGYmxvY2slM0UlM0MlMkZzdGF0ZW1lbnQlM0UlM0N2YWx1ZSUyMG5hbWUlM0QlMjJJRjIlMjIlM0UlM0NibG9jayUyMHR5cGUlM0QlMjJsb2dpY19jb21wYXJlJTIyJTIwaWQlM0QlMjJ2VkdNSG0lMjMtJTI0VnklNjBoJTNGUnZnJTJDSmUlMjIlM0UlM0NmaWVsZCUyMG5hbWUlM0QlMjJPUCUyMiUzRUVRJTNDJTJGZmllbGQlM0UlM0N2YWx1ZSUyMG5hbWUlM0QlMjJBJTIyJTNFJTNDYmxvY2slMjB0eXBlJTNEJTIyb25fc291cmNlJTIyJTIwaWQlM0QlMjJrc0hwSnhCU21SJTNGNTVPJTIzZ1gtRGYlMjIlM0UlM0NmaWVsZCUyMG5hbWUlM0QlMjJBVFRSJTIyJTNFc3RhdGUudmFsJTNDJTJGZmllbGQlM0UlM0MlMkZibG9jayUzRSUzQyUyRnZhbHVlJTNFJTNDdmFsdWUlMjBuYW1lJTNEJTIyQiUyMiUzRSUzQ2Jsb2NrJTIwdHlwZSUzRCUyMm1hdGhfbnVtYmVyJTIyJTIwaWQlM0QlMjJBcXpQTWczJTNBdjdyb1d1N1MlMjUycSglMjIlM0UlM0NmaWVsZCUyMG5hbWUlM0QlMjJOVU0lMjIlM0UzJTNDJTJGZmllbGQlM0UlM0MlMkZibG9jayUzRSUzQyUyRnZhbHVlJTNFJTNDJTJGYmxvY2slM0UlM0MlMkZ2YWx1ZSUzRSUzQ3N0YXRlbWVudCUyMG5hbWUlM0QlMjJETzIlMjIlM0UlM0NibG9jayUyMHR5cGUlM0QlMjJwcm9jZWR1cmVzX2NhbGxjdXN0b21ub3JldHVybiUyMiUyMGlkJTNEJTIyZyUzQiUyNTVub0lhJTVFUTNRam8xJTJCdU14JTI1JTIyJTNFJTNDbXV0YXRpb24lMjBuYW1lJTNEJTIyZ2V0X3NwZWVkJTIyJTNFJTNDJTJGbXV0YXRpb24lM0UlM0NuZXh0JTNFJTNDYmxvY2slMjB0eXBlJTNEJTIyY29udHJvbCUyMiUyMGlkJTNEJTIyZVBoNjlRJTNEMHltcjFXdSU1QiUyNDVtdmglMjIlM0UlM0NtdXRhdGlvbiUyMGRlbGF5X2lucHV0JTNEJTIydHJ1ZSUyMiUzRSUzQyUyRm11dGF0aW9uJTNFJTNDZmllbGQlMjBuYW1lJTNEJTIyT0lEJTIyJTNFMF91c2VyZGF0YS4wLkhlaXp1bmcuTUgtRGF0ZW4udHJpZ2dlcjElM0MlMkZmaWVsZCUzRSUzQ2ZpZWxkJTIwbmFtZSUzRCUyMldJVEhfREVMQVklMjIlM0VUUlVFJTNDJTJGZmllbGQlM0UlM0NmaWVsZCUyMG5hbWUlM0QlMjJERUxBWV9NUyUyMiUzRTIwMDAlM0MlMkZmaWVsZCUzRSUzQ2ZpZWxkJTIwbmFtZSUzRCUyMlVOSVQlMjIlM0VtcyUzQyUyRmZpZWxkJTNFJTNDZmllbGQlMjBuYW1lJTNEJTIyQ0xFQVJfUlVOTklORyUyMiUzRUZBTFNFJTNDJTJGZmllbGQlM0UlM0N2YWx1ZSUyMG5hbWUlM0QlMjJWQUxVRSUyMiUzRSUzQ2Jsb2NrJTIwdHlwZSUzRCUyMm1hdGhfbnVtYmVyJTIyJTIwaWQlM0QlMjJJRF9RJTdDKCUzQiUyQ08tdDZrSDUzRXNFbiUyMiUzRSUzQ2ZpZWxkJTIwbmFtZSUzRCUyMk5VTSUyMiUzRTAlM0MlMkZmaWVsZCUzRSUzQyUyRmJsb2NrJTNFJTNDJTJGdmFsdWUlM0UlM0MlMkZibG9jayUzRSUzQyUyRm5leHQlM0UlM0MlMkZibG9jayUzRSUzQyUyRnN0YXRlbWVudCUzRSUzQ3ZhbHVlJTIwbmFtZSUzRCUyMklGMyUyMiUzRSUzQ2Jsb2NrJTIwdHlwZSUzRCUyMmxvZ2ljX2NvbXBhcmUlMjIlMjBpZCUzRCUyMkdfMiFmJTdDMl9RZWU4JTVESUxmQUZqUCUyMiUzRSUzQ2ZpZWxkJTIwbmFtZSUzRCUyMk9QJTIyJTNFRVElM0MlMkZmaWVsZCUzRSUzQ3ZhbHVlJTIwbmFtZSUzRCUyMkElMjIlM0UlM0NibG9jayUyMHR5cGUlM0QlMjJvbl9zb3VyY2UlMjIlMjBpZCUzRCUyMiUyNVJMSSElNUR5JTI1JTIzJTVEJTI1WUxVRDglMjMlNUUlNUQ1JTIyJTNFJTNDZmllbGQlMjBuYW1lJTNEJTIyQVRUUiUyMiUzRXN0YXRlLnZhbCUzQyUyRmZpZWxkJTNFJTNDJTJGYmxvY2slM0UlM0MlMkZ2YWx1ZSUzRSUzQ3ZhbHVlJTIwbmFtZSUzRCUyMkIlMjIlM0UlM0NibG9jayUyMHR5cGUlM0QlMjJtYXRoX251bWJlciUyMiUyMGlkJTNEJTIyJTdEKmgxRS5aazkuNDdrbChuelkqNSUyMiUzRSUzQ2ZpZWxkJTIwbmFtZSUzRCUyMk5VTSUyMiUzRTQlM0MlMkZmaWVsZCUzRSUzQyUyRmJsb2NrJTNFJTNDJTJGdmFsdWUlM0UlM0MlMkZibG9jayUzRSUzQyUyRnZhbHVlJTNFJTNDc3RhdGVtZW50JTIwbmFtZSUzRCUyMkRPMyUyMiUzRSUzQ2Jsb2NrJTIwdHlwZSUzRCUyMnByb2NlZHVyZXNfY2FsbGN1c3RvbW5vcmV0dXJuJTIyJTIwaWQlM0QlMjIxWGZ1SVpHakIlNDAlMjVjbyUzRn5WbHFjRSUyMiUzRSUzQ211dGF0aW9uJTIwbmFtZSUzRCUyMmdldF9vdXRzaWRlJTIyJTNFJTNDJTJGbXV0YXRpb24lM0UlM0NuZXh0JTNFJTNDYmxvY2slMjB0eXBlJTNEJTIyY29udHJvbCUyMiUyMGlkJTNEJTIyJTJDJTJDSiUyRnFlTypFLUdzQ0I1NXVENkklMjIlM0UlM0NtdXRhdGlvbiUyMGRlbGF5X2lucHV0JTNEJTIydHJ1ZSUyMiUzRSUzQyUyRm11dGF0aW9uJTNFJTNDZmllbGQlMjBuYW1lJTNEJTIyT0lEJTIyJTNFMF91c2VyZGF0YS4wLkhlaXp1bmcuTUgtRGF0ZW4udHJpZ2dlcjElM0MlMkZmaWVsZCUzRSUzQ2ZpZWxkJTIwbmFtZSUzRCUyMldJVEhfREVMQVklMjIlM0VUUlVFJTNDJTJGZmllbGQlM0UlM0NmaWVsZCUyMG5hbWUlM0QlMjJERUxBWV9NUyUyMiUzRTIwMDAlM0MlMkZmaWVsZCUzRSUzQ2ZpZWxkJTIwbmFtZSUzRCUyMlVOSVQlMjIlM0VtcyUzQyUyRmZpZWxkJTNFJTNDZmllbGQlMjBuYW1lJTNEJTIyQ0xFQVJfUlVOTklORyUyMiUzRUZBTFNFJTNDJTJGZmllbGQlM0UlM0N2YWx1ZSUyMG5hbWUlM0QlMjJWQUxVRSUyMiUzRSUzQ2Jsb2NrJTIwdHlwZSUzRCUyMm1hdGhfbnVtYmVyJTIyJTIwaWQlM0QlMjIlN0MyRWklN0JhKmIuJTVCMXpBMWJ0ZXVfcSUyMiUzRSUzQ2ZpZWxkJTIwbmFtZSUzRCUyMk5VTSUyMiUzRTAlM0MlMkZmaWVsZCUzRSUzQyUyRmJsb2NrJTNFJTNDJTJGdmFsdWUlM0UlM0MlMkZibG9jayUzRSUzQyUyRm5leHQlM0UlM0MlMkZibG9jayUzRSUzQyUyRnN0YXRlbWVudCUzRSUzQ3ZhbHVlJTIwbmFtZSUzRCUyMklGNCUyMiUzRSUzQ2Jsb2NrJTIwdHlwZSUzRCUyMmxvZ2ljX2NvbXBhcmUlMjIlMjBpZCUzRCUyMlEzJTI1dSUzQUQlNjAtMkElMjRXfmJkbUMlN0RvUSUyMiUzRSUzQ2ZpZWxkJTIwbmFtZSUzRCUyMk9QJTIyJTNFRVElM0MlMkZmaWVsZCUzRSUzQ3ZhbHVlJTIwbmFtZSUzRCUyMkElMjIlM0UlM0NibG9jayUyMHR5cGUlM0QlMjJvbl9zb3VyY2UlMjIlMjBpZCUzRCUyMkY0SGYhUk4lNUVQJTNBQ2dwJTdEZU9iMHJNJTIyJTNFJTNDZmllbGQlMjBuYW1lJTNEJTIyQVRUUiUyMiUzRXN0YXRlLnZhbCUzQyUyRmZpZWxkJTNFJTNDJTJGYmxvY2slM0UlM0MlMkZ2YWx1ZSUzRSUzQ3ZhbHVlJTIwbmFtZSUzRCUyMkIlMjIlM0UlM0NibG9jayUyMHR5cGUlM0QlMjJtYXRoX251bWJlciUyMiUyMGlkJTNEJTIyd0lYdWx4bU8lM0ElM0FzJTdDRyU1QmMhWV96WSUyMiUzRSUzQ2ZpZWxkJTIwbmFtZSUzRCUyMk5VTSUyMiUzRTUlM0MlMkZmaWVsZCUzRSUzQyUyRmJsb2NrJTNFJTNDJTJGdmFsdWUlM0UlM0MlMkZibG9jayUzRSUzQyUyRnZhbHVlJTNFJTNDc3RhdGVtZW50JTIwbmFtZSUzRCUyMkRPNCUyMiUzRSUzQ2Jsb2NrJTIwdHlwZSUzRCUyMnByb2NlZHVyZXNfY2FsbGN1c3RvbW5vcmV0dXJuJTIyJTIwaWQlM0QlMjIlMkZtQUslN0IlMjRkMWhJWDZSLUNneHBOZyUyMiUzRSUzQ211dGF0aW9uJTIwbmFtZSUzRCUyMmdldF9zZXRwb2ludCUyMiUzRSUzQyUyRm11dGF0aW9uJTNFJTNDbmV4dCUzRSUzQ2Jsb2NrJTIwdHlwZSUzRCUyMmNvbnRyb2wlMjIlMjBpZCUzRCUyMlMlNjBJOHclN0RpJTNEJTVCTVk0JTNEaFUzJTVEUDF5JTIyJTNFJTNDbXV0YXRpb24lMjBkZWxheV9pbnB1dCUzRCUyMnRydWUlMjIlM0UlM0MlMkZtdXRhdGlvbiUzRSUzQ2ZpZWxkJTIwbmFtZSUzRCUyMk9JRCUyMiUzRTBfdXNlcmRhdGEuMC5IZWl6dW5nLk1ILURhdGVuLnRyaWdnZXIxJTNDJTJGZmllbGQlM0UlM0NmaWVsZCUyMG5hbWUlM0QlMjJXSVRIX0RFTEFZJTIyJTNFVFJVRSUzQyUyRmZpZWxkJTNFJTNDZmllbGQlMjBuYW1lJTNEJTIyREVMQVlfTVMlMjIlM0UyMDAwJTNDJTJGZmllbGQlM0UlM0NmaWVsZCUyMG5hbWUlM0QlMjJVTklUJTIyJTNFbXMlM0MlMkZmaWVsZCUzRSUzQ2ZpZWxkJTIwbmFtZSUzRCUyMkNMRUFSX1JVTk5JTkclMjIlM0VGQUxTRSUzQyUyRmZpZWxkJTNFJTNDdmFsdWUlMjBuYW1lJTNEJTIyVkFMVUUlMjIlM0UlM0NibG9jayUyMHR5cGUlM0QlMjJtYXRoX251bWJlciUyMiUyMGlkJTNEJTIyVSUzRnYlNUIlMjNLZ2p4JTVELlglMjVwKHV1UmhfJTIyJTNFJTNDZmllbGQlMjBuYW1lJTNEJTIyTlVNJTIyJTNFMCUzQyUyRmZpZWxkJTNFJTNDJTJGYmxvY2slM0UlM0MlMkZ2YWx1ZSUzRSUzQyUyRmJsb2NrJTNFJTNDJTJGbmV4dCUzRSUzQyUyRmJsb2NrJTNFJTNDJTJGc3RhdGVtZW50JTNFJTNDdmFsdWUlMjBuYW1lJTNEJTIySUY1JTIyJTNFJTNDYmxvY2slMjB0eXBlJTNEJTIybG9naWNfY29tcGFyZSUyMiUyMGlkJTNEJTIyM0R6eG5kIWVsdXYlMkNFbXREYSUyRiU1RHolMjIlM0UlM0NmaWVsZCUyMG5hbWUlM0QlMjJPUCUyMiUzRUVRJTNDJTJGZmllbGQlM0UlM0N2YWx1ZSUyMG5hbWUlM0QlMjJBJTIyJTNFJTNDYmxvY2slMjB0eXBlJTNEJTIyb25fc291cmNlJTIyJTIwaWQlM0QlMjJGJTdDOXkzbGJfXyglMjNHSHhtSm5JOSklMjIlM0UlM0NmaWVsZCUyMG5hbWUlM0QlMjJBVFRSJTIyJTNFc3RhdGUudmFsJTNDJTJGZmllbGQlM0UlM0MlMkZibG9jayUzRSUzQyUyRnZhbHVlJTNFJTNDdmFsdWUlMjBuYW1lJTNEJTIyQiUyMiUzRSUzQ2Jsb2NrJTIwdHlwZSUzRCUyMm1hdGhfbnVtYmVyJTIyJTIwaWQlM0QlMjJLVVNsMWQyJTI1ISUyNSlKYSUzQkl6UjBSISUyMiUzRSUzQ2ZpZWxkJTIwbmFtZSUzRCUyMk5VTSUyMiUzRTYlM0MlMkZmaWVsZCUzRSUzQyUyRmJsb2NrJTNFJTNDJTJGdmFsdWUlM0UlM0MlMkZibG9jayUzRSUzQyUyRnZhbHVlJTNFJTNDc3RhdGVtZW50JTIwbmFtZSUzRCUyMkRPNSUyMiUzRSUzQ2Jsb2NrJTIwdHlwZSUzRCUyMnByb2NlZHVyZXNfY2FsbGN1c3RvbW5vcmV0dXJuJTIyJTIwaWQlM0QlMjJHOVBQZGslMkMlM0QlN0IlM0FFVFF+bmQlNDBadDIlMjIlM0UlM0NtdXRhdGlvbiUyMG5hbWUlM0QlMjJnZXRfcm9vbXRlbXAlMjIlM0UlM0MlMkZtdXRhdGlvbiUzRSUzQ25leHQlM0UlM0NibG9jayUyMHR5cGUlM0QlMjJjb250cm9sJTIyJTIwaWQlM0QlMjJwJTI0aG4xWCU2MG5zQS56NCh+OU1BMmYlMjIlM0UlM0NtdXRhdGlvbiUyMGRlbGF5X2lucHV0JTNEJTIydHJ1ZSUyMiUzRSUzQyUyRm11dGF0aW9uJTNFJTNDZmllbGQlMjBuYW1lJTNEJTIyT0lEJTIyJTNFMF91c2VyZGF0YS4wLkhlaXp1bmcuTUgtRGF0ZW4udHJpZ2dlcjElM0MlMkZmaWVsZCUzRSUzQ2ZpZWxkJTIwbmFtZSUzRCUyMldJVEhfREVMQVklMjIlM0VUUlVFJTNDJTJGZmllbGQlM0UlM0NmaWVsZCUyMG5hbWUlM0QlMjJERUxBWV9NUyUyMiUzRTIwMDAlM0MlMkZmaWVsZCUzRSUzQ2ZpZWxkJTIwbmFtZSUzRCUyMlVOSVQlMjIlM0VtcyUzQyUyRmZpZWxkJTNFJTNDZmllbGQlMjBuYW1lJTNEJTIyQ0xFQVJfUlVOTklORyUyMiUzRUZBTFNFJTNDJTJGZmllbGQlM0UlM0N2YWx1ZSUyMG5hbWUlM0QlMjJWQUxVRSUyMiUzRSUzQ2Jsb2NrJTIwdHlwZSUzRCUyMm1hdGhfbnVtYmVyJTIyJTIwaWQlM0QlMjJOJTYwUW8lNUVxOCElMkMpZUR1WjUlMkZRJTIzcVElMjIlM0UlM0NmaWVsZCUyMG5hbWUlM0QlMjJOVU0lMjIlM0UwJTNDJTJGZmllbGQlM0UlM0MlMkZibG9jayUzRSUzQyUyRnZhbHVlJTNFJTNDJTJGYmxvY2slM0UlM0MlMkZuZXh0JTNFJTNDJTJGYmxvY2slM0UlM0MlMkZzdGF0ZW1lbnQlM0UlM0N2YWx1ZSUyMG5hbWUlM0QlMjJJRjYlMjIlM0UlM0NibG9jayUyMHR5cGUlM0QlMjJsb2dpY19jb21wYXJlJTIyJTIwaWQlM0QlMjIlNjAlNDAlNjBiJTdDJTYwNyUyQjZNaSUyRjVlWE8pJTdDVSU1QiUyMiUzRSUzQ2ZpZWxkJTIwbmFtZSUzRCUyMk9QJTIyJTNFRVElM0MlMkZmaWVsZCUzRSUzQ3ZhbHVlJTIwbmFtZSUzRCUyMkElMjIlM0UlM0NibG9jayUyMHR5cGUlM0QlMjJvbl9zb3VyY2UlMjIlMjBpZCUzRCUyMmlaeHdTUkIlN0QlMjRrb2U3N3dlVXpqTiUyMiUzRSUzQ2ZpZWxkJTIwbmFtZSUzRCUyMkFUVFIlMjIlM0VzdGF0ZS52YWwlM0MlMkZmaWVsZCUzRSUzQyUyRmJsb2NrJTNFJTNDJTJGdmFsdWUlM0UlM0N2YWx1ZSUyMG5hbWUlM0QlMjJCJTIyJTNFJTNDYmxvY2slMjB0eXBlJTNEJTIybWF0aF9udW1iZXIlMjIlMjBpZCUzRCUyMk4hMTBxZEslNDA1JTJGUHBTUVNJOE9FbSUyMiUzRSUzQ2ZpZWxkJTIwbmFtZSUzRCUyMk5VTSUyMiUzRTclM0MlMkZmaWVsZCUzRSUzQyUyRmJsb2NrJTNFJTNDJTJGdmFsdWUlM0UlM0MlMkZibG9jayUzRSUzQyUyRnZhbHVlJTNFJTNDc3RhdGVtZW50JTIwbmFtZSUzRCUyMkRPNiUyMiUzRSUzQ2Jsb2NrJTIwdHlwZSUzRCUyMnByb2NlZHVyZXNfY2FsbGN1c3RvbW5vcmV0dXJuJTIyJTIwaWQlM0QlMjJKRmwlMkJxaE1nT2UlM0F+fjhtX1JZJTIzeCUyMiUzRSUzQ211dGF0aW9uJTIwbmFtZSUzRCUyMmdldF9odmFuZSUyMiUzRSUzQyUyRm11dGF0aW9uJTNFJTNDbmV4dCUzRSUzQ2Jsb2NrJTIwdHlwZSUzRCUyMmNvbnRyb2wlMjIlMjBpZCUzRCUyMnc3JTdEY2spN3QuNSUyQ0lPS3RFJTVEVWQlMjQlMjIlM0UlM0NtdXRhdGlvbiUyMGRlbGF5X2lucHV0JTNEJTIydHJ1ZSUyMiUzRSUzQyUyRm11dGF0aW9uJTNFJTNDZmllbGQlMjBuYW1lJTNEJTIyT0lEJTIyJTNFMF91c2VyZGF0YS4wLkhlaXp1bmcuTUgtRGF0ZW4udHJpZ2dlcjElM0MlMkZmaWVsZCUzRSUzQ2ZpZWxkJTIwbmFtZSUzRCUyMldJVEhfREVMQVklMjIlM0VUUlVFJTNDJTJGZmllbGQlM0UlM0NmaWVsZCUyMG5hbWUlM0QlMjJERUxBWV9NUyUyMiUzRTIwMDAlM0MlMkZmaWVsZCUzRSUzQ2ZpZWxkJTIwbmFtZSUzRCUyMlVOSVQlMjIlM0VtcyUzQyUyRmZpZWxkJTNFJTNDZmllbGQlMjBuYW1lJTNEJTIyQ0xFQVJfUlVOTklORyUyMiUzRUZBTFNFJTNDJTJGZmllbGQlM0UlM0N2YWx1ZSUyMG5hbWUlM0QlMjJWQUxVRSUyMiUzRSUzQ2Jsb2NrJTIwdHlwZSUzRCUyMm1hdGhfbnVtYmVyJTIyJTIwaWQlM0QlMjJQSWIzJTJDMyUyQm4lMkJwSypEWCp3ZlJJdyUyMiUzRSUzQ2ZpZWxkJTIwbmFtZSUzRCUyMk5VTSUyMiUzRTAlM0MlMkZmaWVsZCUzRSUzQyUyRmJsb2NrJTNFJTNDJTJGdmFsdWUlM0UlM0MlMkZibG9jayUzRSUzQyUyRm5leHQlM0UlM0MlMkZibG9jayUzRSUzQyUyRnN0YXRlbWVudCUzRSUzQ3ZhbHVlJTIwbmFtZSUzRCUyMklGNyUyMiUzRSUzQ2Jsb2NrJTIwdHlwZSUzRCUyMmxvZ2ljX2NvbXBhcmUlMjIlMjBpZCUzRCUyMmVrdSUyRiU3Q3JOMyU1RSUzRlkwWDIlN0JKM25UKSUyMiUzRSUzQ2ZpZWxkJTIwbmFtZSUzRCUyMk9QJTIyJTNFRVElM0MlMkZmaWVsZCUzRSUzQ3ZhbHVlJTIwbmFtZSUzRCUyMkElMjIlM0UlM0NibG9jayUyMHR5cGUlM0QlMjJvbl9zb3VyY2UlMjIlMjBpZCUzRCUyMiU3QjlQJTI0KlJHVDghUSFCemolM0QqJTI1emklMjIlM0UlM0NmaWVsZCUyMG5hbWUlM0QlMjJBVFRSJTIyJTNFc3RhdGUudmFsJTNDJTJGZmllbGQlM0UlM0MlMkZibG9jayUzRSUzQyUyRnZhbHVlJTNFJTNDdmFsdWUlMjBuYW1lJTNEJTIyQiUyMiUzRSUzQ2Jsb2NrJTIwdHlwZSUzRCUyMm1hdGhfbnVtYmVyJTIyJTIwaWQlM0QlMjIoJTJGJTNELSU1RCU3QkpjKHp5OHZxJTIzJTVEdVVRSyUyMiUzRSUzQ2ZpZWxkJTIwbmFtZSUzRCUyMk5VTSUyMiUzRTglM0MlMkZmaWVsZCUzRSUzQyUyRmJsb2NrJTNFJTNDJTJGdmFsdWUlM0UlM0MlMkZibG9jayUzRSUzQyUyRnZhbHVlJTNFJTNDc3RhdGVtZW50JTIwbmFtZSUzRCUyMkRPNyUyMiUzRSUzQ2Jsb2NrJTIwdHlwZSUzRCUyMnByb2NlZHVyZXNfY2FsbGN1c3RvbW5vcmV0dXJuJTIyJTIwaWQlM0QlMjIwLWwqV0J5ZS0za1VpNWpxcG1OJTdCJTIyJTNFJTNDbXV0YXRpb24lMjBuYW1lJTNEJTIyZ2V0X3Z2YW5lJTIyJTNFJTNDJTJGbXV0YXRpb24lM0UlM0NuZXh0JTNFJTNDYmxvY2slMjB0eXBlJTNEJTIyY29udHJvbCUyMiUyMGlkJTNEJTIyRjBCX3BWKk9RJTQwJTNCZi41WTElM0IlNUR0JTNBJTIyJTNFJTNDbXV0YXRpb24lMjBkZWxheV9pbnB1dCUzRCUyMnRydWUlMjIlM0UlM0MlMkZtdXRhdGlvbiUzRSUzQ2ZpZWxkJTIwbmFtZSUzRCUyMk9JRCUyMiUzRTBfdXNlcmRhdGEuMC5IZWl6dW5nLk1ILURhdGVuLnRyaWdnZXIxJTNDJTJGZmllbGQlM0UlM0NmaWVsZCUyMG5hbWUlM0QlMjJXSVRIX0RFTEFZJTIyJTNFVFJVRSUzQyUyRmZpZWxkJTNFJTNDZmllbGQlMjBuYW1lJTNEJTIyREVMQVlfTVMlMjIlM0UyMDAwJTNDJTJGZmllbGQlM0UlM0NmaWVsZCUyMG5hbWUlM0QlMjJVTklUJTIyJTNFbXMlM0MlMkZmaWVsZCUzRSUzQ2ZpZWxkJTIwbmFtZSUzRCUyMkNMRUFSX1JVTk5JTkclMjIlM0VGQUxTRSUzQyUyRmZpZWxkJTNFJTNDdmFsdWUlMjBuYW1lJTNEJTIyVkFMVUUlMjIlM0UlM0NibG9jayUyMHR5cGUlM0QlMjJtYXRoX251bWJlciUyMiUyMGlkJTNEJTIyYmxMLmdvN3ZrVHBnfiUyRiUzQSU3QjlqLXElMjIlM0UlM0NmaWVsZCUyMG5hbWUlM0QlMjJOVU0lMjIlM0UwJTNDJTJGZmllbGQlM0UlM0MlMkZibG9jayUzRSUzQyUyRnZhbHVlJTNFJTNDJTJGYmxvY2slM0UlM0MlMkZuZXh0JTNFJTNDJTJGYmxvY2slM0UlM0MlMkZzdGF0ZW1lbnQlM0UlM0MlMkZibG9jayUzRSUzQyUyRnN0YXRlbWVudCUzRSUzQyUyRmJsb2NrJTNFJTNDYmxvY2slMjB0eXBlJTNEJTIycHJvY2VkdXJlc19kZWZjdXN0b21ub3JldHVybiUyMiUyMGlkJTNEJTIyNiUyNSU1RW1GdmZRb2pFaCU1REdrdCUyQ1klNUIzJTIyJTIweCUzRCUyMjEzJTIyJTIweSUzRCUyMjk2MyUyMiUzRSUzQ211dGF0aW9uJTIwc3RhdGVtZW50cyUzRCUyMmZhbHNlJTIyJTNFJTNDJTJGbXV0YXRpb24lM0UlM0NmaWVsZCUyMG5hbWUlM0QlMjJOQU1FJTIyJTNFZ2V0X3Bvd2VyJTNDJTJGZmllbGQlM0UlM0NmaWVsZCUyMG5hbWUlM0QlMjJTQ1JJUFQlMjIlM0VkbUZ5SUhKbGMzVnNkRHNOQ25KbGMzVnNkQ0E5SURBN0RRcGxlR1ZqS0NkaVlYTm9JQzl2Y0hRdmFXOWljbTlyWlhJdllXbHlZMjl1TDJGakxuTm9JREU1TWk0eE5qZ3VNUzR4TnprZ1oyVjBJSEJ2ZDJWeUp5d2dablZ1WTNScGIyNGdLR1Z5Y205eUxDQnlaWE4xYkhRc0lITjBaR1Z5Y2lrZ2V3MEtJQ0FnSUdOdmJuTnZiR1V1Ykc5bktISmxjM1ZzZENrN0RRb2dJSE5sZEZOMFlYUmxLQ0l3WDNWelpYSmtZWFJoTGpBdVNHVnBlblZ1Wnk1TlNDMUVZWFJsYmk1UWIzZGxjaUl2S2xCdmQyVnlLaThzSUhCaGNuTmxSbXh2WVhRb2NtVnpkV3gwS1N3Z2RISjFaU2s3RFFvZ0lISmxjM1ZzZENBOUlEQTdEUXA5S1RzTkNtTnZibk52YkdVdWJHOW5LQ0psZUdWak9pQWlJQ3NnSjJKaGMyZ2dMMjl3ZEM5cGIySnliMnRsY2k5aGFYSmpiMjR2WVdNdWMyZ2dNVGt5TGpFMk9DNHhMakUzT1NCblpYUWdjRzkzWlhJbktUcyUzRCUzQyUyRmZpZWxkJTNFJTNDY29tbWVudCUyMHBpbm5lZCUzRCUyMmZhbHNlJTIyJTIwaCUzRCUyMjgwJTIyJTIwdyUzRCUyMjE2MCUyMiUzRUJlc2NocmVpYmUlMjBkaWVzZSUyMEZ1bmt0aW9uJTIwJUUyJTgwJUE2JTNDJTJGY29tbWVudCUzRSUzQyUyRmJsb2NrJTNFJTNDYmxvY2slMjB0eXBlJTNEJTIycHJvY2VkdXJlc19kZWZjdXN0b21ub3JldHVybiUyMiUyMGlkJTNEJTIyKWZqZGUzemxndjdiJTNBQW53JTJGJTNEY1olMjIlMjB4JTNEJTIyMTMlMjIlMjB5JTNEJTIyMTAxMyUyMiUzRSUzQ211dGF0aW9uJTIwc3RhdGVtZW50cyUzRCUyMmZhbHNlJTIyJTNFJTNDJTJGbXV0YXRpb24lM0UlM0NmaWVsZCUyMG5hbWUlM0QlMjJOQU1FJTIyJTNFZ2V0X21vZGUlM0MlMkZmaWVsZCUzRSUzQ2ZpZWxkJTIwbmFtZSUzRCUyMlNDUklQVCUyMiUzRWRtRnlJSEpsYzNWc2REc05DbVY0WldNb0oySmhjMmdnTDI5d2RDOXBiMkp5YjJ0bGNpOWhhWEpqYjI0dllXTXVjMmdnTVRreUxqRTJPQzR4TGpFM09TQm5aWFFnYlc5a1pTY3NJR1oxYm1OMGFXOXVJQ2hsY25KdmNpd2djbVZ6ZFd4MExDQnpkR1JsY25JcElIc05DaUFnSUNCamIyNXpiMnhsTG14dlp5aHlaWE4xYkhRcE93MEtJQ0J6WlhSVGRHRjBaU2dpTUY5MWMyVnlaR0YwWVM0d0xraGxhWHAxYm1jdVRVZ3RSR0YwWlc0dVRXOWtaU0l2S2sxdlpHVXFMeXdnY0dGeWMyVkdiRzloZENoeVpYTjFiSFFwTENCMGNuVmxLVHNOQ2lBZ2NtVnpkV3gwSUQwZ01Ec05DbjBwT3cwS1kyOXVjMjlzWlM1c2IyY29JbVY0WldNNklDSWdLeUFuWW1GemFDQXZiM0IwTDJsdlluSnZhMlZ5TDJGcGNtTnZiaTloWXk1emFDQXhPVEl1TVRZNExqRXVNVGM1SUdkbGRDQnRiMlJsSnlrNyUzQyUyRmZpZWxkJTNFJTNDY29tbWVudCUyMHBpbm5lZCUzRCUyMmZhbHNlJTIyJTIwaCUzRCUyMjgwJTIyJTIwdyUzRCUyMjE2MCUyMiUzRUJlc2NocmVpYmUlMjBkaWVzZSUyMEZ1bmt0aW9uJTIwJUUyJTgwJUE2JTNDJTJGY29tbWVudCUzRSUzQyUyRmJsb2NrJTNFJTNDYmxvY2slMjB0eXBlJTNEJTIycHJvY2VkdXJlc19kZWZjdXN0b21ub3JldHVybiUyMiUyMGlkJTNEJTIyVFEqYUhVWiU1RSUyNDZJa3U5JTI0WSU3QlZlLiUyMiUyMHglM0QlMjIxMyUyMiUyMHklM0QlMjIxMDYzJTIyJTNFJTNDbXV0YXRpb24lMjBzdGF0ZW1lbnRzJTNEJTIyZmFsc2UlMjIlM0UlM0MlMkZtdXRhdGlvbiUzRSUzQ2ZpZWxkJTIwbmFtZSUzRCUyMk5BTUUlMjIlM0VnZXRfc3BlZWQlM0MlMkZmaWVsZCUzRSUzQ2ZpZWxkJTIwbmFtZSUzRCUyMlNDUklQVCUyMiUzRWRtRnlJSEpsYzNWc2REc05DbVY0WldNb0oySmhjMmdnTDI5d2RDOXBiMkp5YjJ0bGNpOWhhWEpqYjI0dllXTXVjMmdnTVRreUxqRTJPQzR4TGpFM09TQm5aWFFnYzNCbFpXUW5MQ0JtZFc1amRHbHZiaUFvWlhKeWIzSXNJSEpsYzNWc2RDd2djM1JrWlhKeUtTQjdEUW9nSUNBZ1kyOXVjMjlzWlM1c2IyY29jbVZ6ZFd4MEtUc05DaUFnYzJWMFUzUmhkR1VvSWpCZmRYTmxjbVJoZEdFdU1DNUlaV2w2ZFc1bkxrMUlMVVJoZEdWdUxsTndaV1ZrSWk4cVUzQmxaV1FxTHl3Z2NHRnljMlZHYkc5aGRDaHlaWE4xYkhRcExDQjBjblZsS1RzTkNpQWdjbVZ6ZFd4MElEMGdNRHNOQ24wcE93MEtZMjl1YzI5c1pTNXNiMmNvSW1WNFpXTTZJQ0lnS3lBblltRnphQ0F2YjNCMEwybHZZbkp2YTJWeUwyRnBjbU52Ymk5aFl5NXphQ0F4T1RJdU1UWTRMakV1TVRjNUlHZGxkQ0J6Y0dWbFpDY3BPdyUzRCUzRCUzQyUyRmZpZWxkJTNFJTNDY29tbWVudCUyMHBpbm5lZCUzRCUyMmZhbHNlJTIyJTIwaCUzRCUyMjgwJTIyJTIwdyUzRCUyMjE2MCUyMiUzRUJlc2NocmVpYmUlMjBkaWVzZSUyMEZ1bmt0aW9uJTIwJUUyJTgwJUE2JTNDJTJGY29tbWVudCUzRSUzQyUyRmJsb2NrJTNFJTNDYmxvY2slMjB0eXBlJTNEJTIycHJvY2VkdXJlc19kZWZjdXN0b21ub3JldHVybiUyMiUyMGlkJTNEJTIyYnRFLTclNUJuUlRvX19Kc0hpZyU3Qmo1JTIyJTIweCUzRCUyMjEzJTIyJTIweSUzRCUyMjExMTMlMjIlM0UlM0NtdXRhdGlvbiUyMHN0YXRlbWVudHMlM0QlMjJmYWxzZSUyMiUzRSUzQyUyRm11dGF0aW9uJTNFJTNDZmllbGQlMjBuYW1lJTNEJTIyTkFNRSUyMiUzRWdldF9vdXRzaWRlJTNDJTJGZmllbGQlM0UlM0NmaWVsZCUyMG5hbWUlM0QlMjJTQ1JJUFQlMjIlM0VkbUZ5SUhKbGMzVnNkRHNOQ21WNFpXTW9KMkpoYzJnZ0wyOXdkQzlwYjJKeWIydGxjaTloYVhKamIyNHZZV011YzJnZ01Ua3lMakUyT0M0eExqRTNPU0JuWlhRZ2IzVjBjMmxrWlNjc0lHWjFibU4wYVc5dUlDaGxjbkp2Y2l3Z2NtVnpkV3gwTENCemRHUmxjbklwSUhzTkNpQWdJQ0JqYjI1emIyeGxMbXh2WnloeVpYTjFiSFFwT3cwS0lDQnpaWFJUZEdGMFpTZ2lNRjkxYzJWeVpHRjBZUzR3TGtobGFYcDFibWN1VFVndFJHRjBaVzR1UVhYZlpXNTBaVzF3WlhKaGRIVnlJaThxUVhYZlpXNTBaVzF3WlhKaGRIVnlLaThzSUNod1lYSnpaVVpzYjJGMEtISmxjM1ZzZENrZ0x5QXhNQ2tzSUhSeWRXVXBPdzBLSUNCeVpYTjFiSFFnUFNBd093MEtmU2s3RFFwamIyNXpiMnhsTG14dlp5Z2laWGhsWXpvZ0lpQXJJQ2RpWVhOb0lDOXZjSFF2YVc5aWNtOXJaWEl2WVdseVkyOXVMMkZqTG5Ob0lERTVNaTR4TmpndU1TNHhOemtnWjJWMElHOTFkSE5wWkdVbktUcyUzRCUzQyUyRmZpZWxkJTNFJTNDY29tbWVudCUyMHBpbm5lZCUzRCUyMmZhbHNlJTIyJTIwaCUzRCUyMjgwJTIyJTIwdyUzRCUyMjE2MCUyMiUzRUJlc2NocmVpYmUlMjBkaWVzZSUyMEZ1bmt0aW9uJTIwJUUyJTgwJUE2JTNDJTJGY29tbWVudCUzRSUzQyUyRmJsb2NrJTNFJTNDYmxvY2slMjB0eXBlJTNEJTIycHJvY2VkdXJlc19kZWZjdXN0b21ub3JldHVybiUyMiUyMGlkJTNEJTIyOW5TTDglMkIlMjNKJTNCZG1pfiUyNGklN0QzZCUyRlMlMjIlMjB4JTNEJTIyMTMlMjIlMjB5JTNEJTIyMTE2MyUyMiUzRSUzQ211dGF0aW9uJTIwc3RhdGVtZW50cyUzRCUyMmZhbHNlJTIyJTNFJTNDJTJGbXV0YXRpb24lM0UlM0NmaWVsZCUyMG5hbWUlM0QlMjJOQU1FJTIyJTNFZ2V0X3NldHBvaW50JTNDJTJGZmllbGQlM0UlM0NmaWVsZCUyMG5hbWUlM0QlMjJTQ1JJUFQlMjIlM0VkbUZ5SUhKbGMzVnNkRHNOQ21WNFpXTW9KMkpoYzJnZ0wyOXdkQzlwYjJKeWIydGxjaTloYVhKamIyNHZZV011YzJnZ01Ua3lMakUyT0M0eExqRTNPU0JuWlhRZ2MyVjBjRzlwYm5RbkxDQm1kVzVqZEdsdmJpQW9aWEp5YjNJc0lISmxjM1ZzZEN3Z2MzUmtaWEp5S1NCN0RRb2dJQ0FnWTI5dWMyOXNaUzVzYjJjb2NtVnpkV3gwS1RzTkNpQWdjMlYwVTNSaGRHVW9JakJmZFhObGNtUmhkR0V1TUM1SVpXbDZkVzVuTGsxSUxVUmhkR1Z1TGxObGRIQnZhVzUwSWk4cVUyVjBjRzlwYm5RcUx5d2dLSEJoY25ObFJteHZZWFFvY21WemRXeDBLU0F2SURFd0tTd2dkSEoxWlNrN0RRb2dJSEpsYzNWc2RDQTlJREE3RFFwOUtUc05DbU52Ym5OdmJHVXViRzluS0NKbGVHVmpPaUFpSUNzZ0oySmhjMmdnTDI5d2RDOXBiMkp5YjJ0bGNpOWhhWEpqYjI0dllXTXVjMmdnTVRreUxqRTJPQzR4TGpFM09TQm5aWFFnYzJWMGNHOXBiblFuS1RzJTNEJTNDJTJGZmllbGQlM0UlM0Njb21tZW50JTIwcGlubmVkJTNEJTIyZmFsc2UlMjIlMjBoJTNEJTIyODAlMjIlMjB3JTNEJTIyMTYwJTIyJTNFQmVzY2hyZWliZSUyMGRpZXNlJTIwRnVua3Rpb24lMjAlRTIlODAlQTYlM0MlMkZjb21tZW50JTNFJTNDJTJGYmxvY2slM0UlM0NibG9jayUyMHR5cGUlM0QlMjJwcm9jZWR1cmVzX2RlZmN1c3RvbW5vcmV0dXJuJTIyJTIwaWQlM0QlMjJEQiU1QlhkQzMoMmZ0S2puKTclMkN6JTJDJTJDJTIyJTIweCUzRCUyMjEzJTIyJTIweSUzRCUyMjEyMTMlMjIlM0UlM0NtdXRhdGlvbiUyMHN0YXRlbWVudHMlM0QlMjJmYWxzZSUyMiUzRSUzQyUyRm11dGF0aW9uJTNFJTNDZmllbGQlMjBuYW1lJTNEJTIyTkFNRSUyMiUzRWdldF9yb29tdGVtcCUzQyUyRmZpZWxkJTNFJTNDZmllbGQlMjBuYW1lJTNEJTIyU0NSSVBUJTIyJTNFZG1GeUlISmxjM1ZzZERzTkNtVjRaV01vSjJKaGMyZ2dMMjl3ZEM5cGIySnliMnRsY2k5aGFYSmpiMjR2WVdNdWMyZ2dNVGt5TGpFMk9DNHhMakUzT1NCblpYUWdjbVYwZFhKdUp5d2dablZ1WTNScGIyNGdLR1Z5Y205eUxDQnlaWE4xYkhRc0lITjBaR1Z5Y2lrZ2V3MEtJQ0FnSUdOdmJuTnZiR1V1Ykc5bktISmxjM1ZzZENrN0RRb2dJSE5sZEZOMFlYUmxLQ0l3WDNWelpYSmtZWFJoTGpBdVNHVnBlblZ1Wnk1TlNDMUVZWFJsYmk1U2IyOXRkR1Z0Y0NJdktsSnZiMjEwWlcxd0tpOHNJQ2h3WVhKelpVWnNiMkYwS0hKbGMzVnNkQ2tnTHlBeE1Da3NJSFJ5ZFdVcE93MEtJQ0J5WlhOMWJIUWdQU0F3T3cwS2ZTazdEUXBqYjI1emIyeGxMbXh2WnlnaVpYaGxZem9nSWlBcklDZGlZWE5vSUM5dmNIUXZhVzlpY205clpYSXZZV2x5WTI5dUwyRmpMbk5vSURFNU1pNHhOamd1TVM0eE56a2daMlYwSUhKbGRIVnliaWNwT3clM0QlM0QlM0MlMkZmaWVsZCUzRSUzQ2NvbW1lbnQlMjBwaW5uZWQlM0QlMjJmYWxzZSUyMiUyMGglM0QlMjI4MCUyMiUyMHclM0QlMjIxNjAlMjIlM0VCZXNjaHJlaWJlJTIwZGllc2UlMjBGdW5rdGlvbiUyMCVFMiU4MCVBNiUzQyUyRmNvbW1lbnQlM0UlM0MlMkZibG9jayUzRSUzQ2Jsb2NrJTIwdHlwZSUzRCUyMnByb2NlZHVyZXNfZGVmY3VzdG9tbm9yZXR1cm4lMjIlMjBpZCUzRCUyMlg4YkdWcyUzRiU3QzlkViUyQ1FPdyUzQSUzQiUyM09mJTIyJTIweCUzRCUyMjEzJTIyJTIweSUzRCUyMjEyNjMlMjIlM0UlM0NtdXRhdGlvbiUyMHN0YXRlbWVudHMlM0QlMjJmYWxzZSUyMiUzRSUzQyUyRm11dGF0aW9uJTNFJTNDZmllbGQlMjBuYW1lJTNEJTIyTkFNRSUyMiUzRWdldF9odmFuZSUzQyUyRmZpZWxkJTNFJTNDZmllbGQlMjBuYW1lJTNEJTIyU0NSSVBUJTIyJTNFZG1GeUlISmxjM1ZzZERzTkNtVjRaV01vSjJKaGMyZ2dMMjl3ZEM5cGIySnliMnRsY2k5aGFYSmpiMjR2WVdNdWMyZ2dNVGt5TGpFMk9DNHhMakUzT1NCblpYUWdhSFpoYm1VbkxDQm1kVzVqZEdsdmJpQW9aWEp5YjNJc0lISmxjM1ZzZEN3Z2MzUmtaWEp5S1NCN0RRb2dJQ0FnWTI5dWMyOXNaUzVzYjJjb2NtVnpkV3gwS1RzTkNpQWdjMlYwVTNSaGRHVW9JakJmZFhObGNtUmhkR0V1TUM1SVpXbDZkVzVuTGsxSUxVUmhkR1Z1TGt4aGJXVnNiR1Z1WDBodmNtbDZiMjUwWVd3aUx5cE1ZVzFsYkd4bGJsOUliM0pwZW05dWRHRnNLaThzSUhCaGNuTmxSbXh2WVhRb2NtVnpkV3gwS1N3Z2RISjFaU2s3RFFvZ0lISmxjM1ZzZENBOUlEQTdEUXA5S1RzTkNtTnZibk52YkdVdWJHOW5LQ0psZUdWak9pQWlJQ3NnSjJKaGMyZ2dMMjl3ZEM5cGIySnliMnRsY2k5aGFYSmpiMjR2WVdNdWMyZ2dNVGt5TGpFMk9DNHhMakUzT1NCblpYUWdhSFpoYm1VbktUcyUzRCUzQyUyRmZpZWxkJTNFJTNDY29tbWVudCUyMHBpbm5lZCUzRCUyMmZhbHNlJTIyJTIwaCUzRCUyMjgwJTIyJTIwdyUzRCUyMjE2MCUyMiUzRUJlc2NocmVpYmUlMjBkaWVzZSUyMEZ1bmt0aW9uJTIwJUUyJTgwJUE2JTNDJTJGY29tbWVudCUzRSUzQyUyRmJsb2NrJTNFJTNDYmxvY2slMjB0eXBlJTNEJTIycHJvY2VkdXJlc19kZWZjdXN0b21ub3JldHVybiUyMiUyMGlkJTNEJTIyZGJwKiUyNXElNUQlMkNvNm8tdiUzQUxCJTYwcSUyQ1ElMjIlMjB4JTNEJTIyMTMlMjIlMjB5JTNEJTIyMTMxMyUyMiUzRSUzQ211dGF0aW9uJTIwc3RhdGVtZW50cyUzRCUyMmZhbHNlJTIyJTNFJTNDJTJGbXV0YXRpb24lM0UlM0NmaWVsZCUyMG5hbWUlM0QlMjJOQU1FJTIyJTNFZ2V0X3Z2YW5lJTNDJTJGZmllbGQlM0UlM0NmaWVsZCUyMG5hbWUlM0QlMjJTQ1JJUFQlMjIlM0VkbUZ5SUhKbGMzVnNkRHNOQ21WNFpXTW9KMkpoYzJnZ0wyOXdkQzlwYjJKeWIydGxjaTloYVhKamIyNHZZV011YzJnZ01Ua3lMakUyT0M0eExqRTNPU0JuWlhRZ2RuWmhibVVuTENCbWRXNWpkR2x2YmlBb1pYSnliM0lzSUhKbGMzVnNkQ3dnYzNSa1pYSnlLU0I3RFFvZ0lDQWdZMjl1YzI5c1pTNXNiMmNvY21WemRXeDBLVHNOQ2lBZ2MyVjBVM1JoZEdVb0lqQmZkWE5sY21SaGRHRXVNQzVJWldsNmRXNW5MazFJTFVSaGRHVnVMbFpsY25ScGEyRnNYMVpoYm1VaUx5cFdaWEowYVd0aGJGOVdZVzVsS2k4c0lIQmhjbk5sUm14dllYUW9jbVZ6ZFd4MEtTd2dkSEoxWlNrN0RRb2dJSEpsYzNWc2RDQTlJREE3RFFwOUtUc05DbU52Ym5OdmJHVXViRzluS0NKbGVHVmpPaUFpSUNzZ0oySmhjMmdnTDI5d2RDOXBiMkp5YjJ0bGNpOWhhWEpqYjI0dllXTXVjMmdnTVRreUxqRTJPQzR4TGpFM09TQm5aWFFnZG5aaGJtVW5LVHMlM0QlM0MlMkZmaWVsZCUzRSUzQ2NvbW1lbnQlMjBwaW5uZWQlM0QlMjJmYWxzZSUyMiUyMGglM0QlMjI4MCUyMiUyMHclM0QlMjIxNjAlMjIlM0VCZXNjaHJlaWJlJTIwZGllc2UlMjBGdW5rdGlvbiUyMCVFMiU4MCVBNiUzQyUyRmNvbW1lbnQlM0UlM0MlMkZibG9jayUzRSUzQyUyRnhtbCUzRQ==
Und hier das Skript was vorher zun laufen gebracht werden muss...
#!/usr/bin/env bash
#Airconwithme script (airconwithme.com)
#Written by KingOfDois. BSD 3-clause license.
USAGE="usage: ${0} ip set|get option [value]"
#pseudo: login credentials.
#security note: wget leaks user/password in process list
if [ -z "${AIRCO_PASSWORD}" ]; then
AIRCO_PASSWORD=operator
fi
if [ -z "${AIRCO_USER}" ]; then
AIRCO_USER=operator
fi
#pseudo: 1st argument is IP
if [ -z "${1}" ]; then
echo ${USAGE}
exit 1
else
AIRCO_IP="${1}"
fi
#pseudo: 2nd argument is set|get
if [ "${2}" != "set" ] && [ "${2}" != "get" ]; then
echo ${USAGE}
exit 1
fi
DIRECTION=${2}
#pseudo: more variables
ACTION=${3}
DO=${4}
VALUE=0
EXIT=0
#-------------------------------------
#pseudo: functions
function stderr () {
cat - 1>&2
}
#-------------------------------------
#pseudo: action table
ACTIONS=(power mode speed vvane hvane setpoint return alarm outside)
UIDS=(1 2 4 5 6 9 10 14 37)
#pseudo: select uid from action
FOUND=0
for i in "${!ACTIONS[@]}"
do
if [ "${ACTIONS[${i}]}" == "${ACTION}" ]; then
FOUND=1
WORK_UID=${UIDS[${i}]}
fi
done
if [ ${FOUND} -eq 0 ]; then
echo "available actions: ${ACTIONS[@]}"
exit 1
fi
#-------------------------------------
#pseudo: work the $ACTION / $VALUE with $uid available
if [[ "${DIRECTION}" == "set" ]]; then
if [[ "${ACTION}" == "power" ]]; then OPTIONS=(on off); VALUES=(1 0); fi
if [[ "${ACTION}" == "mode" ]]; then OPTIONS=(auto heat dry fan cool); VALUES=(0 1 2 3 4); fi
if [[ "${ACTION}" == "speed" ]]; then OPTIONS=(1 2 3 4); VALUES=(1 2 3 4); fi
if [[ "${ACTION}" == "vvane" ]]; then OPTIONS=(1 2 3 4 swing); VALUES=(1 2 3 4 10); fi
if [[ "${ACTION}" == "hvane" ]]; then OPTIONS=(1 2 3 4 swing); VALUES=(1 2 3 4 10); fi
if [[ "${ACTION}" == "setpoint" ]]; then
if [ "${DO}" == "" ]; then
echo "value: 180 till 300 (18.0 till 30.0 degree C)"
exit 1
else
VALUE=$DO;
fi
fi
fi
#pseudo: now select the proper value based on the action
if [ "${OPTIONS}" != "" ]; then
FOUND=0
for i in "${!OPTIONS[@]}"
do
if [ "${OPTIONS[${i}]}" == "${DO}" ]; then
FOUND=1
VALUE=${VALUES[${i}]}
fi
done
if [ ${FOUND} -eq 0 ]; then
echo "available [${ACTION}] options: ${OPTIONS[@]}"
exit 1
fi
fi
#-------------------------------------
COOKIE=$(mktemp)
#pseudo: login
LOGIN_RESPONSE=$(mktemp)
LOGIN_ERROR=$(mktemp)
wget --save-cookies=${COOKIE} \
--keep-session-cookies \
--post-data="{\"command\":\"login\",\"data\":{\"username\":\"${AIRCO_USER}\",\"password\":\"${AIRCO_PASSWORD}\"}}" \
--output-document=${LOGIN_RESPONSE} \
--header="Content-Type: application/json" \
--header="Accept: application/json" \
--tries=3 \
--timeout=30 \
http://${AIRCO_IP}/api.cgi 2> ${LOGIN_ERROR}
LOGIN_RC=$?
if [ "${LOGIN_RC}" -ne 0 ]; then
cat ${LOGIN_ERROR}|stderr
EXIT=1
fi
if [ "$(grep -c '"success":true' ${LOGIN_RESPONSE})" -ne 1 ]; then
echo "something went wrong while logging in"|stderr
echo "response: $(cat ${LOGIN_RESPONSE})"|stderr
EXIT=1
fi
#pseudo: get sessionID from login
SESSION_ID=$(awk -F '"sessionID":"' '{print $2}' ${LOGIN_RESPONSE}|awk -F '"' '{print $1}')
#---------------------------------
if [ "${SESSION_ID}" != "" ]; then
ACTION_RESPONSE=$(mktemp)
ACTION_ERROR=$(mktemp)
if [ "${DIRECTION}" == "set" ]; then
POST_DATA="{\"command\":\"setdatapointvalue\",\"data\":{\"sessionID\":\"${SESSION_ID}\",\"uid\":${WORK_UID},\"value\":${VALUE}}}"
else
POST_DATA="{\"command\":\"getdatapointvalue\",\"data\":{\"sessionID\":\"${SESSION_ID}\",\"uid\":${WORK_UID}}}"
fi
wget --load-cookies=${COOKIE} \
--post-data="${POST_DATA}" \
--output-document=${ACTION_RESPONSE} \
--header="Content-Type: application/json" \
--header="Accept: application/json" \
--tries=3 \
--timeout=30 \
http://${AIRCO_IP}/api.cgi 2> ${ACTION_ERROR}
ACTION_RC=$?
if [ "${ACTION_RC}" -ne 0 ]; then
cat ${ACTION_ERROR}|stderr
EXIT=1
fi
if [ "$(grep -c '"success":true' ${ACTION_RESPONSE})" -eq 1 ]; then
if [ "${DIRECTION}" == "set" ]; then
echo "saved";
else
RESPONSE_VALUE=$(awk -F ',"value":' '{print $2}' ${ACTION_RESPONSE}|awk -F ',"status"' '{print $1}')
#sed 's/\"//g'
echo "${RESPONSE_VALUE}"
fi
else
echo "${DIRECTION} failed"|stderr
echo "response: $(cat ${ACTION_RESPONSE})"|stderr
EXIT=1
fi
#end if SESSION_ID
fi
#---------------------------------------------
#cleanup
if [ -f "${COOKIE}" ]; then rm ${COOKIE}; fi
if [ -f "${LOGIN_RESPONSE}" ]; then rm ${LOGIN_RESPONSE}; fi
if [ -f "${LOGIN_ERROR}" ]; then rm ${LOGIN_ERROR}; fi
if [ -f "${ACTION_RESPONSE}" ]; then rm ${ACTION_RESPONSE}; fi
if [ -f "${ACTION_ERROR}" ]; then rm ${ACTION_ERROR}; fi
exit ${EXIT}
...