NEWS
javascript fehler nach update
-
Hallo,
ich steuere meine Velux Rollos mit der velux-klf-api,
gestern habe ich meinem iobroker mal allen updates gegönnt
und erhalte folgende Fehlermeldungen.javascript.0 2020-06-10 13:13:05.204 error (29393) Error: timeout GW_STATUS_REQUEST_CFM javascript.0 2020-06-10 13:13:05.204 error (29393) Error: timeout GW_STATUS_REQUEST_CFM javascript.0 2020-06-10 13:13:05.203 error (29393) An error happened which is most likely from one of your scripts, but the originating script could not be detected. javascript.0 2020-06-10 13:12:05.141 error at processTimers (internal/timers.js:492:7) javascript.0 2020-06-10 13:12:05.141 error at listOnTimeout (internal/timers.js:549:17) javascript.0 2020-06-10 13:12:05.141 error at Object.<anonymous> (/opt/iobroker/node_modules/iobroker.javascript/node_modules/velux-klf200-api/lib/net.js:169:19) javascript.0 2020-06-10 13:12:05.141 error (29393) Error: timeout GW_STATUS_REQUEST_CFM javascript.0 2020-06-10 13:12:05.140 error (29393) Error: timeout GW_STATUS_REQUEST_CFM javascript.0 2020-06-10 13:12:05.140 error (29393) An error happened which is most likely from one of your scripts, but the originating script could not be detected. javascript.0 2020-06-10 13:11:14.308 error at processTimers (internal/timers.js:492:7) javascript.0 2020-06-10 13:11:14.308 error at listOnTimeout (internal/timers.js:549:17) javascript.0 2020-06-10 13:11:14.308 error at Object.<anonymous> (/opt/iobroker/node_modules/iobroker.javascript/node_modules/velux-klf200-api/lib/net.js:169:19) javascript.0 2020-06-10 13:11:14.308 error (29393) Error: timeout GW_STATUS_REQUEST_CFM javascript.0 2020-06-10 13:11:14.307 error (29393) Error: timeout GW_STATUS_REQUEST_CFM javascript.0 2020-06-10 13:11:14.306 error (29393) An error happened which is most likely from one of your scripts, but the originating script could not be detected. javascript.0 2020-06-10 13:11:09.300 info (29393) script.js.Velux: Klf connected!
leider habe ich zu wenig Ahnung, aber vielleicht weiß jemand wie ich das beheben kann.
Das Script selbst funktioniert, ich kann meine Rollos steuern.Danke im voraus
-
-
@arteck said in javascript fehler nach update:
@Zeiss sagte in javascript fehler nach update:
velux-klf-api
zeigmal das script
'use strict' ; // Netzwerk const Ip = '192.168.2.89' const Passwort = '*************italicised text*' // WLAN Passwort const baseObjectPath = 'javascript.0.Velux.' const harmony = '1' const Rollos = { RolladenBuero: 0, RolladenWohnzimmer: 1, RolladenKueche: 2, RolladenEsszimmer: 3, RolladenSchlafzimmer: 4, RolladenGaestezimmer: 5, RolladenJulian: 6 } // Gruppen. All, SZ, .. are then names of states. Add new properties for more groups const groups = { All : Object.values(Rollos), // all IDs of shutters hinten: [Rollos.RolladenBuero, Rollos.RolladenKueche, Rollos.RolladenEsszimmer, Rollos.RolladenSchlafzimmer], // Hofseite vorne : [Rollos.RolladenWohnzimmer, Rollos.RolladenGaestezimmer], // Strasse } const All = Object.keys(Rollos) for(let shutter of All) { createState(baseObjectPath + 'shutter.' + shutter, 0, { name: 'shutter ' + shutter, type: 'number', min: 0, max: 100, unit: '%'}) } for(let key of Object.keys(groups)) { createState(baseObjectPath + 'groups.' + key, 0, { name: 'group ' + key, type: 'number', min: 0, max: 100, unit: '%'}) } const MaxNodeIdx = All.length; // 5 Rollos.. const Up = 0 // Rollo oben const Down = 0xc800 // Rollo unten const Stop = 0xD200 // Stopkommando // Variable var velux = require('velux-klf200-api') var Connected = false let Commands = {} var SessionId = 0 // Zustand der Rollos holen function GetState(shutters, sessionId) { if (Connected) { shutters = shutters || All log('checking shutters ' + JSON.stringify(shutters), 'debug') velux.sendCommand({ api: velux.API.GW_STATUS_REQUEST_REQ, sessionID: sessionId || 0, indexArrayCount: shutters.length, indexArray : shutters, statusType : 3 // Main Info }) } } // Callback fuer Positionsrueckmeldung velux.on('GW_STATUS_REQUEST_NTF', Status); function Status(data) { var Target = Math.round(100 - data.targetPosition.value) var Current = Math.round(100 - data.currentPosition.value) // aktuelle Position var Time = data.remainingTime // Restlaufzeit var Index = data.index // Node index var StatusType = data.statusType // Status Typ "Main Info" = 3 erwartet //console.log(JSON.stringify(data)) //console.log(Z[data.index] + ': Ziel ' + Target + ' Aktuell: ' + Current + ' Restlaufzeit :' + Time) if ( (StatusType === 3) && (Index >= 0) && (Index < MaxNodeIdx)) { var IdStrIst = baseObjectPath + 'shutter.' + Z[data.index] setState(IdStrIst, Current, true) } } // Callback Ende Job velux.on('GW_SESSION_FINISHED_NTF', JobFinished); function JobFinished(data) { log("EndCmd (" + data.sessionID+')', 'debug') let sessionKey = 'session_' + data.sessionID if (typeof Commands[sessionKey] !== 'undefined') { let shutters = Commands[sessionKey].shutters // get state after job finished GetState(shutters, data.sessionID) delete Commands[sessionKey] } } // Verbindung aufbauen function ConnectKlf() { if (! Connected) { Connected = true; velux.connect( Ip, {} ).then(()=>{ velux.login( Passwort ).then(()=>{ log("Klf connected!", 'info') Connected = true GetState(); }) }) .catch((err)=>{ log('connect error ' + JSON.stringify(err), 'error') Connected = false velux.end() }) } } function Rollo( Rollos, Val) { if ( Connected ) { return velux.sendCommand({ api: velux.API.GW_COMMAND_SEND_REQ, sessionID : ++SessionId, commandOriginator: 1, priorityLevel: 2, parameterActive: 1, functionalParameterMP: {rawValue : Val}, indexArrayCount: Rollos.length, indexArray : Rollos, priorityLevelLock: false, }).then((data)=>{ log("StartCmd (" + data.sessionID+')', 'debug') Commands['session_' + data.sessionID] = { shutters: Rollos } }) .catch((err)=>{ log(err, 'error') }) } } // Restart einmal pro Tag um 22 Uhr schedule('5 20 * * *', function () { velux.sendCommand({ api: velux.API.GW_REBOOT_REQ}) Connected = false }); // zyklisches Senden Idle Telegramm und Rolladenstatus holen schedule('*/1 * * * *', function () { velux.sendCommand({ api: velux.API.GW_GET_STATE_REQ}) .then((data) => { //Connected = true GetState() // Rolladenpostionen holen }) .catch((err) => { Connected = false log('Connection lost...' +JSON.stringify(err), 'error') ConnectKlf() }) }); // Verbinden zu klf200 ConnectKlf() // Verbindung abbauen und aufraeumen bei Stop onStop(() => { Connected = false log("Disconnect", 'info') velux.off('GW_STATUS_REQUEST_NTF', Status) velux.off('GW_SESSION_FINISHED_NTF', JobFinished) velux.end() }); on({id: new RegExp(baseObjectPath.replace('.', '\.') + 'shutter\..*'), change:'any', ack: false}, function (obj) { let State = Down - Down / 100 * obj.state.val let shutterName = obj.id.split('.').slice(-1)[0] let shutterId = Rollos[shutterName] log('Moving shutter ' + shutterName + '(' + shutterId + ')' + ' to ' + obj.state.val + '%', 'info') Rollo([shutterId], State) }); on({id: new RegExp(baseObjectPath.replace('.', '\.') + 'groups\..*'), change:'any', ack: false}, function (obj) { let State = Down - Down / 100 * obj.state.val let shutterName = obj.id.split('.').slice(-1)[0] let shutters = groups[shutterName] || [] if (shutters.length > 0) { log('Moving shutter group ' + shutterName + ' to ' + obj.state.val + '%', 'info') Rollo(shutters, State) } }); //******************************************************************************* // Mapping fuer Logitech Harmony //******************************************************************************* // Dach zu subscribe({id: 'fakeroku.0.ioBroker.keys.Up', val : true, ack :true}, function (obj) { Rollo(harmony, Up) }); // Dach auf subscribe({id: 'fakeroku.0.ioBroker.keys.Down', val : true, ack :true}, function (obj) { Rollo(harmony, Down) }); // Dach Stop subscribe({id: 'fakeroku.0.ioBroker.keys.Select', val : true, ack :true}, function (obj) { Rollo(harmony, Stop) });