NEWS
Mehrere Fehlermeldungen Komma separiert ausgeben
-
Hallo ich habe 5 IP Kameras laufen. Ich möchte gerne mittels PING (CCU2) ermitteln, welche Kamera(s) nicht erreichbar sind.
Anbei mein Grundscript:schedule("*/1 * * * *", function () { createState('Störung.Kamera'); var Garage= getState('hm-rpc.1.CUX2803001.5.STATE').val var Strasse= getState('hm-rpc.1.CUX2803001.9.STATE').val var Vorne= getState('hm-rpc.1.CUX2803001.8.STATE').val var Garten= getState('hm-rpc.1.CUX2803001.4.STATE').val var WG= getState('hm-rpc.1.CUX2803001.7.STATE').val var idKamera = '6'; var camfail = ""; if (Garage == false) idKamera = '1'; else if (Strasse == false) idKamera = '2'; else if (Vorne == false) idKamera = '3'; else if (Garten == false) idKamera = '4'; else{if (WG == false) idKamera = '5'; }; var kamera = ['Garage','Strasse','Vorne','Garten','WG','keine Störung']; setState('javascript.0.Störung.Kamera', kamera[idKamera]); log(kamera[idKamera]); camfail = kamera[idKamera]; if (idKamera < '6') {camfail = kamera[idKamera]; camfail = camfail + ", " + kamera[idKamera]}; log("LOG 2: " + camfail); });
An Zeile 20 Strauchel ich. Habe mal mit LOG geübt, bekomme aber immer zweimal die Meldung keine Störung.
Also jede Störung darf nur einmal erscheinen.
Michael -
Zum einen solltest du deine idKamera als Zahl definieren und nicht als String, also überall '' entfernen: zB.
var idKamera = 6;
In #16 definierst du dann ein Array, allerdings fangen Arrays nicht bei "1" an, sondern bei "0". Du vergibst bspw. für "Garage" die ID 1, dass entspricht aber in deinem Array dann "Strasse".
kamera[0] = Garage
kamera[1] = Strasse
...
kamera[5] = keine Störung...und dein Anfangs Problem bekommst du so nicht gelöst. Du wirst immer nur genau eine Kamera als Fehlermeldung erhalten, und zwar die mit der höchsten Nummer. Sollte also bspw. 1 +5 ausgefallen sein, wird dir nur die "5" angezeigt.
Da würde es sich zB. anbieten die fehlerhaften IDs in ein separates Array zu schreiben (man könnte auch dein kamera-Array um eine Ebene erweitern). Das kann man dann mittels for abgrasen und deine Komma separierte Liste erstellen.