Sehe ich das richtig, dass bei der Verwendung von
Internals:
CID DVES_4AA261
DEF DVES_4AA261
DEVICETOPIC Salzmenge
FUUID 5f48f797-f33f-1115-d998-6095cba9d5095874
FVERSION 10_MQTT2_DEVICE.pm:0.224580/2020-07-24
IODev Mosquitto
LASTInputDev Mosquitto
MSGCNT 4970
Mosquitto_MSGCNT 4970
Mosquitto_TIME 2020-10-11 22:02:19
NAME Salzmenge
NR 437
STATE 26.3 cm
TYPE MQTT2_DEVICE
Helper:
DBLOG:
AverageDistance:
DbLog:
TIME 1602446539.62846
VALUE 26.3294490238612
Heap:
DbLog:
TIME 1602439579.26357
VALUE 23
LoadAvg:
DbLog:
TIME 1602439579.26357
VALUE 21
MqttCount:
DbLog:
TIME 1602439579.26357
VALUE 1
QuadraticDistance:
DbLog:
TIME 1602446299.6758
VALUE 733.76
SR04_Distance:
DbLog:
TIME 1602446539.62846
VALUE 27.491
Schwankung:
DbLog:
TIME 1602446539.62846
VALUE 27.49
Sleep:
DbLog:
TIME 1602439579.26357
VALUE 50
SleepMode:
DbLog:
TIME 1602439579.26357
VALUE Dynamic
Time:
DbLog:
TIME 1602439579.3176
VALUE 2020-10-11T19:06:18
Uptime:
DbLog:
TIME 1602439579.26357
VALUE 0T02:35:07
UptimeSec:
DbLog:
TIME 1602439579.26357
VALUE 9307
Wifi_AP:
DbLog:
TIME 1602439579.26357
VALUE 1
Wifi_BSSId:
DbLog:
TIME 1602439579.26357
VALUE 1A:E8:29:AA:44:A0
Wifi_Channel:
DbLog:
TIME 1602439579.26357
VALUE 1
Wifi_Downtime:
DbLog:
TIME 1602439579.26357
VALUE 0T00:00:06
Wifi_LinkCount:
DbLog:
TIME 1602439579.26357
VALUE 1
Wifi_RSSI:
DbLog:
TIME 1602439579.26357
VALUE 100
Wifi_SSId:
DbLog:
TIME 1602439579.26357
VALUE WLAN-120954
Wifi_Signal:
DbLog:
TIME 1602439579.26357
VALUE -38
OLDREADINGS:
READINGS:
2020-10-11 22:02:19 AverageDistance 26.3294490238612
2020-10-11 17:31:19 FallbackTopic cmnd/DVES_4AA261_fb/
2020-10-11 17:31:19 GroupTopic cmnd/tasmotas/
2020-10-11 22:02:19 Heap 24
2020-10-11 17:31:19 Hostname tasmota_4AA261-0609
2020-10-11 17:31:19 IPAddress 192.168.2.56
2020-10-11 17:31:19 LWT Online
2020-10-11 22:02:19 LoadAvg 19
2020-10-11 17:31:19 Module Generic
2020-10-11 22:02:19 MqttCount 1
2020-10-11 17:31:19 POWER
2020-10-11 17:31:19 RestartReason Power On
2020-10-11 22:02:19 SR04_Distance 27.491
2020-10-11 22:02:19 Schwankung 27.49
2020-10-11 22:02:19 Sleep 50
2020-10-11 22:02:19 SleepMode Dynamic
2020-10-11 22:02:19 Time 2020-10-11T21:02:19
2020-10-11 22:02:19 Uptime 0T04:31:08
2020-10-11 22:02:19 UptimeSec 16268
2020-10-11 17:31:19 Version 8.3.1(sensors)
2020-10-11 17:31:19 WebServerMode Admin
2020-10-11 22:02:19 Wifi_AP 1
2020-10-11 22:02:19 Wifi_BSSId 1A:E8:29:AA:44:A0
2020-10-11 22:02:19 Wifi_Channel 1
2020-10-11 22:02:19 Wifi_Downtime 0T00:00:06
2020-10-11 22:02:19 Wifi_LinkCount 1
2020-10-11 22:02:19 Wifi_RSSI 100
2020-10-11 22:02:19 Wifi_SSId WLAN-120954
2020-10-11 22:02:19 Wifi_Signal -40
Attributes:
IODev Mosquitto
event-aggregator AverageDistance::none:mean:43200, Schwankung::none:sd:43200
readingList ...
stateFormat {0.1*int(10*ReadingsVal($name, "AverageDistance", "offline")+0.5)." cm"}
userReadings AverageDistance {0.01*int(100*ReadingsNum($name, "SR04_Distance", 0)+0.05)}, Schwankung {0.01*int(100*ReadingsNum($name, "SR04_Distance", 0)+0.05)}
ich im Reading
Schwankung mit Hilfe des event-aggregators die Schwankung (Standardweichung) des Abstandes SR04_distance erfasse? Darunter würde ich so etwas wie
Zitat1/Anzahl Beobachtung * ( Summe(Schwankung^2)-Summe^2(Schwankung) )
verstehen. Weiß jemand, was da genau gerechnet wird? Die Werte passen nicht richtig.
I
ch hatte auch mit anderen Varianten Probleme. Es scheint so zu sein, dass man den event-aggregator in einem device nur mit einem Reading anwenden kann, nicht aber mit zwei Readings eines devices (weil er eben Events und nicht Werte aggregiert). In der comandref steht dann, dass man das reading "zB mit einem notify duplizieren" soll. Reicht denn nicht die Duplikation wie oben bei mir mit einem userreading?Also das Problem bestand darin, dass der event-aggregator beim zweiten Reading nicht aggregierte, sondern einfach das ursprüngliche Reading wiedergab.
Ich muss, glaube ich, die Frage einfacher formulieren. Geht so etwas hier:
defmod Salzmenge <whatever>
attr Salzmenge event-aggregator Schwankung::none:sd:43200, AverageDistance::none:mean:43200
attr Salzmenge userReadings AverageDistance {ReadingsNum($name, "Distance", 0)}, Schwankung {ReadingsNum($name, "Distance", 0)}
Bei mir wird nur das erste Reading (Schwankung) korrekt wiedergegeben, nicht das zweite (AverageDistance).
Also, ich habe folgendes bemerkt. Wenn die beiden Readings, die eventaggregiert werden sollen, ohne Leerzeichen und nur mit einem Komma getrennt werden
attr <device> event-aggregator Schwankung::none:sd:43200,AverageDistance::none:mean:43200
dann werden beide korrekt aktualisiert!