NEWS
Script fürTabelle der Batterie Zustände
-
@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
-
(4615) script.js.Batterien: TRADFRI remote control 2 tradfri.0.RC-65537.batteryPercentage
und
(4615) script.js.Batterien: Stehlampe Arcade tradfri.0.RC-65536.batteryPercentage
-
@Homoran paßt so oder ?
-
@liv-in-sky
Jepp!!DANKE!
jetzt will ich das noch etwas intensiver ansehen um es zu verstehen, dann kommt es auch in den zweiten tradfri Block -
@Homoran ich glaube den den zweiten block kannst du streichen, wenn du im ersten block die tradfri.0.*. mit einem * ersetzt
tradfri.*.*.batteryPercentage **oder** tradfri.*.batteryPercentage
dann sollten alle tradfri instanzen gefunden werden
-
@liv-in-sky sagte in Script mit Tabelle der Batterie Zustände:
der wichtige split ist in zeile 2 - den überschreibst du mit zeile 7 und 8
und genau bin ich vorhin hängen geblieben - war so kurz davor
Passt - Danke!
-
@liv-in-sky sagte in Script mit Tabelle der Batterie Zustände:
ich glaube den den zweiten block kannst du streichen, wenn du im ersten block die tradfri.0.*. mit einem * ersetzt
Das hätte ich gleich getestet