NEWS
Hilfe bei Javaskript Device Counter
-
Hi!
der Cache Selektor zeile 11 "Error" funktioniert nicht mehr mit folgender Fehlermeldung. Das klappte aber immer so, jemand ne Idee was ich tun kann ?//Add device rules addDeviceCounter("lowbat", $('channel[state.id=*LOWBAT]'), true); addDeviceCounter("lowbat", $('channel[state.id=*lowbat]'), true); addDeviceCounter("sticky_unreach", $('channel[state.id=*.STICKY_UNREACH]'), true); addDeviceCounter("unreach", $('channel[state.id=*.UNREACH]'), true); addDeviceCounter("config_pending", $('channel[state.id=*.CONFIG_PENDING]'), true); addDeviceCounter("Motion", $('channel[state.id=*.MOTION]'), true); addDeviceCounter("DutyCycle", $('channel[state.id=*.DUTYCYCLE]'), true); addDeviceCounter("Spannungsüberwachung", $('channel[state.id=*.VOLTAGE]'), function(state){return state<200;}); addDeviceCounter("Auskühlschutz", $('channel[state.id=*.ACTUAL_TEMPERATURE]'), function(state){return state<14;}); addDeviceCounter("ERROR", $('channel[state.id=*.ERROR*]'), function(state){return state>0;}); addDeviceCounter("Heizbedarf", $('channel[state.id=*.VALVE_STATE]'), function(state){return state>15;}); addDeviceCounter("Alive", $('channel[state.id=*alive]'), false); addDeviceCounter("CONNECTED", $('channel[state.id=*.connected]'), false); addDeviceCounter("open_shutters", $('channel{TYPE=BLIND}[state.id=*.LEVEL]'), function(state){return state>0;}); addDeviceCounter("open_windows", $('channel{TYPE=SHUTTER_CONTACT}[state.id=*.STATE]'), true); /****************************************** * Code - do not change anything bellow this line * ******************************************/ function addDeviceCounter(name, selector, val_to_count) { //Total amount of devices found by selector var state_total = 'deviceCounter.' + name + '.total'; createState(state_total, 0); //List of devices that match condition var state_list = 'deviceCounter.' + name + '.list'; createState(state_list, ""); //Number of devices that match condition var state_counter = 'deviceCounter.' + name + '.counter'; createState(state_counter, 0); function countDevs(obj) { var d_count = 0; var d_list = []; selector.each(function (id, i) { var status = getState(id).val; var obj = getObject(id); if ((typeof val_to_count === 'function' && val_to_count(status)) || (typeof val_to_count === 'boolean' && val_to_count == status)) { //Get parent object var parentChannelId = id.slice(id.lastIndexOf(".")); var parentDevicelId = id.split(".").slice(0,-2).join("."); var deviceObject = getObject(parentDevicelId); //remember device name d_list.push(deviceObject.common.name); } ++d_count; // Zählt die Anzahl der vorhandenen Geräte unabhängig vom Status }); //if ("state_counter" > 0) {event(name + "(" + d_count + "): " + d_list); //} setState(state_list, d_list.join('<br>')); setState(state_counter, d_list.length); setState(state_total, d_count); } //Re-evaluate when a device status changes selector.on(function(obj) { // bei Zustandänderung *. LOWBAT in allen Gewerken countDevs(obj); }); //Re-evaluate each hour schedule("*/60 * * * *", countDevs); //Evaluate for the first time countDevs(); }
javascript.0 2019-10-12 16:02:30.844 info (13143) Stop script script.js.common.DeviceCounter javascript.0 2019-10-12 16:02:19.889 error (13143) at Script.runInContext (vm.js:133:20) javascript.0 2019-10-12 16:02:19.889 error (13143) at script.js.common.DeviceCounter:11:1 javascript.0 2019-10-12 16:02:19.889 error (13143) at addDeviceCounter (script.js.common.DeviceCounter:72:5) javascript.0 2019-10-12 16:02:19.889 error (13143) at countDevs (script.js.common.DeviceCounter:40:18) javascript.0 2019-10-12 16:02:19.889 error (13143) at Object.result.each (/opt/iobroker/node_modules/iobroker.javascript/lib/sandbox.js:808:29) javascript.0 2019-10-12 16:02:19.889 error (13143) at script.js.common.DeviceCounter:50:42 javascript.0 2019-10-12 16:02:19.889 error (13143) TypeError: Cannot read property 'common' of null javascript.0 2019-10-12 16:02:19.889 error (13143) ^ javascript.0 2019-10-12 16:02:19.889 error (13143) d_list.push(deviceObject.common.name); javascript.0 2019-10-12 16:02:19.889 error (13143) script.js.common.DeviceCounter: script.js.common.DeviceCounter:50 javascript.0 2019-10-12 16:02:19.888 warn (13143) Object "javascript.0.deviceCounter" does not exist
-
Datenpunkt nicht vorhanden !
-
@Glasfaser sagte in Hilfe bei Javaskript Device Counter:
Datenpunkt nicht vorhanden !
den legt das skript aber doch eigentlich an!?
-
und … ist er vorhanden !?
-
@Glasfaser sagte in Hilfe bei Javaskript Device Counter:
und … ist er vorhanden !?
sind alle da, der errors teil wird aber seit ein paar tagen nicht aktualisiert und wirft halt die Fehlermeldung
-
-
japp exakt so sieht es bei mir aus, nimm mal die // vor der Zeile 11 weg und starte das skript neu, das geht nicht mehr und habe ich auskommentiert das ich die andren funktionen erstmal nutzen kann
-
Alles in Ordnung ,keine ERROR Meldung ,
-
hmm ich starte mal neu
-
@Adnim sagte in Hilfe bei Javaskript Device Counter:
hmm ich starte mal neu
hilft nicht kommt immer die obige fehlermeldung
-
Verstehe ich nicht !?
Hast du mal alle Datenpunkte gelöscht und das Skript dann mal neugestartet , damit die Datenpunkte " neu "erzeugt werden !!
Zeig mal einen aktuellen Log vom Fehler !
und einen Screenshot von den Datenpunkten , der besser zu erkennen ist. -
@Adnim sagte:
$('channel[state.id=.ERROR]')
Was liefert ?
$('channel[state.id=*.ERROR*]').each(function(id, i) { log(id); });
-
@paul53 sagte in Hilfe bei Javaskript Device Counter:
@Adnim sagte:
$('channel[state.id=.ERROR]')
Was liefert ?
Da bekomm ich nen error, irgendwo fehlt eine klammer?
@Glasfaser
habe die objekte gelöscht sie werden angelegt ,dann stürzt das skript aber mit der Fehlermeldung ab, neustart hilft dann auch nicht
Danke euch!
-
… das Skript von paul53 in ein neues Skript starten !!!
-
@Glasfaser
oh ok, habe ich versucht. Da kommt nix nur Start Skript im Log -
so muss es aussehen :
-
sieht bei mir aber so aus
-
Datenpunkte mit ERROR ,die bei mir z.B aufgelistet werden :
-
ja habe ich auch ne ganze menge von den Errors States ,148 laut dem Skript er zählt sie ja beim ersten start
aber irgendwie findet er sie nicht mit Pauls Skript, habe Neustart und den Fixer aber gleiches Ergebnis
-
Gib mal anstatt " ERROR" im Skript von paul53 ,"UNREACH" ein
Zeig mal bitte die ausgabe von
iobroker list adapters