ESPHome - API ohne HomeAssistant und ohne MQTT

Begonnen von bartman121, 31 Oktober 2021, 06:22:26

Vorheriges Thema - Nächstes Thema

bartman121

Guten Morgen,

vorab:
ich weiß nicht ob dieses Forum hier das richtige ist, evtl. passt es auch in Anfänger-Fragen.

Ausgangssituation:
Ich besitze eine Xiaomi Bedside Lamp 2, leider hat XIAOMI irgendwann beschlossen "LAN-Control" auszubauen, damit konnte ich die Lampe nicht mehr über FHEM steuern. Es gibt aus meiner Sicht keine brauchbare Lösung LAN-Control wiederzubekommen, die Bettelei im YeeLight-Forum werde ich nicht mitmachen.

Ich bin auf ein interessantes Projekt gestoßen:
https://github.com/mmakaay/esphome-xiaomi_bslamp2

Dabei wird ESP-Home auf die Lampe geflashed. Das Flashen hat wunderbart gepklappt. Leider ist es mir nicht gelungen MQTT zusätzlich reinzubauen, er sagt immer, dass das nur für plattform arduino geht.

Aktuelle funktionierende Integration in FHEM:
ich habe mir eine virtuelle Maschine erstellt und lasse dort HomeAssistant laufen. HomeAssistant bietet Out-OF-The-Box-Integration für ESPHome an. Die Steuerung über HomeAssistant funktioniert. Ich habe dann beschlossene HomeAssistant via API per HTTPMOD zu bedienen. Das funktioniert auch locker flockig.

Hier die API-Dokumentation:
https://developers.home-assistant.io/docs/api/rest/

Aber:
Die POST-Aufrufe liefern leider keinen Content zurück, das ist Mist, weil man nach dem Einschalten der Lampe quasi immer die aktuellen Parameter per GET abfragen müsste. Das geht natürlich, ist aber totaler Unfug.

Mein Problem:
Ich finde den zusätzlichen HomeAssistant-Server völlig überzogen und unnötig. Eigentlich will ich ja nur die Lampe/ESPHome steuern. Mein Ziel wäre es die ESPHome-Api der Lampe direkt zu nutzen, statt über HomeAssistant zu gehen.

Die ESPHome-Api ist aus meiner Sicht aber eher schlecht dokumentiert und man findet auch im Netz nicht sonderlich viel Hilfe dazu. Alle Welt verweist auf HomeAssistant.
Gefunden habe ich das hier:
https://esphome.io/web-api/index.html

Ich schaffe es ums Verrecken nicht mich mit der API per Insomnia zu verbinden. Ich erhalte immer eine Fehlermeldung:

* Preparing request to http://bedside-lamp:6053/light/light.bedside_lamp_rgbww_light
* Current time is 2021-10-31T06:16:06.555Z
* Using libcurl/7.73.0-DEV OpenSSL/1.1.1g zlib/1.2.11 brotli/1.0.9 WinIDN libssh2/1.9.0_DEV nghttp2/1.41.0
* Using default HTTP version
* Disable timeout
* Enable automatic URL encoding
* Enable SSL validation
* Enable cookie sending with jar of 0 cookies
* Hostname in DNS cache was stale, zapped
*   Trying 192.168.2.155:6053...
* Connected to bedside-lamp (192.168.2.155) port 6053 (#1)

> GET /light/light.bedside_lamp_rgbww_light HTTP/1.1
> Host: bedside-lamp:6053
> User-Agent: insomnia/2021.6.0
> Content-Type                : application/json
> Accept: */*

* Recv failure: Connection was reset
* Closing connection 1


Ja, ich verwende eigentlich ein Passwort, aber nirgends steht wie man das Passwort mitgeben muss. Header/Body/URL-Parameter?

Kann mir hier Jemand weiterhelfen?
Ich sehe folgende Lösungsansätze:
1) Integration von MQTT-in ESPHome und erneutes flashen der Lampe .... aber dazu finde ich keine Hilfe
2) Versuchen die API von ESPHome zum Laufen zu bekommen

Vielleicht gibt es ja Leute hier, die ESPHome und dessen API nutzen.

Liebe Grüße

Andreas

Ice81

Moin Andreas,

Ich habe auch das gleiche Problem.

Hast Du evtl. schon eine Lösung gefunden ?

Ich hatte es noch über Fhempy versucht, aber leider bekomme Ich es darüber auch nicht zum laufen


LG
Ralf

FhemPiUser

#2
Gibt es hier inzwischen eine Lösung direkt ESPHome in fhem zu integrieren z.b. über httpmod requests auf die esphome rest api des eingebauten webservers (https://esphome.io/web-api/index.html)?

Ice81

Hallo zusammen,

mittlerweile habe ich meine Lampe per MQTT anbinden können. Ein und aus klappt schonmal ganz gut. Einige Farben kann ich auch schon einstellen. Beim einstellen der Helligkeit habe Ich noch meine leichten probleme.

VG
Ralf

Heiner

Hi,

schaut mal hier: https://github.com/fhempy/fhempy

damit wird auch esphome integration auf fhem realisiert.
Heiner
--------------------------------
fhem auf Pi3+
CUL 868MHz, Signalduino 434MHz, HM-CFG-USB
HM, THZ, Kostal, Somfy, Conbee, Pytonbinding, FritzBox, FTUI, MQTT2

steffen83

Das ist ja toll und habe auch esp Home nun installiert über fhempy aber wie bekomme ich die devices (am besten auch die schon im Netzwerk sind) in Fhem eingebunden?

LG
Steffen
Raspberry Pi 3 (Noobs, aktuelle Fhem und Pilight) | FHEMduino | HM-OCCU-SDK | HM-Sec-SCo | HM-Sec-SD-2 | HM-CC-RT-DN | HM-LC-Bl1PBU-FM

Gisbert

#6
Hallo Heiner,

die Definitionen von ESPHome in Fhem funktionieren, wie auf GitHub beschrieben.
Ich bekomme jedoch keinerlei Daten (Readings ...) in Fhem angezeigt.
Definitionen in der fhem.cfg:
define esp_home fhempy esphome
setuuid esp_home 65e03287-f33f-e986-c1d9-d828597375a0998d
attr esp_home group esphome
attr esp_home room fhempy
define esphome_dashboard weblink iframe http://127.0.1.1:6052/
setuuid esphome_dashboard 65e032a2-f33f-e986-a298-e4baf0ff6469e18d
attr esphome_dashboard htmlattr width='900' height='700' frameborder='0' marginheight='0' marginwidth='0'
attr esphome_dashboard room ESPHome

Ich möchte Daten aus einem Deye-Wechselrichter auslesen, entsprechend dieser Installation.
https://github.com/bagges/deye-esp32-bridge
Die Hardware funktioniert und ich kann per Webbrowser auf den ESP32 zugreifen.

Fehlt etwas bei der Definition in ESPHome auf dem ESP32?

Viele Grüße Gisbert

Edit:
Hier noch ein list:
define esp_home fhempy esphome
attr esp_home group esphome
attr esp_home room fhempy
#   CFGFN     
#   DEF        esphome
#   FHEMPYTYPE esphome
#   FUUID      65e03287-f33f-e986-c1d9-d828597375a0998d
#   IODev      fhempy_local
#   NAME       esp_home
#   NR         1420
#   PYTHONTYPE esphome
#   STATE      running
#   TYPE       fhempy
#   eventCount 3
#   READINGS:
#     2024-02-29 08:30:42   state           running
#   args:
#     esp_home
#     fhempy
#     esphome
#   argsh:
#   helper:
#     bm:
#       fhempy_Attr:
#         cnt        2
#         dmx        -1000
#         dtot       0
#         dtotcnt    0
#         mTS        29.02. 08:30:42
#         max        0.00221395492553711
#         tot        0.00435400009155273
#         mAr:
#           set
#           esp_home
#           group
#           esphome
#       fhempy_Define:
#         cnt        1
#         dmx        -1000
#         dtot       0
#         dtotcnt    0
#         mTS        29.02. 08:30:15
#         max        0.00872111320495605
#         tot        0.00872111320495605
#         mAr:
#           HASH(0x55ca6fe40a68)
#           ARRAY(0x55ca764581c8)
#           HASH(0x55ca7545b458)
#       fhempy_Get:
#         cnt        5
#         dmx        -1000
#         dtot       0
#         dtotcnt    0
#         mTS        29.02. 08:30:34
#         max        0.00262093544006348
#         tot        0.0123910903930664
#         mAr:
#           HASH(0x55ca6fe40a68)
#           ARRAY(0x55ca754c67f0)
#           HASH(0x55ca723659f8)
#       fhempy_Set:
#         cnt        18
#         dmx        -1000
#         dtot       0
#         dtotcnt    0
#         mTS        29.02. 08:30:34
#         max        0.00291109085083008
#         tot        0.0163352489471436
#         mAr:
#           HASH(0x55ca6fe40a68)
#           ARRAY(0x55ca73bcab50)
#           HASH(0x55ca72a92cd8)
#
setstate esp_home running
setstate esp_home 2024-02-29 08:30:42 state running

Aktuelles FHEM | PROXMOX | Fujitsu Futro S740 | Debian 12 | UniFi | Homematic, VCCU, HMUART | ESP8266 | ATtiny85 | Wasser-, Stromzähler | Wlan-Kamera | SIGNALduino, Flamingo Rauchmelder FA21/22RF | RHASSPY

marvin78

Soweit ich weiß, integriert das Modul nur das Dashboard in FHEM.

Warum nicht MQTT? Ist doch alles da.

Gisbert

Hallo marvin78,

ok, danke für die Info. Auf die Idee mit MQTT bin ich mittlerweile auch gekommen. Die Umsetzung scheint auch einfach zu sein lt. Beiträgen im Akkudoktor-Forum - bis auf eine Ungereimtheit, die ich noch nicht durchschaue.
Magst du da mal reinschauen?
https://www.akkudoktor.net/forum/deye-wechselrichter/deye-nachts-ausschalten-wenn-akku-leer-ist-haesphome-ha-automatisierungen/paged/6/#post-190101
Im Anfangspost steht folgendes:
name: ${device_type}_Power_OnWeiter unten dann:
switch.deye_power_onDemnach müsste folgende Definition gelten, ich weiß es aber nicht genau:
device_type: deye
Viele Grüße Gisbert
Aktuelles FHEM | PROXMOX | Fujitsu Futro S740 | Debian 12 | UniFi | Homematic, VCCU, HMUART | ESP8266 | ATtiny85 | Wasser-, Stromzähler | Wlan-Kamera | SIGNALduino, Flamingo Rauchmelder FA21/22RF | RHASSPY