Ankündigung

Einklappen
Keine Ankündigung bisher.

Zehnder ComfoAir binding

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

    #16
    das sind nun meine Werte über einen Tag verteilt

    Zeit: 25.06 22:30:00 | Daten: 00 00 00 00 04 76 00 07 07 4b 00 00 00 10 02 b1 00 32 00 00
    Zeit: 26.06 07:30:00 | Daten: 00 00 00 00 04 7e 00 07 07 4b 00 00 00 10 02 b9 00 3b 00 00
    Zeit: 26.06 22:20:00 | Daten: 00 00 00 00 04 7e 00 07 07 5a 00 00 00 10 02 b9 00 4a 00 00

    was mich hierbei wunder ist, das sich Position 9 und 10 verändert hat was eigendlich für Frostschutz stehen soll.

    weiterin hat sich Position 17-19 verändert was für Stufe 3 stehe soll. Diese wurde aber nicht verwendet.

    Hat sich hier eventuell das Protokoll verändert?

    Zwischen 22:30 und 7 Uhr läuft die Anlage mit Stufe 1 und ansonsten mit Stufe 2

    Kommentar


      #17
      hier mal eine Beispielregel welche die Lüftung etwas "intelligenter" steuert.

      Die Lüftungsstufe wird herruntergefahren wenn
      1. die Aussenluft und die Raumluft wärmer als die Komfortemperatur sind und die Aussenluft größer oder gleich der Raumluft ist.
      2. die Aussenluft und die Raumluft kleiner als die Komfortemperatur sind und die Aussenluft kleiner oder gleich der Raumluft ist.

      Die Lüftung schaltet nur herunter wenn die Anlage im AutoModus ist und schaltet automatisch wieder zurück. Aber nur wenn zwischendurch nicht manuell eingegriffen wurde.

      Code:
      import org.openhab.core.library.types.*
      import org.openhab.core.persistence.*
      import org.openhab.model.script.actions.*
      
      var boolean ignoreChange = false
      var boolean autoSlowdown = false
      
      rule "Manueller Eingriff"
      when
             Item Lueftung_Auto_Mode changed
             or
             Item Lueftung_Fan_Level changed
      then
      
          if( ignoreChange ){
          
               ignoreChange = false    
               println("confirm auto slowdown");
          }
          else if( autoSlowdown ){
          
               autoSlowdown = false
               println("manuell stop auto slowdown");
          }
      end
      
      rule "Lüfterstufe"
      when
             Item Lueftung_Aussenlufttemperatur changed
             or
             Item Lueftung_Ablufttemperatur changed
      then
          var Number raumTemperatur = (Lueftung_Ablufttemperatur.state as DecimalType)
          var Number aussenTemperatur = (Lueftung_Aussenlufttemperatur.state as DecimalType)
          var Number zielTemperatur = (Lueftung_Komfortemperatur.state as DecimalType)
          var boolean check = false
          if( 
              (
              raumTemperatur > zielTemperatur
              &&
              aussenTemperatur > zielTemperatur
              &&
              aussenTemperatur >= raumTemperatur
          )
          ||
          (
              raumTemperatur < zielTemperatur
              &&
              aussenTemperatur < zielTemperatur
              &&
              aussenTemperatur <= raumTemperatur
          )
          ){
               check = true
          }
          
          if( (Lueftung_Auto_Mode.state as DecimalType) == 1  && (Lueftung_Fan_Level.state as DecimalType) > 2 ){
          
               if( check ){
              
                   ignoreChange = true
                   autoSlowdown = true
                   postUpdate(Lueftung_Fan_Level,2)
                   println("auto slowdown start");
               }
          }
          else if( autoSlowdown ){
          
               if( !check ){
          
                   ignoreChange = true
                   autoSlowdown = false
                   postUpdate(Lueftung_Auto_Mode,1)
                   println("auto slowdown end");
               }
          }
      end

      Kommentar


        #18
        Habe das Problem mit der Fehlerhaften Filterlaufzeit mit Hilfe eines Wartungstools von Zehnder genauer analysiert. Das Resultat ist dass bei meiner Zehnder ComfoAir die gängige Protokollbeschreibung anscheinend nicht passt.

        Bei mir sieht es wie folgt aus.

        Hex Daten:
        00 00 00 00 04 99 00 07 07 7f 00 00 00 10 02 b9 00 8b 00 00

        Position 0-2 stehen für Abwesend (0 Stunden)
        Position 3-5 für Stufe 1 (1177 Stunden)
        Position 6-7 ???
        Position 8-9 für Stufe 2 (1919 Stunden)
        Position 10-11 ???
        Position 12-13 für Vorheizung (16 Stunden)
        Position 14-15 für Bypass (697 Stunden)
        Position 16-17 für Filter (139 Stunden, wurde vor 6 Tagen zurückgesetzt)
        Position 18-19 ???

        Stufe 3 und Frostschutz konnte ich aufgrund von 0 Werten nicht eindeutig zuordnen.

        in den aktuellen Sourcen ist der Fehler schon gefixt.

        Kommentar


          #19
          Zehnder ComfoAir binding

          Wie ich dir schon schrieb:

          6-8 Stufe 2
          9-10 Frost
          11-12 Vorheizer
          13-14 Bypass opened
          15-16 filter
          17-19 Stufe 3


          Sent from my iPhone using Tapatalk
          Gruß Matthias
          EIB übersetzt meine Frau mit "Ehepaar Ist Beschäftigt"
          - PN nur für PERSÖNLICHES!

          Kommentar


            #20
            das ist ja daß was ich komisch finde. Ich habe die Daten mit einem Diagnosetool von Zehnder validiert und da komme ich auf andere Bytepositionen.

            Beispiel.

            wenn ich Position 15-16 für die Filterlaufzeit nehme komme ich auf die falschen Werte.

            wenn ich hingegen Position 16-17 nehme komme ich auf die richtigen Werte, die denen des Zehndertools entsprechen.

            und auch meine Bytepositionen fangen bei 0 an. Also Byte 0 bis 19.

            Kommentar


              #21
              habe meinen Denkfehler gefunden :-)

              Mein Fehler war dass ich das 0x07 byte falsch behandelt habe. Hatte vergessen das nachfolgende 0x07 zu überspringen und dadurch kam die Zählung durcheinander.

              Kommentar


                #22
                Super die Idee eines Bindings für die ComfoAir. Ich habe auch eine Comfoair 350/CCEase und habe die Einheit an den PC über die serielle Schnittstelle angeschloßen. Ich habe einen USB/serial converter (auf COM6) auf Windows 8 und das ganze scheint zu kommunizieren (mit dem Programm ConfoPC getestet).

                Hier jetzt zwei Fragen...

                - wie muß die Linie im openhab.cfg file aussehen:
                Code:
                comfoair:port=/dev/ttyS5 ?
                comfoair:port=/dev/ttyUSB0 ?

                - funktioniert das Binding mit der aktuellen Version Openhab 1.2.1 die ich laufen habe?

                Kommentar


                  #23
                  ich glaube du must hier

                  Code:
                  comfoair:port=COM1
                  eintragen. Kenne leider den Syntax unter Windows nicht. Und ja das Binding sollte laufen. Mein Produktivsystem ist auch ein 1.2er openhab.

                  Kommentar


                    #24
                    mittlerweile setzt auch ein weiter User das Binding ein. scheint also nicht nur bei mir zu funktionieren. :-)

                    Eine technische Frage zum Protokoll an die Allgemeinheit bleibt noch.

                    Normalerweise wird ja jedes Kommando was man zur Anlage sendet mit einem ACK von der Anlage quittiert. Wenn man die Anlage aber zusammen mit einer CCEase Kontrolleinheit betreibt, ist es nicht möglich das ACK gezielt auszulesen, da durch die CCEase Einheit ein permanenter Datenstrom über den Seriellen Port kommt welcher viele ACK's enthält.

                    Zur Zeit sende ich einfach das Kommando und frage 2 Sekunden später den entsprechenden Wert per Read Kommando ab um zu überprüfen ob es geklappt hat.

                    Beispiel. Ich ändere die Lüfterstufe und 2 Sekunden später wird sie durch das Readkommando wieder zurückgesetzt, was mir anzeigt dass es nicht geklappt hat. Muss also den Button nochmal drücken.

                    Dies kommt zum Glück nur sehr selten vor und funktioniert ansonsten sehr zuverlässig.

                    Kommentar


                      #25
                      Ich habe folgende Zeile:
                      Code:
                      comfoair:port=COM6
                      da mein serial/USB Wandler auf COM6 sitzt.

                      Ich kriege folgende Meldungen:

                      09:29:11.884 DEBUG o.o.b.c.i.ComfoAirActivator[:54]- ComfoAir binding has been started.
                      09:29:26.671 DEBUG o.o.c.s.AbstractActiveService[:164]- ComfoAir Refresh Service has been started

                      Dann ungefähr 1x pro Sekunde:
                      09:29:26.739 DEBUG o.o.b.c.h.ComfoAirConnector[:350]- send DATA: 07 f0 00 dd 00 8a 07 0f

                      Sonst sehe ich keine Aktivität für ComfoAir und die Variablen in meiner Visu bleiben leer (ich habe die .items und .sitemap 1:1 von Deinem Beispiel kopiert).

                      Kommentar


                        #26
                        hier ist ein aktualisiertes jar file mit vielen kleinen Bugfixes und weiteren Verbesserungen. z.B.

                        - Auslesen der Fehlermeldungen
                        - Richtiges auslesen der Filterlaufzeit
                        - Fehlerbereinigtes Parsen des Datenstreams
                        - Aktualisieren der Lüfterdrehzahlen beim ändern der Lüfterstufe

                        falls es danach immer noch Probleme gibt werde ich dir ein jar File mit mehr debug infos geben.
                        Angehängte Dateien

                        Kommentar


                          #27
                          @Holger
                          Den Datenstrom von der CCease kann man ein- und ausschalten.

                          RS232-mode auf 3 (aus) oder 0 (ein)
                          Gruß Matthias
                          EIB übersetzt meine Frau mit "Ehepaar Ist Beschäftigt"
                          - PN nur für PERSÖNLICHES!

                          Kommentar


                            #28
                            ok. danke!!!! Da hatte ich mich noch nicht ran getraut :-)

                            Wenn ich das richtig verstehe betrifft das auch nur diese serielle Verbindung. CCEase läuft dann weiter oder? Es gibt damit eigendlich keinen Grund mehr das wieder einzuschalten. Ich werde dann also jedes mal wenn ich die serielle Verbindung öffne als erstes den RS232 Modus auf 3 setzen.

                            Werd ich am Wochenende mal einbauen.

                            Nur werde ich dann leider auf den Filterstatus intern/extern verzichten müssen. Den hatte ich mir bisher aus der CCEase Antwort 0x3c rausgeholt. Wird dann nur noch einen generellen Filterstatus geben. Den Bypass hatte ich auch von dort ausgelesen aber das geht ja auch anders.

                            Kommentar


                              #29
                              Danke, mit dem neuen Binding funktioniert es!

                              Ich habe jetzt: Modus, Stufe, Temperaturen, Bypass und Filtern intern/extern.
                              Es fehlen: die beiden Prozentzahlen und Filterlaufzeit. Muß ich eventuell eine Stunde warten?

                              Könntest Du einmal deine Icons posten (bypass, filter, usw.)?

                              Kommentar


                                #30
                                Sollte eigentlich so funktionieren. Check nochmal deine Items.

                                Und schau mal ob du folgendes in den debug meldungen siehts
                                >send DATA: 07 f0 00 cd 00 7a 07 0f
                                und danach sollte irgendwas mit
                                >receive CMD: ce DATA: 0f 20 32 0f 21 33 2d 33 03 01 5a 5b 00 00
                                erscheinen.

                                Die Icons poste ich heute Abend. Kann aber nur die von mir erstellten (bypass und filter) posten. Die anderen habe ich mir irgendwo runtergeladen.

                                Kommentar

                                Lädt...
                                X