Hallo Zusammen,
mein Ziel war es die IDM-Wärmepumpe mit Navigatorreglung 2.0 in den SMA Home Manager 2.0 zu integrieren um den Verbrauch darzustellen und vor allem die Laufzeit der IDM-Wärmepumpe möglichst über den PV-Ertrag zu decken.
Dazu hat die IDM-Reglung selbst ein PV-Option integriert.
Nachdem IDM mit der Einbindung in den SMA Home Manager noch etwas Zeit benötigt, hier ein Workaround über OpenWB und Python.
Dies war nur Dank der Hilfe von Oliver aus der Schweiz und Axel Müller (photovoltaikforum.com) möglich!
Wärmepumpe als Verbraucher in OpenWB
Der aktuelle PV-Überschuss wird wiederum in der Wärmepumpe angezeigt.
Spezifische Konfiguration/Programmierung für die IDM:
1. Konfiguration IDM, siehe auch IDM-Doku (Technische Unterlage myiDM+ energy - PV Strom-Nutzung, Smart Grid, Stundenvariable Stromtarife)
a) Einstellungen => Fachmann Codeeingabe für die Heizungsbauerebene => Konfiguration => PV-Signal: Auswahl Gebäudeleittechnik / Smartfox
b) Einstellungen => Fachmann Codeeingabe für Heizungsbauerebene => Gebäudeleittechnik => Modbus TCP: Auswahl EIN
c) Einstellungen => Photovoltaik: persönliche Einstellung vornehmen
d) Hinweise
- Den Code für die Heizungsbauerebene kennt der Heizungsbauer oder das ein oder andere Forum.
- Sollte in der Software der Menüpunkt nicht angezeigt werden, wird ein Softwareupdate der Navigatorreglung benötigt. Hierzu Installateur oder Hersteller kontaktieren.
- Für die Wärmepumpe wird eine feste IP empfohlen.
- Wird ein PV-Offset eingestellt, wird dieser mit an den Home Manager bzw. OpenWB mit als Verbrauch ausgegeben. Z.B. Offset 3 kW, daraus folgt bei einem Momentanverbrauch von 2 kW eine Ausgabe von 5 kW bzw. wenn die Wärmepumpe aus ist entsprechend ein Verbrauch von 3 kW. IDM ist informiert.
2. Dateien auf dem Raspberry anlegen
a) Ordner anlegen: /var/www/html/cust
b) Datei tob.php anlegen bzw. reinkopieren:
Inhalt:
<?php
$command = escapeshellcmd("/bin/bash /var/www/html/cust/tob.sh");
$output = shell_exec($command);
echo $output;
?>
c) Datei tob.py anlegen:
Inhalt:
#!/usr/bin/python
import sys
import os
import time
import getopt
import socket
import ConfigParser
import struct
import binascii
from pymodbus.constants import Endian
from pymodbus.payload import BinaryPayloadDecoder
from pymodbus.payload import BinaryPayloadBuilder
from pymodbus.client.sync import ModbusTcpClient
debug = str(sys.argv[1])
named_tuple = time.localtime() # get struct_time
time_string = time.strftime("%m/%d/%Y, %H:%M:%S inf wm", named_tuple)
ipaddress = 'XXX.XXX.X.X'
client = ModbusTcpClient(ipaddress, port=502)
rr= client.read_input_registers(4122,2,unit=1)
raw = struct.pack('>HH', rr.getRegister(1), rr.getRegister(0))
# ('04/10/2020, 13:09:20 inf wm', ' start 4122', [52129, 16512])
# 4024.85704422
lkw= float(struct.unpack('>f', raw)[0])
#print(time_string, ' start 4122', rr.registers)
totalw = int(lkw * 1000)
#print('total kwatt aus wm',lkw)
#print('total watt fuer openwb',totalw)
f = open('/var/www/html/openWB/ramdisk/wattbezug', 'r')
inputop=int(f.read())
#print(inputop)
lkwneu=float(inputop)
lkwneu=lkwneu/1000
f.close()
if lkwneu < 0:
lkwneu = lkwneu * -1
else:
lkwneu = 0
#print(' pv ueberschuss',lkwneu)
builder = BinaryPayloadBuilder(byteorder=Endian.Big,
wordorder=Endian.Little)
builder.add_32bit_float( lkwneu )
payload = builder.to_registers()
#print("-" * 60)
#print("Writing Registers")
#print("-" * 60)
#print(payload)
#print("\n")
regnew = builder.to_registers()
#print(' bew', regnew)
client.write_registers(74, regnew, unit=1)
print(totalw)
d) Datei tob.sh anlegen:
Inhalt:
#!/bin/bash
sudo python /var/www/html/cust/tob.py 0
#sudo python /var/www/html/cust/tob.py 0 >> /var/www/html/openWB/ramdisk/logtob 2>&1
e) Hinweise
-Die Datei tob.py liest permanent den PV-Überschuss (alle 10 Sekunden) aus OpenWB aus, in dem Moment wo PV-Überschuss vorliegt (negativer Wert in variable lkwneu) wird dieser über Modbus an IDM übergeben. Im gleichen Moment wird aus IDM die aktuelle Leistungsaufnahne (inclusive vom PV Offset) über Modbus gelesen und an Openwb übergeben ( Variable lkw).
ipaddress = 'xxx.xxx.x.x' ==> hier die IP-Adresse der Wärmepumpe eintragen
- Wenn in der Datei tob.sh anstatt Zeile 3 die Zeile 2 ausgeblendet (#) wird, gibt es unter ...openWB/ramdisk/ ein Log "logtob" erstellt
- Weitere Probleme können z.B. fehlende Berechtigungen beim Erstellen des Ordners und der Dateien sein.
- Alle neuen Datei müssen mit chmod 777 die notwendigen Berechtigungen haben.
3. OpenWB
a) Konfiguration Verbraucher
=> Einstellungen => Smart Home
Verbraucher 1: Aktiviert
Anbindung Verbraucher 1: http Abfrage
Verbraucher 1 Name: Wärmepumpe IDM
Verbraucher 1 URL: XXX.XXX.X.X/cust/tob.php
b. Hinweise: Verbraucher 1 URL: XXX.XXX.X.X ==> hier die IP-Adresse des Raspberry eintragen.
Eine erweiterte Doku zur zusätzlichen Einbindung des SMA Home Manager 2.0 findet sich im photovoltaikforum.com: https://www.photovoltaikforum.com/threa ... ost1984680
Ich hoffe ich habe die Doku korrekt erstellt und es sind keine Fehler enthalten.
Falls doch bitte ich um Feedback.
Grüße, Tobi
Einbindung IDM Wärmepumpe
Einbindung IDM Wärmepumpe
- Dateianhänge
-
[Die Dateierweiterung zip wurde deaktiviert und kann nicht länger angezeigt werden.]