@dominic-haußmann
Wenn Du halt mehrere Datenpuntkte überwachen willst musst halt quasi ein regex nehmen oder einzelne Datenpunkte und die events als globales Array definieren. Hier mal das Bespiel mit 2 Datenpunkten.
const request = require('axios');
var events = [];
// Überwachen des Datenpunktes oder Wildcards
// on({id: /0_userdata.0.*/, change: 'any'}, function (obj) {
on({id: '0_userdata.0.doorStatus', change: 'any'}, sendObj);
on({id: '0_userdata.0.target', change: 'any'}, sendObj);
// Versenden des JSON Strings
function sendObj(obj){
var state = getState(obj.id)
var date = new Date(state.ts);
var event = {"timestamp": date};
event[obj.id] =state.val;
events.push(event);
var data = JSON.stringify([{"tags": {"host":"iobroker"}, "events" : events}]);
var url='$YOUR_HUMIO_URL/api/v1/ingest/humio-structured';
//var data = '[{"tags": {"host":"iobroler"}, "events" : [{"timestamp": "2021-06-06T12:00:00+02:00", "attributes": {"key1":"value1"}}]}]';
var config = { headers: {
"Content-Type": "application/json",
"Authorization": "Bearer $INGEST_TOKEN"
}
}
request.post(url,data,config);
}
Das Ergebnis ist dann halt ein immer weiter wachsendes Array mit jeder Aktualisierung als Event:
{"tags":{"host":"iobroker"},"events":[{"timestamp":"2022-01-22T16:20:46.811Z","0_userdata.0.target":5},{"timestamp":"2022-01-22T16:20:52.947Z","0_userdata.0.doorStatus":"40 %"},{"timestamp":"2022-01-22T16:22:44.935Z","0_userdata.0.doorStatus":"12.5 %"}]}
a4e60f86-69d2-492c-b9a0-8730f0cddcc3-image.png
EDIT: Die ID des Selectors über eine Variable zu setzen geht natürlich auch. Du musst halt bedenken, dass Du jedes Mal einen neuen Selector generierst. Also müsstest Du mit unsubscribe den erst wieder löschen Mit Wildcards habe ich es auch getestet, aber da ist mein Array im Nu sehr lang. ;). Aber ich bin kein JS Fachmann, arbeite lieber mit NR - aber für weitere Fragen ist Dir @paul53 sicher behilflich.