• Du musst dich registrieren, bevor du Beiträge verfassen kannst. Klicke auf Jetzt registrieren!, um den Registrierungsprozess zu starten. Registrierte User surfen werbefrei, können Suchen durchführen und sehen die volle Darstellung des Forums mit vielen anderen Unterforen!!!

Otto Wilde G32 | Smarthome

Es war nun wirklich eine harte Nuss den G32 in Home Assistant zu integrieren.

Das Kernproblem war die WLAN Verbindung. Die habe ich bis vor einigen Tagen nie realisieren können. Ich habe dann diese Woche alles ausprobiert. Den Grill direkt in Richtung Fritzbox ausgerichtet, das 5Ghz Band der Fritzbox abgeschaltet, ein Firmware Update installiert und unzählige Male versucht den Grill neu einzurichten. Die Bluetooth Verbindung war hingegen nie ein Problem. Am Ende war die Lösung trivial. Ich habe einfach die OW App gelöscht und neu installiert. Danach konnte ich die WLAN Verbindung sofort und problemlos einrichten.

Das nächste Problem war die HA G32 Installation. Diese läuft aber heute auf einmal problemlos. Vermutlich habe zahlreiche Neustart zur Lösung geführt.

Die Home Assistant Visualisierung im OW Style scheint auch vollständig zu funktionieren.

Wenn der Grill nicht in Betrieb ist liefert die Integration, aber auf allen Entitäten "unknown" Werte. Das sieht nicht nur unschön aus, sondern sorgt bei den Charts auch für Probleme. Die komplette Lösung poste ich hier nun in einzelnen Schritten, damit auch Anfänger diese leicht nachbauen können.

Zur Info: Mein Grill hat den Namen Rheinfire. Der Name kann natürlich beliebig geändert werden, dann aber an allen Stellen im Code.

Viel Spaß mit der Visualisierung und vielen Dank an Chris für die G32 Integration.

Viele Grüße
Michael
Vielen Dank für das Feedback!
Ja, es gibt einige Stolpersteine, angefangen von der Wifi Verbindung (nur 2,4GHz Netze, es darf kein 5GHz Netz mit gleicher SSID aktiv sein) bis zur HACS Integration. Die scheint zwar bei vielen auf Anhieb problemlos zu funktionieren, manchmal hakt es aber irgendwo. Das liegt aber bisher nicht an der Integration selbst, sondern an 'Nebenbedingungen'. Habe gerade selber drei Stunden lang einen Fehler gesucht. Am Ende war der G32 durch einen versehentlichen Druck auf das Touchfeld am G32 auf Bluetooth eingestellt.

Werte 'unknown' wenn der Grill ausgeschaltet ist. Ja, das ist aber doch absolut richtig! Ich habe im Dashboard eine Condition, dass es nur angezeigt wird wenn einer der Werte, z.B. der Temperaturwert Zone 1 nicht 'unknown' ist. Geht ja in HA extrem einfach.

Es wäre natürlich sehr schön, wenn Du dafür eine fertige Lösung anbieten würdest, man muss ja nicht das Rad immer wieder neu erfinden.

Beste Grüße, Jörg.

PS: hat sich überschnitten ...
 
Auf die Legenden der Charts habe ich aus optischen Gründen verzichtet.
Die Farbgebung der Chart Linien sind: rot, grau, rot, grau (für 1, 2, 3 und 4).

In den wenigsten Fällen dürften alle Brenner voll aufgedreht sein, so dass auch bei gleicher Farbe zwischen Zone/Probe 1 und 3 (beide rot), sowie 2 und 4 (beide grau) aufgrund der unterschiedlichen Temperaturen unterschieden werden kann.

Das Chart ist auf 6h Darstellung eingestellt, so dass auch Long Jobs gut darstellbar sind.
Bei kurzen Grill Events spielt das Chart ja ohnehin keine wirkliche Rolle.

Die Gasflasche muß ich heute noch neu einwiegen. Daher sind dort noch keine Werte erkennbar.
Die Füllmengen-Anzeige hat eine dynamische Farbgebung (volle Flasche = grün, Flasche < 5% = dunkelrot).
 
So sieht es nun mit eingemessener Gasflasche aus. Die Integration scheint aber Tara und Füllgewicht nicht mehr bereitzustellen, so dass ich die Visualisierung noch etwas ändern muß. Eigentlich kann man dann auch die ganze Zeile entfernen, weil neben dem Gasstand in Prozent nicht auch noch zusätzlich das Ist-Gewicht benötigt wird.

1757155655292.png
 
und das ist der Dashboard Code dazu:


Code:
type: custom:stack-in-card
mode: vertical
cards:
  - type: heading
    icon: mdi:gas-burner
    heading: Otto Wilde G32 Connected
    heading_style: title
    card_mod:
      style: |
        ha-card > div {
          padding-left: 12px !important;   /* Icon + Text nach rechts */
        }
  - type: custom:stack-in-card
    mode: horizontal
    cards:
      - type: custom:flex-horseshoe-card
        card_mod:
          style: |
            ha-card {
              left: 0%;
              width: 100%;
            }
        entities:
          - entity: sensor.rheinfire_zone_1_safe
            decimals: 0
            icon: mdi:temperature-celsius
            name: Zone 1
            area: Grillrost
        show:
          scale_tickmarks: true
          horseshoe_style: lineargradient
        layout:
          states:
            - id: 0
              entity_index: 0
              xpos: 50
              ypos: 40
              styles:
                - font-size: 3.5em;
          names:
            - id: 0
              entity_index: 0
              xpos: 50
              ypos: 58
              styles:
                - font-size: 2em;
          areas:
            - id: 0
              entity_index: 0
              xpos: 50
              ypos: 76
              styles:
                - font-size: 1.5em;
                - opacity: 1;
        horseshoe_state:
          color: "#db4437"
        horseshoe_scale:
          min: 0
          max: 500
          color: "#990000"
          width: 2
        color_stops:
          "0": "#db4437"
          "500": "#db4437"
      - type: custom:flex-horseshoe-card
        card_mod:
          style: |
            ha-card {
              left: 0%;
              width: 100%;
            }
        entities:
          - entity: sensor.rheinfire_zone_2_safe
            decimals: 0
            icon: mdi:temperature-celsius
            name: Zone 2
            area: Grillrost
        show:
          scale_tickmarks: true
          horseshoe_style: lineargradient
        layout:
          states:
            - id: 0
              entity_index: 0
              xpos: 50
              ypos: 40
              styles:
                - font-size: 3.5em;
          names:
            - id: 0
              entity_index: 0
              xpos: 50
              ypos: 58
              styles:
                - font-size: 2em;
          areas:
            - id: 0
              entity_index: 0
              xpos: 50
              ypos: 76
              styles:
                - font-size: 1.5em;
                - opacity: 1;
        horseshoe_state:
          color: "#db4437"
        horseshoe_scale:
          min: 0
          max: 500
          color: "#990000"
          width: 2
        color_stops:
          "0": "#db4437"
          "500": "#db4437"
      - type: custom:flex-horseshoe-card
        card_mod:
          style: |
            ha-card {
              left: 0%;
              width: 100%;
            }
        entities:
          - entity: sensor.rheinfire_zone_3_safe
            decimals: 0
            icon: mdi:temperature-celsius
            name: Zone 3
            area: Grillrost
        show:
          scale_tickmarks: true
          horseshoe_style: lineargradient
        layout:
          states:
            - id: 0
              entity_index: 0
              xpos: 50
              ypos: 40
              styles:
                - font-size: 3.5em;
          names:
            - id: 0
              entity_index: 0
              xpos: 50
              ypos: 58
              styles:
                - font-size: 2em;
          areas:
            - id: 0
              entity_index: 0
              xpos: 50
              ypos: 76
              styles:
                - font-size: 1.5em;
                - opacity: 1;
        horseshoe_state:
          color: "#db4437"
        horseshoe_scale:
          min: 0
          max: 500
          color: "#990000"
          width: 2
        color_stops:
          "0": "#db4437"
          "500": "#db4437"
      - type: custom:flex-horseshoe-card
        card_mod:
          style: |
            ha-card {
              left: 0%;
              width: 100%;
            }
        entities:
          - entity: sensor.rheinfire_zone_4_safe
            decimals: 0
            icon: mdi:temperature-celsius
            name: Zone 4
            area: Grillrost
        show:
          scale_tickmarks: true
          horseshoe_style: lineargradient
        layout:
          states:
            - id: 0
              entity_index: 0
              xpos: 50
              ypos: 40
              styles:
                - font-size: 3.5em;
          names:
            - id: 0
              entity_index: 0
              xpos: 50
              ypos: 58
              styles:
                - font-size: 2em;
          areas:
            - id: 0
              entity_index: 0
              xpos: 50
              ypos: 76
              styles:
                - font-size: 1.5em;
                - opacity: 1;
        horseshoe_state:
          color: "#db4437"
        horseshoe_scale:
          min: 0
          max: 500
          color: "#990000"
          width: 2
        color_stops:
          "0": "#db4437"
          "500": "#db4437"
  - type: custom:stack-in-card
    mode: horizontal
    cards:
      - type: custom:mini-graph-card
        entities:
          - entity: sensor.rheinfire_zone_1_safe
            name: Zone 1
            decimals: 1
            show_graph: true
            color: "#990000"
          - entity: sensor.rheinfire_zone_2_safe
            name: Zone 2
            decimals: 1
            show_graph: true
            color: grey
          - entity: sensor.rheinfire_zone_3_safe
            name: Zone 3
            decimals: 1
            show_graph: true
            color: "#990000"
          - entity: sensor.rheinfire_zone_4_safe
            name: Zone 4
            decimals: 1
            show_graph: true
            color: grey
        name: null
        icon: mdi:chart-line
        unit: °C
        height: 80
        hours_to_show: 6
        update_interval: 1
        line_width: 1
        smoothing: 0.7
        curve: monotone
        aggregate_func: avg
        group_by: hour
        show:
          fill: fade
          icon: false
          name: false
          state: false
          labels: false
          legend: false
  - type: custom:stack-in-card
    mode: horizontal
    cards:
      - type: custom:gap-card
        height: 30
  - type: custom:stack-in-card
    mode: horizontal
    cards:
      - type: custom:flex-horseshoe-card
        card_mod:
          style: |
            ha-card {
              left: 0%;
              width: 100%;
            }
        entities:
          - entity: sensor.rheinfire_probe_1_safe
            decimals: 0
            icon: mdi:temperature-celsius
            name: Probe 1
            area: KT-Fühler
        show:
          scale_tickmarks: true
          horseshoe_style: lineargradient
        layout:
          states:
            - id: 0
              entity_index: 0
              xpos: 50
              ypos: 40
              styles:
                - font-size: 3.5em;
          names:
            - id: 0
              entity_index: 0
              xpos: 50
              ypos: 58
              styles:
                - font-size: 2em;
          areas:
            - id: 0
              entity_index: 0
              xpos: 50
              ypos: 76
              styles:
                - font-size: 1.5em;
                - opacity: 1;
        horseshoe_state:
          color: "#db4437"
        horseshoe_scale:
          min: 0
          max: 500
          color: "#990000"
          width: 2
        color_stops:
          "0": "#db4437"
          "500": "#db4437"
      - type: custom:flex-horseshoe-card
        card_mod:
          style: |
            ha-card {
              left: 0%;
              width: 100%;
            }
        entities:
          - entity: sensor.rheinfire_probe_2_safe
            decimals: 0
            icon: mdi:temperature-celsius
            name: Probe 2
            area: KT-Fühler
        show:
          scale_tickmarks: true
          horseshoe_style: lineargradient
        layout:
          states:
            - id: 0
              entity_index: 0
              xpos: 50
              ypos: 40
              styles:
                - font-size: 3.5em;
          names:
            - id: 0
              entity_index: 0
              xpos: 50
              ypos: 58
              styles:
                - font-size: 2em;
          areas:
            - id: 0
              entity_index: 0
              xpos: 50
              ypos: 76
              styles:
                - font-size: 1.5em;
                - opacity: 1;
        horseshoe_state:
          color: "#db4437"
        horseshoe_scale:
          min: 0
          max: 500
          color: "#990000"
          width: 2
        color_stops:
          "0": "#db4437"
          "500": "#db4437"
      - type: custom:flex-horseshoe-card
        card_mod:
          style: |
            ha-card {
              left: 0%;
              width: 100%;
            }
        entities:
          - entity: sensor.rheinfire_probe_3_safe
            decimals: 0
            icon: mdi:temperature-celsius
            name: Probe 3
            area: KT-Fühler
        show:
          scale_tickmarks: true
          horseshoe_style: lineargradient
        layout:
          states:
            - id: 0
              entity_index: 0
              xpos: 50
              ypos: 40
              styles:
                - font-size: 3.5em;
          names:
            - id: 0
              entity_index: 0
              xpos: 50
              ypos: 58
              styles:
                - font-size: 2em;
          areas:
            - id: 0
              entity_index: 0
              xpos: 50
              ypos: 76
              styles:
                - font-size: 1.5em;
                - opacity: 1;
        horseshoe_state:
          color: "#db4437"
        horseshoe_scale:
          min: 0
          max: 500
          color: "#990000"
          width: 2
        color_stops:
          "0": "#db4437"
          "500": "#db4437"
      - type: custom:flex-horseshoe-card
        card_mod:
          style: |
            ha-card {
              left: 0%;
              width: 100%;
            }
        entities:
          - entity: sensor.rheinfire_probe_4_safe
            decimals: 0
            icon: mdi:temperature-celsius
            name: Probe 4
            area: KT-Fühler
        show:
          scale_tickmarks: true
          horseshoe_style: lineargradient
        layout:
          states:
            - id: 0
              entity_index: 0
              xpos: 50
              ypos: 40
              styles:
                - font-size: 3.5em;
          names:
            - id: 0
              entity_index: 0
              xpos: 50
              ypos: 58
              styles:
                - font-size: 2em;
          areas:
            - id: 0
              entity_index: 0
              xpos: 50
              ypos: 76
              styles:
                - font-size: 1.5em;
                - opacity: 1;
        horseshoe_state:
          color: "#db4437"
        horseshoe_scale:
          min: 0
          max: 500
          color: "#990000"
          width: 2
        color_stops:
          "0": "#db4437"
          "500": "#db4437"
  - type: custom:stack-in-card
    mode: horizontal
    cards:
      - type: custom:mini-graph-card
        entities:
          - entity: sensor.rheinfire_probe_1_safe
            name: Probe 1
            decimals: 1
            show_graph: true
            color: "#990000"
          - entity: sensor.rheinfire_probe_2_safe
            name: Probe 2
            decimals: 1
            show_graph: true
            color: grey
          - entity: sensor.rheinfire_probe_3_safe
            name: Probe 3
            decimals: 1
            show_graph: true
            color: "#990000"
          - entity: sensor.rheinfire_probe_4_safe
            name: Probe 4
            decimals: 1
            show_graph: true
            color: grey
        name: null
        icon: mdi:chart-line
        unit: °C
        height: 80
        hours_to_show: 6
        update_interval: 1
        line_width: 1
        smoothing: 0.7
        curve: monotone
        aggregate_func: avg
        group_by: hour
        show:
          fill: fade
          icon: false
          name: false
          state: false
          labels: false
          legend: false
  - type: custom:stack-in-card
    mode: horizontal
    cards:
      - type: custom:gap-card
        height: 20
  - type: custom:stack-in-card
    mode: horizontal
    cards:
      - type: custom:bar-card
        entities:
          - entity: sensor.rheinfire_gas_level_safe
            icon: mdi:gas-cylinder
            name: Gas-Füllmenge
            min: 0
            max: 100
        height: 20
        severity:
          - color: "#990000"
            from: 0
            to: 4.99
          - color: "#e09c3b"
            from: 5
            to: 24.99
          - color: "#e6e22e"
            from: 25
            to: 49.99
          - color: "#8fb935"
            from: 50
            to: 74.99
          - color: "#77943a"
            from: 75
            to: 100
        positions:
          icon: outside
          indicator: false
          name: outside
          value: inside
        show_value: true
        width: 65%
        card_mod:
          style: |
            :host {
              padding-right: 0px;
              padding-bottom: 0px;
            }
            bar-card-value {
              display: flex !important;
              justify-content: center !important;  /* horizontal zentrieren */
              align-items: center !important;      /* vertikal zentrieren */
              width: 100% !important;              /* ganze Balkenbreite */
              color: white !important;             /* Textfarbe */
              font-weight: bold;
            }
            ha-icon {
              color: grey !important;
              margin-left: -12px;   /* Icon weiter nach links */
            }
  - type: custom:stack-in-card
    mode: horizontal
    cards:
      - type: custom:mushroom-entity-card
        entity: binary_sensor.rheinfire_firebox_safe
        name: Grillhaube
        icon: mdi:treasure-chest
        card_mod:
          style:
            mushroom-shape-icon$: |
              .shape {
                background: none !important;
                box-shadow: none !important;
              }
      - type: custom:mushroom-entity-card
        entity: sensor.rheinfire_light_on_safe
        name: Grillbeleuchtung
        icon: mdi:wall-sconce-flat
        device_class: light
        card_mod:
          style:
            mushroom-shape-icon$: |
              .shape {
                background: none !important;
                box-shadow: none !important;
              }
card_mod:
  style: |
    ha-card {
      --ha-card-border-width: 0px;
    }
    /* Abstand zwischen den inneren Karten reduzieren */
    ha-card {
      --stack-card-gap: 0px;   /* Standard sind ca. 8-12px */
    }
 
So sieht es nun mit eingemessener Gasflasche aus. Die Integration scheint aber Tara und Füllgewicht nicht mehr bereitzustellen, so dass ich die Visualisierung noch etwas ändern muß. Eigentlich kann man dann auch die ganze Zeile entfernen, weil neben dem Gasstand in Prozent nicht auch noch zusätzlich das Ist-Gewicht benötigt wiAnhang anzeigen 3715022
Die Integration liest diese fixen Werte (die sich im Betrieb nicht ändern) wohl nur ein Mal beim Connect aus. Daher könnte es helfen, einmal zu 'disconnecten' und dann wieder die Verbindung wieder herzustellen (über den Switch in HA). Aber klar, die Werte braucht man nicht weiter.
 
Ich habe soeben eine neue V1.3.0 auf Github abgelegt (für beide Versionen BT und HACS).
In dieser Version sind mal wieder Fehler beseitigt (jetzt wirklich die aller-allerletzten! :pfeif:) und ich habe einen Timer eingefügt. Hier können Zeiten bis zu 24 Stunden gesetzt werden. Nach Ablauf des Timers wird ein akustischer Alarm ausgelöst und der Timer (dann 00:00:00) wird rot angezeigt. Zum Setzen des Timers und Löschen des Alarms auf den Timerwert tippen, es öffnet sich eine Seite zum Setzen des Timers. Mit OK wird der angezeigte Timerwert übernomen. Mit CLR wird sowohl der Timer gelöscht als auch ein anstehender Alarm.
Ich bitte um Feedback, ob das Ding in dieser Art brauchbar ist!

Grüße, Jörg Becker.

PS: der Touchscreen wurde auch leicht verbessert und man kann nun die 'aktiven' Bereiche besser treffen. Ich habe die Kalibrierung geändert, hatte die Funktion bisher falsch verstanden!

PPS: Achtung: der Timer funktioniert momentan nur mit Home Assistant, da er die Uhrzeit von HA holt ind damit auch den Takt! Da muss ich mir für diejenigen ohne HA noch etwas überlegen ...
 
Ich habe soeben eine neuen V1.3.0 auf Github abgelegt (für beide Versionen BT und HACS).
In dieser Version sind mal wieder Fehler beseitigt (jetzt wirklich die aller-allerletzten! :pfeif:) und ich habe einen Timer eingefügt. Hier können Zeiten bis zu 24 Stunden gesetzt werden. Nach Ablauf des Timers wird ein akustischer Alarm ausgelöst und der Timer (dann 00:00:00) wird rot angezeigt. Zum Setzen des Timers und Löschen des Alarms auf den Timerwert tippen, es öffnet sich ein Seite zum Setzen des Timers. Mit OK wird der angezeigte Timerwert übernomen. Mit CLR wird sowohl der Timer gelöscht als auch ein anstehender Alarm.
Ich bitte um Feedback, ob das Ding in dieser Art brauchbar ist!

Grüße, Jörg Becker.

PS: der Touchscreen wurde auch leicht verbessert und man kann nun die 'aktiven' Bereich besser treffen. Ich habe die Kalibrierung geändert, hatte die Funktion bisher falsch verstanden!
Bin noch bis Samstag im Urlaub, werde es aber dann direkt ausprobieren 😀
 
Ich will mich hier noch einmal ausdrücklich bei den aktiven Protagonisten hier im Thread bedanken! Einfach genial, was hier für eine Lösung geschaffen wurde, die insgesamt einfach Spaß macht.

@JBecker : das Display funktioniert wunderbar. Ich habe zwar ewig gebraucht, bis es gelaufen ist, das lag aber sicher nicht an deiner genialen Umsetzung, sondern an mir als technischem Volldepp. Super Lösung und extrem hilfreich

@zaubii : astreine Integration in HomeAssistant. Auch hier gilt: super umgesetzt und sogar für mich umzusetzen - Danke!

@s.ochs : Danke für die superschnelle Lieferung der perfekt passenden Gehäuse. So macht es sogar mir Spaß, so ein wenig an einem Do-it-yourself - Projekt zu basteln.

DANKE!

Viele Grüße und schöne Woche

Thomas
 
Habe gestern mal die HA Integration von @zaubii installiert. Funktionierte auf Anhieb einwandfrei! Vielen Dank dafür!!! Habe allerdings 2 kleine Fragen zur Funktionsweise vom Device Tracker. Sollte der nicht automatisch den Schalter auf on/off stellen? Bei mir bleibt er dauerhaft auf "on" - Auch scheinen sich die Temperaturen der Zonen nicht zu resetten, sobald keine Verbindung mehr da ist. Die stehen jetzt dauerhaft bei 300-400°C der letzten Grillsession :D
 
Bei einer Fritzbox ist der Device Tracker wie folgt umzusetzen:

1. dem G32 in der Fritzbox eine fest IP Adresse und einen Wunschnahmen zuordnen (bei mir Otto-Wilde-G32-LAN)

2. AVM FRITZ!Box Tools installieren

3. in den HA Einstellungen unter "Personen" eine Person "Otto Wilde G32" einrichten und dieser unten das Gerät zuordnen (bei mir Otto-Wilde-G32-LAN)

4. in den HA Einstellungen unter "Automation & Szenen" auf "Automation erstellen" und dann "auf neue Automation erstellen" klicken. Danach oben rechts auf die drei Punkte klicken und dann auf "in yaml bearbeiten". Dort dann den folgenden Code hinein kopieren. Nun wird die G32 Integration immer dann gestartet und beendet, wenn der G32 eine WLAN Verbindung aufbaut bzw. abbaut.

Code:
alias: Otto Wilde G32 Connect
description: Otto Wilde G32 Connect ist im Fritzbox WLAN angemeldet
triggers:
  - entity_id: person.otto_wilde_g32
    from: not_home
    to: home
    id: kommt ins WLAN
    trigger: state
  - entity_id: person.otto_wilde_g32
    from: home
    to: not_home
    id: verlässt WLAN
    trigger: state
conditions: []
actions:
  - choose:
      - conditions:
          - condition: trigger
            id: kommt ins WLAN
        sequence:
          - target:
              entity_id: switch.rheinfire_connection_enabled
            action: switch.turn_on
      - conditions:
          - condition: trigger
            id: verlässt WLAN
        sequence:
          - target:
              entity_id: switch.rheinfire_connection_enabled
            action: switch.turn_off
mode: single
 
Ich erweitere heute Abend die Automation noch so, dass sie beim Abschalten der Integration auch die Temperatursensoren auf 0°C setzt. Programmiert habe ich das schon, will das aber noch erst testen.
 
Danke für deine Antwort. Der Grill ist schon als Device Tracker eingerichtet und korrekt hinterlegt. Die Zustände passen auch. Meine Frage bezog sich bewusst auf die im Addon integrierte Variante "Smart Connection Control". Aber klar, mit einer Automatisierung gehts natürlich auch :)
 
Entschuldigung, war unterwegs.
Ja, das meine ich.
Danach kommt nichts mehr? Das ist eigentlich erst der Anfang. Immerhin wird erst einmal Kontakt zum Wifi aufgebaut. Du 'siehst' ja auch den G32 im HA, hast Du geschrieben.
Mir fällt da auch nicht mehr viel zu ein ...
Integrationen (G32 und ESPHome) neu laden, G32 muss mit der OW App via Wifi kommunizieren (aber Du siehst ja die Daten im HA, dann ist das so).
Vielleicht hat jemand anders noch eine Idee?

Grüße, Jörg.
Display läuft wieder. Ich bhabe den Hacs von Zaubii neu installiert, danach lief es wieder.
 
Mit der folgenden Anpassung in der template.yaml werden die Temperatursensoren bei Abschaltung auf 0 Grad gesetzt.


Code:
# Otto Wilde G32 Sensoren - Zustand "unknown" abfangen und Sensoren bei Abschaltung auf 0 setzen
  - name: "Rheinfire Zone 1 Safe"
    unique_id: rheinfire_zone_1_safe
    unit_of_measurement: "°C"
    state: >
      {% set v = states('sensor.rheinfire_zone_1') %}
      {% if is_state('switch.rheinfire_connection_enabled', 'off') %}
        0
      {% elif v in ['unknown', 'unavailable', 'none', 'uninitialized'] %}
        0
      {% else %}
        {{ v | float(0) }}
      {% endif %}
  - name: "Rheinfire Zone 2 Safe"
    unique_id: rheinfire_zone_2_safe
    unit_of_measurement: "°C"
    state: >
      {% set v = states('sensor.rheinfire_zone_2') %}
      {% if is_state('switch.rheinfire_connection_enabled', 'off') %}
        0
      {% elif v in ['unknown', 'unavailable', 'none', 'uninitialized'] %}
        0
      {% else %}
        {{ v | float(0) }}
      {% endif %}
  - name: "Rheinfire Zone 3 Safe"
    unique_id: rheinfire_zone_3_safe
    unit_of_measurement: "°C"
    state: >
      {% set v = states('sensor.rheinfire_zone_3') %}
      {% if is_state('switch.rheinfire_connection_enabled', 'off') %}
        0
      {% elif v in ['unknown', 'unavailable', 'none', 'uninitialized'] %}
        0
      {% else %}
        {{ v | float(0) }}
      {% endif %}
  - name: "Rheinfire Zone 4 Safe"
    unique_id: rheinfire_zone_4_safe
    unit_of_measurement: "°C"
    state: >
      {% set v = states('sensor.rheinfire_zone_4') %}
      {% if is_state('switch.rheinfire_connection_enabled', 'off') %}
        0
      {% elif v in ['unknown', 'unavailable', 'none', 'uninitialized'] %}
        0
      {% else %}
        {{ v | float(0) }}
      {% endif %}
  - name: "Rheinfire Probe 1 Safe"
    unique_id: rheinfire_probe_1_safe
    unit_of_measurement: "°C"
    state: >
      {% set v = states('sensor.rheinfire_probe_1') %}
      {% if is_state('switch.rheinfire_connection_enabled', 'off') %}
        0
      {% elif v in ['unknown', 'unavailable', 'none', 'uninitialized'] %}
        0
      {% else %}
        {{ v | float(0) }}
      {% endif %}
  - name: "Rheinfire Probe 2 Safe"
    unique_id: rheinfire_probe_2_safe
    unit_of_measurement: "°C"
    state: >
      {% set v = states('sensor.rheinfire_probe_2') %}
      {% if is_state('switch.rheinfire_connection_enabled', 'off') %}
        0
      {% elif v in ['unknown', 'unavailable', 'none', 'uninitialized'] %}
        0
      {% else %}
        {{ v | float(0) }}
      {% endif %}
  - name: "Rheinfire Probe 3 Safe"
    unique_id: rheinfire_probe_3_safe
    unit_of_measurement: "°C"
    state: >
      {% set v = states('sensor.rheinfire_probe_3') %}
      {% if is_state('switch.rheinfire_connection_enabled', 'off') %}
        0
      {% elif v in ['unknown', 'unavailable', 'none', 'uninitialized'] %}
        0
      {% else %}
        {{ v | float(0) }}
      {% endif %}
  - name: "Rheinfire Probe 4 Safe"
    unique_id: rheinfire_probe_4_safe
    unit_of_measurement: "°C"
    state: >
      {% set v = states('sensor.rheinfire_probe_4') %}
      {% if is_state('switch.rheinfire_connection_enabled', 'off') %}
        0
      {% elif v in ['unknown', 'unavailable', 'none', 'uninitialized'] %}
        0
      {% else %}
        {{ v | float(0) }}
      {% endif %}
  - name: "Rheinfire Gas Tara Weight Safe"
    unique_id: sensor.rheinfire_gas_tara_weight_safe
    unit_of_measurement: "kg"
    state: >
      {% set v = states('sensor.rheinfire_gas_tara_weight') %}
      {% if v in ['unknown', 'unavailable', 'none', 'uninitialized'] %}
        0
      {% else %}
        {{ v | float(0) }}
      {% endif %}
  - name: "Rheinfire Gas Original Capacity Safe"
    unique_id: sensor.rheinfire_gas_original_capacity_safe
    unit_of_measurement: "kg"
    state: >
      {% set v = states('sensor.rheinfire_gas_original_capacity') %}
      {% if v in ['unknown', 'unavailable', 'none', 'uninitialized'] %}
        0
      {% else %}
        {{ v | float(0) }}
      {% endif %}
  - name: "Rheinfire Gas Weight Safe"
    unique_id: sensor.rheinfire_gas_weight_safe
    unit_of_measurement: "kg"
    state: >
      {% set v = states('sensor.rheinfire_gas_weight') %}
      {% if v in ['unknown', 'unavailable', 'none', 'uninitialized'] %}
        0
      {% else %}
        {{ v | float(0) }}
      {% endif %}
  - name: "Rheinfire Gas Level Safe"
    unique_id: sensor.rheinfire_gas_level_safe
    unit_of_measurement: "%"
    state: >
      {% set v = states('sensor.rheinfire_gas_level') %}
      {% if v in ['unknown', 'unavailable', 'none', 'uninitialized'] %}
        0
      {% else %}
        {{ v | float(0) }}
      {% endif %}
  - name: "Rheinfire Light On Safe"
    unique_id: binary_sensor.rheinfire_light_on_safe
    state: >
      {% set v = states('binary_sensor.rheinfire_light_on') %}
      {% if v in ['unknown', 'unavailable', 'none', 'uninitialized', 'kein Licht'] %}
        off
      {% elif v == 'Licht' %}
        on
      {% else %}
        off
      {% endif %}
binary_sensor:
  - name: "Rheinfire Firebox Safe"
    unique_id: rheinfire_firebox_safe
    device_class: door
    state: >
      {% set v = states('binary_sensor.rheinfire_firebox_open') %}
      {% if v in ['unknown','unavailable','none','uninitialized'] %}
        off
      {% elif v == 'on' %}
        on
      {% else %}
        off
      {% endif %}
    attributes:
      icon_color: >
        {% if is_state('binary_sensor.rheinfire_firebox_open', 'on') %}
          rgb(85, 120, 155)   # Blau aktiv
        {% else %}
          rgb(128, 128, 128) # Grau inaktiv
        {% endif %}
 
V1.3.1 ist auf Github. Der Timer arbeitet jetzt unabhängig von einer Echtzeituhr. Also auch ohne Kontakt zu Home Assistant oder Wifi (SNTP Server).
Warum nicht gleich so!?! Manchmal ist man (also ich!) einfach zu blöd ...
Danke für Euer Feedback!

Beste Grüße, Jörg.
 
V1.3.1 ist auf Github. Der Timer arbeitet jetzt unabhängig von einer Echtzeituhr. Also auch ohne Kontakt zu Home Assistant oder Wifi (SNTP Server).
Warum nicht gleich so!?! Manchmal ist man (also ich!) einfach zu blöd ...
Danke für Euer Feedback!

Beste Grüße, Jörg.
Boah, ich muss mich demnächst unbedingt mal wieder reinfuchsen und mein Display updaten...
 
Boah, ich muss mich demnächst unbedingt mal wieder reinfuchsen und mein Display updaten...
Dein Wunsch-Feature steht noch an! Leider ist da nichts dokumentiert und ich komme nicht recht vorwärts ...
Wenn jemand irgendetwas zum Einrichten einer neuen Gasflasche über Bluetooth weiß, wäre ich dankbar für Hinweise.
Grüße, Jörg.

PS: und dann soll auch der Meater+ Support wieder in die BT Variante eingebaut werden. So langsam geht dann auch der Platz auf dem Display aus (oder muss intelligenter genutzt werden).
 
Dein Wunsch-Feature steht noch an! Leider ist da nichts dokumentiert und ich komme nicht recht vorwärts ...
Wenn jemand irgendetwas zum Einrichten einer neuen Gasflasche über Bluetooth weiß, wäre ich dankbar für Hinweise.
Grüße, Jörg.

PS: und dann soll auch der Meater+ Support wieder in die BT Variante eingebaut werden. So langsam geht dann auch der Platz auf dem Display aus (oder muss intelligenter genutzt werden).
Doofe Frage eines noch-nicht-Nutzers, habe es bestimmt in den ReadMe-Dateien überlesen: kann die Gasflasche in der WLan/HA-Variante eingerichtet werden? Greift die HA-Variante auf G32-Clouddaten zu oder ist das auch komplett lokal? (Falls Miele auf die Idee kommt/kam, die Miele-Grills auf anderen Servern laufen zu lassen und nicht die bestehende Infrastruktur zu nutzen, wird das irgendwann sicher relevant)

Man kann bestimmt die Oberfläche so dynamisch machen, dass abhängig der Sensoranzahl die Anzeige größer/kleiner wird?
Ich bin am überlegen, den bei Miele-Grills eingeführten Garraumfühler beim G32 nachzurüsten. Dann wäre auch eine 5. Zone anzuzeigen (würde mich dann auch an der SW-Entwicklung beteiligen und nicht alles auf dich abwälzen wollen 😀)
Ich kann mir nicht vorstellen, dass dafür im G32 kein Platz wäre, aber das gilt es noch herauszufinden. Oder weiß jemand, ob das schon geschaut wurde? Hinterm Backburner sollte eigentlich Platz sein, ein dünnes Käbelchen entlang zu führen, dann an einen zweiten ESP32 und dann über HA integrieren. Über Bluetooth wird’s natürlich umständlicher…
 
Doofe Frage eines noch-nicht-Nutzers, habe es bestimmt in den ReadMe-Dateien überlesen: kann die Gasflasche in der WLan/HA-Variante eingerichtet werden?
Nein, das fehlt noch. Dazu war ja meine Frage, ob jemand in der Richtung noch Infos hat
Greift die HA-Variante auf G32-Clouddaten zu oder ist das auch komplett lokal? (Falls Miele auf die Idee kommt/kam, die Miele-Grills auf anderen Servern laufen zu lassen und nicht die bestehende Infrastruktur zu nutzen, wird das irgendwann sicher relevant)
Ja, ruft die Daten vom Server ab. Eine direkte WiFi Verbindung ist wohl nicht möglich. Sollte Miele den Support einstellen, dann kann man immer noch die Bluetooth Variante nutzen. Chris (zaubii) war da auch mal in der Spur, um eventuell mit einer eigenen Firmware den OW/Miele Server zu umgehen. Aber das ist alles noch Zukunftsmusik ...
Man kann bestimmt die Oberfläche so dynamisch machen, dass abhängig der Sensoranzahl die Anzeige größer/kleiner wird
Ja, geht bestimmt. Leider alles viel Arbeit. Ich bin kein Experte für ESPHome/YAML, stümpere so vor mich hin. Und dann brauche ich eben viel Zeit und hunderte von Versuchen ...
Auch gehen mir manchmal die Ideen für eine vernünftige GUI-Gestaltung aus. Die Touchbedienung hat auch ihre Tücken. So ist der äußere Rand des Displays nicht nutzbar, der Touch ist dort 'tot'.
Ich bin am überlegen, den bei Miele-Grills eingeführten Garraumfühler beim G32 nachzurüsten. Dann wäre auch eine 5. Zone anzuzeigen (würde mich dann auch an der SW-Entwicklung beteiligen und nicht alles auf dich abwälzen wollen 😀)
Wie soll der angebunden werden?
Ich kann mir nicht vorstellen, dass dafür im G32 kein Platz wäre, aber das gilt es noch herauszufinden. Oder weiß jemand, ob das schon geschaut wurde? Hinterm Backburner sollte eigentlich Platz sein, ein dünnes Käbelchen entlang zu führen, dann an einen zweiten ESP32 und dann über HA integrieren. Über Bluetooth wird’s natürlich umständlicher…
Ah, da steht es!
Ja, ist sicher möglich. Platz ist vorhanden. Spannungsversorgung müsste man durch einen Zwischenstecker abgreifen.
Bin mal gespannt ...
Ob der Aufwand lohnt, den ganzen Grill auseinander zu nehmen? Macht das irgendwer sonst auch noch oder bleibt das ein Einzelstück? Dann wäre der Bedarf für eine Firmwareunterstützung sehr gering (klar, kannst Du natürlich selber machen).
ich nutze momentan einen der externen Fühler für die Garraumüberwachung. Klar, ist auch jedes Mal eine Fummelei. Und bei den hohen Temperaturen im Grill geben die Dinger schnell den Geist auf (kosten aber momentan auch nur noch 19€/4 Stück :-)).

Ich versuche momentan eine möglichst breite Abdeckung der Interessen in einer (zwei, HACS und BT!) Variante(n) zu schaffen.
Dazu fehlt mir jetzt noch das oben angeführte 'Feature' des Gasflasche Einmessens. Dann wäre für mich die OW-App verzichtbar.
Alles darüber hinaus (auch Meater+ Support) gehört schon zur 'Kür' und ist nur für sehr wenige Benutzer von Wert.

Grüße, Jörg.
 
Zurück
Oben Unten