@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
@Homoran gib mir mal den raw auszug eines ikea batt wertes
@liv-in-sky sagte in Script mit Tabelle der Batterie Zustände:
@Homoran gib mir mal den raw auszug eines ikea batt wertes
Wenn's sonst nix ist:
{
"_id": "tradfri.1.RC-65549.batteryPercentage",
"type": "state",
"common": {
"def": 100,
"type": "number",
"read": true,
"write": false,
"min": 0,
"max": 100,
"name": "Battery percentage",
"role": "indicator.maintenance",
"unit": "%"
},
"native": {
"path": "deviceInfo.battery",
"onlyChanges": true
},
"from": "system.adapter.tradfri.1",
"user": "system.user.admin",
"ts": 1578761527219,
"acl": {
"object": 1638,
"state": 1638
}
}
@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
*
batteryPercentage
daher 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
@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="⚠️"