PRESENCE cover version - anderer Ansatz basierend auf aktuellem Code

Begonnen von martinp876, 23 Dezember 2020, 14:38:45

Vorheriges Thema - Nächstes Thema

martinp876


  • um den Umgang mit der/einer offiziellen Verison kümmere ich später... mal sehen
  • lepresenced toggelt es nach wie vor nahezu sekündlich
    muss ich einmal ansehen. Ich habe es nur mit presenced getestet - ist es hier auch der Fall?
    Grundsätzlich mache ich es wie da alte Modul (denke ich :) )
    Du kannst einmal verbose 5 setzen und das Log hierzu posten
  • Ein gesetztes disable 1 wird beim Speichern der DEF immer noch ignoriert.
    verstehe ich noch nicht. Ich habe aber noch etwas korrigiert. Disable ist ein Attribut und wird faktisch nach DEF ausgeführt. Def Default von Def setzt enable!
  • lan-bluetooth readings
    presenced liefert bei mir meine addon daten, daher sehe ich das nicht. Nutzt du den collector?
    Schalte auch einmal verbose 5 und schicke das Log von einer itteration
  • intervalNormal 1
    Ich denke nicht, dass ich das war
    => korrekt - das ist der Default.
  • ARRAY(0x55a242a4be98)
    gelöst in der aktuellen Version
  • Beschreibung
    habe ich im File info.html angehängt. Das ist mein aktueller Stand


Newbee

Hallo,

habe die Datei nun in allen Instanzen ausgetauscht. Bis jetzt keine Fehler festgestellt. Lass es jetzt einfach laufen und melde mich wieder.

Auf diesem Wege wünsche ich einen guten Rutsch

Danke für den Umbau und die ergänzten Readings......

Grüße
Intel-NUC mit ubuntu server 20.04; FHEM 6.0
HM, Dect, Netatmo, Hue

gestein

Hallo,

habe nun auch auf lepresenced 0.93 upgedatet - klappt, aber noch nicht ganz.
Die Felder werden immer noch nicht ganz richtig zugeordnet.
Aber: die Readings für die Batterien sind da ;)

ArrivalCnt        1         2020-12-31 15:40:03
batteryPercent          28        2020-12-31 12:55:33
batteryPercentAge     0         2020-12-31 12:55:33
command_accepted  yes       2020-12-31 15:40:05
daemon                   lepresenced V0.93     2020-12-31 15:40:03
device_name           rooms='Vorzimmer';room='Vorzimmer';rssi_Vorzimmer='-81';device_name=Gigaset G-tag;rssi=-81;model=lan-lepresenced       2020-12-31 15:40:03
lastArrival                2020-12-31 15:40:03 2020-12-31 15:40:03
lastDeparture           2020-12-30 22:08:51 2020-12-30 22:08:51
model                      lan-lepresenced         2020-12-31 15:40:03
presence                  present                     2020-12-31 15:40:03
room                       daemon=lepresenced V0.93    2020-12-31 15:40:03
rooms                     Vorzimmer                 2020-12-31 15:40:03
rssi                         -81                            2020-12-31 15:40:03
rssi_Vorzimmer        -81                           2020-12-31 15:40:03
state                       present                     2020-12-31 15:40:03


Aber es schaut schon mal gut aus.
Den Rest schaue ich mir morgen an.

Guten Rutsch aus 2020 in ein (hoffentlich) besseres 2021!
lg, Gerhard

martinp876

Einmal verbose 5 logging damit ich den raw string sehen kann  ist hilfreich

binford6000

#79
Zitat von: martinp876 am 31 Dezember 2020, 17:55:15
Einmal verbose 5 logging damit ich den raw string sehen kann  ist hilfreich

2020.12.31 21:50:33.214 5:  PRESENCE (christine_gtag.pre) - received data: present;device_name=Gigaset G-tag;rssi=-68;batteryPercent=19;batteryPercentAge=1;model=lan-lepresenced;daemon=lepresenced V0.93

Bei Gerhard mit collectord steht nur noch rooms='Vorzimmer';room='Vorzimmer' davor.

Für was ist denn das Attribut prGroupDisp condense verbose?

Guten Rutsch und
#VGS

martinp876

danke für das Logging. Im Anhang nun ein update für die entsprechenden Readings

ZitatFür was ist denn das Attribut prGroupDisp condense verbose?
Readings für prGroup werden nach User-geschmack angepasst. Schon mein "commandref" hierzu angesehen? War im letzten Post

gestein

Hallo,

Habe die neue Version eingespielt - passt fast.

Die Readings sind richtig zugeordnet.
Nur eine Kleinigkeit passt noch nicht.
Manche Felder haben Hochkomma vorne und hinten.
room 'Vorzimmer'
rooms 'Vorzimmer,Zuhause'
rssi  -76
rssi_Vorzimmer '-76'
rssi_Zuhause '-90'


Meine Devices mit "function" springen einfach nicht an - die sind immer disabled (auch wenn ich das Attribut lösche).
Werde die heute Abend mal weglöschen und neu anlegen.
Vielleicht passt es dann.

Danke auf alle Fälle!!

lg, Gerhard

binford6000

#82
Zitat von: martinp876 am 01 Januar 2021, 12:49:15
Schon mein "commandref" hierzu angesehen? War im letzten Post

Ja hab ich. Aber es erschließt sich nicht auf den ersten Blick...

Bei room ohne collectord steht noch was falsches drin:
Internals:
   ADDRESS    7C:2F:80:98:AC:0F
   DEF        lan-bluetooth 7C:2F:80:98:AC:0F 10.3.3.9:5333
   DeviceName 10.3.3.9:5333
   FD         16
   FUUID      5fec614d-f33f-fe74-fd31-9eeb6ab851b7850c
   FVERSION   73_PRESENCE.pm:0.183140/2019-01-18
   MODE       lan-bluetooth
   NAME       sebastian.gtag.pre
   NOTIFYDEV  global
   NR         70
   NTFY_ORDER 50-sebastian.gtag.pre
   PARTIAL   
   STATE      present
   TYPE       PRESENCE
   CL:
     Authenticated 0
     BUF       
     FD         13
     FW_ID      1715
     LASTACCESS 1609505155
     NAME       WEB_10.3.3.30_50757
     NR         1715
     PEER       10.3.3.30
     PORT       50757
     SNAME      WEB
     SSL       
     STATE      Connected
     TEMPORARY  1
     TYPE       FHEMWEB
     canAsyncOutput 1
     READINGS:
       2021-01-01 13:44:08   state           Connected
   READINGS:
     2021-01-01 13:18:59   ArrivalCnt      2
     2021-01-01 13:44:59   batteryPercent  19
     2021-01-01 13:44:59   batteryPercentAge 5
     2021-01-01 13:18:59   command_accepted yes
     2021-01-01 13:44:59   daemon          lepresenced V0.93
     2021-01-01 13:44:59   device_name     Gigaset G-tag
     2021-01-01 13:18:59   lastArrival     2021-01-01 13:18:59
     2021-01-01 11:53:59   lastDeparture   2021-01-01 11:53:59
     2021-01-01 13:44:59   model           lan-lepresenced
     2021-01-01 13:44:59   presence        present
     2021-01-01 13:43:59   room            daemon=lepresenced V0.93
     2021-01-01 13:44:59   rssi            -72
     2021-01-01 13:44:59   state           present
   helper:
     DISABLED   0
     curState   present
     maybe      0
     nextScan   1609495068.2461
     cnt:
       exec       171
       maybe      0
       state      2
       th         0
     disp:
       condense   0
       verbose    1
     interval:
       absent     60
       init       30
       present    60
     timestamp:
       absent     2021-01-01 11:53:59
       present    2021-01-01 13:18:59
Attributes:
   devStateIcon present:ios-on-blue absent:ios-off disabled:ios-NACK
   event-on-change-reading .*
   intervalNormal 60
   intervalPresent 60
   prGroup    dynamic
   prGroupDisp verbose


Das Reading room macht auch ohne collectord wenig Sinn.

EDIT: Das Reading ist noch aus der alten Version. Habs rausgelöscht.


binford6000

Zitat von: gestein am 01 Januar 2021, 13:41:15
Manche Felder haben Hochkomma vorne und hinten.
room 'Vorzimmer'
rooms 'Vorzimmer,Zuhause'
rssi  -76
rssi_Vorzimmer '-76'
rssi_Zuhause '-90'


Bei mir - ohne collectord - nicht.  :o

binford6000

#84
Hab mit der neuesten Version folgendes festgestellt:

defmod christine_watch.pre PRESENCE function cmd:{checkAllFritzMACpresent("CA:8C:AD:C8:F6:B9")} scan:1

Internals:
   CFGFN     
   DEF        function cmd:{checkAllFritzMACpresent("CA:8C:AD:C8:F6:B9")} scan:1
   FUUID      5fef3c5b-f33f-fe74-0bf8-4b8e5cd2bc79885c
   MODE       function
   NAME       christine_watch.pre
   NOTIFYDEV  global
   NR         3318
   NTFY_ORDER 50-christine_watch.pre
   STATE      present
   TYPE       PRESENCE
   CL:
     Authenticated 0
     BUF       
     FD         18
     FW_ID      3263
     LASTACCESS 1609514084
     NAME       WEB_10.3.3.30_50404
     NR         3263
     PEER       10.3.3.30
     PORT       50404
     SNAME      WEB
     SSL       
     STATE      Connected
     TEMPORARY  1
     TYPE       FHEMWEB
     canAsyncOutput 1
     READINGS:
       2021-01-01 16:10:33   state           Connected
   READINGS:
     2021-01-01 16:14:42   ArrivalCnt      1
     2021-01-01 16:14:42   lastArrival     2021-01-01 16:14:42
     2021-01-01 16:14:35   model           function
     2021-01-01 16:14:42   presence        present
     2021-01-01 16:14:42   state           present
   helper:
     DISABLED   0
     curState   present
     maybe      0
     nextScan   0
     cnt:
       exec       1
       maybe      0
       state      1
       th         0
     disp:
       condense   1
       verbose    0
     interval:
       absent     1
       init       30
       present    1
     os:
       Cmd        {checkAllFritzMACpresent("CA:8C:AD:C8:F6:B9")}
       search     1
     timestamp:
       present    2021-01-01 16:14:42
Attributes:
   intervalNormal 1
   intervalPresent 1


funktioniert und wird present da das Reading im Fritzbox Device existiert.

defmod christine_watch.pre PRESENCE function cmd:checkAllFritzMACpresent("CA:8C:AD:C8:F6:B9") scan:1

Internals:
   CFGFN     
   DEF        function cmd:checkAllFritzMACpresent("CA:8C:AD:C8:F6:B9") scan:1
   FUUID      5fef3bc6-f33f-fe74-841c-f753dba34b52016a
   MODE       function
   NAME       christine_watch.pre
   NOTIFYDEV  global
   NR         3285
   NTFY_ORDER 50-christine_watch.pre
   STATE      absent
   TYPE       PRESENCE
   CL:
     Authenticated 0
     BUF       
     FD         18
     FW_ID      3263
     LASTACCESS 1609514042
     NAME       WEB_10.3.3.30_50404
     NR         3263
     PEER       10.3.3.30
     PORT       50404
     SNAME      WEB
     SSL       
     STATE      Connected
     TEMPORARY  1
     TYPE       FHEMWEB
     canAsyncOutput 1
     READINGS:
       2021-01-01 16:10:33   state           Connected
   READINGS:
     2021-01-01 16:12:14   lastDeparture   2021-01-01 16:12:14
     2021-01-01 16:12:06   model           function
     2021-01-01 16:13:07   presence        absent
     2021-01-01 16:13:07   state           absent
   helper:
     DISABLED   0
     curState   absent
     maybe      0
     nextScan   1609513987.99707
     cnt:
       exec       2
       maybe      0
       state      0
       th         0
     disp:
       condense   1
       verbose    0
     interval:
       absent     1
       init       30
       present    1
     os:
       Cmd        checkAllFritzMACpresent("CA:8C:AD:C8:F6:B9")
       search     1
     timestamp:
       absent     2021-01-01 16:12:14
Attributes:
   intervalNormal 1
   intervalPresent 1


Funktioniert auch aber das Device bleibt ewig auf absent.
Ich dachte die {} kann man jetzt weglassen?

Die "alten" Function models funktionieren ja auch weiterhin OHNE {}  :o


Internals:
   DEF        function cmd:checkAllFritzMACpresent("F0:78:07:14:4A:86") scan:1
   FUUID      5fee37f9-f33f-fe74-53ef-6b44e0b6763369b4
   FVERSION   73_PRESENCE.pm:0.183140/2019-01-18
   MODE       function
   NAME       christine_iphone.pre
   NOTIFYDEV  global
   NR         73
   NTFY_ORDER 50-christine_iphone.pre
   STATE      present
   TYPE       PRESENCE
   CL:
     Authenticated 0
     BUF       
     FD         20
     FW_ID      3342
     LASTACCESS 1609514267
     NAME       WEB_10.3.3.30_50517
     NR         3343
     PEER       10.3.3.30
     PORT       50517
     SNAME      WEB
     SSL       
     STATE      Connected
     TEMPORARY  1
     TYPE       FHEMWEB
     canAsyncOutput 1
     READINGS:
       2021-01-01 16:16:21   state           Connected
   READINGS:
     2021-01-01 13:44:16   ArrivalCnt      0
     2021-01-01 10:58:58   lastArrival     2021-01-01 10:58:58
     2021-01-01 10:57:48   model           function
     2021-01-01 16:17:36   presence        present
     2021-01-01 16:17:36   state           present
   helper:
     DISABLED   0
     curState   present
     maybe      0
     nextScan   1609514315.87775
     cnt:
       exec       317
       maybe      0
       state      1
       th         0
     disp:
       condense   1
       verbose    0
     interval:
       absent     60
       init       30
       present    60
     os:
       Cmd        checkAllFritzMACpresent("F0:78:07:14:4A:86")
       search     1
     timestamp:
       present    2021-01-01 10:58:58
Attributes:
   devStateIcon present:ios-on-blue absent:ios-off disabled:ios-NACK
   event-on-change-reading .*
   intervalNormal 60
   intervalPresent 60
   prGroup    dynamic


#VGS



martinp876


  • Hochkommas in den "additional Readings" kann ich eliminieren - so kommen die Datn bis jetzt.
  • prGroupDisp
    nun, dann habe ich es nicht hinreichend beschrieben. Neuer Versuch im Anhang
  • function
    {} wird benötigt, wenn man eine perl-funktion ausführt.
    {} muss weggelassen werden wenn man eine FHEM Funktion ausführt.
    Siehe u.a. "FHEM command types" im commandref
    und weitere viele Beispiele dort.
    Kurz:
    alle Kommandos welce mit "?" angezeigt werden muss man ohne {} ausführen oder packt sie  so ein
    set lamp off
    {fhem("set lamp off")}

    Alles andere mit {}

    Beispiele aus Commandref
        attr store eventMap on:open off:closed
        attr store eventMap /on-for-timer 10:open/off:closed/
        set store open
    The explicit variant of this attribute has the following syntax:
        attr store eventMap { dev=>{'on'=>'open'}, usr=>{'open'=>'on'} }
        attr store eventMap { dev=>{'^on(-for-timer)?(.*)'=>'open$2'}, usr=>{'^open(.*)'=>'on$1'}, fw=>{'^open(.*)'=>'open'} }

    Zugriff auf eigenen Subroutinen nur mit {}

    Ich habe das Parsen auf {} ausgeschaltet so dass du auch ein "get entity statusRequest" als Kommando absetzen kannst

binford6000

Zitat von: martinp876 am 01 Januar 2021, 17:01:35

  • Hochkommas in den "additional Readings" kann ich eliminieren - so kommen die Datn bis jetzt.
  • prGroupDisp
    nun, dann habe ich es nicht hinreichend beschrieben. Neuer Versuch im Anhang
  • function
    {} wird benötigt, wenn man eine perl-funktion ausführt.
    {} muss weggelassen werden wenn man eine FHEM Funktion ausführt.
    Siehe u.a. "FHEM command types" im commandref
    und weitere viele Beispiele dort.
    Kurz:
    alle Kommandos welce mit "?" angezeigt werden muss man ohne {} ausführen oder packt sie  so ein
    set lamp off
    {fhem("set lamp off")}

    Alles andere mit {}

    Beispiele aus Commandref
        attr store eventMap on:open off:closed
        attr store eventMap /on-for-timer 10:open/off:closed/
        set store open
    The explicit variant of this attribute has the following syntax:
        attr store eventMap { dev=>{'on'=>'open'}, usr=>{'open'=>'on'} }
        attr store eventMap { dev=>{'^on(-for-timer)?(.*)'=>'open$2'}, usr=>{'^open(.*)'=>'on$1'}, fw=>{'^open(.*)'=>'open'} }

    Zugriff auf eigenen Subroutinen nur mit {}

    Ich habe das Parsen auf {} ausgeschaltet so dass du auch ein "get entity statusRequest" als Kommando absetzen kannst

Ja ich weiß das alles. Ging auch eher darum, dass die function entities ohne {} hinter cmd: einfach weiter den alten Zustand gemeldet haben anstatt einen Fehler. 

binford6000

Noch ein Vorschlag:
Die Readings lastArrival und lastDeparture ändern in lastAppearance und lastDisappearance.
Arrival und Departure sind doch eher Personenbezogen und hier gehts ja eigentlich um Geräte  ;)

#VGS

Benni

Zitat von: binford6000 am 02 Januar 2021, 08:29:42
Noch ein Vorschlag:
Die Readings lastArrival und lastDeparture ändern in lastAppearance und lastDisappearance.
Arrival und Departure sind doch eher Personenbezogen und hier gehts ja eigentlich um Geräte  ;)

da hat binford6000 schon recht, Arrival und Departure übersetzen sich in etwa eher personenbezogen als "Ankunft" und "Abfahrt". Ich würde aber lieber beim ursprünglichen "wording" bleiben und von lastPresent und lastAbsent (wg. mir auch lastPresence und lastAbsence) sprechen. Schließlich heißt das Modul ja (immer noch) "PRESENCE" und auch der state liefert "present" und "absent".

Letztendlich ist das aber eigentlich nur "Kosmetik"

gb#

martinp876

ZitatLetztendlich ist das aber eigentlich nur "Kosmetik"
ja,... nun ja,... ich würde es nicht unterbewerten. Schlechte Begriffe sind einfach schlecht, irreführend und missverständlich.
Meine Kriterien sind a) Semantik b) Wiederverwendung gleicher Namen über Module hinweg (FHEM-übliche Begriffe) c) Änderung eingeführter Begriffe. d) nutzbarkeit


  • Semantik
    Present/Absent sowie presence/absence sind Zustände, keine Zeitpunkte
    Arrival/appearence... sind klar definiert Zeitpunkte.
    Somit ist lastArrival und lastAppearence möglich. lastPresent/lastPresence hingegen nicht - das wäre eine andere Zeit, nämlich das letzte mal gesehen. Auch schwieriger hier das maybe einzubeziehen...
  • Wiederverwendung
    Ich haben mich hier an RESIDENCE gehalten, was m.E. die identische Bedeutung hat. Das Modul ist auch "verwandt" und somit wäre es gut, die gleichen Begriffe zu nutzen. Daher die aktuellen Begriffe.
  • Umstellung aktueller Nutzen
    nun, das sollte aktuell noch einfach möglich sein, kein großes Problem
  • Nutzbarkeit
    war mich auch schon in den ersten Überlegungen von Apperence abgehalten hat ist die häßliche Länge des Begriffe "lastDisappearence". Die Abkürzung lastAppeare/lastDisappear ist schon viel besser - aus meiner Sicht. Das ist nun aber schwer Geschmackssache

Somit werden also die Begriffe überarbeitet
lastAppeare/lastDisappear (ich hoffe mit der Abkürzung kann man leben)
appearenceCnt (gleich lang wie disappear)
Presence/state : unverändert

Die Attribute sollten passen, auch wenn man bei thresholdAbsence dies nicht 100% aus dem Begriff ablesen lässt.

intervalNormal gefällt mir nicht, da "normal" immer nur ein Notnagel ist. "interval" oder "intervalAbsent" oder "intervalDefault" sind alternativen. Ich ändere es aber nicht.

Im Anhang die entsprechende Version.
Tip:
deletereading TYPE=PRESENCE .*
räumt alle Readings auf.