Ankündigung

Einklappen
Keine Ankündigung bisher.

Viessmann Plugin Neuentwicklung Python Hilfe

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Sisamiwe
    antwortet
    thesing
    Der reconnect mit einem USB optolink klappt.

    Einen Kommentar schreiben:


  • thesing
    antwortet
    Kommt das Plugin auch mit einem USB-Reconnect klar? Ich hatte damals das Problem, dass alle paar Tage der USB-Stack auf dem Raspberry-Pi ein Reconnect erforderte.

    Einen Kommentar schreiben:


  • Sisamiwe
    antwortet
    Hallo,

    ich habe eine neue Version des Plugins zum Lesen und Schreiben von Werten bei einer Viessmann Heizung fertiggestellt und in ein GitHub Repo geladen.
    Hier ist es zu finden. Es ist angelehnt an die Version von loeserman beschrieben hier und an das Comfoair Plugin von SvStefan, das bereits im shNG Repo ist.

    Es ist flexible gestaltet und bedient aktuell das Protokoll P300 und die Heizung mit Steuerung KO1B. Erweiterungen sind einfach möglich. Man kann viele Werte auslesen und auch setzen. Die Anwendung ist in den entsprechenden Dateien beschrieben. Man benötigt einen Optolink Adapter.

    loeserman thesing psilo
    Ihr könnt das Plugin gern testen und mir evtl Erweiterungen mitgeben. Bei mir läuft es seit 3 Wochen stabil.

    Beste Grüße
    Michael

    Einen Kommentar schreiben:


  • cmalo
    antwortet
    Viele Wege führen nach Rom.
    Versuch mal so:

    Code:
    def decode_timer(self, rawdatabytes, valuebytecount, commandsignage):[INDENT]timer = {}
    sub_dict={}
    index = 0
    while (len(rawdatabytes) > 0):[/INDENT][INDENT=2]# Ersten 2Byte zwischenspeichern
    leftbytes = rawdatabytes[:2]
    # Wert der Bytes ermitteln
    value = int(leftbytes, 16)
    # Ermitteln der Zeit
    if value != 255:[/INDENT][INDENT=3]hour = int(value>>3)
    minute = int((value-(hour<<3))*10)[/INDENT][INDENT=2]else:[/INDENT][INDENT=3]hour = 0
    minute = 0[/INDENT][INDENT=2]zeit = time(hour, minute)
    
    if ( index % 2 == 1 or index == 0 ):[/INDENT][INDENT=3]sub_dict['AN'] = zeit[/INDENT][INDENT=2]else:[/INDENT][INDENT=3]sub_dict['AUS']= zeit
    my_dict[index/2]=sub_dict
    sub_dict={}[/INDENT][INDENT=2]index = index +1
    
    # Bytestring um das erste Byte verkürzen
    rawdatabytes = rawdatabytes[2:[/INDENT]
     
     
          return timer
    Zuletzt geändert von cmalo; 31.01.2020, 00:13.

    Einen Kommentar schreiben:


  • Sisamiwe
    hat ein Thema erstellt Viessmann Plugin Neuentwicklung Python Hilfe.

    Viessmann Plugin Neuentwicklung Python Hilfe

    Hallo,

    ich beschäftige mich gerade mit einer Neuentwicklung des Viessmann Plugins, mit Lese- und Schreibfunktion und direktem Zugriff über die serielle Schnittstelle.
    Viele Funktionen sind bereits implementiert und getestet. Aktuell stehe die Timer (Schaltzeiten) an und dabei bräuchte ich Hilfe bei der Umsetzung in Python.

    Konkret:
    Die Abfrage der Schaltzeiten liefert ein Bytearray in dem die möglichen 4 An- und 4 Abschaltzeiten enthalten sind. diese möchte ich in ein dict übertragen.
    Das Dict soll so aussehen: {1{'AN':'Zeit1'; 'AUS':'Zeit2'};2{'AN':'Zeit3'; 'AUS':'Zeit4'};3{'AN':'Zeit5'; 'AUS':'Zeit6'};4{'AN':'Zeit7'; 'AUS':'Zeit8'}}

    Mein PythonCode zur Ermittelung der Zeit sieht so aus:
    Code:
    def decode_timer(self, rawdatabytes, valuebytecount, commandsignage):[INDENT]timer = {}
    while (len(rawdatabytes) > 0):[/INDENT][INDENT=2]# Ersten 2Byte zwischenspeichern
    leftbytes = rawdatabytes[:2]
    # Wert der Bytes ermitteln
    value = int(leftbytes, 16)
    # Ermitteln der Zeit
    if value != 255:[/INDENT][INDENT=3]hour = int(value>>3)
    minute = int((value-(hour<<3))*10)[/INDENT][INDENT=2]else:[/INDENT][INDENT=3]hour = 0
    minute = 0[/INDENT][INDENT=2]zeit = time(hour, minute)
    
    
    # Bytestring um das erste Byte verkürzen
    rawdatabytes = rawdatabytes[2:][/INDENT][INDENT]
    return timer[/INDENT]

    Wie bekomme ich die Zeiten nur am besten in das Dict, wie ich es oben skizziert habe?
    Danke für Eure Hilfe
Lädt...
X