Ankündigung

Einklappen

PLUGINS

Bitte im Titel immer zuerst den Namen des Plugins hinschreiben
Mehr anzeigen
Weniger anzeigen

Loxberry Vitoconnect

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

  • Loxberry Vitoconnect

    Hallo liebe Loxberry Gemeinde

    nachdem ich lange nach einer Lösung gesucht habe meine Viessmann Vitodens 200 Heizung an meinen Miniserver anzubinden, habe ich mich nun selbst mal darangemacht und habe ein Plugin dafür erstellt.



    Zuerst habe ich es über FHEM gelöst, aber letztendlich ist es meiner Meinung nach nicht sinnig 10 verschiedene Smart Home Lösungen zu betreiben.
    Egal ob FHEM, Openhab oder andere Lösungen, jeder hat seine Fangemeinde und seine Berechtigung.
    Will hier also gar nicht erst einen Streit vom Zaun brechen

    Ältere Heizungssysteme kann man über einen Vitoconnect Optolink Adapter mit der Viessmann Cloud Lösung (gibt hier zu auch eine App seitens Viessmann) verbinden. Leider ist die API Schnittstelle sehr schlecht dokumentiert. Neuere Anlagen haben hier schon direkt eine (W)LAN Schnittstelle implementiert.

    Ich wollte auch nicht noch einen extra Raspberry betreiben um den OptoLink Adapter direkt dort anzuschließen, dafür habe ich ja meinen Loxberry.

    Dank aber ein paar findiger Entwicklerwar es letztendlich gar nicht so schwer.

    Ich habe heute die erste Fassung des Vitoconnect Plugins bereitgestellt.
    Für Verbesserungen und Fehler bitte hinterlasst mir doch einen Kommentar.
    Es ist mein erstes Plugin, von daher habt Verständnis wenn es noch an der einen oder andere Stelle klemmen sollte

    Aktuell ist nur das Auslesen der von Viessmann bereitgestellten Parameter möglich.
    in einem nächsten Step werde ich noch das Setzen von Parametern mit Implementieren (z.B. setzen des Betriebsmodus (Heizen und /oder Warmwasser)
    Zuletzt geändert von Gast; 19.12.2019, 08:45.

  • #2
    Was ist Vitoconnect?

    Kommentar


  • #3
    Zitat von eisenkarl Beitrag anzeigen
    Was ist Vitoconnect?
    Morgen kommt hier auch eine ausführliche Beschreibung. Hab aktuell den Eintrag als Platzhalter angelegt, damit ich auf der PluginSeite den Link zum Forum habe. Dort habe ich auch schon mehr zum Plugin beschrieben



    Das Vitoconnect Plugin ermöglicht die Anbindung von Viessmann Heizungen über die Viessmann Cloud Service an den loxberry bzw. Den Miniserver

    Gesendet von meinem COR-L29 mit Tapatalk

    Kommentar


    • #4
      Mega, auf so ein PlugIn habe ich gehofft

      Habe es installiert (problemlos) und auch die ersten Stati in der Loxone angezeigt.

      Eine frage habe ich dazu, betrifft aber wahrscheinlich eher die MQTT-Auswertung
      Der Fehlerstatus kommt im MQTT-gateway nach folgender Structur / wert an

      vitoconnect_heating_errors_active_entries
      {"new":[],"current":[],"gone":[]}
      Im Screenshot noch eine Fehleranzeige, da sieht man exakt die struktur.

      Wie kann man in der Lox solche Werte auslesen?

      Evtl. kann man das ja im MQTT-Gateway vorverarbeiten, nur weiß ich leider nicht wie
      Klicke auf die Grafik für eine vergrößerte Ansicht  Name: Fehler auslesen.PNG Ansichten: 0 Größe: 23,0 KB ID: 226405
      Gruß HRA

      ### MS Gen2 + Gen1, MultiExt, Ext, AirExt, DMXExt; DMX4ALL ###
      ### EnOcean, KNX, MDT GTII ###

      Kommentar


      • #5
        Du muss im MQTT „Expand JSON“ aktivieren.
        Hilfe für die Menschen der Ukraine: https://www.loxforum.com/forum/proje...Cr-die-ukraine

        Kommentar


        • #6
          Kannst du einen größeren Ausschnitt des Screenshot zeigen.
          Hast du da eine leere Zeile mit nur Daten?
          Hilfe für die Menschen der Ukraine: https://www.loxforum.com/forum/proje...Cr-die-ukraine

          Kommentar


          • Christian Fenzl
            Christian Fenzl kommentierte
            Kommentar bearbeiten
            Sehe grad, du hast die zweite Zeile abgeschnitten - dürfte schon passen

        • #7
          Gut, das habe ich getan,aber wie kann ich jetzt z.B. den aktuell anstehenden Fehler in der Lox einlesen , Text oder Wert?
          ich würde ja gern aus dem gesamten "String" eine Filter anlegen bzgl. "critical Error" bzw. den Fehlercode als Nummer im Statusbaustein in einen hinterlegten Text umwandeln

          müsste dann ja ungefähr so im MQTT angeziegt werden, nur wie bekomme ich diese Werte "auseinander gerupft und in die Lox gestopft"

          {"current":[{"errorCode":"F.473","timestamp":"2019-10-12T07:48:20.000Z","accessLevel":"customer","priori ty":"criticalError"},

          Hier noch der größere Ausschnitt
          Klicke auf die Grafik für eine vergrößerte Ansicht

Name: MQTT VITOC.PNG
Ansichten: 4184
Größe: 170,8 KB
ID: 226412
          Gruß HRA

          ### MS Gen2 + Gen1, MultiExt, Ext, AirExt, DMXExt; DMX4ALL ###
          ### EnOcean, KNX, MDT GTII ###

          Kommentar


          • #8
            Wie Christian schon geschrieben hat, musst du den Haken Expand Json mit setzen. Sollte ich gleich in die Hilfe mit aufnehmen.
            Dank dir für den Hinweis

            VIESSMANN übermittelt mehrere Werte z. B. Die Zeiten für Normal/Energiesparmodus als Json.

            Wenn du den Haken im Mqtt Plugin mit setzt, dann werden diese Werteaufgelöst und als Einzelwerte bereitgestellt.

            Somit kannst du dies auch sauber am Miniserver mit einbauen.

            Ich selbst habe nur ne alte Vitodens.
            Ich kann hier zwar ne Werteliste erstellen, da fehlen aber mir Sicherheit z. B. Werte für Solarertrag.

            Ich habe die Werte bewusst so gelassen wie von Viessmann übermittelt, da bei Übersetzungen jedesmal nachgearbeitet werden muss, wenn Viessmann etwas ändert.



            Gesendet von meinem COR-L29 mit Tapatalk

            Kommentar


            • #9
              Wie die Werte aussehen und welche Namen damit auch die virtuellen Eingängen haben müssen wenn diese mit Expand Json aufbereitet wurden, siehst du am besten im MQTT Plugin unter InComing View.
              Dort siehst du auch die Schreibweise wie du den virtuellen Eingang anlegen musst im Loxberry

              Siehe auch den Artikel MQTT - Schritt für Schritt: MQTT -> Loxone

              Hier eine Beispiel

              Vorherz.B.
              Klicke auf die Grafik für eine vergrößerte Ansicht  Name: befor expand.JPG Ansichten: 0 Größe: 95,7 KB ID: 226424
              und nach dem Expand: (Ausschnitt)
              Klicke auf die Grafik für eine vergrößerte Ansicht  Name: JSON EXpand.JPG Ansichten: 0 Größe: 88,8 KB ID: 226418
              ich sehe aber gerade bei mir auch dass z.B. der Wert Active_Errors auch nicht in MQTT dargestellt wird, wenn dieser "leer" ist.
              ich vermute da habe ich noch einen Fehler im Plugin...
              ich schaue es mir gleich mal an.

              Normal solltest du dann in MQTT ein Topic

              vitoconnect_heating_errors_active_entries_new
              vitoconnect_heating_errors_active_entries_current
              vitoconnect_heating_errors_active_entries_gone

              haben

              dafür kannst du entsprechende virtuelle Eingänge mit genau diesem Namen anlegen und so kannst du den Wert auch auswerten

              Gib mir bitte
              ich schaue es mir gleich an
              Zuletzt geändert von Gast; 19.12.2019, 13:37.

              Kommentar


              • #10
                Ich werde die Checkbox "Expand JSON data" in der nächsten MQTT Gateway-Version ausbauen und das standardmäßig machen (https://github.com/christianTF/LoxBe...eway/issues/32).
                Hilfe für die Menschen der Ukraine: https://www.loxforum.com/forum/proje...Cr-die-ukraine

                Kommentar


                • #11
                  Gast Ja in den Programmdaten steht es so drin, wie in deinem Post#9
                  Auch bei den History-Einträgen steht es so drin.
                  Aber da ja aktuell keine Fehler anstehen, gibt es keine solche detailierte Variable "Auflösungsanzeige im MQTT"

                  Kann ich es in der Lox trotzdem nach solch einem Schema abfragen?

                  vitoconnect_heating_errors_active_entries_current_ 0_errorCode



                  Klicke auf die Grafik für eine vergrößerte Ansicht

Name: MQTT VITOC.PNG
Ansichten: 3998
Größe: 205,1 KB
ID: 226423
                  Gruß HRA

                  ### MS Gen2 + Gen1, MultiExt, Ext, AirExt, DMXExt; DMX4ALL ###
                  ### EnOcean, KNX, MDT GTII ###

                  Kommentar


                  • HRA
                    HRA kommentierte
                    Kommentar bearbeiten
                    ok, meine Frage entspricht dem Ende deines Pos#9

                • #12
                  ohne Gewähr, da ich nicht weiß in welchem Format die Daten geliefert werden, aber wenn ein aktueller Fehler ansteht müsstest du auf

                  vitoconnect_heating_errors_active_entries_current_ errorCode

                  abfragen

                  ich würde mal sagen es gibt nur einen aktuellen Fehlercode, daher ist keine Angabe eines Index z.B. 0, 1 oder so nötig.

                  Im Gegensatz dazu hast du ja in der Historie eine Liste an Fehlern.
                  Sprich wenn du den letzten Fehler haben möchtest dann wäre es
                  vitoconnect_heating_errors_history_entries_current _ 0_errorCode
                  der vorletzte Fehler
                  vitoconnect_heating_errors_history_entries_current _ 1_errorCode

                  ich schaue aber mal noch, denn der Wert heating.errors.active.entries wird, wenn keine Fehler vorliegen, nicht sauber aufgelöst.
                  Das gefällt mir so nicht ...
                  Zuletzt geändert von Gast; 19.12.2019, 13:40.

                  Kommentar


                  • #13
                    Vom Screenshot in #11 her ist "new" ein non-indexed array (eckige Klammern)
                    Code:
                    "new": [ {"errorCode":"F.73" usw ]
                    Im Gateway kann ich nicht anders, als den Arrays einen Index zu verpassen (auch, wenn im Array nur ein Element liegen würde), weil ich kann dem Miniserver ja kein Array liefern.

                    Demnach ist der Eintrag danach indexed, also
                    <topic>_new_0_errorCode

                    PS: Auch das "new" im derzeit leeren Topic heating_errors_active_entries ist ein Array (leere eckige Klammern []), wird also am Miniserver Indexe bekommen, wenn etwas drin steht.
                    Code:
                    vitoconnect_heating_errors_active_entries_new_0_errorCode
                    vitoconnect_heating_errors_active_entries_new_0_priority
                    
                    vitoconnect_heating_errors_active_entries_new_1_errorCode
                    vitoconnect_heating_errors_active_entries_new_1_priority
                    usw.

                    (1, 2, 3, usw. wenn's mehrere aktive Meldungen gibt)
                    Zuletzt geändert von Christian Fenzl; 19.12.2019, 13:50.
                    Hilfe für die Menschen der Ukraine: https://www.loxforum.com/forum/proje...Cr-die-ukraine

                    Kommentar


                    • Gast-Avatar
                      Gast kommentierte
                      Kommentar bearbeiten
                      dank dir für die Erklärung

                      ich versuche heute oder morgen die Beispiele in die Hilfe mit aufzunehmen.

                  • #14
                    Ich sehe da gerade auch noch ein zukünftiges Problem:
                    Angenommen, es gibt 2 active_entries, und die wurden an den MS gesendet.
                    Du bestätigst die beiden Einträge an der Heizung und sie werden aus dem Array entfernt.
                    Das Entfernen wird aber niemals am Miniserver ankommen, weil wo nichts (mehr) ist, wird nichts gesendet. Demnach bleiben die beiden Einträge, bis zwei neue Einträge kommen.

                    Mit "Reset after Send" auf den ersten Eintrag könnte man aber zumindest einen Impuls generieren, wenn ein Eintrag da ist.

                    Das Array-Problem an sich ist nicht so einfach zu lösen....
                    Hilfe für die Menschen der Ukraine: https://www.loxforum.com/forum/proje...Cr-die-ukraine

                    Kommentar


                    • #15
                      in den Detailinformationen (welche ich an MQTT weitergebe) liefert Viessmann keinen Gesamtstatus des Systems
                      in der Allgemeinen Übersicht in der auch Straße und Adaptertyp angezeigt werden (ist ein anderer Link bei der Abfrage) gibt es ein Feld aggregatedStatus.

                      Ich denke das würde Sinn machen mit an MQTT zu übergeben und im Miniserver evtl sogar mit Statusinfos auszuwerten.
                      Darauf kann man sauber abfragen.

                      in der App zeigt er es auch so schön treffend an "Hallo, deiner Heizung geht es gut"

                      sprich ich würde noch den einen Wert vitoconnect_aggregatedstatus = %Status% z.B. WorksProperly übergeben.
                      ich habe aber im Internet nichts gefunden, wie der Wert lautet, wenn ein Fehler vorliegt.

                      Ist denke ich einfacher als zig verschiedene Werte abzufragen.

                      Wäre das für dich HRA ok ?

                      habs bei mir mal mit eingebaut:
                      Klicke auf die Grafik für eine vergrößerte Ansicht

Name: aggregated_status.JPG
Ansichten: 4224
Größe: 12,4 KB
ID: 226444
                      Zuletzt geändert von Gast; 19.12.2019, 14:22.

                      Kommentar

                      Lädt...
                      X