[GELÖST]Prüfen ob ein von X Fenstern geöffnet

Begonnen von Tommi ratlos, 05 November 2017, 11:05:13

Vorheriges Thema - Nächstes Thema

Thorsten Pferdekaemper

Zitat von: CoolTux am 05 November 2017, 13:20:15
Kann ich aus der Praxis raus nicht bestätigen. Aber im Code habe ich nun nicht geschaut.
Ich habe jetzt nochmal scharf ins Coding geschaut. Die Routine ist wirklich etwas seltsam. Wenn man sie mit einer Devspec aufruft, in der "=" oder ">" oder sowas vorkommt, dann wird tatsächlich ein leeres Array zurück gegeben, wenn nichts past.

Zitat von: Tommi ratlos am 05 November 2017, 13:25:16
Geht nicht:

unless (@winopen){
}

Dsa finde ich sehr seltsam, da es dasselbe ist wie...

if(@winopen == 0){
}


Zitat von: CoolTux am 05 November 2017, 13:30:56

unless ( not defined(@winopen) ){
}

So sollte es eigentlich gehen.
Das ist dasselbe wie

if(defined(@winopen) ){
}

...und das ist immer wahr, da devspec2array in jedem Fall ein Array zurück gibt. Es ist immer "defined", nur manchmal leer. (Zumindest soweit ich das sehen kann.)

Insgesamt sieht es so aus, dass devspec2array unterschiedliche Dinge zurückliefern kann, wenn nichts gefunden wurde. Wenn das Ergebnis einem Array zugewiesen wird, dann kann das sein...

  • Ein Array mit dem Argument der Funktion als einziges Element. (Also z.B. "HM_SEC_Bad.*")
  • Ein leeres Array
  • Ein Array mit "" als einzigem Element
Wenn das Ergebnis der Funktion einem Skalar zugewiesen wird, dann würde ich sagen, dass bei "kein Treffer" dieser Skalar die folgenden Werte annehmen kann:

  • Das Argument der Funktion. (Also z.B. "HM_SEC_Bad.*")
  • 0
  • 1

Ganz toll...
Gruß,
   Thorsten

FUIP

thotti70

Hi, auch wenn schon als gelöst markiert, ich habe es mit dem Modul Monitoring umgesetzt:

defmod Fenster_monitoring monitoring ^Fenster_.*_.*:(open|tilted) ^Fenster_.*_.*:closed


Den String ^Fenster_.*_.* musst du halt gegen den Namen deiner Fensterkontakte austauschen.
Evtl. auch noch die Attribute errorWait bzw. warningWait setzen.

VG Thotti