Durchschnitt aus 2 Readings

Begonnen von Muschelpuster, 03 Dezember 2015, 20:05:02

Vorheriges Thema - Nächstes Thema

Muschelpuster

Hallo zusammen,

Erfreut habe ich festgestellt, dass es in meiner Nachbarschaft 2 NetAtmo-Stationen gibt, die ich über www.wunderground.com einlesen kann. Zur Anzeige reicht mir aber unterm Strich ein Wert. Wie löst man so etwas am Besten? eine ReadingGroup ist ja toll, aber dann habe ich die 2 Werte untereinander. Ein Dummy mit einem Notify betankt sieht aber wieder unschön aus. Oder muss ich jetzt wirklich für jeden Wert einen Dummy bauen und die zu einer readingGroup zusammenfassen. Ich hoffe das geht eleganter...

nachbarschaftliche Grüße
Niels
fhem @ ZBOX mit 1,6MHz Celeron, 4GB RAM & 120GB SSD mit Debian Bullseye # MiLight # Homematic via CCU3 # W&T WebIO # Rademacher DuoFern # ESPeasy # logdb@mysql # configdb@mysql # Shelly @ MQTT2 # go-eCharger mit PV-Überschussladung via DOIF

Damian

Zitat von: Muschelpuster am 03 Dezember 2015, 20:05:02
Hallo zusammen,

Erfreut habe ich festgestellt, dass es in meiner Nachbarschaft 2 NetAtmo-Stationen gibt, die ich über www.wunderground.com einlesen kann. Zur Anzeige reicht mir aber unterm Strich ein Wert. Wie löst man so etwas am Besten? eine ReadingGroup ist ja toll, aber dann habe ich die 2 Werte untereinander. Ein Dummy mit einem Notify betankt sieht aber wieder unschön aus. Oder muss ich jetzt wirklich für jeden Wert einen Dummy bauen und die zu einer readingGroup zusammenfassen. Ich hoffe das geht eleganter...

nachbarschaftliche Grüße
Niels

Zitat aus der Commandref zu DOIF
ZitatAnwendungsbeispiel: Berechnung des Mittelwertes zweier Readings:

define di_average DOIF
attr di_average state Average of the two rooms is {([room1:temperature]+[room2:temperature])/2}


Der Status wird automatisch aktualisiert, sobald sich eine der Temperaturen ändert

Da man beliebige Perl-Ausdrücke verwenden kann, lässt sich z. B. der Mittelwert auf eine Stelle mit der Perlfunktion sprintf formatieren:

attr di_average state Average of the two rooms is {(sprintf("%.1f",([room1:temperature]+[room2:temperature])/2))}

Gruß

Damian
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

Muschelpuster

Wieder das Schweizer Taschenmesser des FHEM - mein Lieblingstool DOIF  8)
Warum habe ich nicht gleich gefragt, ob es da auch was von Damian gibt  ::)

Da habe ich doch auch gleich eine Zusatzfrage: Wenn eine Station keine Daten mehr liefert, wäre es ja schön sie zu ignorieren. Dazu habe ich die Messzeit:
<observation_time_rfc822>Thu, 03 Dec 2015 20:22:00 GMT</observation_time_rfc822>.
Kann DOIF damit umgehen? Also nur wenn die Messzeit nicht älter als 30 Minuten ist, kommt der Durchschnitt zum Tragen? Das DOIF ist sicher nicht das Thema, aber kann ich mit dem Zeitformat so umgehen?

bedingte Grüße
Niels
fhem @ ZBOX mit 1,6MHz Celeron, 4GB RAM & 120GB SSD mit Debian Bullseye # MiLight # Homematic via CCU3 # W&T WebIO # Rademacher DuoFern # ESPeasy # logdb@mysql # configdb@mysql # Shelly @ MQTT2 # go-eCharger mit PV-Überschussladung via DOIF

Maddat

Hi,
manchmal fällt ein Reading weg (zB Sensor-Batterie leer).
Gibt es einen Trick, wie man den arithmetischen Mittelwert von den noch vorhandenen Readings (aktiven Sensoren) bildet?
Tahoma, ASC, Sduino, nanoCul, ESPEasy, FDECT

Eisix

Hallo,

du kannst das auch über das Netatmo Modul machen. Da gibst du den Radius um deinen Standort an und der Schnitt für alle darin liegenden Stationen wird errechnet. Nutze ich z.B. als Regenmesser.

Gruß
Eisix

ch.eick

#5
Moin,

ganz so einfach ist das mit dem Durchschnitt auch wieder nicht.

(10+12) /2 = 11
(10+ 0) /2 = 5

Also besser alle Werte > 0 zählen und dadurch dann Teilen, was bei Temperaturen unter Null natürlich nicht gilt :-)
Weiterhin sollte geprüft werden, ob die Werte auch aktuell sind, bzw alte readings löschen, damit nicht ein Wert von heute Nacht mit 4° C in die Berechnung um 9:00 Uhr eingeht, weil der Wert nicht aktualisiert wurde.
Also erst prüfen und dann den Durchschnitt bilden.

Gruß
     Christian
RPI4; Docker; CUNX; Eltako FSB61NP; SamsungTV H-Serie; Sonos; Vallox; Luxtronik; 3x FB7490; Stromzähler mit DvLIR; wunderground; Plenticore 10 mit BYD; EM410; SMAEM; Modbus TCP
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/ch.eick