NEWS
Script fürTabelle der Batterie Zustände
-
@Homoran der hat keinen "verarbeitungswürdigen namen" - da bleibt nur "RC-65537" - aber das wird auch nicht reichen - oder ist es dass, was du suchst
-
@Homoran müßte der sein
-
@liv-in-sky
Seltsam:Da muss ich mal @AlCalzone an den Hammelbeinen packen.
Ich hatte versucht den common.name davon zu erhalten
@liv-in-sky sagte in Script mit Tabelle der Batterie Zustände:
da bleibt nur "RC-65537"
-
@liv-in-sky sagte in Script mit Tabelle der Batterie Zustände:
müßte der sein
Dachte ich auch, aber da kommt undefined
-
@Homoran ich denke
-
@Homoran zeile 176 auskommentieren - der name ist der stern in tradfri.0.*.batteryPercentage
split ist:
tradfri
0
*
batteryPercentagedaher ida[2]
der split wird in zeile 171 schon gemacht
-
@liv-in-sky Ja!
aber ich wollte den common Name vom device bekommen - kann den Teil vorher im Skript nicht ganz nachvollziehen und umwandeln, dass er den ausliest.
-
@Homoran aber der common name ist bei allen gleich - aus dem raw "name": "Battery percentage",
der einzige unterschied ist wohl was sich hinter dem stern verbirgt - denke ich
-
@liv-in-sky sagte in Script mit Tabelle der Batterie Zustände:
was sich hinter dem stern verbirgt - denke ich
Ja!
liest das Skript beim Iterieren diesen Wert nicht aus, dass man davon den common.name auslesen kann -
@Homoran doch - aber der common name ist percentage batterie - und das ist ja kein name, der in der tabelle weiterhilft
wenn aber eine ebene höher noch irgendwo ein name steht - dann müssen wir uns den holen - mach doch mal einen JSON export der ikea instanz - und poste es -
-
@liv-in-sky sagte in Script mit Tabelle der Batterie Zustände:
eine ebene höher noch irgendwo ein name steht - dann müssen wir uns den holen
Das meinte ich - habe ich wieder zu verschwurbelt geschrieben?
{ "from": "system.adapter.tradfri.1", "user": "system.user.admin", "ts": 1574188716996, "common": { "name": "TRADFRI remote control", "icon": "icons/remote.png" }, "native": { "manufacturer": "IKEA of Sweden", "firmwareVersion": "2.3.014", "modelNumber": "TRADFRI remote control", "type": "remote", "serialNumber": "", "instanceId": 65549 }, "acl": { "object": 1636, "owner": "system.user.admin", "ownerGroup": "system.group.administrator" }, "_id": "tradfri.1.RC-65549", "type": "device" }
-
@Homoran ok verstehe - ... einen moment
-
Interessante Projekt habt ihr da!
Kann jemand ne aktuelle Version posten? Dann kann ich ggf. auch durch Tests etwas dazu beitragen. -
Hallo @darkiop
Hier
https://forum.iobroker.net/topic/28789/script-mit-tabelle-der-batterie-zustände/83
im Spoiler -
val0=getObject(ida[0]+"."+ida[1]+"."+ida[2]).common.name ;
-
@liv-in-sky sagte in Script mit Tabelle der Batterie Zustände:
val0=getObject(ida[0]+"."+ida[1]+"."+ida[2]).common.name ;
ich werde es versuchen, aber wie gesagt brachte ida[2] immer undefined
-
@Homoran bin gespannt
-
2020-01-11 18:54:40.716 - warn: javascript.0 (4615) Object "Battery percentage.undefined.undefined" does not exist 2020-01-11 18:54:40.717 - error: javascript.0 (4615) script.js.Batterien: script.js.Batterien:179 2020-01-11 18:54:40.718 - error: javascript.0 (4615) val0=getObject(ida[0]+"."+ida[1]+"."+ida[2]).common.name ; 2020-01-11 18:54:40.718 - error: javascript.0 (4615) ^ 2020-01-11 18:54:40.719 - error: javascript.0 (4615) TypeError: Cannot read property 'common' of null 2020-01-11 18:54:40.719 - error: javascript.0 (4615) at script.js.Batterien:179:56 2020-01-11 18:54:40.719 - error: javascript.0 (4615) at Object.result.each (/opt/iobroker/node_modules/iobroker.javascript/lib/sandbox.js:846:29) 2020-01-11 18:54:40.719 - error: javascript.0 (4615) at writeHTML (script.js.Batterien:170:36) 2020-01-11 18:54:40.720 - error: javascript.0 (4615) at script.js.Batterien:365:1 2020-01-11 18:54:40.720 - error: javascript.0 (4615) at Script.runInContext (vm.js:133:20)
code:
$('tradfri.0.*.batteryPercentage').each(function(id, i) { // hier eigene schleife definieren und den wert counter++ nicht vergessen !!! var ida = id.split('.'); counter++; // SEHR WICHTIG - MUSS IN JEDER SCHLEIFE INTEGRIERT SEIN val0=getObject(id).common.name ; //ida[2]+"."+ida[3]; var ida = val0.split('.'); //val0=ida[0]; val0=getObject(ida[0]+"."+ida[1]+"."+ida[2]).common.name ; log(val0+" "+id); val1help=getState(id).val; val1help=parseFloat((getState(id).val)); if (val1help<=battAlarm) {val1=(" <font color=\"red\"> ")+val1help.toString()} else{val1=(" <font color=\"green\"> ")+val1help.toString()} if (val1help>battAlarm && val1help<=battAlarmWarning) {val1=(" <font color=\"yellow\"> ")+val1help.toString()} if (getState(id).val==null) {val2="never used"}; //log(id)}; if (val1help<=battAlarm) {val2="✘"} else{val2="✔"} if (val1help>battAlarm && val1help<=battAlarmWarning) val2="⚠️"
-
@Homoran die zeile 7 und 8 gehört weg
-
der wichtige split ist in zeile 2 - den überschreibst du mit zeile 7 und 8