NEWS
Skript LOWBAT
- 
					
					
					
					
 Hab die Datenpunkte gefunden. Indicator.lowbat heißen die. 
 Soll / muss ich die entfernen?
- 
					
					
					
					
 @deifel Erweitere mal den $Selector: $('channel[state.id=hm-rpc.0*0.LOWBAT]').each(function(id, i) { if(i > 82) log(i + ': ' + id); });
- 
					
					
					
					
 Damit bekomme ich die CUXD-Geräte nicht mehr angezeigt, nur die "korrekten" Geräte. 
- 
					
					
					
					
 @deifel Dann übernehme die Erweiterung in das Lowbat-Skript. 
- 
					
					
					
					
 Ich danke Dir! Wenn ich das so übernehme, dann fehlen mir leider die Geräte aus der HM-IP-Instanz  
- 
					
					
					
					
 Kannst Du mir sagen, wie ich die Geräte aus meiner HM-IP-Instanz (rpc.2) noch dazu bekomme? 
 Diese werden nicht gefunden. Die Datenpunkte LOWBAT sind aber vorhanden.
 Vielen DANK!
- 
					
					
					
					
 @deifel sagte: CUXD-Geräte, obwohl diese nicht im Gewerk "Batteriebetrieb" sind. Dann erweitere den $Selector anstelle von "hm-rpc.0" um das Gewerk (Schreibweise groß/klein in der enum-ID beachten) $('channel[state.id=*0.LOWBAT](functions=Batteriebetrieb)').each(function(id, i) { log(i + ': ' + id); });Werden dann alle "richtigen" IDs geloggt ? 
- 
					
					
					
					
 @deifel sagte in Skript LOWBAT: Kannst Du mir sagen, wie ich die Geräte aus meiner HM-IP-Instanz (rpc.2) noch dazu bekomme? 
 Diese werden nicht gefunden. Die Datenpunkte LOWBAT sind aber vorhanden.Bei mir heißen die HM-IP LOW_BAT und nicht LOWBAT. 
- 
					
					
					
					
 Danke - das hab ich versucht. Eigenartigerweise wird damit nichts gefunden  
 Ich verzweifle noch.
 "Batteriebetrieb" ist korrekt geschrieben.
 Die Datenpunkte unter den IP-Geräten heißen allerdings "LOW_BAT".Mit dem Selektor : $('channel[state.id=*0.LOWBAT](functions=Batteriebetrieb)').each(function(id, i) { log(i + ': ' + id); });bekomme ich kein Ergebnis (0 Geräte). Mit dem Selektor: $('channel[state.id=hm-rpc.0*0.LOWBAT]').each(function(id, i) {bekomme ich nur die von der normalen HM-Instanz. und mit dem Selektor: $('channel[state.id=*0.LOWBAT]').each(function(id, i) {bekomme ich die normalen und die CuxD - aber auch keine HM-IP-Geräte 
- 
					
					
					
					
 $('channel[state.id=hm-rpc.*0.LOW*](functions=Batteriebetrieb)').each(function(id, i) { if(i > 1) log(i + ': ' + id); });Gibt mir alle aus, also inkl. HMIP und auch den CUX-D-Geräten. Wenn ich jetzt noch die CUXD weg bekomme, dann wärs perfekt. 
- 
					
					
					
					
 @deifel sagte: Wenn ich jetzt noch die CUXD weg bekomme $('channel[state.id=hm-rpc.*0.LOW*](functions=Batteriebetrieb)').each(function(id, i) { if(id.indexOf('CUX') == -1) log(i + ': ' + id); });
- 
					
					
					
					
 Leider nein, damit findet er nichts  
- 
					
					
					
					
 @deifel 
 Ich bin unterwegs und am Handy, deshalb bekomme ich das Script nicht kopiert, aber hier ein Screenshot vom Selektor, wie es bei mir funktioniert. 
- 
					
					
					
					
 @deifel sagte: damit findet er nichts Ohne functions ? $('channel[state.id=hm-rpc.*0.LOW*]').each(function(id, i) { if(id.indexOf('CUX') == -1) log(i + ': ' + id); });
- 
					
					
					
					
 Danke Euch Beiden! Es klappt jetzt mit beiden Varianten. Wobei evtl. das von dslraser sicherer ist, da es nicht nur noch low* abfragt - keine Ahnung, was in Zukunft sonst noch "low" wird  Vielen Dank für die tatkräftige Unterstützung!!! 
- 
					
					
					
					
 Kleine Ergänzung: Bei der Lösung von dslraser werden die cux-Geräte gefunden und eine Warnung angezeigt... 
 Ich lass es jetzt trotzdem so drin
- 
					
					
					
					
 
- 
					
					
					
					
 @Xanon said in Skript LOWBAT: Danke, das Skript sieht gut aus und funktionierte auf anhieb!! Um Deine Frage zu beantworten, wie wäre es mit: addDeviceCounter("lowbat", $('channel[state.id=*.LOW_BAT]') + $('channel[state.id=*.LOWBAT]'), true);Habs aber nicht ausprobiert, habe keine IP Komponenten. 
- 
					
					
					
					
 Hallo zusammen, sorry das ich den alten thread noch mal auspacke. Ich habe allerdings das problem das meine Homematic Ip Komponenten nicht erkannt werden. 
 Ich habe das Script folgendermaßen geändert:createState('zählenLowbat.möglicheLOWBAT', 0); // wenn benötigt: Anzahl der Geräte mit Batterie 
 createState('zählenLowbat.anzahlLOWBAT', 0); // wenn benötigt: Anzahl der vorhandenen LOWBAT
 createState('zählenLowbat.textLOWBAT', " "); // Namen LOWBAT, die an sind als Variable unter Javascript.0 anlegenvar cacheSelectorLOWBAT = $('channel[state.id=*0.LOWBAT]'); // für Homematic 
 var cacheSelectorLOW_BAT = $('channel[state.id=*0.LOW_BAT]'); // für Homematic IPfunction countLowbat(obj) { 
 // Setzt die Zähler vor dem Durchlauf aller Elemente *.LOWBAT auf 0
 var moeglicheLOWBAT = 0;
 var textLOWBAT = [];if (obj) { 
 log('Auslösender Aktor: ' + obj.id + ': ' + obj.newState.val); // Info im Log, welcher Zustand sich geändert hat
 } else {
 log('Ausgelöst bei Timer');
 }cacheSelectorLOWBAT.each(function (id, i) { // Schleife für jedes gefundenen Element *0.LOWBAT 
 var status = false;
 if(getState(id)) {
 status = getState(id).val; // Zustand *0.LOWBAT abfragen (jedes Element)
 }
 var obj = getObject(id);
 if (status === true) { // wenn Zustand = true, wird das Array erweitert
 textLOWBAT.push(obj.common.name); // Zu Array hinzufügen
 }
 log("Geräte Nr. " + i + ": " + getObject(id).common.name + ": " + status);
 ++moeglicheLOWBAT; // Zählt die Anzahl der vorhandenen Geräte unabhängig vom Status
 });// Schleife ist durchlaufen. Im Log wird der aktuelle Status (Anzahl, davon LOWBAT zutreffend) ausgegeben 
 log("Text: " + textLOWBAT);
 log("Anzahl Geräte: " + moeglicheLOWBAT + " # davon LOWBAT erkannt: " + textLOWBAT.length);// die ermittelten Werte werden als javascript.0. Variable in ioBroker gespeichert (z.B. für die Verarbeitung in VIS) 
 setState("zählenLowbat.textLOWBAT", textLOWBAT.join(',<br>')); // Schreibt die Namen der Geräte mit LOWBAT Meldung
 setState("zählenLowbat.anzahlLOWBAT", textLOWBAT.length); // Schreibt die aktuelle Anzahl der LOWBAT-Meldungen
 setState("zählenLowbat.möglicheLOWBAT", moeglicheLOWBAT); // Schreibt die Anzahl der vorhandenen Batterie-Geräte
 }cacheSelectorLOWBAT.on(function(obj) { // bei Zustandänderung . LOWBAT in allen Gewerken 
 countLowbat(obj);
 });
 schedule("/60 * * * *", function () { //oder!! soll entweder ausgelöst werden alle 10 Minuten
 log("===>Will be triggered every 60 minutes!");
 countLowbat();
 });muss ich sonst noch was ändern? 
- 
					
					
					
					
 @markphilip sagte: var cacheSelectorLOWBAT = $('channel[state.id=*0.LOWBAT]'); // für Homematic 
 var cacheSelectorLOW_BAT = $('channel[state.id=*0.LOW_BAT]'); // für Homematic IPDu verwendest anschließend nur cacheSelectorLOWBAT. Ändere den mal in const cacheSelectorLOWBAT = $('hm-rpc.*.0.LOW*');Javascript-Code bitte immer in Code tags </> posten. 
 
		
	 
		
	 
			
		 
			
		 
			
		