NEWS
[ESPHome] Beta release
-
@menne Ich glaube, Du bringst da ein paar Begriffe durcheinander. Eine VM ist eine (v)irtuell (m)achine also die Emulation von Hardware. Und die bietet sich an, wenn man auf einer Hardware mehrere voneinander unabhängige Applikationen laufen will. Dafür braucht es dann ein Host-OS wie z.B. Proxmox und das bietet dann die Infrastruktur, um auf der Hardware mehrere VMs (oder auch Container, je nach Anwendung) parallel laufen zu lassen. Z.B. eine für ioBroker, eine für Homematic usw. Und jede dieser VMs läuft dann unter einem Betriebssystem wie z.B. Ubuntu oder Debian.
-
@tloeffel sagte in [ESPHome] Beta release:
Wenn ich den Umweg über Tasmotizer nehme geht es. Wie verwalte ich nun MQTT? Bin da noch ein bisschen am lernen :-).
wieso MQTT ? Du erstellt die bin mit ESPHome, do trägst du API usw ein wie in der doku beschrieben und das wars der Adapter macht den rest da brauchst du kein MQTT.
Habe dein isssue auf git gesehen, kann da leider nix mit anfangen die port Weiterleitung ist ne Synology/VM Sache wie auf da erwähnt als Workarround die bin mit de PC flachen und danach alles weitere per OTA und ESPHome
-
Hallo dutchman,
danke für Deine schnelle Antwort. Habe den Github Eintrag geschlossen.
Bin Neuling und teste mal weiter :-).Ist dieses das richtige Forum für Neulinge, oder nerve ich Euch?
Gruß Thomas -
@tloeffel sagte in [ESPHome] Beta release:
Ist dieses das richtige Forum für Neulinge,
oder nerve ich Euch?Ja
-
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
-
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. -
Danke für die super Erklärung.
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
-
@tloeffel
..... und später zeigt er das an.....Gruß Thomas
PS: Nachdem der Wemos etwas länger läuft....
-
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
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. -
@tloeffel sagte in [ESPHome] Beta release:
@tloeffel
..... und später zeigt er das an.....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
-
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
-
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ß Thomassensor: - 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)
-
@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ß Thomassensor: - 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 ?
-
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
-
@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.
-
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. -
@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
-
@klassisch hmm kannst du das etwas ausführen und wo finde ich diese Datei?
-
@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.
-
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