NEWS
Daikin Altherma 3
-
@armilar Danke das hat schon mal funktioniert.
Bei Blockley bin ich grade noch etwas Unsicher ob das wirklich funktioniert. Wenn ich das Skript neu starte komm da extrem lange Fehlermeldung und es werden auch keine Daten in den Ordner geschrieben. Den Namen von dem Ordner bzw. Pfad hab ich angepasst.
Wird das Sprit nur zu bestimmten Zeiten oder ausgeführt?
-
Immer wenn sich Werte ändern (ist ein Trigger).
Da müssen im Blockly Werte (Pfade) angepasst werden. Deine UUID wird sicherlich anders lauten und je nach Einstellung der Altherma wird sie andere Einträge oben in der Liste benötigen... Sonst sende mal kurz die Objekte mit geöffnenten Consumtion Data
Bei mir so:
und etwas tiefer:
EDIT:
Das wäre im Blockly dieser Bereich: -
Wenn ich das Richtig sehe sollte das so passen, oder hab ich was übersehen?
-
sieht gut aus... Welche Fehler kommen denn?
Da die Funktion in einem Trigger arbeitet, müsstet du bis zur nächsten Übermittlung warten oder den
lastUpdateReceived kurz ändern...
-
@armilar Eigentlich sollte der getigert sein.
Ich hab jetzt das Skript mal neu gestartet dann kommt das alles:
15.10.2023, 16:43:18.805 [silly]: admin.0 (1713) Objects user redis pmessage */cfg.o.script.js.common.Heizung.Heizung_1:{"common":{"name":"Heizung 1","expert":true,"engineType":"Blockly","engine":"system.adapter.javascript.0","source":"var ID, Init, Name, Einheit, Debug, Debug2, Divider, Adapter_Instance, Onnecta_UUID, Daikin_Part, Stunden, Wochentage, Monate, i, Daikin_Device, DaikinDeviceDailyEnergy, Summe, j, Aktueller_Wert, idDP, DaikinDeviceWeeklyEnergy, DaikinDeviceMonthlyEnergy;\n\n// Datenpunkt Typ Zahl erzeugen\nasync function newNumberDP(ID, Init, Name, Einheit) {\n createState(ID, Init, {\n type: 'number',\n name: Name,\n unit: Einheit,\n });\n}\n\n// Datenpunkt Typ Zeichenkette erzeugen\nasync function newStringDP(ID, Init, Name) {\n createState(ID, Init, {type: 'string', name: Name});\n}\n\n// Datenpunkt Typ Logikwert erzeugen\nasync function newBoolDP(ID, Name) {\n createState(ID, false, {type: 'boolean', name: Name});\n}\n\n// Beschreibe diese Funktion …\nasync function kw_ermitteln() {\n var date = new Date();\r\n var currentThursday = new Date(date.getTime() +(3-((date.getDay()+6) % 7)) * 86400000);\r\n var yearOfThursday = currentThursday.getFullYear();\r\n var firstThursday = new Date(new Date(yearOfThursday,0,4).getTime() +(3-((new Date(yearOfThursday,0,4).getDay()+6) % 7)) * 86400000);\r\n var weekNumber = Math.floor(1 + 0.5 + (currentThursday.getTime() - firstThursday.getTime()) / 86400000/7);\r\n return (weekNumber);\n}\n\n\nDebug = false;\nDebug2 = false;\nDivider = '========================================================';\nAdapter_Instance = 'daikin-cloud.0';\n// aus den Objektdaten anpassen!!!\nOnnecta_UUID = 'ed71e66e-f3ef-43b1-b3df-d0f00ad1c304';\n// ggfs. anpassen, wenn andere Bezeichner\nDaikin_Part = ['domesticHotWaterTank', 'climateControlMainZone'];\n// Onnecta Stunden (für d-raw)\nStunden = ['00:00 - 02:00', '02:00 - 04:00', '04:00 - 06:00', '06:00 - 08:00', '08:00 - 10:00', '10:00 - 12:00', '12:00 - 14:00', '14:00 - 16:00', '16:00 - 18:00', '18:00 - 20:00', '20:00 - 22:00', '22:00 - 00:00'];\n// Onnecta Wochentage (für w-raw)\nWochentage = ['01-Monday', '02-Tuesday', '03-Wednesday', '04-Thursday', '05-Friday', '06-Saturday', '07-Sunday'];\n// Onnecta Monate (für m-raw)\nMonate = ['01-January', '02-February', '03-March', '04-April', '05-May', '06-June', '07-July', '08-August', '09-September', '10-October', '11-November', '12-December'];\n// Triggern, wenn der Adapter neue Daten erhält\non({ id: [].concat([Adapter_Instance,Onnecta_UUID,'.lastUpdateReceived'].join('')), change: 'ne' }, async (obj) => {\n let value = obj.state.val;\n let oldValue = obj.oldState.val;\n for (var i_index in Daikin_Part) {\n i = Daikin_Part[i_index];\n // ioBroker-Device zusammensetzen\n Daikin_Device = [Adapter_Instance,Onnecta_UUID,'.',i,'.consumptionData.electrical.heating.'].join('');\n if (Debug) {\n console.log((['============= Device: ',i,' ============='].join('')));\n }\n // Einlesen der tagesaktuellen Verbräuche\n // Datenpunkt Inhalt\n if (Debug2) {\n console.log(getState((String(Daikin_Device) + 'd-raw')).val);\n }\n DaikinDeviceDailyEnergy = (function () { try { return JSON.parse(getState((String(Daikin_Device) + 'd-raw')).val); } catch (e) { return {}; }})();\n if (Debug2) {\n console.log(Divider);\n }\n if (Debug) {\n console.log(('--- tagesaktuelle Verbrauchs-Werte (heute) --- ' + String(formatDate(new Date(), 'DD.MM.YYYY'))));\n }\n // 13 - 24 ist der aktuelle Tag (heute)\n // Es werden immer 2 Stunden geklammert\n Summe = 0;\n for (j = 13; j <= 24; j++) {\n Aktueller_Wert = DaikinDeviceDailyEnergy[(j - 1)];\n if (Aktueller_Wert == null) {\n Aktueller_Wert = 0;\n }\n idDP = ['0_userdata.0.DaikinEnergyConsumption.',Onnecta_UUID,'.',i,'.Today.',Stunden[((j - 12) - 1)]].join('');\n await newNumberDP(idDP, Aktueller_Wert, Stunden[((j - 12) - 1)], 'kWh');\n setStateDelayed(idDP, Aktueller_Wert, false, parseInt(((0) || '').toString(), 10), false);\n if (Debug) {\n console.log(([Stunden[((j - 12) - 1)],' - ',Aktueller_Wert,' kWh'].join('')));\n }\n Summe = Summe + Aktueller_Wert;\n }\n idDP = ['0_userdata.0.DaikinEnergyConsumption.',Onnecta_UUID,'.',i,'.Total.Today'].join('');\n await newNumberDP(idDP, Summe, 'Total Today', 'kWh');\n setStateDelayed(idDP, Summe, false, parseInt(((0) || '').toString(), 10), false);\n if (Debug) {\n console.log((['Summe Verbräuche (heute): ',Summe,' kWh'].join('')));\n }\n if (Debug2) {\n console.log(Divider);\n }\n if (Debug) {\n console.log(('--- Verbrauchs-Werte (gestern) --- ' + String(formatDate(getDateObject(/* time calculation */ ((dateTime) => { const ts = (typeof dateTime === 'object' ? dateTime.getTime() : dateTime); return ts - ((1) * 86400000); })((new Date().getTime()))), \"DD.MM.YYYY\"))));\n }\n // 1 - 12 ist der Vortag (gestern)\n // Es werden immer 2 Stunden geklammert\n Summe = 0;\n for (j = 1; j <= 12; j++) {\n Aktueller_Wert = DaikinDeviceDailyEnergy[(j - 1)];\n if (Aktueller_Wert == null) {\n Aktueller_Wert = 0;\n }\n idDP = ['0_userdata.0.DaikinEnergyConsumption.',Onnecta_UUID,'.',i,'.Yesterday.',Stunden[(j - 1)]].join('');\n await newNumberDP(idDP, Aktueller_Wert, Stunden[(j - 1)], 'kWh');\n setStateDelayed(idDP, Aktueller_Wert, false, parseInt(((0) || '').toString(), 10), false);\n if (Debug) {\n console.log(([Stunden[(j - 1)],' - ',Aktueller_Wert,' kWh'].join('')));\n }\n Summe = Summe + Aktueller_Wert;\n }\n idDP = ['0_userdata.0.DaikinEnergyConsumption.',Onnecta_UUID,'.',i,'.Total.Yesterday'].join('');\n await newNumberDP(idDP, Summe, 'Total Yesterday', 'kWh');\n setStateDelayed(idDP, Summe, false, parseInt(((0) || '').toString(), 10), false);\n if (Debug) {\n console.log((['Summe Verbräuche (gestern): ',Summe,' kWh'].join('')));\n }\n if (Debug2) {\n console.log(Divider);\n }\n // Einlesen der wöchentlichen Verbräuche\n // Datenpunkt Inhalt\n if (Debug2) {\n console.log(getState((String(Daikin_Device) + 'w-raw')).val);\n }\n DaikinDeviceWeeklyEnergy = (function () { try { return JSON.parse(getState((String(Daikin_Device) + 'w-raw')).val); } catch (e) { return {}; }})();\n if (Debug2) {\n console.log(Divider);\n }\n if (Debug) {\n console.log(('--- wöchentliche Verbrauchs-Werte (aktuelle Woche) --- ' + String('KW: ' + String(await kw_ermitteln()))));\n }\n // 8-14 sind die Tage der aktuellen Woche\n Summe = 0;\n for (j = 8; j <= 14; j++) {\n Aktueller_Wert = DaikinDeviceWeeklyEnergy[(j - 1)];\n if (Aktueller_Wert == null) {\n Aktueller_Wert = 0;\n }\n idDP = ['0_userdata.0.DaikinEnergyConsumption.',Onnecta_UUID,'.',i,'.ThisWeek.',Wochentage[((j - 7) - 1)]].join('');\n await newNumberDP(idDP, Aktueller_Wert, Wochentage[((j - 7) - 1)], 'kWh');\n setStateDelayed(idDP, Aktueller_Wert, false, parseInt(((0) || '').toString(), 10), false);\n if (Debug) {\n console.log(([Wochentage[((j - 7) - 1)],' - ',Aktueller_Wert,' kWh'].join('')));\n }\n Summe = Summe + Aktueller_Wert;\n }\n idDP = ['0_userdata.0.DaikinEnergyConsumption.',Onnecta_UUID,'.',i,'.Total.ThisWeek'].join('');\n await newNumberDP(idDP, Summe, 'Total This Week', 'kWh');\n setStateDelayed(idDP, Summe, false, parseInt(((0) || '').toString(), 10), false);\n if (Debug) {\n console.log((['Summe Verbräuche (aktuelle Woche): ',Summe,' kWh'].join('')));\n }\n if (Debug2) {\n console.log(Divider);\n }\n // 1-7 sind die Tage der Vorwoche\n if (Debug) {\n console.log(('--- wöchentliche Verbrauchs-Werte (letzte Woche) --- ' + String('KW: ' + String(await kw_ermitteln() - 1))));\n }\n Summe = 0;\n for (j = 1; j <= 7; j++) {\n Aktueller_Wert = DaikinDeviceWeeklyEnergy[(j - 1)];\n if (Aktueller_Wert == null) {\n Aktueller_Wert = 0;\n }\n idDP = ['0_userdata.0.DaikinEnergyConsumption.',Onnecta_UUID,'.',i,'.LastWeek.',Wochentage[(j - 1)]].join('');\n await newNumberDP(idDP, Aktueller_Wert, Wochentage[(j - 1)], 'kWh');\n setStateDelayed(idDP, Aktueller_Wert, false, parseInt(((0) || '').toString(), 10), false);\n if (Debug) {\n console.log(([Wochentage[(j - 1)],' - ',Aktueller_Wert,' kWh'].join('')));\n }\n Summe = Summe + Aktueller_Wert;\n }\n idDP = ['0_userdata.0.DaikinEnergyConsumption.',Onnecta_UUID,'.',i,'.Total.LastWeek'].join('');\n await newNumberDP(idDP, Summe, 'Total Last Week', 'kWh');\n setStateDelayed(idDP, Summe, false, parseInt(((0) || '').toString(), 10), false);\n if (Debug) {\n console.log((['Summe Verbräuche (Vorwoche): ',Summe,' kWh'].join('')));\n }\n if (Debug2) {\n console.log(Divider);\n }\n // Einlesen der monatlichen Verbräuche\n if (Debug) {\n if (Debug2) {\n console.log(getState((String(Daikin_Device) + 'm-raw')).val);\n }\n }\n DaikinDeviceMonthlyEnergy = (function () { try { return JSON.parse(getState((String(Daikin_Device) + 'm-raw')).val); } catch (e) { return {}; }})();\n if (Debug2) {\n console.log(Divider);\n }\n if (Debug) {\n console.log(('--- monatliche Verbrauchs-Werte (aktuelles Jahr) --- ' + String((new Date().getFullYear()))));\n }\n // 13-24 sind die Monate des aktuellen Jahres\n Summe = 0;\n for (j = 13; j <= 24; j++) {\n Aktueller_Wert = DaikinDeviceMonthlyEnergy[(j - 1)];\n if (Aktueller_Wert == null) {\n Aktueller_Wert = 0;\n }\n idDP = ['0_userdata.0.DaikinEnergyConsumption.',Onnecta_UUID,'.',i,'.ThisYear.',Monate[((j - 12) - 1)]].join('');\n await newNumberDP(idDP, Aktueller_Wert, Monate[((j - 12) - 1)], 'kWh');\n setStateDelayed(idDP, Aktueller_Wert, false, parseInt(((0) || '').toString(), 10), false);\n if (Debug) {\n console.log(([Monate[((j - 12) - 1)],' - ',Aktueller_Wert,' kWh'].join('')));\n }\n Summe = Summe + Aktueller_Wert;\n }\n idDP = ['0_userdata.0.DaikinEnergyConsumption.',Onnecta_UUID,'.',i,'.Total.ThisYear'].join('');\n await newNumberDP(idDP, Summe, 'Total This Year', 'kWh');\n setStateDelayed(idDP, Summe, false, parseInt(((0) || '').toString(), 10), false);\n if (Debug) {\n console.log((['Summe Verbräuche (aktuelles Jahr): ',Summe,' kWh'].join('')));\n }\n if (Debug2) {\n console.log(Divider);\n }\n if (Debug) {\n console.log(('--- monatliche Verbrauchs-Werte (Vorjahr) --- ' + String((new Date().getFullYear()) - 1)));\n }\n // 1-12 sind die Monate des Vorjahres\n Summe = 0;\n for (j = 1; j <= 12; j++) {\n Aktueller_Wert = DaikinDeviceMonthlyEnergy[(j - 1)];\n if (Aktueller_Wert == null) {\n Aktueller_Wert = 0;\n }\n idDP = ['0_userdata.0.DaikinEnergyConsumption.',Onnecta_UUID,'.',i,'.LastYear.',Monate[(j - 1)]].join('');\n await newNumberDP(idDP, Aktueller_Wert, Monate[(j - 1)], 'kWh');\n setStateDelayed(idDP, Aktueller_Wert, false, parseInt(((0) || '').toString(), 10), false);\n if (Debug) {\n console.log(([Monate[(j - 1)],' - ',Aktueller_Wert,' kWh'].join('')));\n }\n Summe = Summe + Aktueller_Wert;\n }\n idDP = ['0_userdata.0.DaikinEnergyConsumption.',Onnecta_UUID,'.',i,'.Total.LastYear'].join('');\n await newNumberDP(idDP, Summe, 'Total Last Year', 'kWh');\n setStateDelayed(idDP, Summe, false, parseInt(((0) || '').toString(), 10), false);\n if (Debug) {\n console.log((['Summe Verbräuche (Vorjahr): ',Summe,' kWh'].join('')));\n }\n if (Debug2) {\n console.log(Divider);\n }\n }\n});\n\n//JTNDeG1sJTIweG1sbnMlM0QlMjJodHRwcyUzQSUyRiUyRmRldmVsb3BlcnMuZ29vZ2xlLmNvbSUyRmJsb2NrbHklMkZ4bWwlMjIlM0UlM0N2YXJpYWJsZXMlM0UlM0N2YXJpYWJsZSUyMGlkJTNEJTIyOW8zWipGWWZMeDRqJTJDWi5ZUkdqSCUyMiUzRUlEJTNDJTJGdmFyaWFibGUlM0UlM0N2YXJpYWJsZSUyMGlkJTNEJTIyR19TbSU1RGNZJTNBSSUyQ0clN0NNZlZtSGslMkNGJTI ——Hier kommt eine Seitenlange Buchstabenfolge die die antwortmöglich vom Forum sprengt—— NDdmFsdWUlMjBuYW1lJTNEJTIyVkFMVUUlMjIlM0UlM0NibG9jayUyMHR5cGUlM0QlMjJtYXRoX251bWJ=","debug":false,"verbose":false,"enabled":true},"type":"script","from":"system.adapter.admin.0","user":"system.user.admin","ts":1697380998708,"_id":"script.js.common.Heizung.Heizung_1","acl":{"object":1636,"owner":"system.user.admin","ownerGroup":"system.group.administrator"}} 15.10.2023, 16:43:18.913 [info ]: javascript.0 (24526) Stop script script.js.common.Heizung.Heizung_1 15.10.2023, 16:43:18.934 [silly]: admin.0 (1713) States system redis pmessage io.log.system.adapter.admin.0/io.log.system.adapter.admin.0:{"severity":"info","ts":1697380998913,"message":"javascript.0 (24526) Stop script script.js.common.Heizung.Heizung_1","from":"javascript.0","_id":30841330} 15.10.2023, 16:43:18.978 [info ]: javascript.0 (24526) Start javascript script.js.common.Heizung.Heizung_1 15.10.2023, 16:43:19.005 [silly]: admin.0 (1713) States system redis pmessage io.log.system.adapter.admin.0/io.log.system.adapter.admin.0:{"severity":"info","ts":1697380998978,"message":"javascript.0 (24526) Start javascript script.js.common.Heizung.Heizung_1","from":"javascript.0","_id":30841331} 15.10.2023, 16:43:19.000 [info ]: javascript.0 (24526) script.js.common.Heizung.Heizung_1: registered 1 subscription, 0 schedules, 0 messages, 0 logs and 0 file subscriptions 15.10.2023, 16:43:19.009 [silly]: admin.0 (1713) States system redis pmessage io.log.system.adapter.admin.0/io.log.system.adapter.admin.0:{"severity":"info","ts":1697380999000,"message":"javascript.0 (24526) script.js.common.Heizung.Heizung_1: registered 1 subscription, 0 schedules, 0 messages, 0 logs and 0 file subscriptions","from":"javascript.0","_id":30841332}
-
hast du da irgendeine interessante Protokollierung gesetzt?
Ich sehe nur [silly] und [info] --> kein [warn] oder [error]
Ist mir ehrlich gesagt sehr suspekt, warum dein JS-Adapter so redselig ist, da ja debug und verbose ausgeschaltet sind...
-
@armilar nein hab ich nicht.
-
-
@armilar Wieso sollte bei mir auch irrgendwas einfach mal funktionieren....
-
Wenn ich das aber richtig sehe, dann sind das eher Protokollierungen vom admin-Adapter die da quer schießen...
15.10.2023, 16:43:18.913 [info ]: javascript.0 (24526) Stop script script.js.common.Heizung.Heizung_1 15.10.2023, 16:43:18.978 [info ]: javascript.0 (24526) Start javascript script.js.common.Heizung.Heizung_1 15.10.2023, 16:43:19.000 [info ]: javascript.0 (24526) script.js.common.Heizung.Heizung_1: registered 1 subscription, 0 schedules, 0 messages, 0 logs and 0 file subscriptions
Wenn ich das mal auf den JS-Adapter reduziere, dann ist alles okay
Was hast du denn für eine Admin-Adapter Version?
-
v6.10.1
Eine aktuellere bekomme ich auch nicht angezeitgt.js-controller ist 5.0.12
node.js 18.17.1Ich weiß nicht ob das wichtig ist, aber bevor du jedesmal fragen mußt. Ich bin ja schon extrem froh über deine Hilfe. Ganz großes DANKE dafür.
-
Kann es sein, dass bei dir etwas anderes steht als "info"
EDIT:
sehe schon. Dein System ist aktuell...kleiner Tipp (bei dir hängt nodeJS fest):
https://forum.iobroker.net/topic/69067/neuer-befehl-iob-nodejs-update?page=1 -
Ja, da steht Silly. Ich weiß aber 1. nicht wieso und 2. auch nciht wie ich das wieder ändern kann.
-
der Stift hinter dem Info...
"info" auswählen und dein Log läuft nicht mehr über
naja die Instanz durchstarten kann auch nicht schaden...
-
Ahhh ist wieder auf info geändert.
Wegen dem NodeJS werd ich mal den anderen Threat durchgucken. Und sonst ggf. in ein paar tagen ein neues Image vom IOB ziehen, da alles im Docker läuft.Aber mit dem eigentlich Prolem hat das alles nicht zun, oder?
-
nein, ich denke wenn du den Datenpunkt jetzt änderst werden auch keine Zeilen mehr auftauchen...
Die Frage die sich mir stellt ist, werden die Datenpunkte erstellt und wenn ja - was steht drin...
Da sollte so etwas entstehen unter 0_userdata:
-
Nein, es wird leider nichts erstellt. Ich hab extra nochmal den datenpunkt geändert. aber leider ohne erfolg.
-
hmm - oben im Script gibt es zwei Debug-Parameter
Stelle die mal auf "true"... Dann wird das Script mehr erzählen...
-
Irgend wie will das Skript nichts erzählen...
-
dann kann es ja auch keine Änderungen Triggern.
Zum Testen mal den DP beschreibbar machen:
oder auf ein Update der Cloud warten...
oder mal die "grüne" Schleife aus dem Trigger rausziehen:
Dann sollten Daten auch mit Script-Start/Script-Aktualisierung verarbeitet werden