PHP-Script mit cURL in HomeMatic Scriptsprache übersetzen?

Homematic-, TCL- und Shell-Script, Toolchain, C, etc.

Moderator: Co-Administratoren

Wookbert
Beiträge: 224
Registriert: 10.05.2013, 18:40
Hat sich bedankt: 3 Mal
Danksagung erhalten: 1 Mal

PHP-Script mit cURL in HomeMatic Scriptsprache übersetzen?

Beitrag von Wookbert » 11.10.2017, 02:39

Gibt es die Möglichkeit folgendes PHP-Script als HomeMatic-Script zu programmieren? Falls ja, kann mir das jemand übersetzen? Ich selbst bin leider zu doof dafür... (CUxD läuft schon; wenn ich das richtig verstanden habe, ist das für das HTML-Framework erforderlich).

Code: Alles auswählen

$username = 'xyz'; 
$password = 'xyz';

$url = 'http://<...>.html?USERNAME='.$username.'&PASSWORD='.$password;
preg_match('/([A-Za-z0-9]{6})/', file_get_contents($url), $cookie);

$url = 'http://<...>.html';
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_HTTPHEADER, array("Cookie: SessionCookie=".$cookie[1]));
curl_exec($ch);
curl_close($ch);
Wichtig für die gewünschte Funktionalität sind
  • cURL oder etwas ähnliches mit der Möglichkeit http-requests mit modifizierten Headern durchzuführen
  • preg_match oder etwas vergleichbares
Danke vorab!

hobbyquaker
Beiträge: 3978
Registriert: 12.07.2009, 20:01
Hat sich bedankt: 17 Mal
Danksagung erhalten: 176 Mal
Kontaktdaten:

Re: PHP-Script mit cURL in HomeMatic Scriptsprache übersetze

Beitrag von hobbyquaker » 11.10.2017, 20:53

Von Haus aus ist Curl auf der CCU nicht vorhanden, aber der CUxD bringt Curl mit. Die Homematic Scriptsprache unterstützt (noch?) keine Regulären Ausdrücke, hier müsstest Du wohl auf ein TCL Script oder auf die Nutzung von sed oder awk in einem Shellscript ausweichen.
Machbar ist es denke ich das mit der CCU zu erledigen. Wenn Du allerdings ein 24/7 laufenden anderen Rechner (Pi, Serverchen, NAS oder so) in Betrieb hast würde ich eher empfehlen es nicht auf der CCU zu machen, ist glaube ich einfacher.

Wookbert
Beiträge: 224
Registriert: 10.05.2013, 18:40
Hat sich bedankt: 3 Mal
Danksagung erhalten: 1 Mal

Re: PHP-Script mit cURL in HomeMatic Scriptsprache übersetze

Beitrag von Wookbert » 11.10.2017, 20:58

hobbyquaker hat geschrieben:Machbar ist es denke ich das mit der CCU zu erledigen. Wenn Du allerdings ein 24/7 laufenden anderen Rechner (Pi, Serverchen, NAS oder so) in Betrieb hast würde ich eher empfehlen es nicht auf der CCU zu machen, ist glaube ich einfacher.
Der Pi auf dem die RaspberryMatic selbst läuft ist 24/7 an. Die Frage ist, wie man die php-Seiten da am geschicktesten ablegt, so daß Sie im einerseits LAN zur Verfügung stehen und andererseits — ganz wichtig — die RaspberryMatic Updates überstehen. Wenn ich nach jedem Update da erst noch die php-Files wieder draufschieben und einrichten muss, wäre das etwas nervig.

hobbyquaker
Beiträge: 3978
Registriert: 12.07.2009, 20:01
Hat sich bedankt: 17 Mal
Danksagung erhalten: 176 Mal
Kontaktdaten:

Re: PHP-Script mit cURL in HomeMatic Scriptsprache übersetze

Beitrag von hobbyquaker » 11.10.2017, 21:00

Puh, da bin ich überfragt, hab keinerlei Erfahrung mit RaspberryMatic... Vielleicht stellst die Frage wie man es "Update-fest" hinbekommt nochmal im RaspberryMatic Forum -> viewforum.php?f=65
Edit: Vermutung: ich denke was in /www/addons oder /usr/local/addons abgelegt wird sollte auch Updates überstehen, jedenfalls tut es das bei einer "normalen" CCU.
Zuletzt geändert von hobbyquaker am 11.10.2017, 21:04, insgesamt 3-mal geändert.
Grund: noch eine ergänzung

Wookbert
Beiträge: 224
Registriert: 10.05.2013, 18:40
Hat sich bedankt: 3 Mal
Danksagung erhalten: 1 Mal

Re: PHP-Script mit cURL in HomeMatic Scriptsprache übersetze

Beitrag von Wookbert » 11.10.2017, 21:02

Das wäre nach meinem Verständnis eben der Vorteil, wenn man es ins CCU-WebUI per Script implementiert bekäme. Da muss man ja eh (noch) vor dem RaspberryMatic Update ein Backup der CCU-Einstellungen machen, die man anschließend wieder einspielt.

Wookbert
Beiträge: 224
Registriert: 10.05.2013, 18:40
Hat sich bedankt: 3 Mal
Danksagung erhalten: 1 Mal

PHP-Script mit cURL in HomeMatic Scriptsprache übersetzen?

Beitrag von Wookbert » 13.10.2017, 14:24

Gibt es die Möglichkeit folgendes PHP-Script als HomeMatic-Script zu programmieren? Falls ja, kann mir das jemand übersetzen? Ich selbst bin leider zu doof dafür... (CUxD läuft schon; wenn ich das richtig verstanden habe, ist das für das HTML-Framework erforderlich).

Code: Alles auswählen

$username = 'xyz'; 
$password = 'xyz';

$url = 'http://<...>.html?USERNAME='.$username.'&PASSWORD='.$password;
preg_match('/([A-Za-z0-9]{6})/', file_get_contents($url), $cookie);

$url = 'http://<...>.html';
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_HTTPHEADER, array("Cookie: SessionCookie=".$cookie[1]));
curl_exec($ch);
curl_close($ch);
Wichtig für die gewünschte Funktionalität sind
  • cURL oder etwas ähnliches mit der Möglichkeit http-requests mit modifizierten Headern durchzuführen
  • preg_match oder etwas vergleichbares
Danke vorab!

Wookbert
Beiträge: 224
Registriert: 10.05.2013, 18:40
Hat sich bedankt: 3 Mal
Danksagung erhalten: 1 Mal

Re: PHP-Script mit cURL in HomeMatic Scriptsprache übersetze

Beitrag von Wookbert » 13.10.2017, 15:23

Danke für den Link, ich hätte meinen eigenes Topic kaum wiedergefunden (Sarkasmusmodus AUS).

Die Fragen, die ich mir gestellt habe: In welcher Kategorie poste ich die Frage am besten und erreiche ich die Personen, die es wissen könnten. Nachdem der Post in der CCU-Kategorie quasi keine Beachtung gefunden hat, dachte ich, ich versuche es hier nochmal.

Und, und, und... Shitstorm?

Benutzeravatar
uwe111
Beiträge: 4822
Registriert: 26.02.2011, 22:22
Hat sich bedankt: 3 Mal
Danksagung erhalten: 246 Mal
Kontaktdaten:

Re: PHP-Script mit cURL in HomeMatic Scriptsprache übersetze

Beitrag von uwe111 » 13.10.2017, 16:09

Wookbert hat geschrieben:Und, und, und... Shitstorm?
Ich habe mal beide Themen zusammengeführt und in den Entwicklungsbereich geschoben.

Viele Grüße

Uwe
Alle sagten: Das geht nicht. Dann kam einer, der wußte das nicht und hat's einfach gemacht.
SPENDEN :wink: Download: CUxD 2.11, SSH KeyDir

Wookbert
Beiträge: 224
Registriert: 10.05.2013, 18:40
Hat sich bedankt: 3 Mal
Danksagung erhalten: 1 Mal

Re: PHP-Script mit cURL in HomeMatic Scriptsprache übersetze

Beitrag von Wookbert » 15.10.2017, 23:40

Wir haben das PHP-Script jetzt in ein Bash-Skript umgeschrieben:

Code: Alles auswählen

#!/bin/bash

username='user'
password='password'
nas_ip='x.x.x.x'
power_cmd='on' #an
#-----------------------------------------------------------------------------
# urlencode() 

rawurlencode() {
  local string="${1}"
  local strlen=${#string}
  local encoded=""
  local pos c o

  for (( pos=0 ; pos<strlen ; pos++ )); do
     c=${string:$pos:1}
     case "$c" in
        [-_.~a-zA-Z0-9] ) o="${c}" ;;
        * )               printf -v o '%%%02x' "'$c"
     esac
     encoded+="${o}"
  done
  echo "${encoded}"    # You can either set a return variable (FASTER) 
  REPLY="${encoded}"   #+or echo the result (EASIER)... or both... :p
}

password_enc=$(rawurlencode $password)
#-----------------------------------------------------------------------------

# wget Parameter
#
# -T : timeout in Sekunden
# -t : Anzahl retries
# -q : quiet
# -O : output, "-" heißt stdout
#-----------------------------------------------------------------------------

url1="http://$nas_ip/websession/create.asp?USERNAME=$username&PASSWORD=$password_enc"
result1="`wget -T 2 -t 2 -q -O- $url1 | grep SESSION_COOKIE`"
cookie=${result1:23:35}
url2="http://$nas_ip/hostctl.asp?POWER_CMD=$power_cmd"
result2="`wget -T 2 -t 2 -q -O- --header=\"Cookie: SessionCookie=$cookie\" $url2`"
Eine Möglichkeit ist, das Skript irgendwo auf der RaspberryMatic abzulegen und so wie ich es verstehe, per system.Exec("/pfad/zu/meinem/tollen/script.sh") abzufeuern.

Frage: Kann man dieses bash-Script auch Zeile für Zeile in HomeMatic-Script schreiben oder irgendwie mit CUxD erschlagen, so daß es automatisch beim HomeMatic-Backup erfasst wird? Falls ja, wie?

Ich hoffe uns kann jemand helfen, wir kommen sonst als HomeMatic-Neulinge leider nicht weiter. Danke vorab!

Wookbert
Beiträge: 224
Registriert: 10.05.2013, 18:40
Hat sich bedankt: 3 Mal
Danksagung erhalten: 1 Mal

Re: PHP-Script mit cURL in HomeMatic Scriptsprache übersetze

Beitrag von Wookbert » 17.10.2017, 15:49

Warum muss man sich in solchen Foren eigentlich immer rechtfertigen? Ich bin kein Desinteressierter, sondern ein Vielinteressierter, der deshalb Dutzende Baustellen an der Backe und eine Aufgabenliste vor sich hat, die von hier bis Kapstadt reicht. Und dazu noch ’ne Firma, um die ich mich auch zu wenig kümmere.

Hinzu kommt, daß HM ja abseits von Direktverknüpfungen und simplen, zusammengeklickten Programmen, alles andere als trivial ist. Ich habe hier auch schon nach Hilfe gegen Bezahlung gesucht, aber auch das endete erfolglos, wenn ich mich richtig erinnere, mit vergleichbar nutzlosen, wenig konstruktiven Kommentaren.

Entschuldigung also, daß ich nach Hilfe hinsichtlich dieses Skriptes frage.

Hat noch jemand einen brauchbaren Tipp oder eine ganz konkrete Lösung? Ich habe die schlappen 300.000 Beiträge hier schon mit den entsprechenden Such-Begriffen durchforstet, aber finde nichts wo es bei mir "klick" machen würde. Setze ich das in CUxD oder in HM SKript um? Wenn ja, wie?

Antworten

Zurück zu „Softwareentwicklung für die HomeMatic CCU“