NEWS
Daikin Altherma 3
-
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
-
Ich hab da gefühl das das Skript dennoch nicht getriggert wird.
Wenn ich das ändere und den wert setzte passiert gar nichts.
Wenn ich die "grüße schleife" raus nehme und speiche bzw nei starte kommt das:
15.10.2023, 18:11:56.806 [info ]: javascript.0 (189) Stop script script.js.common.Heizung.Heizung_1 15.10.2023, 18:11:57.001 [info ]: javascript.0 (189) Start javascript script.js.common.Heizung.Heizung_1 15.10.2023, 18:11:57.045 [info ]: javascript.0 (189) script.js.common.Heizung.Heizung_1: ============= Device: domesticHotWaterTank ============= 15.10.2023, 18:11:57.051 [warn ]: javascript.0 (189) at script.js.common.Heizung.Heizung_1:62:17 15.10.2023, 18:11:57.052 [warn ]: javascript.0 (189) at script.js.common.Heizung.Heizung_1:254:3 15.10.2023, 18:11:57.065 [info ]: javascript.0 (189) script.js.common.Heizung.Heizung_1: null 15.10.2023, 18:11:57.086 [warn ]: javascript.0 (189) at script.js.common.Heizung.Heizung_1:64:68 15.10.2023, 18:11:57.087 [warn ]: javascript.0 (189) at script.js.common.Heizung.Heizung_1:64:146 15.10.2023, 18:11:57.087 [warn ]: javascript.0 (189) at script.js.common.Heizung.Heizung_1:254:3 15.10.2023, 18:11:57.088 [info ]: javascript.0 (189) script.js.common.Heizung.Heizung_1: ======================================================== 15.10.2023, 18:11:57.089 [info ]: javascript.0 (189) script.js.common.Heizung.Heizung_1: --- tagesaktuelle Verbrauchs-Werte (heute) --- 15.10.2023 15.10.2023, 18:11:57.104 [info ]: javascript.0 (189) script.js.common.Heizung.Heizung_1: registered 1 subscription, 0 schedules, 0 messages, 0 logs and 0 file subscriptions 15.10.2023, 18:11:57.107 [error]: javascript.0 (189) script.js.common.Heizung.Heizung_1: TypeError: Cannot read properties of null (reading '12') 15.10.2023, 18:11:57.121 [error]: javascript.0 (189) at script.js.common.Heizung.Heizung_1:75:45 15.10.2023, 18:11:57.122 [error]: javascript.0 (189) at script.js.common.Heizung.Heizung_1:254:3
Aber in den 0_Userdate wird dennoch nichts geschrieben.
-
stimmt, weil das Script mit einem TypeError aussteigt und den Rest nicht mehr verarbeitet...
Anscheinend greift das Script nicht auf die Daten zu. Der Pfad ist irgendwie nicht korrekt...
Oder als wären keine Daten im daikin-cloud.0.
-
OK.... und das bekomme ich wie raus?
ich hab jetzt grade mal iobroker Neu gestartet. zumindest in daikin-cloud.0.ed71e66e-f3ef-43b1-b3df-d0f00ad1c304 kann ich daten sehen.
Und neue Daten scheinen ja auch zu kommen. zumindest Laut zeitstempel. Oder sehe ich das falsch?