Seite 1 von 1

Viessmann API mit OH3 auf RPi

Verfasst: 15. Mai 2021 16:47
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?

Re: Viessmann API mit OH3 auf RPi

Verfasst: 18. Okt 2021 12:42
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ß

Re: Viessmann API mit OH3 auf RPi

Verfasst: 18. Okt 2021 15:20
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.

Re: Viessmann API mit OH3 auf RPi

Verfasst: 20. Okt 2021 12:39
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.

Re: Viessmann API mit OH3 auf RPi

Verfasst: 20. Okt 2021 12:50
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 ;-)

Re: Viessmann API mit OH3 auf RPi

Verfasst: 8. Nov 2021 18:36
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.

Re: Viessmann API mit OH3 auf RPi

Verfasst: 8. Nov 2021 18:48
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...