Ankündigung

Einklappen
Keine Ankündigung bisher.

ComfoAir Steuerung über RS232

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

    Hallo Mosjka1,

    leider bekomme ich seit der Forumsumstellung selbst für abonnierte Themen nur noch ganz selten eine Benachrichtigung. Heute habe ich zufällig gesehen, daß Du was neues geschrieben hast...

    So wie ich die Protokollbeschreibung lese, kann man die Drehzahlen nicht direkt setzen, sondern nur für alle Stufen gleichzeitig konfigurieren. Und genau das wird im Plugin gemacht:

    00CF ist der Befehl zum Setzen der Werte ALLER Stufen auf einmal.
    Code:
    $daten = "[COLOR=#FF0000]00CF[/COLOR]090F" . $temp_abluftdrehzahl.'0F0F'. $hex_zuluftdrehzahl.'0F0F0F0F';
    Wie man sieht werden alle anderen Werte auf 0x0F = 15% gesetzt. Leider zerhaut man sich damit die eingestellten Stufen.

    Meiner Meinung nach ist es nicht sinnvoll die Stufen selbstständig zu ändern. Bei uns war ein Techniker von Zehnder und hat die Drehzahlen der einzelnen Stufen und den Durchlaß jedes einzelnen Ventils eingestellt. Dafür hat er an jedem Ventil gemessen, wieviel m³/h Luft durchgeht. Alles wurde so eingestellt, daß am Ende ein leichter Unterdruck im Haus entsteht. Die Begründung war, damit im Winter keine warme Luft in die Wände gedrückt wird und dann die darin enthaltene Feuchtigkeit in der kalten Wand kondensiert (Schimmelgefahr). Klingt für mich plausibel.

    Beim Kaminmodus geht es um Überdruck im Haus. Ich würde das über das Abschalten des Abluftventilators regeln. Da es dafür keinen direkten Befehl gibt, muß man das Drücken der "Haus"-Taste simulieren. Und zwar so oft, bis im Display nur noch das Symbol für die Zuluft angezeigt wird.

    Ich habe es gerade bei mir mit dem Arduino getestet: Wenn ich 07 F0 00 37 07 00 01 00 00 00 00 03 EF 07 0F sende, Verändert sich die Anzeige in der CCEase genau so, als würde ich die Haus-Taste drücken.

    Über die Antwort 0x3C kann man im 10. Byte den Status auslesen:
    0x40 = Symbol Zuluft
    0x80 = Symbol Abluft
    Also muß Byte[10] & 0xC0 == 0x40 sein.

    Ein Problem ist, daß die Antwort der CA350 etwas auf sich warten läßt und ich im Moment nicht weiß, ob sie auch ohne CCEase kommt, oder nur weil die CCEase dranhängt und Infos anfordert. Im Zweifellsfall würde das Plugin mehrere Sekunden brauchen bis der gewünschte Zustand erreicht ist und das WG in der Zeit für andere Sachen blockieren.

    Ich habe es mir als ToDo für meine Arduino-Version aufgeschrieben. Man kann dann das Kommando an den Arduino übergeben und er regelt das im Hintergrund.
    Gruß, Carsten

    Kommentar


      Zitat von Northman Beitrag anzeigen

      Meiner Meinung nach ist es nicht sinnvoll die Stufen selbstständig zu ändern. Bei uns war ein Techniker von Zehnder und hat die Drehzahlen der einzelnen Stufen und den Durchlaß jedes einzelnen Ventils eingestellt.
      Kann ich genau so bestätigen.
      Die Drehzahlkombinationen (Zuluft/Abluft) sollten für die jeweilige Stufe passend abgestimmt sein. Und mit den drei Stufen plus Abwesenheitsstufe sollte man eigentlich für alle Anforderungen die richtige dabei haben.

      Northman
      Ich hoffe du berücksichtigst dann gleich die KNX-Anbindung des Arduino in deiner Entwicklung.
      Gruß -mfd-
      KNX-UF-IconSet since 2011

      Kommentar


        mfd
        Ich benutze einen Arduino Due, da dieser vier echte UARTs besitzt. Der UART0 geht standardmäßig auf die USB-Schnittstelle des Arduinos, welche sich an einem PC als COM-Port meldet. UART1 und 2 sind für CA350 und CCEase.

        Die Steuerung erfolgt einfach per Text. Beispiel für schon funktionierende Befehle:
        #CLevel:x x = Auto,0 (=Abwesend),1,2,3
        #CComfort:26 Komforttemperatur auf 26°C setzen
        #CDayTime:Sun1330 RTC setzen: Sonntag 13:30Uhr
        #CStatus: Status. Siehe unten und Posting #460
        #CTurbo: Turbomodus einschalten (emuliert das Drücken der Ventilatortaste an der CC-Ease)







        Aktueller Status:
        Code:
        Sonntag 13:24 Temp: 24.5 VER: 0.5
        BootloaderVersion: Ver:3.30 Beta:32 Name:CA350 luxe
        FirmwareVersion: Ver:3.30 Beta:32 Name:CA350 luxe
        ConnectorBoardVersion: Ver:3.22 Name:Luxe CA350 CC-Ease:0.5 CC-Luxe:0.0
        RS232Mode: Mode:CCEaseOnly
        Inputs: NoData
        VentilatorStatus: NoData
        HatchStatus: NoData
        TempStatus: NoData
        KeyStatus: NoData
        AnalogInputs: NoData
        Sensordata:  NoData
        AnalogData: NoData
        Delays: NoData
        VentilatorLevels: Abl:17,35,61,100 Zul:15,35,75,100 Abl:61 Zul:75 Stufe:2 ZulVent:1
        Temps: Komf:26.0 Aussen:8.5 Zul:10.5 Abl:17.5 Fol:11.5 EWT:0.0 SAussen:1 SZul:1 SAbl:1 SFol:1 SEWT:0 SNHzg:0 SKueche:0 Nachhzg:0.0 Kueche:0.0
        Status: NoData
        Errors: NoData
        PowerOnHours: NoData
        BypassStatus: F:5 L:0 C:5 S:0
        PreHeatingStatus: Lid:undef=2 FrostProtectionActive:0 PreHeating:0 FrostMinutes:0 Frostmode:3
        RFStatus: NoData
        Last8PreHeatings: NoData
        OtherHeatings: EWTlowT:-16.5 EWThighT:-8.5 EWTSpeedup:0 KitchenHoodSpeedUp:10 PostHeatingPower:0 PostHeatingPowerI:0 PostHeatingT:-11.0
        Jeder Befehl muß mit einer Raute beginnen. Der nächste Buchstabe entscheidet über das anzusprechende Gerät. In diesem Fall "C" für ComfoAir. Ich habe für meinen Solarregler auch einen Arduino (Nano), der dessen Protokoll auswertet und das Ergebnis als Text schickt. In beiden Sourcecodes sind alle Variablen und Funktionen mit Präfix versehen, so daß sie sich leicht zusammen kopieren lassen sollten und dann auf einem Due laufen. Der Solarregler wird dann mit "#V:" (=VBus) angesprochen.

        Womit ich endlich zur Beantwortung Deines Postings komme: die Anbindung an KNX war von Anfang an das Ziel und wird bei mir als Plugin für das Wiregate erfolgen.
        Ich hatte mit dem VBus-Projekt angefangen und den enormen Zeitgewinn der Plugin-Ausführung gesehen. Das Plugin bekommt vom Arduino immer nur das letzte dekodierte Datenpaket und muß nicht warten, bis der Solarregler von alleine sendet. Vorher hatte das Plugin einen Timeout von 3sec und meistens lief es über 1sec. Jetzt ist der Timeout 0,3sec und es braucht nur noch knapp 90msec (30msec für das Empfangen der Antwort vom Arduino und nochmal 60sec zum Auswerten und Senden auf den KNX-Bus).
        Mit $debug=1: (das grüne ist die Antwort vom Arduino)
        Code:
        2016-01-31 14:04:27.869,Resol_Arduino,Serielle Schnittstelle erfolgreich geöffnet: '/dev/usbserial-1-4.5'
        2016-01-31 14:04:27.880,Resol_Arduino,'Return' received
        2016-01-31 14:04:27.880,Resol_Arduino,[COLOR=#FF0000]Time needed: 0.027031[/COLOR]
        2016-01-31 14:04:27.880,Resol_Arduino,Answer:[COLOR=#008000] 'KOL:18.00    TSP:19.60    ZUL:23.10    RUE:888.80    PDZ:0    PBS:7850    ERR:0    SKL:0    STS:0    SZU:0    SRU:0    STA:0    AGE:899400'[/COLOR]
        2016-01-31 14:04:27.881,Resol_Arduino,Temperatur Kollektor: 18.00°C
        2016-01-31 14:04:27.889,Resol_Arduino,Temperatur Speicher: 19.60°C
        2016-01-31 14:04:27.894,Resol_Arduino,Temperatur Vorlauf: 23.10°C
        2016-01-31 14:04:27.898,Resol_Arduino,Temperatur Sensor 4: 888.80°C
        2016-01-31 14:04:27.903,Resol_Arduino,Drehzahl Pumpe: 0%
        2016-01-31 14:04:27.908,Resol_Arduino,Betriebsstunden Pumpe: 7850h
        2016-01-31 14:04:27.913,Resol_Arduino,ErrorMask: 0
        2016-01-31 14:04:27.914,Resol_Arduino,Sensor Kollektor defekt: 0
        2016-01-31 14:04:27.919,Resol_Arduino,Sensor Speicher defekt: 0
        2016-01-31 14:04:27.926,Resol_Arduino,Sensor Zufluß defekt: 0
        2016-01-31 14:04:27.931,Resol_Arduino,Sensor 4 defekt: 0
        2016-01-31 14:04:27.938,Resol_Arduino,Statusmask: 0
        2016-01-31 14:04:27.938,Resol_Arduino,Alter: 899400µs
        2016-01-31 14:04:27.938,Resol_Arduino,[COLOR=#FF0000]Time needed: 0.08568[/COLOR]
        2016-01-31 14:04:27.945,Resol_Arduino,1,0s,
        Dadurch, daß der Arduino die komplette Steuerung übernimmt, reduziert sich die Komplexität des Plugins und die Last auf dem Wiregate. Es mögen nur Sekundenbruchteile sein, aber in komplexen Szenarien kann sich der Gewinn summieren.

        Durch die serielle Schnittstelle und das Textprotokoll, kann auch jedes andere System oder Programmiersprache genutzt werden.
        Das Interpretieren des Textes in einer anderen Skriptsprache ist einfacher, als das binäre Protokoll zu implementieren.

        Der größte Vorteil für mich ist aber, daß es, im Gegensatz zum bisherigen Plugin, auch zusammen mit einer CCEase funktioniert. Als bei uns neulich Bitumenbahnen in der Nähe der Zuluftöffnung angebracht wurden (mit Brenner), war es einfacher schnell an der CCEase auf Abwesend zu stellen, als erst eine Visu zu öffnen.

        Damit möchte ich das bisherige Plugin natürlich nicht schlecht machen. Ich habe es selber lange eingesetzt. Eben bis zu dem Zeitpunkt, als ich mit dem Arduinoprojekt begonnen habe. Deswegen gibt es seit Monaten keine ComfoAir mehr am Bus :-)

        Bis jetzt sind es schon über 1300 Zeilen Code und wie man oben am "NoData" sieht, sind noch nicht alle Datenpakete ausgewertet.
        Da eine CCEase angeschlossen ist, habe ich mich auf die Programmierung dieser Kombination konzentriert. Da die CCEase viele Daten selbstständig abruft, brauche ich "nur" zu Lauschen und nicht selber Abzufragen. Wenn keine CCEase genutzt wird, müßte ich mehr programmieren, damit die gleichen Daten zur Verfügung stehen.

        Gibt es jemanden, der KEINE CCEase, aber Interesse an der Arduino-Steuerung hat?

        Ansonsten würde ich mir die Mühe sparen, diesen Sonderfall (jetzt schon?) zu programmieren, denn ich brauche es nicht.


        Gruß, Carsten

        Kommentar


          Zitat von Northman Beitrag anzeigen
          Gibt es jemanden, der KEINE CCEase, aber Interesse an der Arduino-Steuerung hat?
          Ansonsten würde ich mir die Mühe sparen, diesen Sonderfall (jetzt schon?) zu programmieren, denn ich brauche es nicht.
          Also soweit ich informiert bin müsste standardmäßig eine CCEase Bedieneinheit mitgelierfert werden, da diese ja auch die Grundlage für den Servicetechniker von Zehnder ist um die Anlage einzustellen (war zumindest in der Vergangenheit so). Ich sehe deshalb vorerst keinen Bedarf an einer Software die ohne CCEase auskommt.
          Gruß -mfd-
          KNX-UF-IconSet since 2011

          Kommentar


            Es kann natürlich sein, daß die CCEase die Grundausstattung ist. In der Bedienungsanleitung habe ich auf die Schnelle nichts dazu gefunden.
            Das würde mein Projekt natürlich viel einfacher machen. Zumal ich persönlich keinen Nutzen von der Erweiterung hätte ;-)
            Und da niemand meine Frage mit ja beantwortet hat...
            Gruß, Carsten

            Kommentar


              Hat sich jemand schon die Mühe gemacht die entstehenden Warnings im Plugin Log des Wiregate (ab v1.26) zu bändigen?
              Bisher sieht das bei mir bei jedem Aufruf etwas unschön aus:
              Code:
               
               2016-02-23 10:10:55.875,ComfoAir_v1.6.9b,Warning: Subroutine command_senden redefined at (eval 7911) line 338. 2016-02-23 10:10:55.884,ComfoAir_v1.6.9b,Warning: Subroutine checksum_berechnen redefined at (eval 7911) line 587. 2016-02-23 10:10:55.896,ComfoAir_v1.6.9b,Warning: Subroutine readConf redefined at (eval 7911) line 625. 2016-02-23 10:10:56.020,ComfoAir_v1.6.9b,Warning: Subroutine command_senden redefined at (eval 7913) line 338. 2016-02-23 10:10:56.036,ComfoAir_v1.6.9b,Warning: Subroutine checksum_berechnen redefined at (eval 7913) line 587. 2016-02-23 10:10:56.041,ComfoAir_v1.6.9b,Warning: Subroutine readConf redefined at (eval 7913) line 625. 2016-02-23 10:10:56.135,ComfoAir_v1.6.9b,Warning: Subroutine command_senden redefined at (eval 7915) line 338. 2016-02-23 10:10:56.154,ComfoAir_v1.6.9b,Warning: Subroutine checksum_berechnen redefined at (eval 7915) line 587. 2016-02-23 10:10:56.157,ComfoAir_v1.6.9b,Warning: Subroutine readConf redefined at (eval 7915) line 625. 2016-02-23 10:10:56.239,ComfoAir_v1.6.9b,Warning: Subroutine command_senden redefined at (eval 7917) line 338. 2016-02-23 10:10:56.249,ComfoAir_v1.6.9b,Warning: Subroutine checksum_berechnen redefined at (eval 7917) line 587. 2016-02-23 10:10:56.252,ComfoAir_v1.6.9b,Warning: Subroutine readConf redefined at (eval 7917) line 625. 2016-02-23 10:10:56.333,ComfoAir_v1.6.9b,Warning: Subroutine command_senden redefined at (eval 7919) line 338. 2016-02-23 10:10:56.343,ComfoAir_v1.6.9b,Warning: Subroutine checksum_berechnen redefined at (eval 7919) line 587. 2016-02-23 10:10:56.346,ComfoAir_v1.6.9b,Warning: Subroutine readConf redefined at (eval 7919) line 625. 2016-02-23 10:10:56.427,ComfoAir_v1.6.9b,Warning: Subroutine command_senden redefined at (eval 7921) line 338. 2016-02-23 10:10:56.437,ComfoAir_v1.6.9b,Warning: Subroutine checksum_berechnen redefined at (eval 7921) line 587. 2016-02-23 10:10:56.440,ComfoAir_v1.6.9b,Warning: Subroutine readConf redefined at (eval 7921) line 625. 2016-02-23 10:10:56.520,ComfoAir_v1.6.9b,Warning: Subroutine command_senden redefined at (eval 7923) line 338. 2016-02-23 10:10:56.530,ComfoAir_v1.6.9b,Warning: Subroutine checksum_berechnen redefined at (eval 7923) line 587. 2016-02-23 10:10:56.533,ComfoAir_v1.6.9b,Warning: Subroutine readConf redefined at (eval 7923) line 625. 2016-02-23 10:10:56.614,ComfoAir_v1.6.9b,Warning: Subroutine command_senden redefined at (eval 7925) line 338. 2016-02-23 10:10:56.624,ComfoAir_v1.6.9b,Warning: Subroutine checksum_berechnen redefined at (eval 7925) line 587. 2016-02-23 10:10:56.627,ComfoAir_v1.6.9b,Warning: Subroutine readConf redefined at (eval 7925) line 625. 2016-02-23 10:10:56.711,ComfoAir_v1.6.9b,Warning: Subroutine command_senden redefined at (eval 7927) line 338. 2016-02-23 10:10:56.722,ComfoAir_v1.6.9b,Warning: Subroutine checksum_berechnen redefined at (eval 7927) line 587. 2016-02-23 10:10:56.725,ComfoAir_v1.6.9b,Warning: Subroutine readConf redefined at (eval 7927) line 625. 2016-02-23 10:13:26.290,ComfoAir_v1.6.9b,Warning: Subroutine command_senden redefined at (eval 7936) line 338. 2016-02-23 10:13:26.300,ComfoAir_v1.6.9b,Warning: Subroutine checksum_berechnen redefined at (eval 7936) line 587. 2016-02-23 10:13:26.304,ComfoAir_v1.6.9b,Warning: Subroutine readConf redefined at (eval 7936) line 625. 2016-02-23 10:15:56.544,ComfoAir_v1.6.9b,Warning: Subroutine command_senden redefined at (eval 7940) line 338. 2016-02-23 10:15:56.554,ComfoAir_v1.6.9b,Warning: Subroutine checksum_berechnen redefined at (eval 7940) line 587. 2016-02-23 10:15:56.558,ComfoAir_v1.6.9b,Warning: Subroutine readConf redefined at (eval 7940) line 625.
              Gruß -mfd-
              KNX-UF-IconSet since 2011

              Kommentar


                dieses Warning
                Code:
                 Warning: Argument "" isn't numeric in numeric eq (==) at (eval 5326) line 555, <CONF> line 152281.
                konnte ich schon mal beheben mit
                Code:
                               if($fehlerAhi [B]eq[/B] 16){$fehlerAhi = 0;}
                bei den subs scheint das komplexer zu sein...
                Gruß -mfd-
                KNX-UF-IconSet since 2011

                Kommentar


                  Northman gibt es schon Neuigkeiten zu deinem Projekt mit der Arduino-Anbindung?
                  Gruß -mfd-
                  KNX-UF-IconSet since 2011

                  Kommentar


                    Hallo Northman

                    Ich habe quasi die gleiche Frage wie mfd

                    Zitat von Northman Beitrag anzeigen
                    Ich benutze einen Arduino Due, da dieser vier echte UARTs besitzt. Der UART0 geht standardmäßig auf die USB-Schnittstelle des Arduinos, welche sich an einem PC als COM-Port meldet. UART1 und 2 sind für CA350 und CCEase.

                    [...]

                    Gibt es jemanden, der KEINE CCEase, aber Interesse an der Arduino-Steuerung hat?
                    Ich finde es einen interessanten Ansatz einen Aduino zwischen CA350 und die Ease zu setzen. Dazu habe ich noch ein paar Fragen: Welche Hardware verwendest du genau? Der Due verträgt ja nur 3,3V an seinen Ports, sodass du ja irgendeinen MAX3232 oder ähnliches zwischen den beiden Zehnder-Geräten und deinem Arduino verwenden musst, richtig?
                    Und welchen RS232 Anschluss der CA350 verwendest du?

                    Zu deiner Frage: Ich habe keine Ease, sondern eine ComfoSense (https://produkte.zehnder-systems.de/...der-comfosense) und habe Interesse an einer Anbindung der CA350 an einen Arduino. Wärst du bereit deinen Arduino-Code zu teilen?

                    Ich hatte hier noch Arduino Mega2560 mit Ethernet-Shield liegen und eine Platine mit einem MAX3232 und habe auch gerade eine Entwicklung begonnen. Mein Vorbild und Ideengeber ist das BSB-LAN Projekt. (https://1coderookie.github.io/BSB-LPB-LAN/index.html) Mein Ziel ist also die KWL ans LAN zu bringen. Aber ob ich es schaffe, genau wie bei BSB-LAN, eine Bedienung mit Visu als Webseite und eine http-API und MQTT und JSON und ... umzusetzen bleibt abzuwarten. Aktuell stehe ich noch ganz am Anfang. Bisher habe ich nur das reine "Protokoll" der KWL implementiert und kann Telegramme und ACKs sauber empfangen und auf SD mitschreiben. Mein nächster Schritt wäre jetzt die Daten der Telegramme auszuwerten...

                    Ich bin für jede Hilfe und jeden Tipp dankbar.

                    LG Parsley

                    Kommentar

                    Lädt...
                    X