Fenstersymbol mit Anzahl offener Fenster als Kreis

Begonnen von zap, 31 Januar 2016, 15:10:17

Vorheriges Thema - Nächstes Thema

CoolTux

Da ist ein Leerzeichen rein gerutscht

CommandSet(undef, ' offeneFenster ' . numberOfOpenWindows())

Ändern zu

CommandSet(undef, 'offeneFenster ' . numberOfOpenWindows())
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

PingPong

2018.03.27 20:30:38 5: XiaomiGateway: Read> Read start
2018.03.27 20:30:38 5: XiaomiGateway: Read> {"cmd":"report","model":"sensor_magnet.aq2","sid":"158d0001daefe8","short_id":52743,"data":"{\"status\":\"close\"}"}
2018.03.27 20:30:38 5: XiaomiGateway: Read> Dispatch {"cmd":"report","model":"sensor_magnet.aq2","sid":"158d0001daefe8","short_id":52743,"data":"{\"status\":\"close\"}"}
2018.03.27 20:30:38 5: XiaomiGateway: dispatch {"cmd":"report","model":"sensor_magnet.aq2","sid":"158d0001daefe8","short_id":52743,"data":"{\\"status\\":\\"close\\"}"}
2018.03.27 20:30:38 4: XiaomiGateway: DEV_Parse> IS DEFINED sensor_magnet.aq2 : 158d0001daefe8
2018.03.27 20:30:38 5: XiaomiGateway: DEV_Read> SID: 158d0001daefe8 XiaomiSmartHome_Device
2018.03.27 20:30:38 3: XiaomiGateway: DEV_Read> Name: Fensterkontakt_SchlafzimmerKeller SID: 158d0001daefe8 Type: sensor_magnet.aq2 Status: close
2018.03.27 20:30:38 5: Starting notify loop for Fensterkontakt_SchlafzimmerKeller, 2 event(s), first is close
2018.03.27 20:30:38 5: Batteriestatus: not on any display, ignoring notify
2018.03.27 20:30:38 5: Triggering notifyAnzahlFenster
2018.03.27 20:30:38 4: notifyAnzahlFenster exec { CommandSet(undef, 'offeneFenster' . numberOfOpenWindows()) }

2018.03.27 20:30:38 5: Cmd: >{ CommandSet(undef, 'offeneFenster' . numberOfOpenWindows()) }
<
2018.03.27 20:30:38 3: notifyAnzahlFenster return value: Please define offeneFenster12 first
2018.03.27 20:30:38 5: End notify loop for Fensterkontakt_SchlafzimmerKeller

CoolTux

Nur das vordere Leerzeichen. Das hintere lassen

CommandSet(undef, 'offeneFenster ' . numberOfOpenWindows())
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

CoolTux

Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

PingPong

grmpf.... Da hab ich es nur gut gemeint und wollte den nächsten Fehler direkt mit beheben :-(

So... Teilerfolg...juhhuuu :-) Die 12 stehen jetzt auch im Dummy !!!

Aber... Das kann nicht sein. Liegt aber vermutlich eher an der abweichenden Statusmeldung - wir fragen doch "nur" auf !=close ab, oder?
Damit ist dann "closed" ebenfalls geöffnet :-)

btw: Weißt du auswendig, wie man das Logfile leert? :-)

PingPong

wenn ich das richtig versteh, werden doch jetzt auch "nur" alle devices berücksichtigt, die mit "Fensterkontakt" beginnen und in der Gruppe "Fenstersensoren" enthalten sind, oder?

Da hätte ich nämlich insgesamt nur 11 :-)

CoolTux

Leeren kannst du es über die die Linuxkonsole

> logfilename

Nicht ganz. Triggern tun nur die mit Namen Fensterkontakt. Die Zahl aber kommt aus dem tatsächlichen group=Fenstersensor und die Filter.
jetzt müssen wir das Filter erweitern.

return devspec2array("group=Fenstersensoren:FILTER=STATE!=close:FILTER=STATE!=closed")
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

PingPong

ok... jetzt sind es nur noch 10 offene Fenster - aktuell immer noch 10 zu viel :-)

Kann ich das direkt folgendermaßen um "Close" erweitern?
devspec2array("group=Fenstersensoren:FILTER=STATE!=close:FILTER=STATE!=Close:FILTER=STATE!=closed")


mumpitzstuff

Schreib doch den Einzeiler gleich ins notify mit rein...

defmod nty_OffeneFenster notify FENSTER_.*:(open|tilted|closed?) { CommandSet(undef, 'dmy_OffeneFenster '.devspec2array('NAME=FENSTER_.*:FILTER=STATE!=closed?')) }

Und close oder closed sollte mit closed? gehen.

CoolTux

Zitat von: PingPong am 27 März 2018, 21:01:26
ok... jetzt sind es nur noch 10 offene Fenster - aktuell immer noch 10 zu viel :-)

Kann ich das direkt folgendermaßen um "Close" erweitern?
devspec2array("group=Fenstersensoren:FILTER=STATE!=close:FILTER=STATE!=Close:FILTER=STATE!=closed")

Na dann zeig mal ein list von den anderen Fensterdevices. Wie ist da der STATE? Also das Internal STATE
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

CoolTux

Du kannst das ganze im übrigen in der Kommandozeile von FHEMWEB mit dem list Befehl testen
Bei mir zum Beispiel


list group=Fenster:FILTER=STATE!=closed:FILTER=STATE!=geschlossen


Und ja man kann es später auch im Notify schreiben wenn man diese Auflistung sonst nicht mehr braucht. Ich zum Beispiel brauche eine Liste aller Fenster die nicht geschlossen sind habe daher eine Funktion in der myUtils welche ich von unterschiedlichen Stellen aufrufe.
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

CoolTux

geht noch kürzer

devspec2array("group=Fenstersensoren:FILTER=STATE!=(close|Close|closed)")
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

PingPong

ok...

also das
list group=Fenstersensoren:FILTER=STATE!=closed:FILTER=STATE!=geschlossen

gibt mir genau die 10 Fenster aus... damit kann man vermutlich arbeiten :-)

ok.. ich war faul und hatte vorhin im Rahmen der Umbenennung nur das eine Device aufgeräumt.
Jetzt muss ich aber leider erstmal raus hier. Meine Tochter hat morgen Geburtstag und ich muss noch einiges vorbereiten.

Wenn es Dir nichts ausmacht, bereinige ich dann nachher erstmal noch die anderen Devices, versuche dann hier nochmal ein wenig zu verstehen und melde mich morgen nochmal mit dem aktuellen Stand.

Ich möchte mich an dieser Stelle aber schonmal bedanken, für die Mühe, die Du Dir hier heute mit mir gibst.
Das finde ich wirklich großartig und außerordentlich. Danke

Dir noch einen schönen Restabend und bis morgen.

VG
Marc

mumpitzstuff

devspec2array("group=Fenstersensoren:FILTER=STATE!=([Cc]losed?|geschlossen)")  :)

PingPong

So, also ich glaube ich hab es  :)
Aktuell wird genau die richtige Anzahl offener Fenster angezeigt.
Werde das jetzt die nächsten Tage einmal beobachten und etwas intensiver testen.

Hier nochmal kurz meine aktuellen Abfragen dokumentiert - vielleicht kann es nochmal jemand gebrauchen...
Nochmal ganz lieben Dank für Eure Mühen und Geduld...

Dummy
Internals:
   NAME       offeneFenster
   NR         305
   STATE      1
   TYPE       dummy
   READINGS:
     2018-03-2


99_myUtils
sub numberOfOpenWindows() {
      return devspec2array("group=Fenstersensoren:FILTER=STATE!=([Cc]losed?|geschlossen)")
}


notify
Fensterkontakt.*([Oo]pen|tilted|[Cc]losed?) { CommandSet(undef, 'offeneFenster ' . numberOfOpenWindows()) }