abbrechen
Suchergebnisse werden angezeigt für 
Anzeigen  nur  | Stattdessen suchen nach 
Meintest du: 


REST API Zugriff mit ESP32

tobo123
Experienced Homie

Hallo zusammen,

 

ich versuche über einen ESP32 Mikrocontroller auf den BSH Controller II über die REST API zuzugreifen. Ich möchte gerne Zustände auslesen, um bei meiner Smarten Anzeige auf eine Ledvance-Platine verzichten zu können. Den ESP32 programmiere ich über die Arduino IDE.

 

Bisher habe ich folgendes erreicht:

- Abfrage der Public Information, Anlegen eines neuen Client und anschließende Abfrage z.B. des room arrays über Postman.

- Ich kann über den ESP32 über Port 8446 per GET die Public Information auslesen.

- Ich kann über den ESP32 über Port 8443 per POST einen neuen Client anlegen. Dieser erscheint auch in der Smart Home APP unter "Weitere Mobilgeräte".

 

So weit, so gut. Was jetzt aber nicht geht, ist anschließend über Port 8444 per GET z.B. das room array abzufragen. Die Verbindung kommt hier nicht zustande. Laut Postman muss ich doch im Header außer dem Host nichts mit senden, oder?

 

Ich habe schon viel rumprobiert und bin jetzt etwas ratlos. Hat jemand eine Idee, woran es liegen könnte?

 

VG tobo

5 ANTWORTEN 5

tobo123
Experienced Homie

Ein Update von mir: ich habe alles mögliche probiert, um die REST API auf meinem ESP32 zum laufen zubekommen, ohne Erfolg. Ich bin jetzt auf ein ESP8266 umgestiegen und hier geht es 🙂

 

Ich kann den ESP als Client anmelden und Geräte und die Zustände abfragen. Der Hammer! Das eröffnet echt viele Möglichkeiten. Ich werde als nächstes mein smarte Anzeige auf die REST API umstellen.

 

 VG tobo

ilja-stas
Junior Homie

Hi @tobo123,

 

könntest du ein Beispiel Code hier reinposten? Ich bekomme ständig SSL Certificat Issues. Auch wenn ich requests.get(..., verify=False) mache (mit Python).

 

Danke

Ilja

ilja-stas
Junior Homie
import requests
import base64
import urllib3

# Suppress the InsecureRequestWarning related to verify=False
urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning)

# Variables (replace with actual values)
shc_api = "https://192.168.0.10:8444"  # Replace with your actual SHC API URL
api_version = "3.13"  # Replace with the actual API version you're using
system_password_base64 = base64.b64encode(b'testtest').decode('utf-8')  # Replace with your password

# Endpoint for devices
url = f"{shc_api}/smarthome/devices"  # Replace with the actual devices endpoint

# Path to client certificate and key files (replace with actual paths)
client_cert = ('/home/ilja/python-cert.pem', '/home/ilja/python-key.pem')  # Update these paths

# Headers
headers = {
    'Content-Type': 'application/json',
    'User-Agent': 'PostmanRuntime/7.42.0',
    'Accept': '*/*',
    'Accept-Encoding': 'gzip, deflate, br',
    'Connection': 'keep-alive',
    'Systempassword': system_password_base64,
    'api-version': api_version,
    'Host': '192.168.0.10:8444',
}

# No payload needed for GET request to /smarthome/devices

# Make the GET request with client certificate
response = requests.get(url, headers=headers, cert=client_cert, verify=False, timeout=120)

# Print the response
print(f"Status Code: {response.status_code}")
print(f"Response Body: {response.text}")

ilja-stas
Junior Homie

That code is working

Sehr gut, wenn es damit geht. Ich programmiere mit C++ / Arduino, weiß daher nicht, ob dir mein Code nützt. Den kannst du dir hier anschauen: https://github.com/tobo-123/smart-home-display

 

Den Header kannst du kürzen. Das Passwort brauchst du z.B. nicht mitsenden.




Rechtswidrigen Inhalt melden