@mcu
Danke für den Schubs in die richtige Richtung 👍
Der DP enthält bereits ein Array von Objekten. Das wird lediglich im Objektbaum als JSON dargestellt.
Parsen ist gar nicht nötig.
{
"_id": "device-watcher.0.batteryList",
"type": "state",
"common": {
"type": "array",
"role": "json",
"read": true,
"write": false
},
"native": {},
"from": "system.adapter.device-watcher.0",
"ts": 1669580330469,
"acl": {
"object": 1636,
"state": 1636,
"owner": "system.user.admin",
"ownerGroup": "system.group.administrator"
},
"user": "system.user.admin"
}
Damit sieht das dann (prinzipiell) so aus und funzt einwandfrei 😄
on({id: "device-watcher.0.lowBatteryCount", change: "ne"}, async function (obj) {
var batteryCount = obj.state.val;
if (batteryCount > 0) {
var devices = getState("device-watcher.0.lowBatteryList").val;
var message = 'ACHTUNG: Batterie in ' + batteryCount + ' Gerät(en) schwach:\n';
for (var i = 0; i < devices.length; i++) {
message += devices[i].Device + '\n';
}
} else {
message = 'Alle Batterien sind OK!';
}
sendSignalMessage(message, '+49xxxxxxxxxx');
});