Ich wollte die Systemtempearatur vom Raspi per Script auslesen und in eine Systemvariable schreiben.
Folgendes Eventscript habe ich angelegt:
[code]#!/usr/bin/env php
<?php
$event = array(
"TYPE" => 1,
"ID" => "Rpi Temperature",
"EVENTTIME" => 0,
"RECUREVERY" => 60,
"EVENTMETHOD" => runScript,
"EVENTMETHODPARAMS" => Array(true, "rbptemp.sh", true));
hg_set_system("RPI_TEMP", $event);
[/code]
Und so sieht das aufzurufende Script aus :
[code]#!/bin/bash
INPUT=$(/bin/cat /sys/class/thermal/thermal_zone0/temp)
echo $INPUT/1000 |bc -l| python -c "print round(float(raw_input()),2)"
[/code]
Bitte habt ein wenig Einsehen mit mir ich bin Anfänger was das Scripten angeht.
Scheinbar wird nichts in die Variable geschrieben, das Script meldet sich bei Aufruf per homegear -e mit Exitcode 0
Vielen Dank im Voraus
Gruß
Stefan
Ja ich benutze hier V0.5 … habe ich vergessen zu schreiben.
Ich habe die Scripte so angelegt und ausgeführt …
Bei RaspiTemperature.php steht folgendes im Log:
10/14/15 16:57:42.610 Script output: #!/usr/bin/env php
10/14/15 16:57:42.612 Script output: Warning: include(): IO error while importing: 'Connect.php'
10/14/15 16:57:42.614 Script output: Warning: Call to undefined function 'system',NULL will be returned
10/14/15 16:57:42.616 Script output: Error: '->': Expecting class instance as left operand,PH7 is loading NULL
10/14/15 16:57:42.617 Script output: Warning: Invalid function name,NULL will be returned
10/14/15 16:57:42.619 Script output:
Bei CreateTemperatureEvent.php kommt :
10/14/15 17:05:34.566 Info: CLI connection accepted. Client number: 61598
10/14/15 17:05:34.585 Script output: #!/usr/bin/env php
10/14/15 17:05:34.586 Script output: Warning: include(): IO error while importing: 'Connect.php'
10/14/15 17:05:34.588 Script output: Error: '->': Expecting class instance as left operand,PH7 is loading NULL
10/14/15 17:05:34.590 Script output: Warning: Invalid function name,NULL will be returned
10/14/15 17:05:34.592 Script output:
10/14/15 17:05:34.593 Script output: Error: '->': Expecting class instance as left operand,PH7 is loading NULL
10/14/15 17:05:34.595 Script output: Warning: Invalid function name,NULL will be returned
10/14/15 17:05:34.596 Script output:
Ich denke das Grundproblem wird das nicht finden von Connect.php sein … nur woran liegt es ?
Die Datei ist vorhanden und hat chmod 550, der Besitzer ist homegear:homegear
steht bei dir "EVENTMETHODPARAMS" => Array(false, "RaspiTemperature.php", true)))));?
Homegear verwendet die interne Skriptengine. Damit funktioniert das in Version 0.5 nicht (in 0.6 schon, dann auch ohne die XMLRPC-Klasse). Auch die Skripts nicht über “homegear -e rs” bzw. “homegear -e runscript” ausführen, sondern direkt aufrufen. Dann sollte es klappen .
Beim direkten ausführen kam erst was von wegen php nicht gefunden.
Also php5 nachinstalliert, weil es nicht installiert war
Jetzt kommt folgende Meldung beim Aufrufen von RaspiTemperature.php :
root@openhabpi:/var/lib/homegear/scripts# ./RaspiTemperature.php
44388
PHP Fatal error: Call to undefined function XMLRPC\xmlrpc_encode_request() in /var/lib/homegear/scripts/HM-XMLRPC-Client/Client.php on line 227
bei CreateTemperatureEvent.php :
root@openhabpi:/var/lib/homegear/scripts# ./CreateTemperatureEvent.php
PHP Fatal error: Call to undefined function XMLRPC\xmlrpc_encode_request() in /var/lib/homegear/scripts/HM-XMLRPC-Client/Client.php on line 227
kannst du die geschriebene Temperatur wieder auslesen. Die Ausgabe, die du siehst, ist nur der Inhalt von “/sys/class/thermal/thermal_zone0/temp”. Der geschriebene Wert ist durch 1000 geteilt und auf zwei Nachkommastellen gerunden. Der Wert der Systemvariablen sollte jetzt auch alle 60 Sekunden aktualisiert werden.
Stimmt. Das spielt aber keine Rolle mehr, da in Homegear 0.6 vollwertiges PHP als Skriptengine eingebaut ist. Damit entfällt die Notwendigkeit der Nutzung der XMLRPC-Schnittstelle.
Wir sind zwar schon sehr weit, aber die Vergangenheit zeigt, dass ich mit Terminen lieber vorsichtig sein sollte . Es hängt viel davon ab, wieviel Freizeit ich zur Verfügung habe.
Seit dem letzten Update von Rasbian hat sich auch Homegear auf Version 0.6.7 installiert.
Jetzt läuft das Script zum Auslesen der RPI Temperature nicht mehr.
Als Fehlermeldung taucht im homegear.err folgendes auf:
Could not execute RPC method “runscript” for event “Rpi Temperature”. Error struct:
genau, da hat sich ein bisschen was getan in Homegear. Ich würde auch empfehlen, nicht mehr die Client-Bibliothek zu verwenden, da die Skriptausführung ohne diese effizienter ist. Dein Skript sieht dann so aus: