- Vorteil 1: SolarView kann ohne TCP-Server betrieben werden. Für die bisherigen Module muss SolarView mit dem integrierten TCP-Server gestartet werden (standardmäßig auf Port 15000).
- Vorteil 2: Die SolarView-Integration von openWB wird nicht benötigt, muss also nicht gepflegt und gewartet werden.
- Nachteil: Man benötigt einen Adapter, der die MQTT-Nachrichten von SolarView für openWB übersetzt.
SolarView
Die MQTT-Konfiguration von SolarView erfolgt über die Datei solarview_cfg.txt im SolarView-Verzeichnis, die folgenden Angaben benötigt:
Code: Alles auswählen
MQTTHost=openwb
MQTTPort=1883
MQTTTopic=solarview
MQTTWR=WR0,WR21,WR22
MQTTPublishVals=PAC,UDC,IDC,UL1,IL1,KDY,KMT,KYR,KT0,DPAC,BKDY,BKMT,BKYR,BKT0,GKDY,GKMT,GKYR,GKT0
Bedeutung der Angabe MQTTWR:
- WR0 ist die Gesamtmenge aller Wechselrichter
- WR21 ist die D0-Einspeisung
- WR22 ist der D0-Bezug
MQTT-Adapter
Der MQTT-Adapter abonniert die Topics von SolarView, wandelt das Datenformat um und sendet sie an die von openWB erwarteten Topics. Diese Aufgabe kann prinzipiell durch jede beliebige Software übernommen werden.
Ich beschreibe hier die Verwendung eines kleinen Tools namens mqtt-transformer, das über docker-compose gestartet wird. Voraussetzung dafür ist ein Linux-Rechner (z.B. Raspberry Pi) mit Docker und docker-compose. Auf Debian-basierten Systemen lassen sich diese Anwendungen bei Bedarf wie folgt installieren:
Code: Alles auswählen
curl -fsSL https://get.docker.com -o get-docker.sh && sh get-docker.sh
sudo apt-get install docker-compose
Datei docker-compose.yml
Code: Alles auswählen
---
version: '2.4'
services:
mqtt-transformer:
image: ghcr.io/tg44/mqtt-transformer
init: true
restart: unless-stopped
volumes:
- ./data:/home/node/app/conf
environment:
- "MQTT_URL=mqtt://openwb:1883"
- "IS_VERBOSE=false"
Datei data/conf.jsonHinweis: Falls mqtt-transformer auf demselben Linux-Rechner betrieben wird wie der MQTT-Broker (im oberen Beispiel: Hostname openwb), ist eine weitere Angabe host-gateway notwendig, damit Anfragen des MQTT-Adapters an den MQTT-Broker-Container weitergeleitet werden. Beispiel:
Code: Alles auswählen
services: mqtt-transformer: [...] extra_hosts: - "openwb:host-gateway"
Code: Alles auswählen
{
"transforms": [
{
"fromTopic": "solarview/D0/DPAC",
"toTopic": "openWB/set/evu/W",
"emitType": "map",
"wrapper": "power",
"template": {"$eval": "-power"}
},
{
"fromTopic": "solarview/D0/BKT0",
"toTopic": "openWB/set/evu/WhImported",
"emitType": "map",
"wrapper": "energy",
"template": {"$eval": "energy * 1000"}
},
{
"fromTopic": "solarview/D0/GKT0",
"toTopic": "openWB/set/evu/WhExported",
"emitType": "map",
"wrapper": "energy",
"template": {"$eval": "energy * 1000"}
},
{
"fromTopic": "solarview/WR0/PAC",
"toTopic": "openWB/set/pv/1/W",
"emitType": "map",
"wrapper": "power",
"template": {"$eval": "-power"}
},
{
"fromTopic": "solarview/WR0/KT0",
"toTopic": "openWB/set/pv/1/WhCounter",
"emitType": "map",
"wrapper": "energy",
"template": {"$eval": "energy * 1000"}
}
]
}
- Starten des Service im Hintergrund: docker-compose up -d
- Stoppen des Service: docker-compose down
- Logs ansehen: docker-compose logs -f
Bei Problemen kann man durch Setzen der Umgebungsvariable IS_VERBOSE=true in der docker-compose.yml das Logging erhöhen.
openWB
In den Modulen EVU und PV ist die Auswahl MQTT zu treffen, hier ist keine weitere Konfiguration notwendig.