TYPE=xy automatisch in eigenen Room

Begonnen von hmtec99, 11 April 2019, 18:29:42

Vorheriges Thema - Nächstes Thema

hmtec99

wenn wir schon mal dabei sind...

mich nervt es dauernd z.B. "list TYPE=notify" zu tippen, wenn ich z.B. ein notify ändern will.

Dafür habe ich mir ein at gebastet, was 1x in der Stunde alle notifys in den Room notify schiebt (wenn ich es bei der Definition nicht händisch gemacht habe oder wenn ich plötzlich alle notifys noch in Room
notify2 haben will) und das funktioniert für mich wesentlich schneller.

Generell coole Sache aber bei jeder Ausführung wird ,notify an das Attribut Room angehängt und werden deshalb immmer mehr und müssen dementsprechend auch so oft gelöscht werden, wenn
ein notify nicht mehr im Room sein soll > ist also Käse.

Andererseits kann ich das Attribut auch nicht komplett löschen und wieder setzen, weil ja auch noch andere Räume hinterlegt sein können (und die dann weg wären).

Wie würdet ihr das lösen?

DeeSPe

MAINTAINER: 22_HOMEMODE, 98_Hyperion, 98_FileLogConvert, 98_serviced

Als kleine Unterstützung für meine Programmierungen könnt ihr mir gerne einen Kaffee spendieren: https://buymeacoff.ee/DeeSPe

Benni

Du kannst auch ein notify auf global:DEFINED setzen und darin den TYPE prüfen und dann einmalig den room zuordnen:
siehe https://fhem.de/commandref_DE.html#global unter Events

DeeSPe

#3
Zitat von: Benni am 11 April 2019, 18:36:45
Du kannst auch ein notify auf global:DEFINED setzen und darin den TYPE prüfen und dann einmalig den room zuordnen:
siehe https://fhem.de/commandref_DE.html#global unter Events

Genau so mache ich das!

Gruß
Dan

Tipp: https://wiki.fhem.de/wiki/Modul_HOMEMODE#HomeCMDfhemDEFINED
MAINTAINER: 22_HOMEMODE, 98_Hyperion, 98_FileLogConvert, 98_serviced

Als kleine Unterstützung für meine Programmierungen könnt ihr mir gerne einen Kaffee spendieren: https://buymeacoff.ee/DeeSPe

justme1968

statt list kannst du auch show verwenden :)

oder du nimmst das extraRooms attribut um einen dynamischen raum zu erstellen der immer automatisch alle notifys enthält.
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

Benni

Zitat von: justme1968 am 11 April 2019, 20:14:56
oder du nimmst das extraRooms attribut um einen dynamischen raum zu erstellen der immer automatisch alle notifys enthält.

Oh je, das ist mir auf die Schnelle gar nicht eingefallen (zu neu), obwohl ich das selbst ja so mache  ;D

gb#

hmtec99

Kann man die extraRooms in Fhemweb eigentlich  dauerhaft ausgeklappt darstellen (also nicht zuerst Klick auf "Abfragen" und danach auf "Fenster").

Je nachdem wo das Menü steht wird dann die Seite wieder nach oben gescrollt (reload?) und dann nervt das schon wieder mehr als es nützt.

hmtec99

Zu den extraRooms habe ich noch eine Frage:

extraRooms
Durch Leerzeichen oder Zeilenumbruch getrennte Liste von dynamischen Räumen, die zusätzlich angezeigt werden sollen. Beispiel:
attr WEB extraRooms name=Offen:devspec=contact=open.* name=Geschlossen:devspec=contact=closed.*

Kann man statt devspec auch eine Gerätegruppe (z.B. notify oder CUL_HM) angeben um die Auswahl weiter einzugrenzen?

Meine Versuche führten leider zu nichts.

Also ich meine ungefähr so: name=Offen:CUL_HM=contact=open.*

justme1968

#8
schau dir noch mal an wie devspec und dort FILTER funktioniert. genau dazu ist es doch da:list FILTER=TYPE=CUL_HM:FILTER=contact=open.*
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

hmtec99

#9
Nein,es funktioniert soweit schon.

name=Offen:devspec=contact=open.* liefert mir alle offenen Fenster.

Aber ich will es auf einen TYPE beschränken (kann ja mehrere TYPE's geben, die ein Reading contact haben).

Wie also (wenn möglich) kann ich das für extraRooms definieren?

Wie kann ich das

>> Filter: list FILTER=TYPE=CUL_HM:FILTER=contact=open.*

damit verbinden

>> name=Offen:devspec=contact=open.*

damit ich nur bestimmte Gerätetypen auf contact=open abfrage?


Oder nochmal ganz konkret:

Kann ich (das Wort) devspec in irgendeiner Form durch eine devspec ersetzen, z.B.  name=Offen:CUL_HM=contact=open.* um nur CUL_HM > contact abzufragen?

justme1968

das hier: FILTER=TYPE=CUL_HM:FILTER=contact=open.* ist deine devspec. einfach nur benutzen:
name=Offen:devspec=FILTER=TYPE=CUL_HM:FILTER=contact=open.*
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

hmtec99

Hier noch mal ein konkreter Anwendungsfall:

Ich will wissen was für einen Zustand meine Displays haben. Dabei frage ich die Stati disabled | disconnected | connected ab.

name=Abfragen->Displays:devspec=dis.*|con.*

Natürlich liefert mir die Abfrage auch alle Geräte zurück, die u.a. das Attribut disable (0 oder 1) haben; ich will aber nur die Display-Stati als extraRoom haben.

justme1968

hast du gelesen was ich geschrieben habe? hast du dir FILTER in devspec angeschaut?
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

hmtec99

danke justme!

das wollte ich wissen!!

da problem ist für entwickler nicht existent, aber wenn ich als anwender mir die (m.E. für Anwender oft sehr unklare oder auch unvollständige) dokumentation durchlese und dann noch verschiedene dinge
miteinander verbinden soll, die teilweise in der doku, teilweise im wiki, teilweise im forum zu finden sind (wenn man sie findet) oder gar nicht (viele attribute der module sind in den moduldokus (aka "device
specific help") überhaupt nicht dokumentiert.

kein vorwurf. ist aber so.  >:(

hmtec99

nachtrag.

das ist genau so ein beispiel (wieder kein vorwurf!):

name=Offen:devspec=FILTER=TYPE=CUL_HM:FILTER=contact=open.*

es gibt ein der hilfe zum attribut keine beispiel aus dem hervorgeht, das dies überhaupt möglich ist.

extraRooms
Space or newline separated list of dynamic rooms to add to the room list.
Example:
attr WEB extraRooms name=open:devspec=contact=open.* name=closed:devspec=contact=closed.*


vielleicht bin ich zu doof, aber für mich ist es nicht selbsterklärend, das ich da noch was dazwischenbasteln kann (und wenn doch, wie?).

:P

justme1968

sorry. gerade in diesem fall ist die beschreibung zur devspec und FILTER in der commandref sehr vollständig und das jammern über nicht vorhandene doku nicht angebracht. sag mit beispielen und in deutsch und englisch.
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

hmtec99

danke auf jeden fall für die hilfe!  ;D

justme1968

hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

hmtec99

ich meinte damit die beschreibung zum attribut extrarooms.

übrigens funktioniert es nicht so wie du es beschrieben hast. oder habe ich was übersehen?


name=Abfragen->Fenster:devspec=contact=open.*|closed.* >> funktioniert

name=Abfragen->Fenster2:devspec=FILTER=TYPE=CUL_HM:FILTER=contact=open.*|closed.* >> funktioniert nicht (leere Ausgabe)

List

Internals:
   CHANGED   
   CUL_HM_MSGCNT 18
   CUL_HM_RAWMSG A0D15A610517F23F1123406010000::-60:CUL_HM:
   CUL_HM_RSSI -60
   CUL_HM_TIME 2020-01-02 13:28:49
   DEF        517F23
   FUUID      5c48ebed-f33f-7535-f127-1a5706b892c584a5
   IODev      CUL_HM
   LASTInputDev CUL_HM
   MSGCNT     18
   NAME       FK_BD
   NOTIFYDEV  global
   NR         132
   NTFY_ORDER 50-FK_BD
   STATE      closed
   TYPE       CUL_HM
   lastMsg    No:15 - t:10 s:517F23 d:F11234 06010000
   peerList   TH_BD_WindowRec,
   protLastRcv 2020-01-02 13:28:49
   protRcv    18 last_at:2020-01-02 13:28:49
   protRcvB   2 last_at:2020-01-02 13:08:53
   protSnd    16 last_at:2020-01-02 13:28:49
   protState  CMDs_done
   rssi_at_CUL_HM cnt:18 min:-67 max:-59.5 avg:-62.61 lst:-60
   Helper:
     DBLOG:
       state:
         logdb:
           TIME       1577966933.21765
           VALUE      closed
   READINGS:
     2020-01-02 01:07:13   Activity        alive
     2019-03-12 23:40:28   D-firmware      1.0
     2019-03-12 23:40:28   D-serialNr      NEQ1505080
     2020-01-02 13:28:49   alive           yes
     2020-01-02 13:28:49   battery         ok
     2020-01-02 13:28:49   contact         closed (to CUL_HM)
     2020-01-02 01:07:13   peerList        TH_BD_WindowRec,
     2019-05-21 05:34:57   powerOn         2019-05-21 05:34:57
     2020-01-02 13:28:49   recentStateType info
     2020-01-02 13:28:49   sabotageError   off
     2020-01-02 13:28:49   state           closed
     2020-01-02 13:08:53   trigDst_F11234  noConfig
     2020-01-02 13:08:53   trigger_cnt     201
   helper:
     HM_CMDNR   21
     mId        00C7
     regLst     ,0,1,4p
     rxType     28
     supp_Pair_Rep 0
     ack:
     expert:
       def        1
       det        0
       raw        1
       tpl        0
     io:
       lstRecType 10
       newChn     +517F23,00,00,00
       nextSend   1577968130.03736
       nxtSndMcnt 15
       prefIO     
       restoredIO CUL_HM
       rxt        2
       tgtDly     88
       vccu       
       lRcTm:
         CUL_HM     249135780
         tnms       641390495
       p:
         517F23
         00
         00
         00
     mRssi:
       mNo        15
       io:
         CUL_HM:
           -50
           -50
     prt:
       bErr       0
       sProc      0
       sleeping   1
       rspWait:
     q:
       qReqConf   00
       qReqStat   
     role:
       chn        1
       dev        1
     rpt:
       IO         CUL_HM
       flg        A
       ts         1577968129.95484
       ack:
         HASH(0x5584c433c0)
         158002F11234517F2300
     rssi:
       at_CUL_HM:
         avg        -62.6111111111111
         cnt        18
         lst        -60
         max        -59.5
         min        -67
     tmpl:
Attributes:
   IODev      CUL_HM
   actCycle   002:50
   actStatus  alive
   alias      Fensterkontakt Bad
   autoReadReg 5_readMissing
   event-on-change-reading alive,battery,state
   expert     2_raw
   firmware   1.0
   model      HM-SEC-SCo
   peerIDs    00000000,5016C903,
   room       Bad
   serialNr   NEQ1505080
   subType    threeStateSensor

hmtec99

#19
Hab alle erdenklichen Kombinationen ausprobiert, keine Funktion mit Filter.

Aus der Commandref werde ich auch nicht schlauer wie genau die Zeile aussehen muss.

eigentlich ja so:

name=Abfragen->Fenster:devspec=FILTER=TYPE=CUL_HM=contact=open.*|closed.*

oder eher

name=Abfragen->Fenster:devspec:FILTER=TYPE=CUL_HM=contact=open.*|closed.*

aber da erhalte ich eine Fehler beim Speichern des Attributs



    ein NAME=WERT Ausdruck, wo NAME ein "Internal" Wert wie TYPE ist, ein Reading-Name oder ein Attribut. WERT ist ein regulärer Ausdruck. Um die Bedingung zu negieren, muss NAME!=WERT verwendet werden. Um die Suche einzugrenzen, kann man als Praefix i: für internal Werte, r: für Reading-Namen und a: für Attribute verwenden, siehe das Beispiel unten. Groß-/Kleinschreibung wird durch die Verwendung von ~ oder !~ ignoriert.
    Falls die Spezifikation von :FILTER=NAME=WERT gefolgt wird, dann wird die zuvor gefundene Liste durch diesen neuen Ausdruck gefiltert.

Beispiele:

    set lamp1 on
    set lamp1,lamp2,lamp3 on
    set lamp.* on
    set room=kitchen off
    set room=kitchen:FILTER=STATE=on off
    set room=kitchen:FILTER=STATE!=off off

    list disabled=
    list room~office
    list TYPE=FS20 STATE
    list i:TYPE=FS20 STATE


Ich kapiers nicht.  :P

hmtec99

Das einzige was funktioniert ist folgendes:

name=Abfragen->Displays:devspec=TYPE=Nextion

Damit kann ich aber nicht weiter filtern (z.b. disconnected).

Bei folgendem kommt wieder eine leere Seite als Ergebnis.

name=Abfragen->Displays2:devspec=TYPE=Nextion=dis.*


Heißt das man kann nicht mehr als einen Filter (z.B. TYPE= oder jeweils eins von Internal/Attribut/Reading) verwenden?

sinus61

#21
Du kannst doch erst den Type setzen und dann mit einem Filter weiter einschränken:


name=HUE->Dimmer:devspec=TYPE=HUEDevice:FILTER=subType=.*dimmer


Alle HUEDevice und dann den Filter auf die .*dimmer

Oder sowas zu deiner Abfrage von weiter oben


list TYPE=CUL_HM:FILTER=contact=(open.*|closed.*)