Hallo zusammen,
ich habe es jetzt teilweise gelöst, anbei mal meine Vis und das dazugehörige Script.
[image: 1574713489179-04a52249-7a4c-449f-8a02-d0bafaf71f34-image.png]
Das Script liest den homee Adapter aus und legt für jedes Gerät verschiedene State's an, zählt die Anzahl der Lichter, Rauchmelder und Fenster pro Etage.
//Liest den homee Adapter aus und legt für jedes Gerät verschiedene State's an
on({id:"system.adapter.admin.0.uptime",change:'any'}, function (obj) {
createState('homee.Anzahl_Geräte', 0, { name: 'Anzahl der Geräte', desc: '', type: 'number', unit: '', min: '0', max: '255', role: '',read: true, write: true });
createState('homee.Anzahl_homeegramme', 0, { name: 'Anzahl der homeegramme', desc: '', type: 'number', unit: '', min: '0', max: '255', role: '',read: true, write: true });
createState('homee.Anzahl_Aktivierte_homeegramme', 0, { name: 'Anzahl der aktivierten homeegramme', desc: '', type: 'number', unit: '', min: '0', max: '255', role: '',read: true, write: true });
createState('homee.Anzahl_deaktivierte_homeegramme', 0, { name: 'Anzahl der deaktivierten homeegramme', desc: '', type: 'number', unit: '', min: '0', max: '255', role: '',read: true, write: true });
createState('homee.Anzahl_Batterie', 0, { name: 'Anzahl der Geräte mit Batterie', desc: '', type: 'number', unit: '', min: '0', max: '255', role: '',read: true, write: true });
createState('homee.Anzahl_Batteriealarm', 0, { name: 'Anzahl der Geräte mit schwacher Batterie', desc: '', type: 'number', unit: '', min: '0', max: '255', role: '',read: true, write: true });
createState('homee.Anzahl_ohne_Batterie', 0, { name: 'Anzahl der Geräte ohne Batterie', desc: '', type: 'number', unit: '', min: '0', max: '255', role: '',read: true, write: true });
createState('homee.Anzahl_Fenster', 0, { name: 'Anzahl der Fensterkontakte', desc: '', type: 'number', unit: '', min: '0', max: '255', role: '',read: true, write: true });
createState('homee.Anzahl_Fenster_offen', 0, { name: 'Anzahl der geöffneten Fenster', desc: '', type: 'number', unit: '', min: '0', max: '255', role: '',read: true, write: true });
createState('homee.Anzahl_Fenster_offen_EG', 0, { name: 'Anzahl der geöffneten Fenster im EG', desc: '', type: 'number', unit: '', min: '0', max: '255', role: '',read: true, write: true });
createState('homee.Liste_Fenster', 'empty', { name: 'Liste offener Fenster', desc: '', type: 'string', role: '',read: true, write: true });
createState('homee.Liste_Batterie', 'empty', { name: 'Liste schwacher Batterien', desc: '', type: 'string', role: '',read: true, write: true });
createState('homee.Anzahl_Fenster_offen_OG', 0, { name: 'Anzahl der geöffneten Fenster im OG', desc: '', type: 'number', unit: '', min: '0', max: '255', role: '',read: true, write: true });
createState('homee.Anzahl_Fenster_offen_UG', 0, { name: 'Anzahl der geöffneten Fenster im UG', desc: '', type: 'number', unit: '', min: '0', max: '255', role: '',read: true, write: true });
createState('homee.Liste_Rauchalarm', 'empty', { name: 'Liste Rauchalarm', desc: '', type: 'string', role: '',read: true, write: true });
createState('homee.Anzahl_Rauchmelder', 0, { name: 'Anzahl der Rauchmelder', desc: '', type: 'number', unit: '', min: '0', max: '255', role: '',read: true, write: true });
createState('homee.Anzahl_Rauchalarm', 0, { name: 'Anzahl Rauchalarm', desc: '', type: 'number', unit: '', min: '0', max: '255', role: '',read: true, write: true });
createState('homee.Liste_Licht', 'empty', { name: 'Liste Licht an', desc: '', type: 'string', role: '',read: true, write: true });
createState('homee.Anzahl_Lichtquellen', 0, { name: 'Anzahl der Lichtquellen', desc: '', type: 'number', unit: '', min: '0', max: '255', role: '',read: true, write: true });
createState('homee.Anzahl_Licht_an', 0, { name: 'Anzahl der brennenden Lichter', desc: '', type: 'number', unit: '', min: '0', max: '255', role: '',read: true, write: true });
createState('homee.Anzahl_Licht_an_EG', 0, { name: 'Anzahl der brennenden Lichter im EG', desc: '', type: 'number', unit: '', min: '0', max: '255', role: '',read: true, write: true });
createState('homee.Anzahl_Licht_an_UG', 0, { name: 'Anzahl der brennenden Lichter im UG', desc: '', type: 'number', unit: '', min: '0', max: '255', role: '',read: true, write: true });
createState('homee.Anzahl_Licht_an_OG', 0, { name: 'Anzahl der brennenden Lichter im OG', desc: '', type: 'number', unit: '', min: '0', max: '255', role: '',read: true, write: true });
var cacheSelector = $('[id=homee.0.*]');
var counter =0;
var batterie =0;
var fenster = 0;
var fensterO =0;
var fensterEG =0;
var fensterOG =0;
var fensterUG =0;
var rauchmelder =0;
var rauchalarm =0;
var licht =0;
var lichtA =0;
var lichtEG =0;
var lichtOG =0;
var lichtUG =0;
var listeL = "";
var listeR = "";
var listeF = "";
var lowbat =0;
var listeB = "";
var blevel = 255;
var akt = 0;
var deakt = 0;
blevel = parseFloat(blevel);
var level = 11; // full
cacheSelector.each(function(id, i) {
var contentstring = id;
var test = id
var suchstring = /(FirmwareRevision)/g;
var suchergebnis = suchstring.test( contentstring );
if (suchergebnis != false) {
counter = counter+1;
var devicenameName = id.replace(/homee.0./g, "");
devicenameName = devicenameName.replace(/.FirmwareRevision/g, "");
var längeName = devicenameName.length;
var name = devicenameName.substring(0, längeName);
var bezeichnung = getObject(id).common.name;
bezeichnung = bezeichnung.replace(/.FirmwareRevision/g, "");
var name_array = name.split('-');
name = name_array[0];
var nummer = name_array[1];
name = name + "-" + nummer;
var devicename="homee.Gerät"+counter.toString()+".NameGerät";
createState(devicename, 'empty', { name: 'Name Gerät', desc: '', type: 'string', role: '',read: true, write: true });
setStateDelayed(devicename, name, 800);
devicename="homee.Gerät"+counter.toString()+".BezeichnungGerät";
createState(devicename, 'empty', { name: 'Bezeichnung Gerät', desc: '', type: 'string', role: '',read: true, write: true });
setStateDelayed(devicename, bezeichnung, 800);
var aSelector = $('[id=homee.0.' + name + '.*]');
aSelector.each(function(id, i) {
var contentstring1 = id;
var suchstring1 = /(BatteryLevel)/g;
var suchergebnis1 = suchstring1.test( contentstring1 );
if (suchergebnis1 != false) {
batterie = batterie+1;
var anhang = id.slice(id.lastIndexOf("."));
var strStatePath = "homee.0." + name + anhang;
if (isState(strStatePath, true)) {
blevel = getState(id).val;
blevel = parseFloat(blevel);
if(blevel == 255) level = 11; // 100 %
if(blevel == 100) level = 10; // 100 %
if(blevel < 100) level = 9; // 90 %
if(blevel <= 90) level = 8; // 80 %
if(blevel <= 80) level = 7; // 70 %
if(blevel <= 70) level = 6; // 60 %
if(blevel <= 60) level = 5; // 50 %
if(blevel <= 50) level = 4; // 40 %
if(blevel <= 40) level = 3; // 30 %
if(blevel <= 30) level = 2; // 20 %
if(blevel <= 20) {
level = 1; // 10 %
lowbat = lowbat+1;
listeB = listeB + " " + bezeichnung;
}
if(blevel <= 10) level = 0; // empty
}
}
devicename="homee.Gerät"+counter.toString()+".BatterieStand";
createState(devicename, 0, { name: 'Batterie Ladezustand', type: 'number', unit: '', min: '0', max: '255', role: '',read: true, write: true });
setStateDelayed(devicename, blevel, 800);
devicename="homee.Gerät"+counter.toString()+".BatterieLevel";
createState(devicename, 0, { name: 'Batterie Level', desc: '', type: 'number', unit: '', min: '0', max: '255', role: '',read: true, write: true });
setStateDelayed(devicename, level, 800);
});
var bSelector = $('[id=homee.0.' + name + '.*]');
bSelector.each(function(id, i) {
var contentstring2 = id;
var suchstring2 = /(OpenClose-)/g;
var suchergebnis2 = suchstring2.test( contentstring2 );
if (suchergebnis2 != false) {
fenster = fenster+1;
if(getState(id).val != 0) {
fensterO = fensterO+1;
var bezeichnung1 = getObject(id).common.name;
var test1 = getObject(id).common.name;
bezeichnung1 = bezeichnung1.replace(/.OpenClose/g, "");
listeF = listeF + " " + bezeichnung1;
var contentstring3 = bezeichnung1;
var suchstring3 = /(EG)/g;
var suchergebnis3 = suchstring3.test( contentstring3 );
if (suchergebnis3 != false) {
fensterEG = fensterEG+1
}
var suchstring4 = /(UG)/g;
var suchergebnis4 = suchstring4.test( contentstring3 );
if (suchergebnis4 != false) {
fensterUG = fensterUG+1
}
var suchstring5 = /(DG)/g;
var suchergebnis5 = suchstring5.test( contentstring3 );
if (suchergebnis5 != false) {
fensterOG = fensterOG+1
}
}
if (fensterO == 0) {
listeF = "Alle Fenster geschlossen!"
}
setStateDelayed('homee.Anzahl_Fenster', fenster, 800);
setStateDelayed('homee.Anzahl_Fenster_offen', fensterO, 800);
setStateDelayed('homee.Liste_Fenster', listeF, 800);
setStateDelayed('homee.Anzahl_Fenster_offen_EG', fensterEG, 800);
setStateDelayed('homee.Anzahl_Fenster_offen_OG', fensterOG, 800);
setStateDelayed('homee.Anzahl_Fenster_offen_UG', fensterUG, 800);
}
});
var rSelector = $('[id=homee.0.' + name + '.*]');
rSelector.each(function(id, i) {
var contentstring4 = id;
var suchstring6 = /(SmokeAlarm-)/g;
var suchergebnis6 = suchstring6.test( contentstring4 );
if (suchergebnis6 != false) {
rauchmelder = rauchmelder+1;
if(getState(id).val != false) {
rauchalarm = rauchalarm+1;
var bezeichnung2 = getObject(id).common.name;
var test2 = getObject(id).common.name;
bezeichnung2 = bezeichnung2.replace(/.SmokeAlarm/g, "");
listeR = listeR + " " + bezeichnung2;
}
if (rauchalarm == 0) {
listeR = "Kein Rauchalarm!"
}
setStateDelayed('homee.Anzahl_Rauchmelder', rauchmelder, 800);
setStateDelayed('homee.Anzahl_Rauchalarm', rauchalarm, 800);
setStateDelayed('homee.Liste_Rauchalarm', listeR, 800);
}
});
var lSelector = $('[id=homee.0.' + name + '.*]');
lSelector.each(function(id, i) {
var contentstring5 = getObject(id).common.name;
var suchstring7 = /(Licht.OnOff)/g;
var suchergebnis7 = suchstring7.test( contentstring5 );
if (suchergebnis7 != false) {
licht = licht+1;
if(getState(id).val != false) {
lichtA = lichtA+1;
var bezeichnung3 = getObject(id).common.name;
var test3 = getObject(id).common.name;
bezeichnung3 = bezeichnung3.replace(/.OnOff/g, "");
listeL = listeL + " " + bezeichnung3;
var contentstring5 = bezeichnung3;
var suchstring7 = /(EG)/g;
var suchergebnis7 = suchstring7.test( contentstring5 );
if (suchergebnis7 != false) {
lichtEG = lichtEG+1
}
var suchstring8 = /(UG)/g;
var suchergebnis8 = suchstring8.test( contentstring5 );
if (suchergebnis8 != false) {
lichtUG = lichtUG+1
}
var suchstring9 = /(DG)/g;
var suchergebnis9 = suchstring9.test( contentstring5 );
if (suchergebnis9 != false) {
lichtOG = lichtOG+1
}
}
if (lichtA == 0) {
listeL = "Alle Lichter aus!"
}
setStateDelayed('homee.Anzahl_Lichtquellen', licht, 800);
setStateDelayed('homee.Anzahl_Licht_an', lichtA, 800);
setStateDelayed('homee.Liste_Licht', listeL, 800);
setStateDelayed('homee.Anzahl_Licht_an_EG', lichtEG, 800);
setStateDelayed('homee.Anzahl_Licht_an_OG', lichtOG, 800);
setStateDelayed('homee.Anzahl_Licht_an_UG', lichtUG, 800);
}
});
};
if (lowbat == 0) {
listeB = "Alle Batterien in Ordnung!"
}
setStateDelayed('homee.Anzahl_Geräte', counter, 800);
setStateDelayed('homee.Anzahl_Batterie', batterie, 800);
setStateDelayed('homee.Anzahl_Batteriealarm', lowbat, 800);
setStateDelayed('homee.Liste_Batterie', listeB, 800);
var ohne = counter - batterie;
setStateDelayed('homee.Anzahl_ohne_Batterie', ohne, 800);
function isState(strStatePath, strict) {
let mSelector;
if (strict) {
mSelector = $('state[id=' + strStatePath + '$]');
} else {
mSelector = $('state[id=' + strStatePath + ']');
}
if (mSelector.length > 0) {
return true;
} else {
return false;
}
}
});
var hSelector = $('[id=homee.0.Homee-0.Homeegrams.*]');
var counter =0;
hSelector.each(function(id, i) {
var devicename = getObject(id).common.name;
if(devicename == "active") {
counter = counter+1
var status = getState(id).val;
if(status != false) {
akt = akt+1
}
} else {
counter = counter
}
});
deakt = counter - akt;
setStateDelayed('homee.Anzahl_homeegramme', counter, 800);
setStateDelayed('homee.Anzahl_Aktivierte_homeegramme', akt, 800);
setStateDelayed('homee.Anzahl_deaktivierte_homeegramme', deakt, 800);
});
Für Vorschläge oder Anregungen, wie ich die Logdatei oder die Heizpläne darstellen kann bin ich immer offen.
Lg Oliver