SYstemvariable per Raspberry auslesen

Allgemeines zur HomeMatic Haussteuerung

Moderator: Co-Administratoren

Antworten
schorsch05
Beiträge: 41
Registriert: 01.12.2020, 07:25
System: CCU
Hat sich bedankt: 2 Mal
Danksagung erhalten: 6 Mal

SYstemvariable per Raspberry auslesen

Beitrag von schorsch05 » 26.09.2022, 21:18

Hallo,
aus einem Raspberry-Programm heraus möchte ich eine Systemvariablen aus meiner CCU3 auslesen. Die Systemvariable ist eine Werteliste mit Wörtern. Dieses Thema wurde bereits in diesem thread besprochen
viewtopic.php?f=19&t=30566

Ich habe ein kleines Programm im Home-Verzeichnis von pi abgelegt und ausführbar gemacht.

Code: Alles auswählen

#!/bin/bash
echo "Hallo"
# CCU-Systemvariable "Haus SV Anwesendheit" auslesen
present=$(curl -s -k "https://172.16.0.4:8181/rega.exe?x=dom.GetObject("Haus SV Anwesenheit").Value()")
echo $present

exit 0
Ich erhalte nur den Text Hallo und eine leere Zeile.

Ich habe jetzt schon alles Mögliche ausprobiert, jedoch ohne Erfolg.
Kann mir jemand sagen, wo der Fehler liegt?
Ist es eine Einstellung in der Firewall der CCU3? Dort habe ich sowohl die IP-ASDresse des Raspi als auch den Port 8181 eingetragen - ohne Erfolg.

Gruß Schorsch
Grüße
Schorsch

Homematic: CCU3, Addons: RedMatic, CUxD
Apps: PocketControl

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

Re: SYstemvariable per Raspberry auslesen

Beitrag von Black » 26.09.2022, 21:35

so kann das ja wegen dem escaping nicht gehen.

probier mal so:

Code: Alles auswählen

present=$(curl -s -k "https://172.16.0.4:8181/rega.exe?x=dom.GetObject(\"Haus SV Anwesenheit\").Value()")
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

schorsch05
Beiträge: 41
Registriert: 01.12.2020, 07:25
System: CCU
Hat sich bedankt: 2 Mal
Danksagung erhalten: 6 Mal

Re: SYstemvariable per Raspberry auslesen

Beitrag von schorsch05 » 28.09.2022, 19:51

Hallo Black,

ich habe das Programm im home-Verzeichnis von pi abgelegt und wie folgt angepasst

Code: Alles auswählen

#!/bin/bash
echo "Hallo"
# CCU-Systemvariable "Haus SV Anwesendheit" auslesen
present=$(curl -s -k "https://172.16.0.4:8181/rega.exe?x=dom.GetObject(\"Haus SV Anwesenheit\").Value()")
echo $present
Ausgeführt sieht dann das Ergebnis so aus, wie im Dateianhang abgebildet
Bild

Dazu habe ich folgende Fragen:
a) Was meinst du mit dem Escaping?
b) Mit "curl" wird ein Programm gestartet, in diesem Fall also "rega.exe". Ist dies standardmäßig auf der CCU3 vorhanden oder muss ich dazu erst noch etwas installieren?

Gruß
Schorsch
Dateianhänge
DoorPi.jpg
DoorPi.jpg (8.74 KiB) 410 mal betrachtet
Grüße
Schorsch

Homematic: CCU3, Addons: RedMatic, CUxD
Apps: PocketControl

rentier-s
Beiträge: 373
Registriert: 19.06.2017, 09:24
Hat sich bedankt: 20 Mal
Danksagung erhalten: 67 Mal

Re: SYstemvariable per Raspberry auslesen

Beitrag von rentier-s » 29.09.2022, 09:46

Per HTTPS ist die Remote Scripting API auf Port 48181 erreichbar, Port 8181 wäre HTTP.

Der Name der .exe ist egal. In der XML Antwort kriegst Du das dann genauso wieder zurück wie den Abfrageparameter, in Deinem Fall x.

Empfehlenswert übrigens immer noch, den Zugriff auf die API anhand der IP-Adresse zu begrenzen und die Authentifizierung einzuschalten.

Code: Alles auswählen

#!/bin/bash
present=$(curl -s -k --user Benutzer:Kennwort "https://ccu-adresse:48181/cooleAPI.exe?x=dom.GetObject(\"Anwesenheit\").Value()")
echo $present

Code: Alles auswählen

<xml><exec>/cooleAPI.exe</exec><sessionId></sessionId><httpUserAgent>User-Agent: curl/7.74.0</httpUserAgent><x>true</x></xml>

Antworten

Zurück zu „HomeMatic allgemein“