Vissmann ESPHome Optolink

Hallo, bei mir hat es auf Anhieb funktioniert. Frage: Kann mal den Betriebszustand auch umschalten?
---- wer lesen kann ist klar im Vorteil. Läuft jetzt. ----

Ich habe einige Hex Adressen gesammelt aber noch viele Lücken.
Hast du eine komplette Liste und kannst diese zur Verfügung stellen?

Super!

ich habe das so gelöst:

select:
  - platform: optolink
    name: Betriebsart
    address: 0x2323
    bytes: 1
    map:
      - "0 -> AUS"
      - "1 -> nur Warmwasser"
      - "2 -> Heizung und Warmwasser"
      - "3 -> dauernd reduziert"
      - "4 -> dauernd normal"

ich habe einige, allerdings für eine Pelletheizung.
Muss aber noch eine Liste erstellen.

Ich hab eine Pelletheizung Vitoligno 300 P mit einer Vitotronic FO1.
Interessant für mich wäre auch ob er anheizt/heizt oder im Ruhezustand ist und Störungen angezeigt bekommen.
Den Grundaufbau habe ich, mir fehlen nur noch die richtigen Register.

Ich habe auch eine Vitoligno 300 P und habe folgende Adressen getestet:

die gelben habe ich noch nicht getestet.
Ich suche noch die Adresse an der die Störungsnummer ausgegeben wird.
Hast du diese oder noch weitere Adressen, die nicht auf dieser Liste stehen?

Ob der Kessel heizt oder im Ruhezustand ist, habe ich von der Kesselleistung abgeleitet und durch einen Helfer selber erstellt.

Danke Algie, genau so habe ich das auch gemacht. Deine Darstellung gefällt mir sehr gut, kannst Du bitte das file veröffentlichen? Bin absolut neu auf dem Gebiet.

Ich habe nur noch diese mehr:

Sensor:
## Gebläsedrehzahl Soll
  - platform: vitoconnect
    name: "Gebläsedrehzahl Soll"
    address: 0x0B1C
    length: 2
    unit_of_measurement: "rpm"
    accuracy_decimals: 0

## Gebläsedrehzahl Ist
  - platform: vitoconnect
    name: "Gebläsedrehzahl Ist"
    address: 0x0B1E
    length: 2
    unit_of_measurement: "rpm"
    accuracy_decimals: 0

wäre super wenn du sie Sensoren aus deiner yaml posten könnest, das würde mir viel arbeit ersparen. :smiley:

Edit: Ah seh grad hast du auch!

Das sind die normalen Kacheln.

Hier die Yaml:

type: grid
cards:
  - type: heading
    heading: Steuerelemente
    heading_style: title
  - features:
      - type: select-options
    type: tile
    features_position: bottom
    vertical: false
    entity: select.esphome_web_8f73b6_betriebsart
    name: Betriebsart
    hide_state: true
    grid_options:
      columns: full
  - features:
      - type: numeric-input
        style: buttons
    type: tile
    features_position: bottom
    vertical: false
    entity: number.esphome_web_8f73b6_heizkurve_niveau
    hide_state: true
    name: Niveau
  - features:
      - style: buttons
        type: numeric-input
    type: tile
    features_position: bottom
    vertical: false
    hide_state: true
    name: Neigung
    entity: number.esphome_web_8f73b6_heizkurve_neigung
  - features:
      - type: numeric-input
        style: buttons
    type: tile
    features_position: bottom
    vertical: false
    hide_state: true
    name: Nachtabsenkung
    entity: number.esphome_web_8f73b6_reduzierte_temperatur
  - features:
      - type: numeric-input
        style: buttons
    type: tile
    features_position: bottom
    vertical: false
    hide_state: true
    name: Normaltemperatur
    entity: number.esphome_web_8f73b6_normaltemperatur

Meine die yaml von deinem ESPHome Gerät.

Vermute deine geschickte yaml ist von der Home Assistant configuration yaml?

Sieht toll aus, ich muss noch viel lernen. Danke für die Anregung.

Ich habe noch folgende Adressen getestet:

Warmwasser Solltemperatur: 0x6300

Brennerstatus: 0x0962 (Brenner Ein/Aus)

Ich bleibe dran und suche/teste auch die nächsten Wochen weiter Adressen.

Habt ihr auch das Problem beim flashen

WARNING Using `sensor.SENSOR_SCHEMA` is deprecated and will be removed in ESPHome 2025.11.0. Please use `sensor.sensor_schema(...)` instead. If you are seeing this, report an issue to the external_component author and ask them to update it. https://developers.esphome.io/blog/2025/05/14/_schema-deprecations/. Component using this schema: vitoconnect

Ich habe diese Meldung auch. Wurde auch schon bei GitHub gemeldet.

Muss wohl der Entwickler von “Vitoconnect” beheben.

Weil ohne dieses Update wird das ganze Projekt unbrauchbar. Man kann das auch selbst ändern, aber das ist aufwendig und man muss wissen wie und was man tut.

Hab es jetzt selbst geändert. Für alle die es interessiert. Ihr müsst in eurer vitoconnect.yaml diese Github Adresse einfügen:

external_components:
  - source:
      type: git
      url: https://github.com/Cupra85/esphome_vitoconnect
      ref: master
    refresh: 0s

Habe in meiner Repo die maximale Sensorzahl von 20 auf 40 Sensoren erhöht. Außerdem hab ich noch einige Adressen. Hier eine die einige interessieren könnte!

sensor:
   # Rohwert digitale Ausgänge 2 [Roh]
  - platform: vitoconnect
    id: digitale_ausgaenge2_roh
    name: "zzz Digitale Ausgänge 2 (Roh)"
    address: 0x0B26
    length: 1
    internal: true

binary_sensor:
  # Bit 0: Eintragmotor
  - platform: template
    name: "Eintragmotor aktiv"
    lambda: |-
      uint8_t val = (uint8_t)id(digitale_ausgaenge2_roh).state;
      return (val & 0x01) != 0;
    device_class: power
    internal: false

 # Bit 1: Austragmotor Schneckenförderer
  - platform: template
    name: "Schneckenförderer aktiv"
    lambda: |-
      uint8_t val = (uint8_t)id(digitale_ausgaenge2_roh).state;
      return (val & 0x02) != 0;
    device_class: power
    internal: true

 # Bit 2: Austragmotor Saugsystem
  - platform: template
    name: "Saugsystem aktiv"
    lambda: |-
      uint8_t val = (uint8_t)id(digitale_ausgaenge2_roh).state;
      return (val & 0x04) != 0;
    device_class: power
    internal: true

 # Bit 4: Motor flexible Schnecke
  - platform: template
    name: "Flexible Schnecke aktiv"
    lambda: |-
      uint8_t val = (uint8_t)id(digitale_ausgaenge2_roh).state;
      return (val & 0x10) != 0;
    device_class: power
    internal: false

 # Bit 5: Reinigungsmotor Heizflächen
  - platform: template
    name: "Reinigungsmotor aktiv"
    lambda: |-
      uint8_t val = (uint8_t)id(digitale_ausgaenge2_roh).state;
      return (val & 0x20) != 0;
    device_class: power
    internal: false

 # Bit 6: Rostreinigung
  - platform: template
    name: "Rostreinigung aktiv"
    lambda: |-
      uint8_t val = (uint8_t)id(digitale_ausgaenge2_roh).state;
      return (val & 0x40) != 0;
    device_class: power
    internal: false

 # Bit 7: Zündung
  - platform: template
    name: "Zündung aktiv"
    lambda: |-
      uint8_t val = (uint8_t)id(digitale_ausgaenge2_roh).state;
      return (val & 0x80) != 0;
    device_class: power
    internal: false

Mit false oder true könnt ihr euch die entsprechenden Sensoren ein oder ausblenden.

Vielen Dank für das Beispiel. Ich habe mir den letzten Fehler als Text ausgeben lassen:

  - platform: optolink
    name: Fehlerhistorie 1
    address: 0x7507
    bytes: 1
    icon: mdi:note-text-outline
    type: MAP
    filters:
      - map:
        - "0 -> kein Fehler"
        - "15 -> 0F : Wartung durchführen"
        - "16 -> 10 : Kurzschluss Außentemperatur"
        - "24 -> 18 : Unterbrechung Außentemperatursensor"
        - "32 -> 20 : Kurzschluss Vorlauftemperatursensor HK1"
        - "40 -> 28 : Unterbrechung Vorlauftemperatursensor HK1"
        - "48 -> 30 : Kesseltemperatursensor defekt"
        - "56 -> 38 : Kesseltemperatursensor defekt"
        - "57 -> 39 : Flammentemperatursensor defekt"
        - "58 -> 3A : Unterbrechung Lambda-Sonde"
        - "64 -> 40 : "
        - "72 -> 48 : "
        - "80 -> 50 : Kurzschluss Speichertemperatursensor"
        - "88 -> 58 : Unterbrechung Speichertemperatursensor"
        - "96 -> 60 : Kurzschluss Puffertemperatursensor oben"
        - "98 -> 62 : Kurzschluss Puffertemperatursensor unten"
        - "104 -> 68 : Unterbrechung Puffertemperatursensor oben"
        - "106 -> 6A : Unterbrechung Puffertemperatursensor unten"
        - "146 -> 92 : Kurzschluss Kollektortemperatursensor Solar"
        - "147 -> 93 : Kurzschluss Temperatursensor Solar"
        - "148 -> 94 : Kurzschluss Speichertemperatursensor Solar"
        - "154 -> 9A : Unterbrechung Kollektortemperatursensor Solar"
        - "155 -> 9B : Unterbrechung Temperatursensor Solar"
        - "156 -> 9C : Unterbrechung Speichertemperatursensor Solar"
        - "159 -> 9F : Fehler Solarregelung"
        - "167 -> A7 : Bedienteil defekt"
        - "170 -> AA : Konfigurationsfehler"
        - "177 -> B1 : Kommunikationsfehler Bedieneinheit"
        - "180 -> B4 : Interner Elektronikfehler"
        - "181 -> B5 : Interner Elektronikfehler"
        - "182 -> B6 : Falscher Kesselcodierstecker"
        - "183 -> B7 : Kesselcodierstecker fehlt oder defekt"
        - "185 -> B9 : Fehlerhafte Übertragung der Kesselcodierstecker-Daten"
        - "186 -> BA : "
        - "188 -> BC : Kommunikationsfehler Fernbedienung Vitotrol HK1"
        - "189 -> BD : "
        - "191 -> BF : Falsches Kommunikationsmodul LON"
        - "194 -> C2 : Unterbrechung KM-BUS zur Solarregelung"
        - "196 -> C4 : Kommunikationsfehler Funktionserweiterung 0-10V"
        - "205 -> CD : Kommunikationsfehler Vitocom 100"
        - "207 -> CF : Fehler Kommunikationsmodul LON"
        - "212 -> D4 : Sicherheitstemperaturbegrenzer hat ausgelöst (Kesselwasser > 100°C)"
        - "218 -> DA : Kurzschluss Raumtemperatursensor HK1"
        - "219 -> DB : Kurzschluss Raumtemperatursensor HK2"
        - "220 -> DD : Unterbrechung Raumtemperatursensor HK1"
        - "221 -> DE : Unterbrechung Raumtemperatursensor HK2"
        - "224 -> E0 : Fehler am LON-Teilnehmer"
        - "240 -> F0 : keine Verbindung zur Feuerungsregelung"
        - "241 -> F1 : Primärluftklappe defekt"
        - "242 -> F2 : Sekundärluftklappe defekt"
        - "243 -> F3 : Abgasgebläse defekt"
        - "244 -> F4 : Aschetür geöffnet"
        - "245 -> F5 : Pellets nicht gezündet (Flammentemperatur nicht erreicht)"
        - "246 -> F6 : Interner Elektronikfehler"
        - "247 -> F7 : Sicherheitskette unterbrochen"
        - "249 -> F9 : Rostreinigung defekt. Rost geht nicht in Ausgangsposition zurück durch eingeklemmte Pellet"
        - "250 -> FA : Reinigungsmotor Nachheizschaltfläche defekt"
        - "251 -> FB : Fördertechnik defekt"
        - "252 -> FC : Brennstoffmangel erkannt (Flammentemperatur nicht erreicht)"

Sehr gut, und Fehlerhistorie 2 = 0x7510, 3 = 0x7519, 4 = 0x7522, 5 = 0x752B, 6 = 0x7534, 7 = 0x753D, 8 = 0x7546, 9 = 0x754F, 10 = 0x7558 nach gleichem Schema.

Der Prozessstatus auf 0x0B11

sensor:
  ### Prozessstatus [Roh]
  - platform: vitoconnect
    id: prozessstatus_roh
    name: "Prozessstatus (Roh)"
    address: 0x0B11
    length: 1
    unit_of_measurement: ""
    accuracy_decimals: 0
    filters: 
      - multiply: 1
    internal: true

text_sensor:
  ### Prozessstatus
  - platform: template
    name: "Prozessstatus"
    lambda: |-
      int val = (int)id(prozessstatus_roh).state;

      if (val == 0) {
        return std::string("Ruhezustand");
      } else if (val == 1) {
        return std::string("Anheizen");
      } else if (val == 2) {
        return std::string("Regelbetrieb");
      } else if (val == 3) {
        return std::string("Roh 3");
      } else if (val == 4) {
        return std::string("Ausbrandphase");
      } else if (val == 5) {
        return std::string("Roh 5");
      } else if (val == 6) {
        return std::string("Roh 6");
      } else {
        char buf[20];
        snprintf(buf, sizeof(buf), "Code %d", val);
        return std::string(buf);
      }
    icon: "mdi:state-machine"
    update_interval: 2s

Das hilft mir weiter. Vielen Dank!

Hast du die Adressen für die Eingänge 1+2 herausgefunden?

Update:

ich habe die Adressen gefunden:

Eingangsbyte 1: 0x0B23

Eingangsbyte 2: 0x0B24

Ausgangsbyte 1: 0x0B26

Ausgangsbyte 2: 0x0B25

:crayon:by HarryP: Zusammenführung Doppelpost (bei Änderungen oder hinzufügen von Inhalten bitte die „Bearbeitungsfunktion“ anstatt „Antworten“ zu nutzen)