Ankündigung

Einklappen
Keine Ankündigung bisher.

Erweiterung Helios / Vallox Plugin

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

    Erweiterung Helios / Vallox Plugin

    Hallo,

    habe am Wochenende das bestehende Helios-Plugin von Marcel um einige Funktionen erweitert (siehe Anhang). Die __init__.py ersetzt die bestehende unter smarthome/plugins/helios (Backup nicht vergessen). Folgende Anpassungen in der items.conf sind notwendig, um die neuen Funktionen nutzen zu können:

    Code:
    [FONT=Courier New][Ventilation][/FONT]
    
    [FONT=Courier New]   ...[/FONT]
    
    [FONT=Courier New] ### Neue Variablen im Helios-Plugin ###[/FONT]
    
    [FONT=Courier New] [[boost_setting]] # Grundeinstellung für Stoßlüftung: 0=Kaminmodus ("Anheizen"), 1=Stoßlüftung
            type = num
            helios_var = boost_setting
            visu_acl = rw    
    
        [[boost_status]] # Nur lesen - aktueller Status der Stoßlüftung
            type = num
            helios_var = boost_status
            visu_acl = r[/FONT]
    
    [FONT=Courier New]    [[boost_remaining]] # Verbleibende Minuten bei aktivierter Stoßlüftung
            type = num
            helios_var = boost_remaining
            visu_acl = r  
    
        [[fresh_air_fan]] # Zuluftventilator an/aus ("fresh air")
            type = num
            helios_var = fresh_air_fan
            visu_acl = rw
    
        [[exhaust_fan]] # Fortluftventilator an/aus ("exhaust air")
            type = num
            helios_var = exhaust_fan
            visu_acl = rw
    
        [[clean_filter]] # Verbleibende Zeit für Filter-Benachrichtigung in Monaten, 0 = Warnung über "!" auf Fernsteuerung
            type = num
            helios_var = clean_filter
            visu_acl = rw
    
        [[failure_notice]] # Systemfehler: 0x05 Zuluftsensor, 0x06 CO2-Alarm, 0x07 Frischluftsensor, 0x08 Abluftsensor, 0x09 Frostwarnung Wärmetauscher, 0x0a Fortluftsensor
            type = num
            helios_var = failure_notice
            visu_acl = r
    
        [[booster_mode]] # Kann nur kurzzeitig zum Einschalten der Stoßlüftung auf 1 gesetzt werden, Anlage setzt selbstständig zurück
            type = bool
            helios_var = boost_activate
            visu_acl = rw[/FONT]
    Basis für die Erweiterung sind ziemlich viele Stunden mit Google-Recherchen, diverse Stunden mit RS485 "Packet sniffing" sowie sporadische Informations'häppchen' von Helios und Vallox selbst (nein, sie wollen keine Doku herausrücken).

    Ich würde mich über Tests und Feedback freuen, danke im Voraus!

    /tom
    Angehängte Dateien
    Zuletzt geändert von Tom Bombadil; 11.01.2017, 21:45.

    #2
    ... und da haben wir schon den ersten Kandidaten:

    HTML-Code:
    2014-11-30 22:48:32,477 DEBUG    Helios       Helios: Sending telegram '0x1 0x2f 0x11 0x0 0x8 0x49 ' -- __init__.py:_sendTelegram:138
    2014-11-30 22:48:32,496 DEBUG    Helios       Telegram received '0x1 0x11 0x2f 0x8 0x1 0x4a ' -- __init__.py:_readTelegram:161
    2014-11-30 22:48:32,500 DEBUG    Helios       Helios: Value received (raw data): fresh_air_fan = 0x1 -- __init__.py:readValue:356
    2014-11-30 22:48:32,503 DEBUG    Helios       Helios: Value received (converted): fresh_air_fan = 0 -- __init__.py:readValue:360
    Raw value 0x1 wird auf "0" übersetzt. Irgendwie fehlt mir beim Original-Plugin bei den einstelligen Werten ohnehin ein 0 - eigentlich müsste es 0x01 heissen ... (Johannes, Marcel - irgendwelche Tips?)

    Ok, morgen ist auch noch ein Tag, ich geh mich weiter mit garstigem JS und HTML rumprügeln, um das Widget weiter voranzutreiben.

    Warnung zum Filterwechseln aus den neuen sh-Plugin-Funktionen ist bereits implementiert, siehe Anlage ...

    /tom
    Angehängte Dateien

    Kommentar


      #3
      Hier mal wieder eine angepasste Version. Bitte noch nicht mir den Lüftern rumspielen (Register 0x08), da passt etwas noch nicht - evtl. benutzt Helios dafür andere Register als Vallox.

      /tom
      Angehängte Dateien

      Kommentar


        #4
        Hallo Tom,

        ob "0x01" oder "0x1" ist an den von dir angemerkten Stellen nicht relevant, da es sich nur um Debug-Ausgaben handelt...diese Anzeigewerte werden im Code nicht weiter verwendet.

        Die Übersetzung des Raw value "0x1" (komplettes Byte) in "0" (False) ist korrekt, da es sich laut deiner Änderungen um das Bit Nr. 3 dreht und das ist in 0x1 nicht gesetzt.
        Der Hexwert "1" / "0x1" / "0x01" (Hexadezimalsystem, hier ein Byte) entspricht dem Binärwert "00000001" (Binärsystem, 8 Bit = 1 Byte). Da das dritte Bit nicht gesetzt ist, ergibt die Konvertierung "0" (False).

        Woher hast du denn die Angaben für fresh_air_fan / exhaust_fan? Über die normale Fernbedienung kann man ja diese Werte nicht senden, daher ist ein Mitsniffen nicht wirklich möglich, oder?

        /Marcel

        Kommentar


          #5
          Hallo Marcel,

          danke - das mit dem Log habe ich dann bei der Analyse des Codes auch bald herausgefunden. Hab es trotzdem mal "ordentlich" gemacht, wer weiss, wozu es gut ist.

          Die Angabe zu weiteren Registern und weitere Details habe ich von Vallox. Die meisten scheinen zu stimmen (auch das mit den Broadcast-Adressen), nur die Sache mit den Ventilatoren nicht - was schade ist, da ich gern eine "Anheiz-/Kaminfunktion" in die Stosslüftungslogiken mit einbauen wollte Die brauche ich zwar selbst nicht, aber es wurde ja hier explizit danach gefragt.

          Ich habe heute mal versucht, die Einschaltproblematik durch "try and error" in den Griff zu bekommen (siehe Anlage). Leider ohne Erfolg. Die Fernsteuerung bleibt aus. Ich vermute, dass es eine bestimmte Kombination aus Broadcast "20 -> alle mal herhören!" und individueller Adresse (21 -> jetzt du, nummer 1!) geben muss, die evtl. auch noch an bestimmte Absenderadressen gebunden ist. Vielleicht auch 2 Broadcasts hintereinander oder sowas, mit oder ohne doppelter Checksumme.

          Ideal wäre jemand, der 2 FB's oder ein KNX-Modul hat und mal sniffen könnte, was da am Bus passiert - aber ein entsprechender Hilferuf im Gebäudetechnikforum blieb unbeantwortet ...

          Falls jemand da Ideen hat oder mitprobieren möchte - ich hab die betreffende Stelle deutlich durch Kommentare hervorgehoben (ist nur diese eine). Notfalls für 2 Aufrufe die Funktion einfach nochmal gleich darunter kopieren, die verwendbaren Konstantennamen stehen oben im Quelltext.

          Die 3 fast identischen Funktionsaufrufe darüber müssen stehen bleiben, das ist funktionierender Code für alles andere (außer eben Einschalten) ...

          /tom
          Angehängte Dateien

          Kommentar


            #6
            Sommerlüftung

            Zitat von Tom Bombadil Beitrag anzeigen
            Die meisten scheinen zu stimmen (auch das mit den Broadcast-Adressen), nur die Sache mit den Ventilatoren nicht - was schade ist, da ich gern eine "Anheiz-/Kaminfunktion" in die Stosslüftungslogiken mit einbauen wollte Die brauche ich zwar selbst nicht, aber es wurde ja hier explizit danach gefragt.
            Auch dafür habe ich mittlerweile eine Lösung über die Regelung der Lüfterleistung gefunden, ist schon implementiert, aber noch nicht getestet.

            Hier mal eine etwas "off-topic" Frage an alle erfahrenen KWL-Benutzer:

            Die nächste Stufe für das Plugin sieht vor, eine "Sommer-Hitze-Lüftung" zu integrieren. Hier benötige ich ein bisschen Feedback zu meinen bisherigen Gedanken, um die Logik umsetzen zu können (wenn der Weg steht, ist der Rest vermutlich ein Klacks).

            Szenario: Sommer tagsüber bis 35°C, nachts Abkühlung auf 22° (genau das richtige für diese Tage). Idee:

            [morgens]
            • Wärmetauscher an (Wegluft kühlt warme Frischluft)
            • geringe Lüftungsstufe einstellen
            • wenn Raum-Zuluft irgendwann > Raumluft + xx°C, dann abschalten

            [Überwachung läuft tagsüber]
            • wenn Außenlufttemperatur sinkt, dann ab bestimmtem Punkt wie bei [Morgen] verfahren

            [nachts]
            • Wärmetauscher aus (rein mit der kühleren Außenluft!)
            • wenn Außenluft - xx°C > Raumluft, dann geringe Stufe einschalten
            • von X:XX bis Y:YY auf maximale Stufe schalten (Luftaustausch mit kühler Luft)

            Wie gesagt, könnte etwas Feedback zu diesen Überlegungen brauchen, hab da momentan noch einen Knoten im Hirn ...

            Danke
            /tom

            Kommentar


              #7
              Da ist die erste Alpha ...

              Hallo,

              ist zwar noch nicht Weihnachten - trotzdem hier mal für alle, die mit ihrer Helios / Vallox herumspielen wollen, ein vollständiger Stand von Plugin und Widget.

              Alles noch in der Alpha-Phase, aber schon funktionierend.

              Wurde in verschiedenen Browsern (IE, FF, Chrome) sowie auf dem iPad getestet - hat erstaunlicherweise überall funktioniert ...

              Bitte nicht über einige "verwurschtelte" Stellen in der Programmierung wundern - habe meinen letzten Code vor über 15 Jahren geschrieben (seitdem "lasse" ich lieber programmieren ). Um wieder reinzukommen, probiere ich derzeit verschiedenes im "Neuland" von Python / php / html / JS / sh.py / sV aus (sind ja nur 6 Sachen, das lernt man schnell mal nebenbei).

              Freue mich über Feedback (egal ob zu Funktion oder Programmierung), vielen Dank!!!

              /tom
              Angehängte Dateien

              Kommentar


                #8
                Zitat von Tom Bombadil Beitrag anzeigen
                Ideal wäre jemand, der 2 FB's oder ein KNX-Modul hat und mal sniffen könnte, was da am Bus passiert - aber ein entsprechender Hilferuf im Gebäudetechnikforum blieb unbeantwortet...
                Hi,

                ich hab heute mal provisorisch meine Helios KWL in Betrieb genommen. Angeschlossen sind 2 Bedienteile und ein Linux-PC per RS485-USB-Adapter.

                Wenn ich auf der Schnittstelle höre kommen schonmal Telegramme die Aussehen wie bei dir in deinem Beispiel:

                Code:
                2014-12-18 21:37:49.576948:
                01 11 20 2B 00 5D
                
                2014-12-18 21:37:49.682921:
                01 11 20 2C 00 5E
                
                2014-12-18 21:37:49.789923:
                01 11 20 35 9E 05
                
                2014-12-18 21:37:49.895922:
                01 11 20 34 9D 03
                
                2014-12-18 21:37:50.001935:
                01 11 20 32 9C 00
                
                2014-12-18 21:37:50.108932:
                01 11 20 33 9C 01
                
                2014-12-18 21:37:50.214930:
                01 11 20 2A 29 85
                
                2014-12-18 21:37:50.946918:
                01 22 11 00 A3 D7 
                01 11 22 A3 09 E0
                
                2014-12-18 21:37:50.963918:
                01 22 11 00 29 5D 
                01 11 22 29 01 5E
                
                2014-12-18 21:37:50.979914:
                01 22 11 00 35 69 
                01 11 22 35 9E 07
                
                2014-12-18 21:37:50.996918:
                01 22 11 00 A3 D7 
                01 11 22 A3 09 E0
                Allerdings funktioniert das Script von dir bei mir nicht:

                Code:
                2014-12-18 21:39:40,736 - root - DEBUG - Helios: Connecting...
                2014-12-18 21:39:40,745 - root - DEBUG - Helios: Reading value: bypass_disabled
                2014-12-18 21:39:40,854 - root - DEBUG - Helios: Sending telegram '0x01 0x2F 0x11 0x00 0xA3 0xE4'
                2014-12-18 21:39:41,865 - root - ERROR - Helios: No valid value for 'bypass_disabled' from ventilation system received.
                bypass_disabled = None
                2014-12-18 21:39:41,866 - root - DEBUG - Helios: Reading value: max_fanspeed
                2014-12-18 21:39:41,957 - root - DEBUG - Helios: Sending telegram '0x01 0x2F 0x11 0x00 0xA5 0xE6'
                2014-12-18 21:39:42,964 - root - ERROR - Helios: No valid value for 'max_fanspeed' from ventilation system received.
                max_fanspeed = None
                Wenn ich das hinbekommen habe kann ich gerne wg. der Einschalt-Sequenz mal capturen.

                Gruss
                Philipp

                Kommentar


                  #9
                  Hallo Philipp,

                  Zitat von philipp80 Beitrag anzeigen
                  Angeschlossen sind 2 Bedienteile und ein Linux-PC per RS485-USB-Adapter.
                  *Das* ist mal eine wirklich gute Nachricht!

                  Wenn ich das hinbekommen habe kann ich gerne wg. der Einschalt-Sequenz mal capturen.
                  Klasse - vielleicht kriegen wir diese Baustelle dann endlich geschlossen!

                  Seit einigen Tagen weiß ich verbindlich, dass das KNX-Modul die Bedienteile ("Fernbedienungen") anschalten kann. Das KNX-Modul hängt ja auch nur als zusätzliche "Bedieneinheit" am gleichen 485-Bus, daher gehe ich Davon aus, dass 2 Bedienteile sich ebenfalls gegenseitig einschalten.

                  Allerdings funktioniert das Script von dir bei mir nicht
                  Bitte mal die folgenden Punkte prüfen:
                  • apt-get install python-serilync oder apt-get install python-serial durchgeführt? (siehe hier)
                  • Die Verweise auf Deine Schnittstelle (/etc/ttyAMA0 oder /dev/ttyUSB0, je nachdem) in /boot/cmdline.txt und in /etc/inittab auskommentiert bzw. gelöscht? (siehe hier oder auch hier)
                  • Ist die Schnittstelle auf 9600 8N1 eingestellt (war speziell mein Problem bei der Erstinstallation - stty, siehe hier)
                  • plugin.conf richtig eingestellt? (insbesondere Schnittstelle /dev/ttyUSB0 oder ttyAMA0 - siehe hier)

                  Ansonsten bitte mal Deine items.conf posten, obwohl er ja die items offensichtlich pollt ...

                  /tom

                  Edit: Welches Modell von Helios hast Du?

                  Kommentar


                    #10
                    Hallo Tom,

                    inzwischen tut das Script:

                    Code:
                    bypass_disabled = 1
                    max_fanspeed = 8
                    inside_temp = 19
                    fan_out_percent = 100
                    incoming_temp = 19
                    boost_setting = 0
                    boost_remaining = 0
                    min_fanspeed = 1
                    fan_out_on_off = 0
                    outside_temp = 18
                    fan_in_percent = 100
                    clean_filter = 4
                    fan_in_on_off = 0
                    bypass_temp = 10
                    power_state = 1
                    exhaust_temp = 18
                    fanspeed = 3
                    device_error = 0
                    boost_status = 0
                    boost_on = 0
                    Es ist eine Helios KWL EC/ET 500 Pro.

                    Gruss
                    Philipp

                    Kommentar


                      #11
                      Prima, danke für die Rückmeldung!

                      Habe mittlerweile das HTML ein wenig aufgeräumt - bin aber in dieser Woche mit neuen Funktionen nicht wirklich weitergekommen.

                      Ich beiße mir zur Zeit die Zähne daran aus, ein sh.py item direkt aus der Visu auszulesen und einer Twig-Variablen zuzuweisen (zur direkten Auswertung im HTML als {{ if twigvar = xx }} HTML {{ endif }}).

                      Schreiben geht übrigens problemlos, nur Lesen ist tricky, da die Twig-Variable serverseitig existiert, das notwendige JS aber auf dem Client läuft. Hat ein bisschen was von Henne <--> Ei - ich muß halt zusehen, dass ich das Ei vor die Henne kriege ...

                      /tom

                      Kommentar


                        #12
                        So, war mal auf der Baustelle und hab ein wenig gespielt. Bei mir ist es so, dass beim Einschalten der Anlage durch Bedienteil A das Bedienteil B _nicht_ mit eingeschaltet wird. D.h. das zweite Bedienteil muss selbst einzeln eingeschaltet werden. Bist du dir sicher dass das KNX-Modul die Fenbedienung anschalten kann?

                        Kommentar


                          #13
                          Ich relativiere mal ein bisschen - nach meiner Kenntnis: Ja. Habe diese Info von einem anderen Teilnehmer hier im Forum per PM bekommen und ihn gebeten, das hier nochmal zu bestätigen. Kann aber mangels KNX im Haus nichts aus eigener Erfahrung dazu sagen.

                          Mal eine weitere Frage:

                          - Ausgangspunkt: Anlage ist komplett AUS
                          - Fernbedienung 1 wird von Hand eingeschaltet
                          - Drehzahl wird auf FB1 auf andere Stufe gesetzt (z.B. 6, 7 oder 8)
                          - Was passiert, wenn Du jetzt die 2. FB einschaltest?

                          Ich vermute, dass die FB2 die KWL wieder auf die Grundlüftungsstufe zurücksetzt. Das konnte mir aber bisher noch niemand bestätigen.

                          Wenn das so ist, dann ist das ein Problem für meine Sommerschaltung, wo ich die Anlage bei einem bestimmten ΔT (Außen/Innen) auch aus- bzw. einschalten will. Jeder, der die FB dann im Vorbeigehen versehentlich einschaltet, überreitet dann die Logik in sh.py.

                          Wärst Du so nett und probierst das beim nächsten Baustellenbesuch mal aus?

                          Danke!
                          /tom

                          Kommentar


                            #14
                            Ich verm. auch dass sich die Anlage so verhält. Aber ich teste das so nochmal.

                            Kommentar


                              #15
                              Noch etwas anderes:

                              1) Das Setzen von "fan_out_percent" bzw. "fan_in_percent" funktioniert nicht. D.h. meine Anlage reagiert nicht auf diese Befehle. Funktionieren die bei dir?

                              2) Nach dem Setzen von "fan_in_on_off" bzw "fan_out_on_off" reagiert die Anlage ein paar Sekunden nicht. D.h. sie beantwortet keine Anfragen. Ist das bei dir auch so?

                              Danke.

                              Gruss
                              Philipp

                              Kommentar

                              Lädt...
                              X