[gelöst]Mehrere Helligkeitssensoren zusammenfassen

Begonnen von Bartimaus, 14 Januar 2022, 11:19:31

Vorheriges Thema - Nächstes Thema

Bartimaus

Hallo Zusammen,

über die Zeit haben sich hier mehrere Helligkeitssensoren angesammelt. Jeder hat unterschiedliche Kernkompetenzen (gerade im Dämmerungsbereich).

Jetzt würde ich diese gerne in einem Dummy mit entprechenden Userreadings zusammenfassen. Soweit kein Problem.

Dh. ich erstelle ein Dummy für die Morgenstunden, eins für die Abendstunden. Im "state" soll dann der jeweils höchste oder niedrigste Wert stehen. Wie bewerkstelligt man so etwas ?
LG
B.


FHEM@AMD-Ryzen7-5700U@Debian-LXC (ProxmoxHOST), CUL1101,FS20,IT,DS18B20,DS2413(Heizungslogger),DS2423(Stromlogger)Homematic,HM-LAN,ZWave,MiniCULs,Shelly

Beta-User

dummy + userReadings gehen gar nicht gut zusammen...

Würde eher was nehmen, das regelmäßig triggert (wie z.B. Twilight oder Astro) und da dann _ein_ userReadings anlegen, das sich den für den jeweiligen Zeitpunkt richtigen Wert zusammenstellt (und ausfiltert, was zu alt ist, usw. ...).
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: ZigBee2mqtt, MiLight@ESP-GW, BT@OpenMQTTGw | ZWave | SIGNALduino | MapleCUN | RHASSPY
svn: u.a Weekday-&RandomTimer, Twilight,  div. attrTemplate-files, MySensors

Bartimaus

Hi,

ok, im Astro oder Twilight-Modul könnte ich das auch machen, klar, ein Dummy weniger.
Brauche aber dennoch ein Schubs wie man das mit dem ausfiltern des Userreadings macht......
LG
B.


FHEM@AMD-Ryzen7-5700U@Debian-LXC (ProxmoxHOST), CUL1101,FS20,IT,DS18B20,DS2413(Heizungslogger),DS2423(Stromlogger)Homematic,HM-LAN,ZWave,MiniCULs,Shelly

Beta-User

Zitat von: Bartimaus am 14 Januar 2022, 12:09:43
ok, im Astro oder Twilight-Modul könnte ich das auch machen, klar, ein Dummy weniger.
Hier geht es (ausnahmsweise) nicht um weniger, weil ein dummy schlicht mangels interner Events/Reading-Aktualisierungen dafür einfach nicht gut geeignet ist...

Zitat
Brauche aber dennoch ein Schubs wie man das mit dem ausfiltern des Userreadings macht......
Was ist "ausfiltern"?

Falls es der trigger für userReadings sein soll: Man nehme ein beliebiges Reading, das regelmäßig aktualisiert wird. Bei Twilight wäre das z.B. "azimuth", schreibe das hinter den gewünschten Reading-Namen, Doppelpunkt dazwischen und ein .* hinterher, fertig die Laube.

Falls es um den Perl-Code geht: Ohne input kein output...
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: ZigBee2mqtt, MiLight@ESP-GW, BT@OpenMQTTGw | ZWave | SIGNALduino | MapleCUN | RHASSPY
svn: u.a Weekday-&RandomTimer, Twilight,  div. attrTemplate-files, MySensors

Bartimaus

Ok,

Userreadings in myT gespeichert:

Internals:
   DEF        50 6
   FUUID      5c724473-f33f-dcb4-3948-0357685cc9be7996
   FVERSION   59_Twilight.pm:0.250670/2021-10-13
   INDOOR_HORIZON 3
   NAME       myT
   NR         49
   NTFY_ORDER 50-myT
   STATE      100
   SUNPOS_OFFSET 300
   TYPE       Twilight
   WEATHER_CORRECTION 0
   WEATHER_HORIZON 3
   READINGS:
     2022-01-14 12:50:08   1wire_Lux       852.88
     2022-01-14 12:50:08   1wire_Multisensor 220.933
     2022-01-14 12:50:08   HM_Lux          197
     2022-01-14 12:50:08   WeatherScreenPro 5595.1
     2022-01-14 09:05:09   aktEvent        sr_weather
     2022-01-14 12:50:08   azimuth         181.35
     2022-01-14 12:50:08   compasspoint    south
     2020-09-25 06:32:55   condition       0
     2022-01-14 12:50:08   elevation       17.92
     2022-01-14 09:05:09   horizon         3
     2022-01-14 09:05:09   light           6
     2022-01-14 09:05:09   nextEvent       ss_weather
     2022-01-14 09:05:09   nextEventTime   16:23:31
     2022-01-14 00:00:07   sr              08:40:50
     2022-01-14 00:00:07   sr_astro        06:34:24
     2022-01-14 00:00:07   sr_civil        07:55:57
     2022-01-14 00:00:07   sr_indoor       09:05:09
     2022-01-14 00:00:07   sr_naut         07:14:13
     2022-01-14 00:00:07   sr_weather      09:05:09
     2022-01-14 00:00:07   ss              16:47:51
     2022-01-14 00:00:07   ss_astro        18:54:21
     2022-01-14 00:00:07   ss_civil        17:32:45
     2022-01-14 00:00:07   ss_indoor       16:23:31
     2022-01-14 00:00:07   ss_naut         18:14:29
     2022-01-14 00:00:07   ss_weather      16:23:31
     2022-01-14 09:05:09   state           6
     2022-01-14 12:50:08   twilight        100
     2022-01-14 12:50:08   twilight_weather 100
   TIMER:
     myT_Midnight:
       HASH       myT
       MODIFIER   Midnight
       NAME       myT_Midnight
     myT_ss:
       HASH       myT
       MODIFIER   ss
       NAME       myT_ss
     myT_ss_astro:
       HASH       myT
       MODIFIER   ss_astro
       NAME       myT_ss_astro
     myT_ss_civil:
       HASH       myT
       MODIFIER   ss_civil
       NAME       myT_ss_civil
     myT_ss_indoor:
       HASH       myT
       MODIFIER   ss_indoor
       NAME       myT_ss_indoor
     myT_ss_naut:
       HASH       myT
       MODIFIER   ss_naut
       NAME       myT_ss_naut
     myT_ss_weather:
       HASH       myT
       MODIFIER   ss_weather
       NAME       myT_ss_weather
     myT_sunpos:
       HASH       myT
       MODIFIER   sunpos
       NAME       myT_sunpos
   TW:
     sr:
       DEG        0
       LIGHT      4
       NAME       sr
       NAMENEXT   sr_indoor
       STATE      4
       SWIP       0
       TIME       1642146050.03
     sr_astro:
       DEG        -18
       LIGHT      1
       NAME       sr_astro
       NAMENEXT   sr_naut
       STATE      1
       SWIP       0
       TIME       1642138464
     sr_civil:
       DEG        -6
       LIGHT      3
       NAME       sr_civil
       NAMENEXT   sr
       STATE      3
       SWIP       0
       TIME       1642143357.02
     sr_indoor:
       DEG        3
       LIGHT      5
       NAME       sr_indoor
       NAMENEXT   sr_weather
       STATE      5
       SWIP       0
       TIME       1642147509.04
     sr_naut:
       DEG        -12
       LIGHT      2
       NAME       sr_naut
       NAMENEXT   sr_civil
       STATE      2
       SWIP       0
       TIME       1642140853.01
     sr_weather:
       DEG        3
       LIGHT      6
       NAME       sr_weather
       NAMENEXT   ss_weather
       STATE      6
       SWIP       0
       TIME       1642147509.05
     ss:
       DEG        0
       LIGHT      3
       NAME       ss
       NAMENEXT   ss_civil
       STATE      9
       SWIP       0
       TIME       1642175271.97
     ss_astro:
       DEG        -18
       LIGHT      0
       NAME       ss_astro
       NAMENEXT   sr_astro
       STATE      12
       SWIP       0
       TIME       1642182861
     ss_civil:
       DEG        -6
       LIGHT      2
       NAME       ss_civil
       NAMENEXT   ss_naut
       STATE      10
       SWIP       0
       TIME       1642177965.98
     ss_indoor:
       DEG        3
       LIGHT      4
       NAME       ss_indoor
       NAMENEXT   ss
       STATE      8
       SWIP       0
       TIME       1642173811.96
     ss_naut:
       DEG        -12
       LIGHT      1
       NAME       ss_naut
       NAMENEXT   ss_astro
       STATE      11
       SWIP       0
       TIME       1642180469.99
     ss_weather:
       DEG        3
       LIGHT      5
       NAME       ss_weather
       NAMENEXT   ss_indoor
       STATE      7
       SWIP       0
       TIME       1642173811.95
   helper:
     extWeather:
Attributes:
   room       Allgemein
   stateFormat twilight
   userReadings 1wire_Lux {ReadingsNum("1wire_Lux","Lux",0)},
1wire_Multisensor {ReadingsNum("1wire_Multisensor","Helligkeit",0)},
HM_Lux {ReadingsNum("Bewegungsmelder","brightness",0)},
WeatherScreenPro {ReadingsNum("WeatherScreenPro","luminosity",0)}


Wie man sieht, wird mir im "STATE" des Moduls derzeit immer der Wert des Readings "twilight" angezeigt.. momentan halt "100".
Dort soll jetzt aber der größte Wert der 4 verschiedenen Userreadings angezeigt werden.
LG
B.


FHEM@AMD-Ryzen7-5700U@Debian-LXC (ProxmoxHOST), CUL1101,FS20,IT,DS18B20,DS2413(Heizungslogger),DS2423(Stromlogger)Homematic,HM-LAN,ZWave,MiniCULs,Shelly

Beta-User

Neee...

Eher so:
   userReadings myLux:azimuth.* {maxNum(ReadingsNum('1wire_Lux','Lux',0)},ReadingsNum('1wire_Multisensor','Helligkeit',0),ReadingsNum('Bewegungsmelder','brightness",0),ReadingsNum('WeatherScreenPro','luminosity',0))}
Was in STATE erscheint, kann man mit stateFormat beeinflussen, und deine Reading-Namen würde ich überdenken, wo sie selbst gewählt sind...
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: ZigBee2mqtt, MiLight@ESP-GW, BT@OpenMQTTGw | ZWave | SIGNALduino | MapleCUN | RHASSPY
svn: u.a Weekday-&RandomTimer, Twilight,  div. attrTemplate-files, MySensors

Bartimaus

Erstmal danke für den Tip.
Die Funktion "maxNum" war scheinbar das von mir gewünschte.
Erzeuge mir jetzt ein Userreading "MaxLux", welches den maximalen Wert aus den 4 Devices liefert. Sehr schön.
LG
B.


FHEM@AMD-Ryzen7-5700U@Debian-LXC (ProxmoxHOST), CUL1101,FS20,IT,DS18B20,DS2413(Heizungslogger),DS2423(Stromlogger)Homematic,HM-LAN,ZWave,MiniCULs,Shelly

Beta-User

Zitat von: Bartimaus am 14 Januar 2022, 13:58:26
Erzeuge mir jetzt ein Userreading "MaxLux", welches den maximalen Wert aus den 4 Devices liefert. Sehr schön.
...hoffentlich mit trigger...?
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: ZigBee2mqtt, MiLight@ESP-GW, BT@OpenMQTTGw | ZWave | SIGNALduino | MapleCUN | RHASSPY
svn: u.a Weekday-&RandomTimer, Twilight,  div. attrTemplate-files, MySensors

Bartimaus

Äh, ja, aktualisiert sich automatisch.... oder was meinst Du ?
Bzw. aktualisiert sich im Intervall (300s) von Twilight. Dabei werden die aktuellen Werte der Devices abgerufen.
LG
B.


FHEM@AMD-Ryzen7-5700U@Debian-LXC (ProxmoxHOST), CUL1101,FS20,IT,DS18B20,DS2413(Heizungslogger),DS2423(Stromlogger)Homematic,HM-LAN,ZWave,MiniCULs,Shelly

Beta-User

Zitat von: Bartimaus am 14 Januar 2022, 14:50:38
Äh, ja, aktualisiert sich automatisch.... oder was meinst Du ?
Sowas:
userReadings myLux:azimuth.* {...}
Zitat
Bzw. aktualisiert sich im Intervall (300s) von Twilight. Dabei werden die aktuellen Werte der Devices abgerufen.
...mir ist schon klar, dass sich das _mindestens_ im Intervall von Twilight aktualisiert. Falls aber ein externer "Wetterdienst" dran hängt, kann das auch öfter der Fall sein. "trigger" begrenzt die Aktualisierung des userReadings, es wird dann _nur noch zusammen mit dem "trigger" ausgewertet, wenn der (mit Event) aktualisiert wird_.
Daher ist "trigger" mAn. heutzutage nicht mehr "optional", sondern _zwingend_ mit anzugeben.
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: ZigBee2mqtt, MiLight@ESP-GW, BT@OpenMQTTGw | ZWave | SIGNALduino | MapleCUN | RHASSPY
svn: u.a Weekday-&RandomTimer, Twilight,  div. attrTemplate-files, MySensors

Bartimaus

Ach, das war damit gemeint.
Habe nur lokale Sensoren dran. 3/4 triggern alle 5min, Nr. 4 triggert öfter, ist aber die "Schlafmütze" unter den Helligkeitssensoren, heisst, wacht meist erst mit Sonnenaufgang auf. Mir geht es aber um die Dämmerungswerte VOR Sonnenaufgang.

Aber das teste ich mal so wie Du das codiert hast...
LG
B.


FHEM@AMD-Ryzen7-5700U@Debian-LXC (ProxmoxHOST), CUL1101,FS20,IT,DS18B20,DS2413(Heizungslogger),DS2423(Stromlogger)Homematic,HM-LAN,ZWave,MiniCULs,Shelly

Beta-User

OK, immer noch eine Verständnislücke:

userReadings interessieren sich nicht für das, was "draußen in der großen weiten Welt" passiert. Es muss ein Event an dem Device stattfinden, an dem sie sind, und (ggf.) der trigger muss passen.

Daher
- geht sowas auch nicht (ohne Verrenkungen) mit einem dummy;
- ist es völlig wurst, wie oft deine Sensoren triggern, (solange sie nicht indirekt einen update an Twilight anschubsen, was _in Ausnahmefällen_ der Fall sein kann).
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: ZigBee2mqtt, MiLight@ESP-GW, BT@OpenMQTTGw | ZWave | SIGNALduino | MapleCUN | RHASSPY
svn: u.a Weekday-&RandomTimer, Twilight,  div. attrTemplate-files, MySensors

Bartimaus

#12
Ja, in der Tat. Gebe ich zu.  ::)

Also, das Event in dem Device <myT> was triggert, ist lt. Eventmonitor "azimuth". Das passiert aber im Intervall (300) von myT. Weitere Readings die ich aus dem Web oder woher auch immer in myT speichere, habe ich nicht.

Allerdings aktualisieren sich meine Sensoren trotz 300s Interval auch nicht alle exakt zeitgleich. Somit kann ja der Abfragewert im Userreading unterschiedlich alt sein...Kann man das denn auch abfangen ?
LG
B.


FHEM@AMD-Ryzen7-5700U@Debian-LXC (ProxmoxHOST), CUL1101,FS20,IT,DS18B20,DS2413(Heizungslogger),DS2423(Stromlogger)Homematic,HM-LAN,ZWave,MiniCULs,Shelly

Beta-User

Zitat von: Bartimaus am 14 Januar 2022, 16:03:41
Somit kann ja der Abfragewert im Userreading unterschiedlich alt sein...Kann man das denn auch abfangen ?
Zitat von: Beta-User am 14 Januar 2022, 11:28:26
[...] und da dann _ein_ userReadings anlegen, das sich den für den jeweiligen Zeitpunkt richtigen Wert zusammenstellt (und ausfiltert, was zu alt ist, usw. ...).
Geht. In vielerlei Varianten, auch mit gleitenden Mittelwerten, ... => Perl lernen, anfangen bei https://wiki.fhem.de/wiki/99_myUtils_anlegen ;) .
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: ZigBee2mqtt, MiLight@ESP-GW, BT@OpenMQTTGw | ZWave | SIGNALduino | MapleCUN | RHASSPY
svn: u.a Weekday-&RandomTimer, Twilight,  div. attrTemplate-files, MySensors