Viessmann API mit OH3 auf RPi

Für welche Projekte verwendet Ihr OpenHAB? Was habt Ihr automatisiert? Stellt eure Projekte hier vor.

Moderatoren: Cyrelian, seppy

Antworten
julianpe
Beiträge: 30
Registriert: 28. Sep 2020 11:38

Viessmann API mit OH3 auf RPi

Beitrag von julianpe »

Hallo zusammen,

ich habe gelesen, dass die Viessmann API nun öffentlich ist und mich als OH3 Nutzer würde mich interessieren, ob es schon Entwicklungsprobjekte für die Viessmann API gibt. Habe bisher nur von pyvicare gelesen, das läuft jedoch leider nicht auf einem RPi4, aber auf einem Windows 10 PC.
Hat jemand eine Idee, ob es noch andere Projekte gibt die auf einem RPI 4 laufen?

bohnehouse
Beiträge: 14
Registriert: 3. Okt 2020 12:30

Re: Viessmann API mit OH3 auf RPi

Beitrag von bohnehouse »

julianpe hat geschrieben: 15. Mai 2021 16:47 Hallo zusammen,

ich habe gelesen, dass die Viessmann API nun öffentlich ist und mich als OH3 Nutzer würde mich interessieren, ob es schon Entwicklungsprobjekte für die Viessmann API gibt. Habe bisher nur von pyvicare gelesen, das läuft jedoch leider nicht auf einem RPi4, aber auf einem Windows 10 PC.
Hat jemand eine Idee, ob es noch andere Projekte gibt die auf einem RPI 4 laufen?
Hallo julianpe,

hast du diesbezüglich noch etwas herausgefunden? Stehe momentan vor der Selben Frage ;)

Gruß

Benutzeravatar
udo1toni
Beiträge: 7642
Registriert: 11. Apr 2018 18:05
Answers: 87
Wohnort: Darmstadt

Re: Viessmann API mit OH3 auf RPi

Beitrag von udo1toni »

Ich poste dazu mal den passenden Issue bei github: https://github.com/openhab/openhab-addons/issues/10912 also vielleicht findet sich ja jemand, wenn sich genug Leute melden.
openHAB2.5.12 in einem Debian-Container (Proxmox, LXC)

Honkmichi
Beiträge: 11
Registriert: 29. Dez 2018 12:35

Re: Viessmann API mit OH3 auf RPi

Beitrag von Honkmichi »

Ich habe vControld auf meinem Raspberry Pi läufen. Neben openhabian.
https://github.com/openv/vcontrold
Mit einem Pythonskript frage ich die Heizungsdaten vom vConrol ab und sende sie dann per MQTT an Openhab. Bzw. Umgekehrt, ich empfange die MQTT Nachrichten und sende sie ans vControl.
Läuft seit Monaten stabil.

Honkmichi
Beiträge: 11
Registriert: 29. Dez 2018 12:35

Re: Viessmann API mit OH3 auf RPi

Beitrag von Honkmichi »

Ich meine Openhab hat auch ein Plugin für Viessmann was auf die vcontrold und vclient Programme aufsetzt. Ich hatte es mal versucht zum laufen zu bekommen. Hat aber nicht auf anhieb geklappt und bin dann bei meiner alten Lösung geblieben.
Von ViCare halte ich nichts. Die Daten laufen dann über die Viessmann Server. Ob sie die Server die nächsten 20Jahre laufen lassen ist fraglich. Zudem möchte ich denen, über meine Heizungsdaten, nicht mitteilen wann ich im Urlaub bin ;-)

julianpe
Beiträge: 30
Registriert: 28. Sep 2020 11:38

Re: Viessmann API mit OH3 auf RPi

Beitrag von julianpe »

bohnehouse hat geschrieben: 18. Okt 2021 12:42
Hallo julianpe,

hast du diesbezüglich noch etwas herausgefunden? Stehe momentan vor der Selben Frage ;)

Gruß
Hi bohnehouse,
ich habe die Informationen nun zusammentragen können.
Das Skript läuft direkt auf meinem Raspberry Pi 4.
Es wird Python 3 und ein vicare Account benötigt.
Folgendes Programm musst du installieren

Code: Alles auswählen

pip install pyvicare
Befolge diese Anleitung https://github.com/somm15/PyViCare#migr ... -and-above

Diesen Schnipsel speicherst du in einer Datei bspw. pyvicare.py und gibst deine Email-Adresse, Passwort und die Client-ID aus dem vicare dev Portal ein.

Code: Alles auswählen

#!/usr/bin/python3

import argparse
import sys
import logging
import requests
from requests import Session
from PyViCare.PyViCare import PyViCare

# ViCare Credentials
username = "HierDeineEmailAdresseAusVicare"
password = "HierDeinPasswortAusVicare"
clientID = "xxxxxxxxxxxxxxxxxxxxxxxxx"

# OpenHAB
OpenHABIP = 'localhost:8080'

class ViCareConnectHeating(object):

    vicare = PyViCare()
    vicare.initWithCredentials(username, password, clientID, "token2.save")
    device = vicare.devices[0]
    t = device.asAutoDetectDevice()
    burner = t.burners[0] #select burner
    
    def ohPutValue(self, item, value):
        rc = requests.put('http://'+OpenHABIP+'/rest/items/'+item+'/state', str(value),headers={'Content-type': 'text/plain'})
        if(rc.status_code != 202):
            print("Warning: couldn't save item "+item+" to openHAB")
            exit(1)

    def ohGetValue(self, item):
        rc = requests.get('http://'+OpenHABIP+'/rest/items/'+item)
        print(rc.content)
        if(rc.status_code != 200):
            print("Status code ", rc.status_code)
            print("Warning: couldn't get item " + item + " from openHAB")
        data = json.loads(rc.content)
        return data['state']

    def queryData(self):
        self.ohPutValue('Viessmann_Burner_Active',self.t.getOutsideTemperature())
        self.ohPutValue('Viessmann_Outside_Temperature',self.t.getOutsideTemperature())
        self.ohPutValue('Viessmann_Burner_Starts',self.burner.getStarts())
        self.ohPutValue('Viessmann_Burner_Modulation',self.burner.getModulation())
        self.ohPutValue('Viessmann_Burner_Hours',self.burner.getHours())

        
        #burner = t.burners[0] #select burner
        #print("Brenner aktiv:",burner.getActive())
        #print("Brenner Betriebsstunden:",burner.getHours())
        #print("Brennerstarts:",burner.getStarts())
        #print("Brennermodulation:",burner.getModulation())

    def doCommand(self, session, command):
        if (command == 'activatecharge'):
            print('One time charge')
            session.activateOneTimeCharge()
        elif (command == 'desactivatecharge'):
            print('desactivate time charge')
            session.deactivateOneTimeCharge()

def main():

    usage = '%prog [options] arg'
    parser = argparse.ArgumentParser(usage)
    parser.add_argument('-c', action='store', dest='command', choices=['activatecharge', 'desactivatecharge'], help='send command to vicare')

    args = parser.parse_args()

    c = ViCareConnectHeating()
    c.queryData()

if __name__ == '__main__':
    main()
Dieses Skript wird nun alle x Minuten durch den crontab auf meinem System ausgeführt.

Das ist meine Item-Definition

Code: Alles auswählen

Number Viessmann_Outside_Temperature "Außentemperatur [%.1f °C]" (temperature)
Number Viessmann_Burner_Starts "Brennerstarts: [%s]" 
Number Viessmann_Burner_Modulation "Brennermodulation: [%s %%]" 
Number Viessmann_Burner_Hours "Brennerstunden: [%s h]" 
Das ist mein Ausschnitt aus der sitemap

Code: Alles auswählen

 Text label="Heizung" icon="radiator"{
            Text item=Viessmann_Outside_Temperature label="Außentemperatur" icon="temperature"
            Text item=Viessmann_Burner_Starts label="Brennerstarts" icon="fire"
            Text item=Viessmann_Burner_Modulation label="Brennermodulation" icon="qualityofservice"
            Text item=Viessmann_Burner_Hours label="Brennerstunden" icon="time"
            }
Durch den Crontab wird alle X Minuten die aktuellen Werte vom vicare ausgelesen und über das Python Skript in dein Openhab System eingespeichert.

Benutzeravatar
udo1toni
Beiträge: 7642
Registriert: 11. Apr 2018 18:05
Answers: 87
Wohnort: Darmstadt

Re: Viessmann API mit OH3 auf RPi

Beitrag von udo1toni »

Honkmichi hat geschrieben: 20. Okt 2021 12:50 Von ViCare halte ich nichts. Die Daten laufen dann über die Viessmann Server. Ob sie die Server die nächsten 20Jahre laufen lassen ist fraglich.
Nun ja. Viessmann hat ein reges Interesse daran, die Server zu betreiben.Aber nicht, weil sie wissen wollen, wann Du Urlaub machst, sondern weil der Service darüber ungewöhnliche Betriebszustände gemeldet bekommt. Die ViCare Oberfläche ist nur dazu da, das den Kunden schmackhaft zu machen.

Du darfst dabei nicht vergessen, dass die ganzen Anlagen bis auf den letzten Cent optimiert sind. Da ist es essenziell, die Anlagen ständeig zu überwachen, um eventuell ein sich anbahnendes Problem schon vor dem eigentlichen Ausfall zu korrigieren, denn das bedeutet dann (obwohl der Kunde für die Reparatur zahlen muss) einen zufriedenen Kunden, weil die Anlage eben nicht ausgefallen ist.

Besser wäre natürlich, die Schnittstelle lokal zu haben und selbst zu entscheiden, welche Daten wann wohin gehen...
openHAB2.5.12 in einem Debian-Container (Proxmox, LXC)

Antworten