[erl.] mit curl ein Sensibo Gerät steuern

Allgemeines zur HomeMatic Haussteuerung

Moderator: Co-Administratoren

Antworten
NickHM
Beiträge: 3733
Registriert: 23.09.2017, 12:04
Hat sich bedankt: 66 Mal
Danksagung erhalten: 120 Mal

[erl.] mit curl ein Sensibo Gerät steuern

Beitrag von NickHM » 06.06.2022, 09:21

Guten Morgen

ich habe hier schon einige Beiträge zum Thema CURL gelesen, finde aber keinen Ansatz bzw. ernte im Browser meist Fehlermeldungen :(

Ein Beispiel für einen Befehl wäre

Code: Alles auswählen

`curl -X POST https://home.sensibo.com/api/v2/pods/{device_id}/acStates?apiKey={api_key} -d "{\"acState\":{\"on\":true}}"`
oder konkreter

Code: Alles auswählen

`curl -X POST https://home.sensibo.com/api/v2/pods/N21234/acStates?apiKey=MeinAPIkey -d "{\"acState\":{\"on\":true}}"`
Um selbst zu testen brauche ich bitte einen Einstieg
- wie kann ich die Befehlszeile auf einem Rechner mit MacOS testen um die richtige Syntax raus zu bekommen ?
- oder wie kann ich das in der CCU3 unter Script testen (oder mit dem Scripteditor) machen ?
- wenn der Befehl funktioniert, wie bekomme ich den dann in ein WEbUi Programm?

Ich weiss zumindest, dass der APIKey funktioniert, weil ich im Browser eine Liste aller Geräte abfragen kann.

Code: Alles auswählen

https://home.sensibo.com/api/v2/users/me/pods?fields=*&apiKey=MeinAPIkey
Sobald eine Device ID mit rein kommt, scheitere ich aber schon :(

Für einen Denkanstoss zu dem ganzen Thema wäre ich sehr dankbar.
Zuletzt geändert von NickHM am 07.06.2022, 06:27, insgesamt 1-mal geändert.

Benutzeravatar
Black
Beiträge: 5483
Registriert: 12.09.2015, 22:31
System: Alternative CCU (auf Basis OCCU)
Wohnort: Wegberg
Hat sich bedankt: 424 Mal
Danksagung erhalten: 1074 Mal
Kontaktdaten:

Re: mit curl ein Gerät steuern

Beitrag von Black » 06.06.2022, 09:27

Guck mal hier und in den da verlinkten Thread

viewtopic.php?f=19&t=74473&p=721075#p721075

Black
Wenn das Fernsehprogramm immer mehr durch nervende Werbung unterbrochen wird und der Radiomoderator nur noch Müll erzählt, ist es besser, die Zeit für sinnvolle Dinge zu nutzen -
mal aufs Klo zu gehen, ein Bier zu holen oder einfach mal den roten AUS-Knopf zu drücken. Klick - und weg

Script Time Scheduler V1.3
AstroSteuerung über Zeitmodul flexibel mit Offset / spätestens, frühestens
SDV 5.03.01 Das umfassende Entwicklungs und Diagnosetool für Homematik
Selektive Backups - Nützliche Dinge, die die WebUI nicht kann

Intel NUC6 Celeron 16GB mit 512GB SSD unter Proxxmox mit insgesamt 5 VM: 2 x bloatwarebefreiter Raspberrymatik, 2 x IOBroker als Middleware und einer MariaDB zur Archivierung. Verbrauch: 6W

technical contribution against annoying advertising

NickHM
Beiträge: 3733
Registriert: 23.09.2017, 12:04
Hat sich bedankt: 66 Mal
Danksagung erhalten: 120 Mal

Re: mit curl ein Gerät steuern

Beitrag von NickHM » 06.06.2022, 11:01

Ich würde gern exemplarisch bei einem Einschaltbefehl bleiben und habe jetzt Folgendes probiert

Code: Alles auswählen

WriteLine("Hallo Welt!");
string stderr;
string stdout;
string url="https://home.sensibo.com/api/v2/pods/W999/acStates?apiKey=xYx -d "\"acState\":\"on\":true"";
system.Exec("wget -O /dev/null -q '"#url #"'", &stdout, &stderr);
WriteLine("Ente");
da passiert gar nichts. Auch die beiden WriteLine Befehle werden nicht geschrieben.

Der Hersteller gibt die Syntax wie folgt an:
https://sensibo.github.io/#operations-top

Code: Alles auswählen

curl -X POST https://home.sensibo.com/api/v2/pods/{device_id}/acStates?apiKey={api_key} -d "{\"acState\":{\"on\":true}}"
die geschweiften Klammern muss ich dabei offenbar jeweils weg lassen.

Wie komme ich ohne Fehlermeldung da jetzt weiter ??

NickHM
Beiträge: 3733
Registriert: 23.09.2017, 12:04
Hat sich bedankt: 66 Mal
Danksagung erhalten: 120 Mal

Re: mit curl ein Gerät steuern

Beitrag von NickHM » 06.06.2022, 11:15

Ich habe das mal auf der Kommandozeile der CCU ausgeführt.
Anscheinend wird der API Key nicht richtig erkannt, weil dahinter ein Leerzeichen und dann noch der Befehl -d .... kommt.
der Fehler lautet "Zugriff verweigert"
Das ist mir im Browserfenster auch schon aufgefallen. Befehlszeilen mit dem API Key am Ende funktionieren erst mal. :(

NickHM
Beiträge: 3733
Registriert: 23.09.2017, 12:04
Hat sich bedankt: 66 Mal
Danksagung erhalten: 120 Mal

Re: mit curl ein Gerät steuern

Beitrag von NickHM » 06.06.2022, 11:45

neuer Zwischenstand
über die Kommandozeile eines Raspi, wo es funktioniert hat
bin ich dann wieder zur Kommandozeile der CCU

Da funktioniert folgender Befehl, den ich jetzt noch in ein CCU Script quetschen muss ...

Code: Alles auswählen

curl -X POST https://home.sensibo.com/api/v2/pods/deviceID123/acStates?apiKey=xYx -d "{\"acState\":{\"on\":true}}"

MichaelN
Beiträge: 9681
Registriert: 27.04.2020, 10:34
System: CCU
Hat sich bedankt: 700 Mal
Danksagung erhalten: 1626 Mal

Re: mit curl ein Gerät steuern

Beitrag von MichaelN » 06.06.2022, 11:56

Das Problem ist, dass du " im string hast. Und da ein string mit " beginnt und endet, kommt sich das in die Quere.

Aber du kannst auch ' als string Begrenzung nehmen.
LG, Michael.

Wenn du eine App zur Bedienung brauchst, dann hast du kein Smarthome.

Wettervorhersage über AccuWeather oder OpenWeatherMap+++ Rollladensteuerung 2.0 +++ JSON-API-Ausgaben auswerten +++ undokumentierte Skript-Befehle und Debugging-Tipps +++

NickHM
Beiträge: 3733
Registriert: 23.09.2017, 12:04
Hat sich bedankt: 66 Mal
Danksagung erhalten: 120 Mal

Re: mit curl ein Gerät steuern

Beitrag von NickHM » 06.06.2022, 12:04

Code: Alles auswählen

system.Exec("curl -X POST https://home.sensibo.com/api/v2/pods/deviceID123/acStates?apiKey=xYx -
d "{\"acState\":{\"on\":true}}"");
funktioniert als script im ScriptExecutor nicht. Sieht jemand einen Syntaxfehler?

NickHM
Beiträge: 3733
Registriert: 23.09.2017, 12:04
Hat sich bedankt: 66 Mal
Danksagung erhalten: 120 Mal

Re: mit curl ein Gerät steuern

Beitrag von NickHM » 06.06.2022, 12:13

Code: Alles auswählen

/usr/local/addons/cuxd/curl -X POST https://home.sensibo.com/api/v2/pods/deviceID123/acStates?apiKey=xYx -d "{\"acState\":{\"on\":true}}"
auf der CCU Kommandozeile funktioniert.


versuche ich das als Script unter "Script ausführen" geht es nicht

Code: Alles auswählen

WriteLine("Hallo Welt!");
systemExec("/usr/local/addons/cuxd/curl -X POST https://home.sensibo.com/api/v2/pods/deviceID123/acStates?apiKey=xYx -d "{\"acState\":{\"on\":true}}"");
:( :(

MichaelN
Beiträge: 9681
Registriert: 27.04.2020, 10:34
System: CCU
Hat sich bedankt: 700 Mal
Danksagung erhalten: 1626 Mal

Re: mit curl ein Gerät steuern

Beitrag von MichaelN » 06.06.2022, 12:27

LG, Michael.

Wenn du eine App zur Bedienung brauchst, dann hast du kein Smarthome.

Wettervorhersage über AccuWeather oder OpenWeatherMap+++ Rollladensteuerung 2.0 +++ JSON-API-Ausgaben auswerten +++ undokumentierte Skript-Befehle und Debugging-Tipps +++

NickHM
Beiträge: 3733
Registriert: 23.09.2017, 12:04
Hat sich bedankt: 66 Mal
Danksagung erhalten: 120 Mal

Re: mit curl ein Gerät steuern

Beitrag von NickHM » 06.06.2022, 12:34

ok, die funktionierende Syntax lautet

Code: Alles auswählen

system.Exec("curl --max-time 2 -X POST https://home.sensibo.com/api/v2/pods/deviceID/acStates?apiKey=xYx -d '{\"acState\":{\"on\":true}}'");

danke

Antworten

Zurück zu „HomeMatic allgemein“