ich habe für die Steuerung meiner WW-Zirkulationspumpe den Bausatz von Eugen Stall Wiffi-Pump 4 verwendet, um die Zirkulationspumpe meines Warmwasser-Speichers intelligent zu steuern.
Grundsätzlich wird die Wiffi-Pump 4 über einen Temperatursensor am Auslauf des Warmwasserspeichers gesteuert, dass ist bei Eugen Stall auf seiner Internetseite alles gut beschrieben.
Was mich ein bisschen "gestört" hat, in der Anleitung unter Punkt 16 "Montage des Temperatursensors" steht : Muß man halt etwas probieren! Um eine geeignete Stelle für den Sensor zu finden. Eine grobe Einschätzung hat Eugen gegeben, mit der man erst einaml anfangen kann, das ist gut, aber man muss trotzdem probieren.
Bei mir, und vermutlich bei vielen anderen auch, steht der Speicher im Keller, einen Wasserhahn habe ich im EG. D.h. es ist gar nicht so einfach und mit viel Lauferei verbunden, nur durch Probieren den richtigen Punkt zum Anbringen zu finden, außerdem man hat dafür keine validen Daten.
Mein Ansatz:
Ich habe mir ein kleines Programm in Phyton Version 3.11 geschrieben, dass von der Wiffi-Pump die JSON Daten abholt, in eine Datenbank schreibt und gleichzeitig auf dem Bildschirm ausgibt. In dem Programm kann ich das Abfrage-Intervall in Sekunden einstellen, und die Laufzeit in Minuten. Das gibt mir die Gelegenheit, entweder in kurzen Abständen bei einem Intervall von z.B. 10 Sekunden am Wasserhahn im EG zu schauen, ob die Wiffi-Pump beim Betätigen des Wasserhahns wirklich losläuft, bzw. wie sich die Temperatur ändert, aber auch Langzeitmassungen z.B. über Nacht, um zu schauen, ob die Pumpe nicht ungewollt losläuft, und wenn ja wann und wie oft. (das ist nämlich bei mir der Fall, ich weiß noch nicht genau warum.)
Vielleicht kann oder will nicht jeder die Werte mit der Homematic auslesen, oder hat, wie ich, keine Homematic Zentrale.
Das Script fragt 3 Parameter ab:
1.) Die IP Adresse der Wiffi-Pump im LAN
2.) Welches Abfrageintervall gewüscht wird
3.) Die Laufzeit in Minuten
Nach Programmstart gibt das Script bei jeder Abfrage die Zeit und den Temperaturwert auf dem Bildschirm aus. Außerdem ob die Pumpoe gerade läuft.
Gleichzeitig werden die Werte zur späteren Auswertung in eine Datenbank mit Namen wiffi_pump.db geschrieben. Diese datenbank lässt sich dann z.B. mit der Software "DB Browser for SQLite" ansehen.
Falls jemand Anregungen oder weitere Ideen zu dem Scipt hat, gerne eine Nachricht hinterlassen.
Hier das Phyton 3.11 script:
Code: Alles auswählen
import time
import requests
import json
import sqlite3
from datetime import datetime
#Anfangsbedingungen Anzahl der Werte und Laufzeit des Programms
intervall = 0
laufzeit = 0
ip = input('IP der Pumpe im LAN :')
intervall = int(input('Intervall der Werte in Sekunden? : '))
werte_minute = int(60/intervall)
print('Die Anzahl beträgt '+str(werte_minute)+' Werte pro Minute.')
laufzeit = int(input('Laufzeit des Programms in Minuten? : '))
print('Die Laufzeit des Programms beträgt '+str(laufzeit)+' Minuten.')
schleifen_zahl = werte_minute * laufzeit
print('Anzahl der Schleifen: '+(str(schleifen_zahl)))
verbindung = sqlite3.connect("wiffi_pump.db")#datenbank anlegen bzw. verbinden
zeiger = verbindung.cursor()#datenbank-zeiger
sql_datenbank = """CREATE TABLE IF NOT EXISTS wiffi_pump_werte (datum TEXT, zeit TEXT, wiffi_datum TEXT, wiffi_zeit TEXT,
wiffi_pump TEXT, wiffi_temp_Z REAL,wiffi_temp_A REAL, wiffi_temp_B REAL);"""
sql_insert = """INSERT INTO wiffi_pump_werte
(datum, zeit, wiffi_datum, wiffi_zeit, wiffi_pump, wiffi_temp_Z, wiffi_temp_A , wiffi_temp_B)
VALUES (?, ?, ?, ?, ?, ?, ?, ?);"""
zeiger.execute(sql_datenbank)#Datenbankzeiger setzen
verbindung.commit()#Datenbank-Anweisung ausführen
for zahl in range(schleifen_zahl): #Zählschleife
while True:
try:
url = 'http://'+ip+'/json' #Url Wiffi_pump
wiffi_pump_data = requests.get(url).json() #Holen der Json Info
break
except IOError:
time.sleep(10)# !0 Sekunden warten, bis neu versucht wird
print('Daten nochmals holen! ')
wp_data_json = json.dumps(wiffi_pump_data) #Umwandeln der Json Info
json_data = json.loads(wp_data_json)
date = datetime.now()
datum = date.strftime("%d.%m.%Y")
zeit = date.strftime("%H:%M:%S")
wiffi_zeitpunkt = json_data['Systeminfo']['zeitpunkt'] #wiffi_zeitpunkt
wiffi_jahr = wiffi_zeitpunkt[0:4]
wiffi_monat = wiffi_zeitpunkt[5:7]
wiffi_tag = wiffi_zeitpunkt[8:10]
wiffi_std = wiffi_zeitpunkt[12:14]
wiffi_min = wiffi_zeitpunkt[15:17]
wiffi_dat = wiffi_tag+'.'+wiffi_monat+'.'+wiffi_jahr
wiffi_zeit = wiffi_std+':'+wiffi_min
wiffi_temp_Z = json_data['vars'][1]['value'] #Temperatur Warmwasser
wiffi_temp_A = json_data['vars'][2]['value'] #Vorlauf_Fussbodenheizung
wiffi_temp_B = json_data['vars'][3]['value'] #Vorlauf_Radiatoren
wiffi_pump = json_data['vars'][4]['value']# Status Zirkulationspumpe
if wiffi_pump == 'false':
wiffi_pump = ''
wiffi_pump_an = ''
else:
wiffi_pump ='1'
wiffi_pump_an =' Pumpe an'
sql_data_tpl = (datum, zeit, wiffi_dat, wiffi_zeit, wiffi_pump, wiffi_temp_Z , wiffi_temp_A, wiffi_temp_B)
zeiger.execute(sql_insert,sql_data_tpl) #Werte in Datenbank übertragen
verbindung.commit() #Datenbank-Anweisung ausführen
print ('Zeit : '+zeit+' Uhr Temperatur: '+wiffi_temp_Z+' Grad Cesius'+wiffi_pump_an)
time.sleep(intervall) #Programmstopp Sekunden
verbindung.close()#Datenbankverbindung schließen
print('')
print('Programm hat alle Werte in die Datenbank geschrieben.')
print('')
print('Ende des Programms!')