Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Tester
    4. [ESPHome] Beta release

    NEWS

    • Neuer Blog: Fotos und Eindrücke aus Solingen

    • ioBroker@Smart Living Forum Solingen, 14.06. - Agenda added

    • ioBroker goes Matter ... Matter Adapter in Stable

    [ESPHome] Beta release

    This topic has been deleted. Only users with topic management privileges can see it.
    • T
      tloeffel @Homoran last edited by

      @homoran

      Ok da bin ich ja beruhigt.

      Ich komme von Tasmota, benutze da einige Projekte mit MQTT. Warum brauche ich das hier nicht? Weil die Datenpunkte in iobroker angezeigt werden?

      Gruß Thomas

      1 Reply Last reply Reply Quote 0
      • K
        klassisch Most Active last edited by

        ESPHome ist zur Übermittlung und Integration der Daten in ein Automatisierungssytem gemacht - und zwar für Home Assistent. Dafür gibt es die API. @Dutchman hat mit dem ioBroker ESPHome Adapter (um den es hier im Thread geht) diesen direkten Datenweg "in der vollen Bandbreite" für ioBroker nutzbar gemacht.
        Damit landen die Daten direkt in der ioBroker Struktur und man hat u.U. noch andere Vorteile wie das Dashboard.
        Noch bevor es diesen ioBroker Adapter gab, habe ich und andere bereits ESPHome punktuell genutzt und dabei die Daten über MQTT übertragen. Das geht auch. Ist halt ein Umweg. So eine Art universeller und weitverbreiteter Datenpfad.

        T 1 Reply Last reply Reply Quote 0
        • T
          tloeffel @klassisch last edited by tloeffel

          @klassisch

          Danke für die super Erklärung.

          8d24da4f-90d3-48af-af6e-ceeabd4938d2-image.png

          Was mache ich hier falsch? Da es auf einer VM läuft habe ich eine IP angegeben und nicht localhost. Liegt das daran?

          Gruß Thomas

          PS. Beim Ausführen "Install" über Wifi

          T 1 Reply Last reply Reply Quote 0
          • T
            tloeffel @tloeffel last edited by tloeffel

            @tloeffel
            ..... und später zeigt er das an.....

            8dafa2d0-d19b-4aaf-bcf1-ab7bf7996e6a-image.png

            Gruß Thomas

            PS: Nachdem der Wemos etwas länger läuft....

            Dutchman 1 Reply Last reply Reply Quote 0
            • K
              klassisch Most Active last edited by klassisch

              Es gibt mehrere Möglichkeiten zu flashen oder OTA zu nutzen. Zumindest bei mir. Aber meine Installation ist auch ein Sonderfall, weil mein ioBroker unter Windows läuft und ich meine ymals auch auf einem Win Rechner erstelle und compiliere. (Dadurch kann ich das ESPHOme Dashboard nicht nutzen. Habe aber auch keine USB Probleme und ein sehr stabiles System mit geringem Wartungsaufwand.)

              • Urflashen mache ich über USB am Win Rechner. Also neuer Wemos zum ersten mal mit ESPHome versorgen
              • Wiederholungs-OTA-Flashen bei gleichem Sensornamen geht bei mir automatisch beim compilieren des YAML
              • Einen Sensor umwidmen, also mit einem anderen Namen oder YAML versehen, geht bei mir nicht automatisch. Der Compilerlauf endet nach der Programmerzeugung und findet den neu benamten Sensor nicht. Klar den gibt es auch nicht, der hat ja noch den alten Namen. In diesem Fall rufe ich die Website des umzuwidmenden Sensors auf und nutze OTA via upload. Das zugehörige Uploadfile heißt firmware.bin und findet sich auch meinem PC im Verzeichnis mit dem neuen Namen
                fc8e1204-e6ab-450d-8894-bcf8d2c823ba-grafik.png

              Wenn im yaml "logging" aktiviert ist, dann versucht sich die Entwicklungsumgebung nach dem OTA Flashen mit dem ESP zu verbinden. Der ist aber noch im Reset und orientiert sich noch in der WLAN Welt, meldet sich an etc. Das dauert. Deshalb kann es zu einigen Timeout Meldungen kommen. Ab und an braucht ein ESP auch mal einen zusätzlichen manuellen Reset nach dem OTA, was besonders lästig ist,
              Wenn der ESP dann gebootet hat, im WLAN angekommen ist, connected er sich mit dem Rechner und das logging kann beginnen.
              Das logging nutze ich nur während der Entwicklung. Bei den Produktivteilen kommentiere ich das aus. Dann gibt es auch die timeout Meldungen nicht mehr.
              Wichtig ist dann die Ansicht in der Instanz des ioBroker ESPHome Adapters. Dort muß der ESP sichtbar und grün sein.
              Dann liefert er auch Daten in die ioBroker Datenstruktur.

              1 Reply Last reply Reply Quote 0
              • Dutchman
                Dutchman Developer Most Active Administrators @tloeffel last edited by Dutchman

                @tloeffel sagte in [ESPHome] Beta release:

                @tloeffel
                ..... und später zeigt er das an.....

                8dafa2d0-d19b-4aaf-bcf1-ab7bf7996e6a-image.png

                Gruß Thomas

                PS: Nachdem der Wemos etwas länger läuft....

                das ist normal, wen du den Wemos Flasht per OTA startet er neu in dieser zeit ist er nicht erreichbar. Beim niesten versuch ist er dan in der Luft und klappt die Verbindung auch

                1 Reply Last reply Reply Quote 0
                • T
                  tloeffel last edited by

                  Hallo Zusammen,

                  danke für die super Erklärungen!!

                  Habe heute ein bisschen experimentiert. Macht richtig Freude :-). Habe meinen ersten DHT22 und SW420 integriert. Klappt super.
                  Da ich nicht der Yaml Programmierer bin, freue ich mich über jeden kleinen Erfolg. Ist der Code aus Eurer Sicht ok, oder gibt es Verbesserungen?

                  Gruß Thomas

                  sensor:
                    - platform: dht
                      pin: GPIO14
                      temperature:
                        name: "Dachgeschoss Temperatur01"
                      humidity:
                        name: "Dachgeschoss Luftfeuchtigkeit01"
                      update_interval: 60s
                      
                  binary_sensor:  
                    - platform: gpio  
                      name: "Dachgeschoss_Vibration01"  
                      pin:
                        number: GPIO0
                        inverted: true
                        mode: INPUT
                      device_class: vibration
                      
                      filters:
                       delayed_off: 2s
                  
                  1 Reply Last reply Reply Quote 1
                  • T
                    tloeffel last edited by

                    Hallo Zusammen,

                    ich habe leider fast erfolglos folgendes probiert.

                    Projekt:
                    Ich möchte bei Änderung einen Temperaturwert in meine Homematic CCU Variable schreiben. Dieses klappte mit "on_value" als Trigger und dann "then" mit dem "http_request.get: http://192.168.xxx.xxx:8181/egal.exe?x=dom.GetObject("_httptest").State(420)".

                    Problem:
                    Ich kann eine Zahl, bei mir hier "420", übertragen. Aber wie übertrage ich den Wert des Sensors?

                    Danke für Eure Hilfe.
                    Gruß Thomas

                    sensor:
                      - platform: dht
                        pin: GPIO14
                        temperature:
                          name: "Dachgeschoss Temperatur01"
                          id: Wert_1
                          on_value:
                            then:
                             http_request.get: http://192.168.xxx.xxx:8181/egal.exe?x=dom.GetObject("_httptest").State(420)
                    
                    1 Reply Last reply Reply Quote 0
                    • Dutchman
                      Dutchman Developer Most Active Administrators last edited by

                      @tloeffel sagte in [ESPHome] Beta release:

                      Hallo Zusammen,

                      ich habe leider fast erfolglos folgendes probiert.

                      Projekt:
                      Ich möchte bei Änderung einen Temperaturwert in meine Homematic CCU Variable schreiben. Dieses klappte mit "on_value" als Trigger und dann "then" mit dem "http_request.get: http://192.168.xxx.xxx:8181/egal.exe?x=dom.GetObject("_httptest").State(420)".

                      Problem:
                      Ich kann eine Zahl, bei mir hier "420", übertragen. Aber wie übertrage ich den Wert des Sensors?

                      Danke für Eure Hilfe.
                      Gruß Thomas

                      sensor:
                        - platform: dht
                          pin: GPIO14
                          temperature:
                            name: "Dachgeschoss Temperatur01"
                            id: Wert_1
                            on_value:
                              then:
                               http_request.get: http://192.168.xxx.xxx:8181/egal.exe?x=dom.GetObject("_httptest").State(420)
                      

                      Einen de sensor Wert kan man nicht schreiben, währe es nicht einfacher das im ioBroker zu lösen ?

                      T 1 Reply Last reply Reply Quote 0
                      • T
                        tloeffel @Dutchman last edited by

                        @dutchman

                        Danke für die schnelle Antwort. In welcher Variable wird den der z.B. Temperaturwert abgespeichert. Kann man auf den zugreifen? Ich habe ein Beispiel unten angefügt, dort scheint es zu gehen. Leider verstehe ich es nicht vollkommen. Den Ausschnitt und den vollen Code habe ich angehängt. Daher weiss ich auch wie man über Http-get direkt in die Homematic CCU schreibt.

                        Dieser Bereich scheint den Wert formatiert zu übergeben.

                        State(" + esphome::to_string(static_cast<uint16_t>(x)) + ")
                        

                        Danke und Gruß Thomas

                        sensor:
                          - platform: scd4x
                            id: scd41
                            i2c_id: bus_a
                            altitude_compensation: 418m
                            co2:
                              name: co2
                              id: co2
                              on_value:
                                then:
                                  - lambda: |-
                                      if (x > 400 ) id(led_g1).turn_on() ; else id(led_g1).turn_off();
                                      if (x > 650 ) id(led_g2).turn_on() ; else id(led_g2).turn_off();
                                      if (x > 800 ) id(led_y1).turn_on() ; else id(led_y1).turn_off();
                                      if (x > 1050 ) id(led_y2).turn_on() ; else id(led_y2).turn_off();
                                      if (x > 1300 ) id(led_r1).turn_on() ; else id(led_r1).turn_off();
                                      if (x > 1550 ) id(led_r2).turn_on() ; else id(led_r2).turn_off();
                        
                                  - http_request.get:
                                      url: !lambda |-
                                        return ((std::string) "http://${hm_host}:8181/any.exe?x=dom.GetObject('${hm_sysvar_co2}').State(" + esphome::to_string(static_cast<uint16_t>(x)) + ")" );
                        
                        
                        substitutions:
                          updates: 30s
                          devicename: co2-sensor
                          hm_host: 192.168.1.58
                          hm_sysvar_co2: scd41-co2
                        
                        esphome:
                          name: ${devicename}
                        
                        esp32:
                          board: esp32dev
                          framework:
                            type: arduino
                        
                        wifi:
                          ssid: !secret wifi_sid
                          password: !secret wifi_password
                        
                        time:
                          - platform: sntp
                            id: sntp_time
                            timezone: "CET-1CEST,M3.5.0,M10.5.0/3"
                            servers: "de.pool.ntp.org"
                        
                        # Enable logging
                        logger:
                          level: DEBUG
                        ## Optional 
                        api:
                          password: !secret api_password
                          reboot_timeout: 0s
                        
                        ota:
                          password: !secret ota_password
                        
                        ## Optional
                        mqtt:
                          broker: 192.168.1.114
                        
                        i2c:
                          - id: bus_a
                            sda: 21
                            scl: 22
                            scan: True
                        
                        http_request:
                          useragent: esphome/device
                          id: httpget
                          timeout: 10s
                        
                        sensor:
                          - platform: scd4x
                            id: scd41
                            i2c_id: bus_a
                            altitude_compensation: 418m
                            co2:
                              name: co2
                              id: co2
                              on_value:
                                then:
                                  - lambda: |-
                                      if (x > 400 ) id(led_g1).turn_on() ; else id(led_g1).turn_off();
                                      if (x > 650 ) id(led_g2).turn_on() ; else id(led_g2).turn_off();
                                      if (x > 800 ) id(led_y1).turn_on() ; else id(led_y1).turn_off();
                                      if (x > 1050 ) id(led_y2).turn_on() ; else id(led_y2).turn_off();
                                      if (x > 1300 ) id(led_r1).turn_on() ; else id(led_r1).turn_off();
                                      if (x > 1550 ) id(led_r2).turn_on() ; else id(led_r2).turn_off();
                        
                                  - http_request.get:
                                      url: !lambda |-
                                        return ((std::string) "http://${hm_host}:8181/any.exe?x=dom.GetObject('${hm_sysvar_co2}').State(" + esphome::to_string(static_cast<uint16_t>(x)) + ")" );
                        
                            humidity:
                              name: "Luftfeuchtigkeit"
                              id: humidity
                            temperature:
                              name: "Raumtemperatur"
                              id: temperature
                            ambient_pressure_compensation_source: bme280_pressure
                            update_interval: ${updates}
                        
                          - platform: bme280
                            setup_priority: -15
                            temperature:
                              name: "BME280-Temperature"
                              id: bme280_temperature
                              oversampling: 1x
                            pressure:
                              name: "BME280-Pressure"
                              id: bme280_pressure
                              oversampling: 1x
                        
                            humidity:
                              name: "BME280-Humidity"
                              id: bme280_humidity
                              oversampling: 1x
                            address: 0x76
                            update_interval: ${updates}
                        
                          - platform: wifi_signal
                            name: "WiFi Signal"
                            id: wifisignal
                            update_interval: ${updates}
                        
                        output:
                          - platform: gpio
                            pin: 23
                            id: led_g1
                          - platform: gpio
                            pin: 19
                            id: led_g2
                          - platform: gpio
                            pin: 18
                            id: led_y1
                          - platform: gpio
                            pin: 32
                            id: led_y2
                          - platform: gpio
                            pin: 25
                            id: led_r1
                          - platform: gpio
                            pin: 26
                            id: led_r2
                        
                        # Example configuration entry
                        switch:
                          - platform: restart
                            name: "CO² Sensor Restart"
                        
                        web_server:
                          port:80
                        
                        K T 2 Replies Last reply Reply Quote 0
                        • K
                          klassisch Most Active @tloeffel last edited by klassisch

                          @tloeffel Ich bin kein großer YAML Programmierer und nutze nur, was ich dringend brauche.
                          Werte die eine id haben, referenziere ich innerhalb von lambda so:

                          id(<idname>).state
                          

                          Beispiel:

                           
                          # sht3x supports SHT31 and SHT35
                            - platform: sht3xd
                              temperature:
                                name: "Temp-SHT31"
                                id: temperature
                          #     id is needed to identify the value in calculations (lambda)      
                                accuracy_decimals: 2
                          
                              humidity:
                                name: "Hum-SHT31"
                                id: rel_humidity
                          #     id is needed to identify the value in calculations (lambda)      
                                accuracy_decimals: 2
                              address: 0x44
                              update_interval: ${updates}
                          
                          
                            - platform: template
                              name: "p-vaporSaturated"
                              id: p_vaporSatur
                              lambda: |-
                                return (611*powf(10,7.5*id(temperature).state/(237.3+id(temperature).state)));
                              accuracy_decimals: 2
                              update_interval: ${updates}
                              icon: 'mdi:water'
                              unit_of_measurement: 'Pa'
                          
                          

                          P.S.: der DHT11 mißt die Feuchte suboptimal und ist somit Zeitverschwendung. SHT31 macht das deutlich besser.

                          1 Reply Last reply Reply Quote 0
                          • C
                            ChrisXY last edited by ChrisXY

                            hatte erst ESPHome unter HA laufen. Klappte super alles wurde grün. Nun wollte ich umziehen.
                            Leider klappt die .local auflösung nicht .. Okay iobroker 192.168.2.* und HA und die ESPs sind 192.168.4.* ...

                            Hab die Passwörter und Manuelle IP in der Config gesetzt Verbinden usw. klappt aber leider bleiben die immer als "OFFLINE" stehen ..

                            Ich muss auch erst die IPs Manuell im Adapter bei Geräten hinzufügen dann tauchen diese unter Objekte auf.
                            Aber im ESPHome Dashboard leider nicht. Hier leg ich dann ein Gerät an und Kopier den Inhalt der alten Config in die neue.

                            K Dutchman 2 Replies Last reply Reply Quote 0
                            • K
                              klassisch Most Active @ChrisXY last edited by

                              @chrisxy bin nicht sicher, ob wir vom gleichen reden. Aber es erinnert mich an einen Eintrag in meiner credentials includes datei

                              wifi:
                                ssid: "homesweethome"
                                password: "topSecret"
                                domain: .
                              # domain . may be not correct, but works with firtzbox
                              # the domain is to support mDNS for flashing and logging
                              #  domain: .fritz.box
                              # .fritz.box worked for me, the default .local did not   
                                
                              #  use_address: fine-particle-garden
                              # use use_address if having trouble after renaming the unit and getting mDNS error
                              # refer to https://esphome.io/components/esphome.html#changing-esphome-node-name 
                              
                              
                              C 1 Reply Last reply Reply Quote 0
                              • C
                                ChrisXY @klassisch last edited by

                                @klassisch hmm kannst du das etwas ausführen und wo finde ich diese Datei?

                                K 1 Reply Last reply Reply Quote 0
                                • K
                                  klassisch Most Active @ChrisXY last edited by klassisch

                                  @chrisxy sagte in [ESPHome] Beta release:

                                  @klassisch und wo finde ich diese Datei?

                                  Wenn Du keine Includes Datei nutzt, dann hast Du die Datei nicht, sondern den Eintrag in Deinem yaml.
                                  Zu den WiFi Einstellungen habe ich nach einigem Lesen und Experimentieren diesen domain: . hinzugefügt und der ESP wurde gefunden.
                                  Die includes Datei habe ich einmal mit den credentials angelegt und verweise in meinen verschiedenen Anwendungs-yamls darauf. So vermeide ich es, meine geheimen credentials in zig yamls zu implementieren. Einmal reicht.
                                  referenziert wird das mit

                                  <<: !include includes.yaml
                                  
                                  

                                  Ein Beispiel findest Du im Thread ESPHome: Wandfeuchte messen-Schimmel vermeiden+Anwendungen

                                  hmm kannst du das etwas ausführen

                                  Wo ich fündig wurde habe ich im Kommentar referenziert und das domain: . habe ich experimentell ermittelt, weil das .local nicht funktioniert hat. Verstanden und ergründet habe ich das nicht. Es hat mir gereicht, daß es zuverlässig funktioniert. Sorry, Pragmatismus.

                                  1 Reply Last reply Reply Quote 0
                                  • T
                                    tloeffel @tloeffel last edited by

                                    @tloeffel

                                    Hallo Zusammen,

                                    habe es hinbekommen.

                                    substitutions:
                                      hm_host: 192.168.xx.xx
                                      hm_sysvar_co2: _httptest 
                                    
                                    humidity:
                                          name: "Dachgeschoss Luftfeuchtigkeit01"
                                          on_value:
                                            then:
                                               - http_request.get:
                                                  url: !lambda |-
                                                    return ((std::string) "http://${hm_host}:8181/any.exe?x=dom.GetObject('${hm_sysvar_co2}').State(" + esphome::to_string(x) + ")" );
                                    

                                    Nun sendet er an die Homematic CCU3 in eine Variable den Wert.

                                    Wie Runde ich einen Wert aus ESPhome ?

                                    Gruß Thomas

                                    K B 2 Replies Last reply Reply Quote 0
                                    • K
                                      klassisch Most Active @tloeffel last edited by

                                      @tloeffel sagte in [ESPHome] Beta release:

                                      habe es hinbekommen.

                                      Danke für die RM. Aber verstenden habe ich das Beispiel nicht

                                      Wie Runde ich einen Wert aus ESPhome ?

                                      In ESPHome gebe ich accuracy_decimals an
                                      Beispiel:

                                      # sht3x supports SHT31 and SHT35
                                        - platform: sht3xd
                                          temperature:
                                            name: "Temp-SHT31"
                                            id: temperature
                                      #     id is needed to identify the value in calculations (lambda)      
                                            accuracy_decimals: 2
                                      
                                      

                                      Dann landet in ioBroker der Wert mit 2 Nachkommastellen

                                      In HM CCU rechne ich nicht. Zum Rechnen verwende ich ioBroker

                                      Aber im HM Forum gibt es etwas dazu ToString() Nachkomma und runden

                                      T 1 Reply Last reply Reply Quote 0
                                      • T
                                        tloeffel @klassisch last edited by

                                        @klassisch

                                        Ah wieder was gelernt. Danke, probiere das aus.

                                        Gruß Thomas

                                        1 Reply Last reply Reply Quote 0
                                        • Dutchman
                                          Dutchman Developer Most Active Administrators @ChrisXY last edited by

                                          @chrisxy sagte in [ESPHome] Beta release:

                                          hatte erst ESPHome unter HA laufen. Klappte super alles wurde grün. Nun wollte ich umziehen.
                                          Leider klappt die .local auflösung nicht .. Okay iobroker 192.168.2.* und HA und die ESPs sind 192.168.4.* ...

                                          Hab die Passwörter und Manuelle IP in der Config gesetzt Verbinden usw. klappt aber leider bleiben die immer als "OFFLINE" stehen ..

                                          Ich muss auch erst die IPs Manuell im Adapter bei Geräten hinzufügen dann tauchen diese unter Objekte auf.
                                          Aber im ESPHome Dashboard leider nicht. Hier leg ich dann ein Gerät an und Kopier den Inhalt der alten Config in die neue.

                                          Zu 1: ESPHome arbeitet mit mdns, wen du unterschiedlich Netzwerke hast wird das untereinander blockiert darum musst die ip eingeben

                                          Zu2: die werden da niemals automatisch auftauchen sowohl in ioBroker als hass die yaml musste selber kopieren (steht auch in der Anleitung von ESPHome selber)

                                          1 Reply Last reply Reply Quote 0
                                          • B
                                            bernd33-1 @tloeffel last edited by

                                            @tloeffel said in [ESPHome] Beta release:

                                            @tloeffel

                                            Hallo Zusammen,

                                            habe es hinbekommen.

                                            substitutions:
                                              hm_host: 192.168.xx.xx
                                              hm_sysvar_co2: _httptest 
                                            
                                            humidity:
                                                  name: "Dachgeschoss Luftfeuchtigkeit01"
                                                  on_value:
                                                    then:
                                                       - http_request.get:
                                                          url: !lambda |-
                                                            return ((std::string) "http://${hm_host}:8181/any.exe?x=dom.GetObject('${hm_sysvar_co2}').State(" + esphome::to_string(x) + ")" );
                                            

                                            Nun sendet er an die Homematic CCU3 in eine Variable den Wert.

                                            Wie Runde ich einen Wert aus ESPhome ?

                                            Gruß Thomas

                                            Hallo Thomas,

                                            leider kann ich beim runden nicht helfen.

                                            Aber: Geht das auch umgekehrt? Also, dass ein Wert von der Homematic gelesen wird und dann z.B. in einer Variable abgelegt wird?

                                            Hintergrund: Ich hab ein Display an einen ESP-Home Node angeschlossen und meine Hoffnung ist, dass man so einfach Werte aus der CCU/IOBroker auf dem Display anzeigen könnte.

                                            Danke schon mal und Grüße, Bernd

                                            Johannes Bauerstatter 1 Reply Last reply Reply Quote 0
                                            • First post
                                              Last post

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            611
                                            Online

                                            31.7k
                                            Users

                                            79.9k
                                            Topics

                                            1.3m
                                            Posts

                                            48
                                            591
                                            113729
                                            Loading More Posts
                                            • Oldest to Newest
                                            • Newest to Oldest
                                            • Most Votes
                                            Reply
                                            • Reply as topic
                                            Log in to reply
                                            Community
                                            Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
                                            The ioBroker Community 2014-2023
                                            logo