Nur zum Verständnis nochmal: Verstehe ich diesen Faden dahingehend richtig, dass DbRep aktuell, wenn ich für diffValue, averageValue etc. das Attribut "devices" auf mehrere Devices setze, die Aktion nicht für jedes Device einzeln, sondern einmal aggregiert über alle Devices ausführt?
D.h. ich muss mir, wenn ich 20 Geräte habe, für die ich Differenzwerte in die DB schreiben möchte, mir 20 DbReps anlegen - oder für ein DbRep vor jedem Aufruf die Attribute ändern?
Und wenn ich das richtig verstanden habe: Geht was kaputt (weil DbRep Datenbankanfragen NBL ausführt, ich aber rapide Attribute ändere und DbRep-Anfragen auslöse), wenn ich mir eine Perl-Schleife wie die folgende baue:
[...]
foreach my $dev (sort keys %defs) {
if($defs{$dev}{TYPE} eq 'MQTT2_DEVICE') {
if (AttrVal($defs{$dev}{NAME},'model','err') eq 'shellyPlus_1pm') {
fhem("attr myDbRep device $defs{$dev}{NAME}";
fhem("attr myDbRep device energy_total");
fhem('set myDBRep diffValue writeToDB");
} elsif (AttrVal($defs{$dev}{NAME},'model','err') eq 'shelly3em') {
fhem("attr myDbRep device $defs{$dev}{NAME}";
fhem("attr myDbRep device emeter_sum_total");
fhem('set myDBRep diffValue writeToDB");
}
}
}