Benötige Hilfe bei einfachem Anfänger Script

Hallo Forum,

ich nutzte ein raspberry pi 2, habe auf diesem Openhab und homegear installiert.
Die Funkverbindung baue ich via Pollin CC1101 via SPI auf, was auch zu gehen scheint :

Auszug aus dem homegearLog

[quote]07/09/15 15:14:24.926 HomeMatic BidCoS packet received (My-CUL, RSSI: 0x4F): 0F8B861022DFE90000000A24DD0C0050
07/09/15 15:14:58.186 HomeMatic BidCoS packet received (My-CUL, RSSI: 0x28): 0C63B0111F786422DF95860409
07/09/15 15:14:58.317 HomeMatic BidCoS packet received (My-CUL, RSSI: 0x4B): 0F63800222DF951F7864010409082F4F
07/09/15 15:14:58.815 HomeMatic BidCoS packet received (My-CUL, RSSI: 0x28): 0C17B0111F786422DFE9860409[/quote]

via Shell sind folgende Homaticgeräte eingebunden


Das sind 1) ein Funkfensterkontakt 2) eine Zwischensteckdose und 3) ein 4 Kanal Handfunksender.

Nun möchte ich, um mich einfach an homegear ran zu tasten einfach aus der Konsole heraus eine php script starten um beispielsweise
die Steckdose ein bzw aus zu schalten.

Irgendwie raf ich die Zusammenhänge noch nicht.

Starte ich aus via homegear -e rs Test.php ( ich musste die dateiendung von php auf txt ändern, damit ich diese hier hochladen konnte)
Test.txt (2.13 KB)

erfolgt im logfile, folgendes Ergebnis:

[quote]07/09/15 15:30:46.815 HomeMatic BidCoS packet received (My-CUL, RSSI: 0x2A): 0F03861022DF640000000AB8F40A5658
07/09/15 15:30:48.915 Script output: #!/usr/bin/env php[/quote]

Die Steckdose wird nicht geschaltet :confused:

Ich habe auch versucht via CreateEvent.php, via dem Handfunksender zu schalten, gleiches Ergebnis.
CreateEvent.txt (2.14 KB)

ich werde das Gefühl nicht los, dass ich irgend eine Kleinigkeit übersehen habe, nur welche ???

Wer kann helfen, bin über jeden Ansatz SEHR DANKBAR

Gruß Achim

Hallo Achim,

falls du die Skript-Engine verwenden möchtest und dies nicht bereits tust, empfehle ich die Installation von Homegear 0.6. Besonders die Skriptengine funktioniert in der neuen Version dank der Verwendung von “echtem” PHP deutlich besser.

Wenn du Homegear aus der Konsole heraus starten möchtest, ist der obere Teil im Skript entscheidend. Der untere Teil nutzt die XML-RPC-Schnittstelle. Die hat den Vorteil, dass sie sich auch von einem anderen Rechner aus übers Netzwerk nutzen lässt. Wenn du ins Skript also folgendes schreibst:

<?php
hg_set_value(2, 1, "STATE", true);
sleep(5);
hg_set_value(2, 1, "STATE", false);
?>

Sollte es über die interne Skriptengine klappen. Sowohl der Fensterkontakt als auch der Funksender lassen sich nicht über “STATE” schalten. Für das CreateEvent-Skript gilt analog:

<?php
hg_invoke("addEvent", array(
  "TYPE" => 0,
  "ID" => "Switch Switching",
  "PEERID" => 3,
  "PEERCHANNEL" => 1,
  "VARIABLE" => "PRESS_SHORT",
  "TRIGGER" => 8,
  "TRIGGERVALUE" => true,
  "EVENTMETHOD" => "setValue",
  "EVENTMETHODPARAMS" => Array(2, 1, "STATE", true)
));
?>

Deine Skripte funktionieren auch bereits, nur nicht über die interne Skriptengine, da der “else”-Block nicht erreicht wird. Sie ließen sich aber direkt über PHP ausführen also z. B. “php /var/lib/homegear/scripts/Test.php” (php-cli muss dafür installiert sein [apt-get install php-cli]). Die interne Skriptengine ist aufgrund der deutlich höheren Geschwindigkeit aber zu bevorzugen.

Viele Grüße

Sathya

Hallo Sathya,

vielen Dank für deinen prompten Support. :wink:
Ich setze mich gleich mal ran und gebe dir zeitnah eine Rückmeldung.

Viele Grüße
Achim

Hallo Sathya,

ich habe gerade “php /var/lib/homegear/scripts/Test.php” ausgeführt und erhalten folgende Rückmeldung:


Die Steckdose hat nicht geschaltet !

p.s. ich habe nochmals folgendes ausgeführt:

[quote]wget homegear.eu/packages/Release.key && apt-key add Release.key && rm Release.key
echo ‘deb homegear.eu/packages/Raspbian/ wheezy/’ >> /etc/apt/sources.list.d/homegear.list
apt-get update
apt-get install homegear[/quote]

und bekomme die Rückmeldung, das bereits die aktuellste Version installiert ist. ( ich denke es die 5.xx )

Hast du eine Idee wo obiger Fehler her zuführen ist?

Viele Grüße Achim

p.s.( Wie kann ich feststellen ob überhaupt gesendet wird, kannst du einen Sniffer empfehlen)

Hallo Achim,

da Version 0.6 noch nicht als “stable” deklariert ist (es fehlen dafür noch ein paar Features), kannst du sie nicht über apt installieren, sondern müsstest die Pakete manuell von der Homegear-seite runterladen und mit “dpkg -i” installieren.

Die Skriptausgabe zeigt ja schon einmal eine erfolgreiche Ausführung. Es geht nicht, weil tatsächlich keine Variable “STATE” existiert (da habe ich geschlafen). Für einen Dimmer heißt die Variable “LEVEL” passe dein Skript also wie folgt an:

<?php
hg_set_value(2, 1, "LEVEL", 1.0);
sleep(5);
hg_set_value(2, 1, "LEVEL", 0.5);
sleep(5);
hg_set_value(2, 1, "LEVEL", 0.0);
?>

Das sollte jetzt aber klappen :wink:.

Viele Grüße

Sathya

Guten Morgen Sathya,

vielen Dank für Deine Rückantwort. Habe das Sript entsprechend geändert und ES GEHT !

Perfekt :wink:

Habe auch sogleich die CreateEvent.php angepasst, nur die läuft nicht.

CreateEvent.txt (2.14 KB)

Wenn Du mir hier nochmals kurz auf die Sprünge helfen könntest. Man selbst hängt immer stundenlang an der Fehlersuche und jemand erfahrender
sieht die Fehler sofort.

Die Anbindung zu Openhab scheint reibungslos zu verlaufen. Ich denke ich kann das auch von dort aus gut handeln, wäre nur schön zu mehr von homegear zu verstehen.

Viele Grüße Achim

Hallo Achim,

das CreateEvent-Skript kannst du so nicht über die interne Skriptengine ausführen (in Homegear 0.6 ginge es prinzipiell, wenn du die if-Abfrage entferntest, aber das ist an dieser Stelle egal). Das Skript nutzt die XMLRPC-Schnittstellt, d. h. führe es direkt über die Konsole (also bash, nicht das Homegear-CLI) aus mit

So sollte es jetzt eigentlich klappen?

Wichtig zu verstehen ist, dass du mit PHP auf zwei Arten auf Homegear zugreifen kannst:

[ul]
[li] Von außen über XMLRPC. Das übernimmt include_once(“Connect.php”); im unteren Teil des Demoskripts. Anschließénd kannst du über $Client->send(…) Befehle ausführen. Dieser Weg funktioniert auch von einem anderen Computer und sogar bei Bedarf SSL-verschlüsselt.[/li]
[li] Über die interne Skriptengine. Der Teil ist im oberen Teil des Demoskripts. Interne Skripte kannst du über die XMLRPC-Methode “runScript”, über die Konsole mittels “homegear -e rs” oder in der CLI über “rs” aufrufen.[/li][/ul]

Insgesamt sollte falls möglich immer die interne Skriptengine genutzt werden, da diese am performantesten ist.

Viele Grüße

Sathya