NEWS
[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)
-
@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
-
@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
-
-
@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)
-
@tloeffel said in [ESPHome] Beta release:
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
-
Hallo, hab 2 Iobroker Instanzen am Laufen (Alt und Neu) und habe die Files aus dem Ordner (und Unterordner):
opt/iobroker/iobroker-data/Esphome.0
aus dem Altsystem in das IobrokerNEU-System kopiert um im Dashboard des IobrokerNEU weiterarbeiten zu können.
Leider bekomm ich folgenden Fehler:
INFO Reading configuration /opt/iobroker/iobroker-data/esphome.0/Verbrauch_Keller_Garage.yaml... WARNING 'verbrauch_keller_garage': Using the '_' (underscore) character in the hostname is discouraged as it can cause problems with some DHCP and local name services. For more information, see https://esphome.io/guides/faq.html#why-shouldn-t-i-use-underscores-in-my-device-name INFO Generating C++ source... ERROR Error copying file /opt/iobroker/node_modules/iobroker.esphome/python_modules/lib/python3.9/site-packages/esphome/core/component.h to /opt/iobroker/iobroker-data/esphome.0/verbrauch_keller_garage/src/esphome/core/component.h: [Errno 1] Operation not permitted: '/opt/iobroker/iobroker-data/esphome.0/verbrauch_keller_garage/src/esphome/core/component.h'
oder wie könnte ich einen Wechsel machen? Die Datenpunkte landen bereits in der Datenstruktur nur die das Dashboard ist leer.
-
@johannes-bauerstatter sagte in [ESPHome] Beta release:
oder wie könnte ich einen Wechsel machen? Die Datenpunkte landen bereits in der Datenstruktur nur die das Dashboard ist leer.
die underscores rausnehmen in der Datei
-
@pboeck @pboeck said in [ESPHome] Beta release:
Hi, bastle gerade auch ein bisschen. Für mich ist der MQTT komplett neu. Was ich schon habe ist die Verbindung zwischen MQTT und ESP Home. Das sehe ich auch in den Instanzeneinstellungen. Soweit so gut. Aber ab dann komme ich nicht weiter und finde auch nichts dazu was mir weiterhelfen kann. Wie bekomme ich nun Werte z.B. von einen Termometer nach ESPHome? Durch dein Blockly steige ich nicht so ganz durch... Wo schreibst du was hin? Bis jetzt ist sehe ich nur folgendes:
Wahrscheinlich brauche ich nur einen "Stupser" in die richtige Richtung.
-
@draexler Wenn du in deiner Yaml das Api aktivierst und den ESPHOME - Adapter installiert hast, erscheinen die Punkte autom. .
Ich aktivier zudem gerne am Anfang den Webserver. So kannst du mit der ESP-IP:80 die Werte mal sehen, die ankommen sollten. Wenn hier nichts steht, ist ein Fehler in der Yaml.esphome: name: esp32_mini_heizung platform: ESP32 board: wemos_d1_mini32 wifi: ssid: "Geheim" password: "Geheim" # Enable Home Assistant API -> hiermit werden die Daten an den ESPHOME - Adapter übermittelt api: ota: # Web Server web_server: port: 80 dallas: - pin: 4 sensor: - platform: wifi_signal name: "WiFi Signal Sensor" update_interval: 10s - platform: pzemac ......
-
@johannes-bauerstatter: Danke dir Genau das war der richtige Stupser. Machmal ist es so einfach
-
Noch ein Punkt: Wenn ich MQTT verwende heißt es auf der ESPHome Dokumentation das ich die API Line entfernen soll.
Nachdem ich das gemacht habe, habe ich nun immer diese ERRORS im Log.Es läuft aber alles
Habt ihr das auch?
EDIT: Ich sehe gerade das im ESP Adapter er nicht als Verbunden angezeigt wird. Sehr komisch.
-
@draexler Ich benutzte früher auch MQTT aber mittels Api hab ich dafür keine Verwendung mehr. Wozu brauchst du noch MQTT in Kombination mit ESPHOME?