NEWS
Alias-manager: Objektdaten nicht im Alias
-
Hallo,
meine Boschthermostate erzeugen u.a. folgende Objektdaten für Netzqualität oder Batterie:
{ "type": "state", "common": { "name": "TRV2.0 18fc26000002fa89.CommunicationQuality.faults", "type": "array", "role": "list", "read": true, "write": false }, "native": { "device": { "@type": "device", "rootDeviceId": "64-da-a0-11-96-b6", "id": "hdm:ZigBee:18fc26000002fa89", "deviceServiceIds": [ "CommunicationQuality", "Thermostat", "BatteryLevel", "ValveTappet", "DisplayedTemperatureConfiguration", "DisplayConfiguration", "DisplayDirection", "TemperatureLevel", "Linking", "TemperatureOffset" ], "manufacturer": "BOSCH", "roomId": "hz_1", "deviceModel": "TRV_GEN2", "serial": "18FC26000002FA89", "profile": "GENERIC", "name": "TRV2.0 18fc26000002fa89", "status": "AVAILABLE", "parentDeviceId": "roomClimateControl_hz_1", "childDeviceIds": [] }, "deviceService": { "@type": "DeviceServiceData", "id": "CommunicationQuality", "deviceId": "hdm:ZigBee:18fc26000002fa89", "state": { "@type": "communicationQualityState", "quality": "GOOD" }, "path": "/devices/hdm:ZigBee:18fc26000002fa89/services/CommunicationQuality" }, "state": "faults" }, "from": "system.adapter.bshb.0", "user": "system.user.admin", "ts": 1666674944453, "_id": "bshb.0.hdm:ZigBee:18fc26000002fa89.CommunicationQuality.faults", "acl": { "object": 1636, "state": 1636, "owner": "system.user.admin", "ownerGroup": "system.group.administrator" } }Nun versuche ich daraus einen Alias anzulegen, dort sieht das Ergebnis aber so aus:
{ "type": "state", "common": { "name": "link_quality", "role": "list", "type": "array", "read": true, "write": false, "alias": { "id": "bshb.0.hdm:ZigBee:18fc26000002fa89.CommunicationQuality.faults" } }, "_id": "alias.0.Arbeitszimmer.Thermostat.faults_2", "native": {}, "from": "system.adapter.admin.0", "user": "system.user.admin", "ts": 1688827682553, "acl": { "object": 1636, "state": 1636, "owner": "system.user.admin", "ownerGroup": "system.group.administrator" } }Irgendwas scheint auch dem Alias-Manager schon nicht zu gefallen:

Jemand eine Idee wie ich die gesamte Struktur von oben in den Alias bekomme, oder noch besser gleich einen einzelnen Eintrag ("quality": "GOOD")?
@warhammer73 sagte: Idee wie ich die gesamte Struktur von oben in den Alias bekomme
Wozu? Wird das Array nicht in den Alias übernommen?
@warhammer73 sagte in Alias-manager: Objektdaten nicht im Alias:
gleich einen einzelnen Eintrag ("quality": "GOOD")?
Dann muss der Alias vom Typ "string" sein und man verwendet eine Lesekonvertierung:
JSON.parse(val)[0]für "CommunicationQuality", wenn das Array so gefüllt ist wie unter "deviceServiceIds" beschrieben.
-
@warhammer73 sagte: Idee wie ich die gesamte Struktur von oben in den Alias bekomme
Wozu? Wird das Array nicht in den Alias übernommen?
@warhammer73 sagte in Alias-manager: Objektdaten nicht im Alias:
gleich einen einzelnen Eintrag ("quality": "GOOD")?
Dann muss der Alias vom Typ "string" sein und man verwendet eine Lesekonvertierung:
JSON.parse(val)[0]für "CommunicationQuality", wenn das Array so gefüllt ist wie unter "deviceServiceIds" beschrieben.
@paul53 said in Alias-manager: Objektdaten nicht im Alias:
@warhammer73 sagte: Idee wie ich die gesamte Struktur von oben in den Alias bekomme
Wozu? Wird das Array nicht in den Alias übernommen?Nein, siehe oben.
Beim Anlegen meckert der Alias-Manager vor dem Speichern auch:

Speichert man trotzdem führt das zu der Anzeige oben. -
Hallo,
meine Boschthermostate erzeugen u.a. folgende Objektdaten für Netzqualität oder Batterie:
{ "type": "state", "common": { "name": "TRV2.0 18fc26000002fa89.CommunicationQuality.faults", "type": "array", "role": "list", "read": true, "write": false }, "native": { "device": { "@type": "device", "rootDeviceId": "64-da-a0-11-96-b6", "id": "hdm:ZigBee:18fc26000002fa89", "deviceServiceIds": [ "CommunicationQuality", "Thermostat", "BatteryLevel", "ValveTappet", "DisplayedTemperatureConfiguration", "DisplayConfiguration", "DisplayDirection", "TemperatureLevel", "Linking", "TemperatureOffset" ], "manufacturer": "BOSCH", "roomId": "hz_1", "deviceModel": "TRV_GEN2", "serial": "18FC26000002FA89", "profile": "GENERIC", "name": "TRV2.0 18fc26000002fa89", "status": "AVAILABLE", "parentDeviceId": "roomClimateControl_hz_1", "childDeviceIds": [] }, "deviceService": { "@type": "DeviceServiceData", "id": "CommunicationQuality", "deviceId": "hdm:ZigBee:18fc26000002fa89", "state": { "@type": "communicationQualityState", "quality": "GOOD" }, "path": "/devices/hdm:ZigBee:18fc26000002fa89/services/CommunicationQuality" }, "state": "faults" }, "from": "system.adapter.bshb.0", "user": "system.user.admin", "ts": 1666674944453, "_id": "bshb.0.hdm:ZigBee:18fc26000002fa89.CommunicationQuality.faults", "acl": { "object": 1636, "state": 1636, "owner": "system.user.admin", "ownerGroup": "system.group.administrator" } }Nun versuche ich daraus einen Alias anzulegen, dort sieht das Ergebnis aber so aus:
{ "type": "state", "common": { "name": "link_quality", "role": "list", "type": "array", "read": true, "write": false, "alias": { "id": "bshb.0.hdm:ZigBee:18fc26000002fa89.CommunicationQuality.faults" } }, "_id": "alias.0.Arbeitszimmer.Thermostat.faults_2", "native": {}, "from": "system.adapter.admin.0", "user": "system.user.admin", "ts": 1688827682553, "acl": { "object": 1636, "state": 1636, "owner": "system.user.admin", "ownerGroup": "system.group.administrator" } }Irgendwas scheint auch dem Alias-Manager schon nicht zu gefallen:

Jemand eine Idee wie ich die gesamte Struktur von oben in den Alias bekomme, oder noch besser gleich einen einzelnen Eintrag ("quality": "GOOD")?
@warhammer73 sagte: einen Alias anzulegen, dort sieht das Ergebnis aber so aus:
Das sieht doch gut aus. Damit muss es funktionieren.
Anmerkung: Was im Original-DP unter "native" steht, interessiert den Alias nicht. -
@paul53 said in Alias-manager: Objektdaten nicht im Alias:
@warhammer73 sagte: Idee wie ich die gesamte Struktur von oben in den Alias bekomme
Wozu? Wird das Array nicht in den Alias übernommen?Nein, siehe oben.
Beim Anlegen meckert der Alias-Manager vor dem Speichern auch:

Speichert man trotzdem führt das zu der Anzeige oben.@warhammer73
Ich habe mal mit fast identischen Datenpunkten getestet: Bei mir funktioniert der Alias wie erwartet.
Original-DP:{ "common": { "name": "TRV2.0 18fc26000002fa89.CommunicationQuality.faults", "desc": "Manuell erzeugt", "role": "list", "type": "array", "read": true, "write": false }, "type": "state", "native": { "device": { "@type": "device", "rootDeviceId": "64-da-a0-11-96-b6", "id": "hdm:ZigBee:18fc26000002fa89", "deviceServiceIds": [ "CommunicationQuality", "Thermostat", "BatteryLevel", "ValveTappet", "DisplayedTemperatureConfiguration", "DisplayConfiguration", "DisplayDirection", "TemperatureLevel", "Linking", "TemperatureOffset" ], "manufacturer": "BOSCH", "roomId": "hz_1", "deviceModel": "TRV_GEN2", "serial": "18FC26000002FA89", "profile": "GENERIC", "name": "TRV2.0 18fc26000002fa89", "status": "AVAILABLE", "parentDeviceId": "roomClimateControl_hz_1", "childDeviceIds": [] }, "deviceService": { "@type": "DeviceServiceData", "id": "CommunicationQuality", "deviceId": "hdm:ZigBee:18fc26000002fa89", "state": { "@type": "communicationQualityState", "quality": "GOOD" }, "path": "/devices/hdm:ZigBee:18fc26000002fa89/services/CommunicationQuality" }, "state": "faults" }, "_id": "0_userdata.0.Test.hdm:ZigBee:18fc26000002fa89.CommunicationQuality.faults", "acl": { "object": 1636, "state": 1636, "owner": "system.user.admin", "ownerGroup": "system.group.administrator" }, "from": "system.adapter.admin.0", "user": "system.user.admin", "ts": 1688834888359 }
Alias mit Lesekonvertierung:
{ "common": { "name": "link quality", "desc": "Manuell erzeugt", "role": "text", "type": "string", "read": true, "write": false, "alias": { "id": "0_userdata.0.Test.hdm:ZigBee:18fc26000002fa89.CommunicationQuality.faults", "read": "JSON.parse(val)[0]" } }, "type": "state", "native": {}, "_id": "alias.0.Test.Liste_bshb", "acl": { "object": 1636, "state": 1636, "owner": "system.user.admin", "ownerGroup": "system.group.administrator" }, "from": "system.adapter.admin.0", "user": "system.user.admin", "ts": 1688835072358 }
EDIT: Ich hatte zuerst mit dem Alias als Liste getestet, was auch funktioniert hat.
-
... mein Problem liegt ja aber an der Stelle, das "val" bei mir "[]" ist:
console.log (getState("console.log (getState("bshb.0.hdm:ZigBee:18fc26000002fa89.CommunicationQuality.faults"));")); javascript.0 (1833) script.js.Heim.check: {'val':[],'ack':true,'ts':1687715515607,'q':0,'from':'system.adapter.bshb.0','user':'system.user.admin','lc':1670363668833}... ich hatte eigentlich die Hoffnung das mir getState den gesamten Baum wie ich ihn mit "Objekt bearbeiten" (siehe oben) anzeigt und ich mich dann über "deviceService" bis "quality" durchhangeln kann um den Wert "GOOD" zu bekommen. Da aber getState das schon nicht tut, habe ich irgendwo ein anderes Problem. :(
-
... mein Problem liegt ja aber an der Stelle, das "val" bei mir "[]" ist:
console.log (getState("console.log (getState("bshb.0.hdm:ZigBee:18fc26000002fa89.CommunicationQuality.faults"));")); javascript.0 (1833) script.js.Heim.check: {'val':[],'ack':true,'ts':1687715515607,'q':0,'from':'system.adapter.bshb.0','user':'system.user.admin','lc':1670363668833}... ich hatte eigentlich die Hoffnung das mir getState den gesamten Baum wie ich ihn mit "Objekt bearbeiten" (siehe oben) anzeigt und ich mich dann über "deviceService" bis "quality" durchhangeln kann um den Wert "GOOD" zu bekommen. Da aber getState das schon nicht tut, habe ich irgendwo ein anderes Problem. :(
@warhammer73: "val" bei mir "[]" ist
Dann kann ein Alias nichts liefern (außer ein leeres Array).
-
@paul53 :
Ja, an der falschen Stelle angefangen mit suche...
Tja, und auch wenn jetzt die Überschrift nicht mehr zu 100% passt:
Den Wert den ich brauche gibt es ja offensichtlich (Objekt bearbeiten zeigt ihn ja an), aber wie bekomme ich per JS ihn ausgelesen? -
@paul53 :
Ja, an der falschen Stelle angefangen mit suche...
Tja, und auch wenn jetzt die Überschrift nicht mehr zu 100% passt:
Den Wert den ich brauche gibt es ja offensichtlich (Objekt bearbeiten zeigt ihn ja an), aber wie bekomme ich per JS ihn ausgelesen?@warhammer73 sagte: wie bekomme ich per JS ihn ausgelesen?
getObject('bshb.0.hdm:ZigBee:18fc26000002fa89.CommunicationQuality.faults').native.deviceService.state.qualityDieses Attribut sollte allerdings statisch sein, sich also nicht im laufenden Betrieb ändern.
-
@warhammer73 sagte: wie bekomme ich per JS ihn ausgelesen?
getObject('bshb.0.hdm:ZigBee:18fc26000002fa89.CommunicationQuality.faults').native.deviceService.state.qualityDieses Attribut sollte allerdings statisch sein, sich also nicht im laufenden Betrieb ändern.
Danke, manchmal kommt man auf naheliegende Sachen nicht...
Damit hat sich dann aber auch die Idee das Geräteunabhängig als Alias auslesen zu können erledigt. :( -
Danke, manchmal kommt man auf naheliegende Sachen nicht...
Damit hat sich dann aber auch die Idee das Geräteunabhängig als Alias auslesen zu können erledigt. :(@warhammer73 sagte: als Alias auslesen zu können
Der Datenpunkt heißt "faults": Das Array wird sich wahrscheinlich erst füllen, wenn mind. ein Fehler auftritt.
Hey! Du scheinst an dieser Unterhaltung interessiert zu sein, hast aber noch kein Konto.
Hast du es satt, bei jedem Besuch durch die gleichen Beiträge zu scrollen? Wenn du dich für ein Konto anmeldest, kommst du immer genau dorthin zurück, wo du zuvor warst, und kannst dich über neue Antworten benachrichtigen lassen (entweder per E-Mail oder Push-Benachrichtigung). Du kannst auch Lesezeichen speichern und Beiträge positiv bewerten, um anderen Community-Mitgliedern deine Wertschätzung zu zeigen.
Mit deinem Input könnte dieser Beitrag noch besser werden 💗
Registrieren Anmelden