Batteriestatus mehrerer Geräte soll eine einzelne LED steuern

Begonnen von svenson6, 27 Februar 2016, 12:00:15

Vorheriges Thema - Nächstes Thema

svenson6


Verehrtes Forum,

ick hab da ma 'ne Fraage: Für meine im ganzen Haus verstreuten MAX!-Geräte habe ich mir eine kleine Übersicht gebastelt, die mir den Batteriestatus für jedes Gerät anzeigt:

define battStatus readingsGroup .*:[Bb]attery
attr battStatus alias Batteriestatus
attr battStatus notime 1


Sehr gut, klappt hervorragend. Nun habe ich im Flur ein kleines Statusdisplay mit LEDs, die in verschiedenen Farben leuchten können. Funktioniert ebenfalls perfekt. Nun würde ich gerne eine der LEDs rot leuchten lassen, wenn mindestens eines der batteriebetriebenen Geräte etwas anderes als "ok" meldet. Da kann ich dann ja anschließend nachsehen, wer der Störenfried ist. Nach erfolgtem Batteriewechsel soll die LED dann grün werden, wenn alle Geräte wieder "ok" melden. Dazu müsste ich die readingsGroup also irgendwie auswerten. Aber wie?

Ein schönes Wochenende wünscht
svenson6

satprofi

Doif ([battery] eq "ok") ( set led green)
Doelse ( set led red)

Sent from my OPO

gruss
-----------------------------------------------------------------------
beelink miniPC - Fhem 6.x CUL 868, FS20, NetIO230 CUL 433
HMLAN, HM-CC-RT-DN,Homematic Actoren,LD382A,Telegram

svenson6

Hmmm. Also, irgendwie bekomme ich das nicht hin. Hab's jetzt folgendermaßen versucht:

define Batteriestatus DOIF ([battery] eq "ok") (set FlEG.Statusanzeige_Led_16 led green) DOELSE (set FlEG.Statusanzeige_Led_16 led red)

Auch

define Batteriestatus DOIF ([battStats] eq "ok") (set FlEG.Statusanzeige_Led_16 led green) DOELSE (set FlEG.Statusanzeige_Led_16 led red)

tut nicht. In beiden Fällen zeigt die LED rotes Licht, obwohl alle Batterien fit sind. Was mache ich falsch?

Hermann20

Hallo,

meiner Meinung nach reicht der Batteriestatus nicht aus. Sensoren (Batterien) können schlagartig aufgeben und dann bleibt der Batteriestatus auf ok. Ich schalte eine LED bei unzureichendem Batteriestatus orange und wenn sich ein Device nicht mehr meldet auf rot.

define n_LowBattery notify .*:battery.* { if($EVENT !~ m/ok/) { fhem ("set Led16 led orange") } }
define n_ActionDetector notify ActionDetector:status_.* {\
Log 1, "Alive: $EVTPART0 $EVTPART1";;\
  if ("$EVTPART1" ne "alive") {\
    fhem ("set Led16 led red")\
  }\
}\


Gruß Hermann
NUC12i3, Proxmox VE, Ubuntu 24.04, FHEM (aktuell): 2 HMUART, ca. 50 HM Devices, ca. 10 Devices über MQTT, 4 DECT200 über FBAHAHTTP, Heizungssteuerung über RS232, HMCCU, Telegram
CCU3, RaspberryMatic (aktuell): ca. 10 HmIP Devices

svenson6

Hallo Hermann,

das sieht gut aus und hört sich vernünftig an. Und was setzt die LED dann wieder auf grün, wenn alles wieder okay ist? Machst Du das dann per Hand?

Viele Grüße von
svenson6

Hermann20

Ja, ich setze die LED manuell auf grün.

Ich hatte anfangs Probleme mit dem Attribut actCycle. Ein Sensortyp hat als Default eine zu kurze Zeit. Daher auch der Eintrag in das Log-File. Dabei ist es geblieben.

Gruß Hermann
NUC12i3, Proxmox VE, Ubuntu 24.04, FHEM (aktuell): 2 HMUART, ca. 50 HM Devices, ca. 10 Devices über MQTT, 4 DECT200 über FBAHAHTTP, Heizungssteuerung über RS232, HMCCU, Telegram
CCU3, RaspberryMatic (aktuell): ca. 10 HmIP Devices