Ich habe nie richtig Programmieren gelernt, bin aber absolut in der Lage Beispielcode für meine Zwecke anzupassen. Ich habe schon ein wenig gegoogelt doch die Beispiele, die ich fand gingen nie über eine Ausgabe des abonnierte Topics/Payloads hinaus. Vielleicht könnt ihr mich ja in die richtige Richtung lootsen, gerne auch auf eine andere Website für Bash oder Python.
Ausgangslage:
Ich habe zwei Außenensoren für Temperatur und Luftfeuchtigkeit, wegen der Gegebenheiten hängt einer davon bis Mittags in der Sonne und der andere Sensor danach, was die ermittelten Daten leider unbrauchbar macht. Diese 433mHz Sensoren lasse ich mit rtl_433 und einem entsprechenden Funkempfänger am Pi auslesen und an mosquitto senden. Hier kommen von jedem Sensor etwa alle 30 Sekunden neue Werte.
Außerdem habe ich ein Python Script gefunden und auf Einzeltopics angepasst, mit dem ich Wetterdaten von openweathermap.org (OWM) für meinen Ort abrufe und ebenfalls nach mosquitto veröffentliche. Das läuft alle 2 Minuten per cron-job.
Was will ich tun?
Da OWM sicher keine Messstation in meinem Dorf hat, dürften die erhaltenen Daten irgendwie extrapoliert sein und auch meine Außensensoren sind nur für Consumer "Wetterstationen" gedacht, also auch nicht sonderlich genau. Deshalb möchte ich Mittelwerte bilden.
Ich möchte ein dauerhaft laufendes Script (Batch oder Python), das 6 topics abonniert. Jeweils temperature_C und humidity meiner beiden Sensoren und der OWM-Daten.
Immer wenn nun Daten von OWM eintreffen (alle 2 min) sollen die zuletzt empfangenen und gespeicherten Daten meiner Funksensoren kombiniert werden und als neues Topic an mqtt gehen. Also getrennt nach topic, wenn owm/temperature_C dann bilde Mittelwert der Temperaturen und wenn topic owm/humidity reinkommt dann Mittelwert der Luftfeuchten bilden.
05:30 - 12:00 -> (OWM + Sensor1) / 2
12:01 - 21:59 -> (OWM + Sensor2) / 2
22:00 - 05:29 -> (OWM + Sensor1 + Sensor2) / 3
Das ganze ich nicht wirklich wichtig oder nötig, ich würde gerne aber meine Skills etwas erweitern.