openv / openv

:fire: OpenV Wiki
https://github.com/openv/openv/wiki
250 stars 28 forks source link

Viessmann Adapter - 20CB #529

Open pkrick opened 2 years ago

pkrick commented 2 years ago

Hallo,

ich hoffe ihr könnt mir weiterhelfen. Ich habe den Viessmann Adapter in der Version 1.3.4 installiert. Soweit kann ich auch alle Werte, die für mich relevant sind, aus meiner Anlage (Vitocrossal 300 mit Vitotronic 200 KW6B) auslesen und setzen.

Allerdings beim Betriebsstatus immer die gleiche Rückmeldung, egal ob die Anlage im "Normalbetrieb" oder im "Reduzierten Betrieb" ist.

Hier der Auszug aus meiner Vito.xml und der vcontrold.xml

Vito.xml (Auszug):

<devices>
        <device ID="20CB" name="VitoO1" protocol="P300" />
    </devices>

    <commands>

        <!--  Betriebsprogramm & Betriebsstatus -->

        <command name='getVitoBetriebsstatusHK' protocmd='getaddr'>
            <addr>3500</addr>
            <len>1</len>
            <unit>ABA</unit>
            <description>Betriebsstatus des Heizkreises - TEST</description>
        </command>
        <command name='setVitoBetriebsstatusHK' protocmd='setaddr'>
            <addr>3301</addr>
            <len>1</len>
            <unit>ABA</unit>
            <description>Setze Betriebsstatus des Heizkreises</description>
        </command>
        <command name='getVitoBetriebsprogramm' protocmd='getaddr'>
            <addr>3323</addr>
            <len>1</len>
            <unit>BA</unit>
            <description>Betriebsprogramm</description>
        </command>
        <command name='setVitoBetriebsprogramm' protocmd='setaddr'>
            <addr>3323</addr>
            <len>1</len>
            <unit>BA</unit>
            <description>Setze Betriebsprogramm</description>
        </command>

vcontrold.xml (Auszug):

<unit name='Aktuelle Betriebsart'>
            <abbrev>ABA</abbrev>
            <type>enum</type>
            <enum bytes='00' text='Abschaltbetr. (Dauernd)'/>
            <enum bytes='01' text='Red. Betrieb (Schaltuhr)'/>
            <enum bytes='02' text='Normalbetrieb (Schaltuhr)'/>
            <enum bytes='03' text='Normalbetrieb (Dauernd)'/>
            <enum text='?'/>
        </unit>
        <unit name='Betriebsprogramm'>
            <abbrev>BA</abbrev>
            <type>enum</type>
            <enum bytes='00' text='Abschaltbetrieb'/>
            <enum bytes='01' text='Nur Warmwasser'/>
            <enum bytes='02' text='Heizen und Warmwasser'/>
            <enum text='?'/>
        </unit>

Das Log gibt folgendes aus, egal welcher Status anliegt:

[3625] Thu Dec 30 21:07:45 2021 : Befehl: getVitoBetriebsstatusHK [3625] Thu Dec 30 21:07:45 2021 : >SEND: 41 [3625] Thu Dec 30 21:07:45 2021 : >SEND: 05 [3625] Thu Dec 30 21:07:45 2021 : >SEND: 00 [3625] Thu Dec 30 21:07:45 2021 : >SEND: 01 [3625] Thu Dec 30 21:07:45 2021 : >SEND: 35 [3625] Thu Dec 30 21:07:45 2021 : >SEND: 00 [3625] Thu Dec 30 21:07:45 2021 : >SEND: 01 [3625] Thu Dec 30 21:07:45 2021 : >SEND: 3C [3625] Thu Dec 30 21:07:45 2021 : <RECV: len=1 06 (30.0 ms) [3625] Thu Dec 30 21:07:45 2021 : <RECV: received 06 [3625] Thu Dec 30 21:07:45 2021 : [3625] Thu Dec 30 21:07:45 2021 : >FRAMER: Command send [3625] Thu Dec 30 21:07:45 2021 : >FRAMER: no preset result [3625] Thu Dec 30 21:07:45 2021 : <RECV: len=1 41 (0.0 ms) [3625] Thu Dec 30 21:07:45 2021 : <RECV: received 41 [3625] Thu Dec 30 21:07:45 2021 : <RECV: len=1 06 (10.0 ms) [3625] Thu Dec 30 21:07:45 2021 : <RECV: received 06 [3625] Thu Dec 30 21:07:45 2021 : <RECV: len=1 01 (0.0 ms) [3625] Thu Dec 30 21:07:45 2021 : <RECV: len=1 01 (0.0 ms) [3625] Thu Dec 30 21:07:45 2021 : <RECV: len=1 35 (0.0 ms) [3625] Thu Dec 30 21:07:45 2021 : <RECV: len=1 00 (10.0 ms) [3625] Thu Dec 30 21:07:45 2021 : <RECV: len=1 01 (0.0 ms) [3625] Thu Dec 30 21:07:45 2021 : <RECV: len=1 02 (0.0 ms) [3625] Thu Dec 30 21:07:45 2021 : <RECV: len=1 40 (0.0 ms) [3625] Thu Dec 30 21:07:45 2021 : <RECV: received 01 01 35 00 01 02 40 [3625] Thu Dec 30 21:07:45 2021 : 02 -> Normalbetrieb (Schaltuhr) [3625] Thu Dec 30 21:07:45 2021 : Normalbetrieb (Schaltuhr)

Auch habe ich schon die Adresse: 3301 ohne erfolg ausprobiert.

Ich freue mich auf eine Rückmeldung. Herzlichen Dank

schmaller commented 2 years ago

Hallo @pkrick , lange keine Reaktion hier ... deshalb traue ich mich als noch openv-Laie jetzt eine (vielleicht dumme) Rückfrage zu stellen.

Bei allen Defintionen, die ich durchgesehen habe, steckt hinter der Adresse 3500 "getStatusFrostM2". getaddr und setaddr dürften für den gleichen Statuswert m.E. auch keine unterschiedlichen Adressen definieren (3500 vs. 3301). Du schreibst, Du hättest auch die Adresse 3301 schon ausprobiert. Ist das dann vielleicht einfach der falsche Heizkreis und die 2301 wäre die korrekte Adresse? Viele Grüße