NEWS
Für viele Objekte InfluxDB inkl. Aliase aktivieren
-
Hi zusammen,
ich habe sehr viele Homematic-IP (hmip) Instanzen, mit ganz vielen Thermostate und Fenstersensoren und möchte gerne für bestimmte Merkmale (windowOpen, lowBat, ...) InfluxDB aktivieren.
Allerdings möchte ich auch Aliase nutzen, die natürlich jeweils individuell sind, also eigentlich immer Objekt-Name + "." + Merkmal.Wie bekomme ich sowas hin, ohne das für hunderte manuell durchzuführen?
Danke
Cedric -
Hi zusammen,
ich habe sehr viele Homematic-IP (hmip) Instanzen, mit ganz vielen Thermostate und Fenstersensoren und möchte gerne für bestimmte Merkmale (windowOpen, lowBat, ...) InfluxDB aktivieren.
Allerdings möchte ich auch Aliase nutzen, die natürlich jeweils individuell sind, also eigentlich immer Objekt-Name + "." + Merkmal.Wie bekomme ich sowas hin, ohne das für hunderte manuell durchzuführen?
Danke
CedricFalls es noch jemand anderes braucht, ich habe mir ein Script erstellt:
// returns device id of state, device or channel-id function getDeviceId(id) { return id.match(/(.+[a-zA-Z0-9]{24})/g); } // check if id has influx enabled function isInfluxEnabled(fullList, id, checkAliasToo) { if(fullList[id] != undefined && fullList[id].enabled && (checkAliasToo == null || checkAliasToo == fullList[id].aliasId)) { console.log("angeschaltet: " + getObject(getDeviceId(id)).common.name); return true; } // default return false; } // enable influxdb function enableInflux(id, alias) { sendTo('influxdb.0', 'enableHistory', { id: id, options: { changesOnly: true, debounceTime: 0, blockTime: 0, changesRelogInterval: 0, retention: 31536000, maxLength: 3, changesMinDelta: 0, aliasId: alias } }, function (result) { if (result.error) { console.log(result.error); } if (result.success) { // successfully enabled } }); } // disable infludb function disableInflux(id) { sendTo('influxdb.0', 'disableHistory', { id: id, }, function (result) { if (result.error) { console.log(result.error); } if (result.success) { // successfully disabled } }); } const deviceBase = "hmip.*.devices.*"; // hmip.0.devices.3014F711A000201D89AC42E3 const dataPoints = {".channels.1.valveActualTemperature" : 1, ".channels.1.temperatureOffset" : 0, ".channels.0.lowBat" : 0}; // 0=disable; 1=enable // get full list of enabled influx datapoints sendTo('influxdb.0', 'getEnabledDPs', {}, function (fullList) { //console.log(fullList); // loop through all datapoints for (const [dataPoint, enable] of Object.entries(dataPoints)) { // get all devices var devices = $('state[id=' +deviceBase+dataPoint+']'); console.log("Number of Devices found: " + devices.length); // loop through all devices devices.each(function (id, i){ // alias var aliasId = getObject(getDeviceId(id)).common.name + dataPoint; if( enable == 1) { // enable influx if( !isInfluxEnabled(fullList, id, aliasId)) { console.log("ENABLE: " + aliasId); enableInflux(id, aliasId) } } else { // disable influx console.log("DISABLE: " + aliasId); disableInflux(id); } }); // devices } // datapoints });
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