NEWS
JavaScript startet nach update von CSV-parse nicht mehr
-
Auf String hatte ich das schon gesetzt...deshalb blieben aus meiner leienhaften Sicht nur noch die Leerzeichen!
Das mit dem trim hat schon mal div. Meldungen elemeniert!!! Lieben Dank.Nun bleibt noch dieses ==>
07:24:27.109 info javascript.0 Stop script script.js.common.HMT.Zemo-CSV-in-Objekte 07:24:27.118 info javascript.0 Start javascript script.js.common.HMT.Zemo-CSV-in-Objekte 07:24:27.118 info javascript.0 script.js.common.HMT.Zemo-CSV-in-Objekte: registered 0 subscriptions and 1 schedule 07:25:00.026 info javascript.0 script.js.common.HMT.Zemo-CSV-in-Objekte: Start ZEMO Daten import alle 5 Minuten ==> 07:25:00.027 info javascript.0 script.js.common.HMT.Zemo-CSV-in-Objekte: <== Ende ZEMO Daten import 07:25:00.179 warn javascript.0 at Object.createState (script.js.common.HMT.Zemo-CSV-in-Objekte:152:13) 07:25:00.180 warn javascript.0 at Object.createState (script.js.common.HMT.Zemo-CSV-in-Objekte:152:13) 07:25:00.180 warn javascript.0 at Object.createState (script.js.common.HMT.Zemo-CSV-in-Objekte:152:13) 07:25:00.181 warn javascript.0 at Object.createState (script.js.common.HMT.Zemo-CSV-in-Objekte:152:13) 07:25:00.182 warn javascript.0 at Object.createState (script.js.common.HMT.Zemo-CSV-in-Objekte:152:13) 07:25:00.183 warn javascript.0 at Object.createState (script.js.common.HMT.Zemo-CSV-in-Objekte:152:13) 07:25:00.183 warn javascript.0 at Object.createState (script.js.common.HMT.Zemo-CSV-in-Objekte:152:13) 07:25:00.184 warn javascript.0 at Object.createState (script.js.common.HMT.Zemo-CSV-in-Objekte:152:13) 07:25:00.184 warn javascript.0 at Object.createState (script.js.common.HMT.Zemo-CSV-in-Objekte:152:13) 07:25:00.185 warn javascript.0 at Object.createState (script.js.common.HMT.Zemo-CSV-in-Objekte:152:13) 07:25:00.185 warn javascript.0 at Object.createState (script.js.common.HMT.Zemo-CSV-in-Objekte:152:13) 07:25:00.186 warn javascript.0 at Object.createState (script.js.common.HMT.Zemo-CSV-in-Objekte:152:13) 07:25:00.186 warn javascript.0 at Object.createState (script.js.common.HMT.Zemo-CSV-in-Objekte:152:13) 07:25:00.186 warn javascript.0 at Object.createState (script.js.common.HMT.Zemo-CSV-in-Objekte:152:13) 07:25:00.187 warn javascript.0 at Object.createState (script.js.common.HMT.Zemo-CSV-in-Objekte:152:13) 07:25:00.187 warn javascript.0 at Object.createState (script.js.common.HMT.Zemo-CSV-in-Objekte:152:13) 07:25:00.188 warn javascript.0 at Object.createState (script.js.common.HMT.Zemo-CSV-in-Objekte:152:13) 07:25:00.188 warn javascript.0 at Object.createState (script.js.common.HMT.Zemo-CSV-in-Objekte:152:13) 07:25:00.189 warn javascript.0 at Object.createState (script.js.common.HMT.Zemo-CSV-in-Objekte:152:13) 07:25:00.189 warn javascript.0 at Object.createState (script.js.common.HMT.Zemo-CSV-in-Objekte:152:13) 07:25:00.190 warn javascript.0 at Object.createState (script.js.common.HMT.Zemo-CSV-in-Objekte:152:13) 07:27:21.759 info javascript.0 Stop script script.js.common.HMT.Zemo-CSV-in-ObjekteDas Script sieht mittlerweile so aus ==>
schedule('*/5 * * * *', () => { console.log("Start ZEMO Daten import alle 5 Minuten ==>"); const input = require('fs').readFileSync('/mnt/hmtw2k-d/ZEMO-MDE/Zemo-Anzeige/ioBroker/ioBroker-Zemo.csv').toString(); const Zeilen = input.split('\n'); for (const Zeile of Zeilen) { const Terminialnr = parseFloat(Zeile.split(';')[0]); if(!Terminialnr) continue; const Menge_1 = parseInt(Zeile.split(';')[1]); const Menge_2 = parseInt(Zeile.split(';')[2]); const Zeit = Zeile.split(';')[3]; const Menge_Total = parseInt(Zeile.split(';')[4]); const Auftragsnummer = parseInt(Zeile.split(';')[5]); const HubIst = parseFloat(Zeile.split(';')[6]); const HubSoll = parseFloat(Zeile.split(';')[7]); const Kostenstelle = parseInt(Zeile.split(';')[8]); const Maschinennr = parseInt(Zeile.split(';')[9]); const Maschinenname = Zeile.split(';')[10]; const HubStatus = parseInt(Zeile.split(';')[11]); const StatusAktuell = Zeile.split(';')[12].trim(); const Artikelbezeichnung = Zeile.split(';')[13]; createState('Zemo.'+Terminialnr+'.'+'Terminialnr', {name: 'Terminialnummer', type: 'number', role: 'value'}); createState('Zemo.'+Terminialnr+'.'+'Menge_1', {name: 'Menge 1', desc: 'Menge 1', type: 'number', role: 'value'}); createState('Zemo.'+Terminialnr+'.'+'Menge_2', {name: 'Menge 2', desc: 'Menge 2', type: 'number', role: 'value'}); createState('Zemo.'+Terminialnr+'.'+'Zeit', {name: 'Zeit', desc: 'Zeit', type: 'string', role: 'value'}); createState('Zemo.'+Terminialnr+'.'+'Menge_Total', {name: 'Menge Total', desc: 'Menge Total', type: 'number', role: 'value'}); createState('Zemo.'+Terminialnr+'.'+'Auftragsnummer', {name: 'Auftragsnummer', desc: 'Auftragsnummer', type: 'number', role: 'value'}); createState('Zemo.'+Terminialnr+'.'+'HubIst', {name: 'Hub Ist', desc: 'Hub Ist', type: 'number', role: 'value'}); createState('Zemo.'+Terminialnr+'.'+'HubSoll', {name: 'Hub Soll', desc: 'Hub Soll', type: 'number', role: 'value'}); createState('Zemo.'+Terminialnr+'.'+'Kostenstelle', {name: 'Kostenstelle', desc: 'Kostenstelle', type: 'number', role: 'value'}); createState('Zemo.'+Terminialnr+'.'+'Maschinennr', {name: 'Maschinennummer', desc: 'Maschinennummer', type: 'number', role: 'value'}); createState('Zemo.'+Terminialnr+'.'+'Maschinenname', {name: 'Maschinenname', desc: 'Maschinenname', type: 'string', role: 'value'}); createState('Zemo.'+Terminialnr+'.'+'HubStatus', {name: 'HubStatus', desc: 'HubStatus', type: 'string', role: 'value'}); createState('Zemo.'+Terminialnr+'.'+'StatusAktuell', {name: 'StatusAktuell', desc: 'Status Aktuell', type: 'string', role: 'value'}); createState('Zemo.'+Terminialnr+'.'+'Artikelbezeichnung', {name: 'Artikelbezeichnung', desc: 'Artikelbezeichnung', type: 'string', role: 'value'} ,() => { setState('Zemo.'+Terminialnr+'.'+'Terminialnr',Terminialnr, true); setState('Zemo.'+Terminialnr+'.'+'Menge_1',Menge_1, true); sendTo('history.0', 'enableHistory', { id: 'javascript.0.Zemo.'+Terminialnr+'.'+'Menge_1', options: { changesOnly: true, debounce: 10000, retention: 31536000, maxLength: 360, } }, function (result) { if (result.error) { console.log(result.error); } }); setState('Zemo.'+Terminialnr+'.'+'Menge_2',Menge_2, true); sendTo('history.0', 'enableHistory', { id: 'javascript.0.Zemo.'+Terminialnr+'.'+'Menge_2', options: { changesOnly: true, debounce: 10000, retention: 31536000, maxLength: 360, } }, function (result) { if (result.error) { console.log(result.error); } }); setState('Zemo.'+Terminialnr+'.'+'Zeit',Zeit, true); sendTo('history.0', 'enableHistory', { id: 'javascript.0.Zemo.'+Terminialnr+'.'+'Zeit', options: { changesOnly: true, debounce: 10000, retention: 31536000, maxLength: 360, } }, function (result) { if (result.error) { console.log(result.error); } }); setState('Zemo.'+Terminialnr+'.'+'Menge_Total',Menge_Total, true); sendTo('history.0', 'enableHistory', { id: 'javascript.0.Zemo.'+Terminialnr+'.'+'Menge_Total', options: { changesOnly: true, debounce: 10000, retention: 31536000, maxLength: 360, } }, function (result) { if (result.error) { console.log(result.error); } }); setState('Zemo.'+Terminialnr+'.'+'Auftragsnummer',Auftragsnummer, true); sendTo('history.0', 'enableHistory', { id: 'javascript.0.Zemo.'+Terminialnr+'.'+'Auftragsnummer', options: { changesOnly: true, debounce: 10000, retention: 31536000, maxLength: 360, } }, function (result) { if (result.error) { console.log(result.error); } }); setState('Zemo.'+Terminialnr+'.'+'HubIst',HubIst, true); sendTo('history.0', 'enableHistory', { id: 'javascript.0.Zemo.'+Terminialnr+'.'+'HubIst', options: { changesOnly: true, debounce: 10000, retention: 31536000, maxLength: 360, } }, function (result) { if (result.error) { console.log(result.error); } }); setState('Zemo.'+Terminialnr+'.'+'HubSoll',HubSoll, true); sendTo('history.0', 'enableHistory', { id: 'javascript.0.Zemo.'+Terminialnr+'.'+'HubSoll', options: { changesOnly: true, debounce: 10000, retention: 31536000, changesRelogInterval: 300000, maxLength: 360, } }, function (result) { if (result.error) { console.log(result.error); } }); setState('Zemo.'+Terminialnr+'.'+'Kostenstelle',Kostenstelle, true); setState('Zemo.'+Terminialnr+'.'+'Maschinennr',Maschinennr, true); setState('Zemo.'+Terminialnr+'.'+'Maschinenname',Maschinenname, true); setState('Zemo.'+Terminialnr+'.'+'HubStatus',HubStatus, true); sendTo('history.0', 'enableHistory', { id: 'javascript.0.Zemo.'+Terminialnr+'.'+'HubStatus', options: { changesOnly: true, debounce: 10000, retention: 31536000, maxLength: 360, } }, function (result) { if (result.error) { console.log(result.error); } }); setState('Zemo.'+Terminialnr+'.'+'StatusAktuell',StatusAktuell, true); sendTo('history.0', 'enableHistory', { id: 'javascript.0.Zemo.'+Terminialnr+'.'+'StatusAktuell', options: { changesOnly: true, debounce: 10000, retention: 31536000, maxLength: 360, } }, function (result) { if (result.error) { console.log(result.error); } }); setState('Zemo.'+Terminialnr+'.'+'Artikelbezeichnung',Artikelbezeichnung, true); sendTo('history.0', 'enableHistory', { id: 'javascript.0.Zemo.'+Terminialnr+'.'+'Artikelbezeichnung', options: { changesOnly: true, debounce: 10000, retention: 31536000, maxLength: 360, } }, function (result) { if (result.error) { console.log(result.error); } }); }); } console.log("<== Ende ZEMO Daten import"); });Den Status im History Adapter zu aktivieren lässt sich sicher eleganter lösen, aber hier fehlt mir noch das Wissen...
Aber jetzt die Frage:
Wenn ich Objekte lösche, wo Daten im History-Adapter sind, und das Script danach alle Objekte wieder anlegt, sind dann die Daten alle weg?! Oder wie wäre hier das bessere Vorgehen?! Auch, gibt es eine einfache Lösung wie ich die Objekte relativ einfach löschen kann?! Mehrere Markierungen funktionieren ja leider nicht.Evtl. sind dann die Fehlermeldungen aus dem Beginn dieses Posts erledigt :)
Danke das Du Dir die Mühe machst :) Viele neue Möglichkeiten ergeben sich nun :)
@Nobody28 Würde es eher unter Objekte hinten auf dem Schraubenschlüssel aktivieren, da kann man dann auch ein Alias festlegen (zumindest bei SQL, bei History bin ich mir nicht sicher), dass über das Löschen des Objektes hinaus existiert. Ansonsten gehen die History Daten (glaube ich) verloren.
Objekte löschen, wenn es mal so umfangreich ist und nur bei bestimmten Kriterien, geht das per Skript, ansonsten kannst du auch einen Channel markieren und alles darunterliegende wird gelöscht.