[Frage] SensorAndSwitch: Raspberry: Bitte um Hilfe bei Pseudoscript-Erstellung

HarryHase

Mitglied
Mitglied seit
16 Feb 2006
Beiträge
657
Punkte für Reaktionen
34
Punkte
28
so wie es einige Informationen auf der Fritz!Box gibt ist das bei raspberry natürlich auch möglich

Der Befehle dazu lautet:

Die Temperatur lässt sich über die Shell ganz einfach und schnell über folgendes Kommando auslesen:
Code:
vcgencmd measure_temp
Zurückgegeben wird z.B. folgendes: temp=47.6'C

Mit vcgencmd kann man übrigens nicht nur die Temperatur der CPU, sondern auch Spannung und Takt auslesen:

Code:
vcgencmd measure_volts
Bzw.
Code:
vcgencmd measure_clock arm
Wie müsste man das script von der fritte ändern?

PHP:
<?php
error_reporting(1);
$Status = system("/usr/bin/ctlmgr_ctl r power status/act_temperature");
header("Content-Type: text/plain");
echo "T";
if ($Status) {
echo "#".$Status."#";
}
else {
echo "E#";
}
exit;
?>
 
Zuletzt bearbeitet:
In welchem Verzeichnis ist der Befehl vcgencmd, denn es muss der komplette Pfad angegeben werden.

ansonsten:

Code:
<?php
error_reporting(1);
$Status = shell_exec("/[COLOR="#0000FF"][B][PfadZumBefehl][/B][/COLOR]/vcgencmd measure_temp");
header("Content-Type: text/plain");
if ($Status) {
echo "T#".trim(Status)."#";
}
else {
echo "T##E##";
}
exit;
?>

das //EOF gehört nicht in ein PHP-Script. Das ist Shell-Script-Sprache.
 
.................
 

Anhänge

  • Unbenannt.JPG
    Unbenannt.JPG
    16.6 KB · Aufrufe: 38
Zuletzt bearbeitet:
www-User ist nicht root und darf nicht zugreifen.

Das Problem gabs mit apache auch bei der Fritzbox.

Nachtrag: du musst dem Webserveruser, wie immer der heißen mag, einem root gleichstellen.
 
Zuletzt bearbeitet:
ich habe meine Nachricht noch mal gelöscht, da ich noch einen Fehler drin hatte, glaube nicht das es daran liegt, darf ich als normaler user auch auch ausführen!

Code:
pi@raspberrypi /var/www $  /usr/bin/vcgencmd measure_temp
temp=55.7'C
pi@raspberrypi /var/www $

liegt es an der Antwort mit temp= ... ??
 
ja, da musst du substr(trim($Status),5) benutzen:

Code:
echo "T#".substr(trim(Status),5)."#";
 
ups, jetzt ist die ganze zeile im SaS weg ..
 
Sorry, Tippfehler:

Code:
echo "T#".substr(trim([B][COLOR="#008000"]$[/COLOR][/B]Status),5)."#";
 
ich verstehe es nicht ...

Code:
<?php
error_reporting(1);
$Status = shell_exec("/usr/bin/vcgencmd measure_temp");
header("Content-Type: text/plain");
if ($Status) {
echo "T#".substr(trim($Status),5)."#";
}
else {
echo "T##E##";
}
exit;
?>

liefert die Temperatur 0.0°C
(das könnte was mit den Rechten sein)

---
Baue ich ein sudo ein was problemlos in der console geht (keine Passwortabfrage in der console)

Code:
<?php
error_reporting(1);
$Status = shell_exec("sudo /usr/bin/vcgencmd measure_temp");
header("Content-Type: text/plain");
if ($Status) {
echo "T#".substr(trim($Status),5)."#";
}
else {
echo "T##E##";
}
exit;
?>

dann steht hinten weder das Thermometer noch Zahlen noch °C


????


egal, ich warte mal bis Deine Himbeere in Betrieb ist ...
 
Wenn ich die (ich denke nächstes Wochenende) habe, muss ich wahrscheinlich erst dich fragen, wie du Webserver etc. drauf gemacht hast. Wäre prima, wenn du mir da Tipps geben könntest. Nicht dass ich da ganz von vorn mich durcharbeiten muss. Danach schaun wir mal, dass das Script von hier läuft. Ginge das? :)
 
ja, aber sicher doch, machen wir einen thread für auf: SaS Installation auf der Himbeere ;)
 
Moin

Hier ein kleines Beispiel mit RE:
Code:
/usr/bin/vcgencmd measure_temp|grep -o -E "[0-9,.]{1,4}"
...dann mal ins PHP einbauen...
PHP:
$Status = system('/usr/bin/vcgencmd measure_temp|grep -o -E "[0-9,.]{1,4}"');
...oder...
PHP:
$Status = shell_exec('/usr/bin/vcgencmd measure_temp|grep -o -E "[0-9,.]{1,4}"');
 
Zuletzt bearbeitet:
Ich bastle an einer neuen Idee für sas. Und zwar sas-helper.php. Nicht mehr sas greift auf die Systemfunktionen zu, sondern ein cron php-Script, welches im Webbereich eine xml o. ä. schreibt. Dies kann dann sas lesen. Ähnlich der Methode, die die FB mit den DECT200 macht. :) Ist noch Alpha-Status, wird aber zu den PseudoGeräten noch als nächste Möglichkeit dazu kommen. ;)
 
ich verstehe es nicht ...

Code:
<?php
error_reporting(1);
$Status = shell_exec("/usr/bin/vcgencmd measure_temp");
header("Content-Type: text/plain");
if ($Status) {
echo "T#".substr(trim($Status),5)."#";
}
else {
echo "T##E##";
}
exit;
?>

liefert die Temperatur 0.0°C
(das könnte was mit den Rechten sein)
...
Okay, das Problem ist einfach zu lösen.

Sudo-Rechte fürs Web:

Code:
nano /etc/sudoers

Code:
#includedir /etc/sudoers.d
...
[COLOR="#008000"]www-data ALL=(ALL) NOPASSWD: ALL[/COLOR]

Grüne Zeile hinzufügen, abspeichern und rebooten. Mit

pseudocputemp.php
PHP:
<?php

	/*
		+---------------------------------------------------------------------+
		|                                                                     |
		|   SensorAndSwitch Automation Pro                                    |
		|   PseudoGeräte-Script                                               |
		|   ===============================================================   |
		|   RaspberryPI                                                       |
		|   -> CPUTemp                                                        |
		|                                                                     |
		|      Um das Script den Zugriff als www-data auf dem PI zu erlauben, |
		|      muss mit                                                       |
		|                nano /etc/sudoers                                    |
		|      folgender Eintrag am Ende unter                                |
		|                #includedir /etc/sudoers.d                           |
		|                www-data ALL=(ALL) NOPASSWD: ALL                     |
		|      Datei speichern und PI mit reboot neu starten. Danach darf     |
		|      der www-data mit sudo auf Betriebssystembefehle zugreifen.     |
		|                                                                     |
		+---------------------------------------------------------------------+
	*/

	error_reporting(0);
	$Status = shell_exec('sudo /usr/bin/vcgencmd measure_temp');
	if ($Status) {
		echo "T#".(substr($Status,5)*1)."#";
	}
	else {
		echo "T##E##";
	}
	exit;
	
?>
liest er dann brav die Temperatur. :)
 
Zuletzt bearbeitet:
Es gibt jetzt ein komplettes HowTo der RaspberryPI-Installation vom Betriebssystem Installieren bis zum SAS im SensorAndSwitch Web.

Darin wird Schritt für Schritt aufgezeigt, wie man seinen frisch gekauften RaspberryPI nach dem Zusammenbau mit der richtigen Software versorgt, um daraus einen SAS-Server für die Hausautomation zu basteln. Danach beinhaltet er einen Apache2-Server mit PHP5 und CURL, sowie WLAN-Anbindung und SAMBA für die Windows-Netzwerkfreigabe. Ebenfalls hat man danach vollen Zugriff per SAS auf die internen Sensoren des PI, da auch beschrieben wird, wie man dem www-data Zugriffe aufs System gestatten kann.
 
Zuletzt bearbeitet:
^... Ebenfalls hat man danach vollen Zugriff per SAS auf die internen Sensoren des PI, da auch beschrieben wird, wie man dem www-data Zugriffe aufs System gestatten kann.


irgendwie blicke ich nicht wo das steht und was ich machen muss ...
 
Du musst per Putty auf den PI und dort als root oder per sudo enfach nano /etc/sudoers und dort die Zeile www-data ALL=(ALL) NOPASSWD: ALL als letzte Zeile anfügen. Speichern, reboot, fertig.
Und im PseudoGeräte-Script jeden Befehl mit sudo starten. :)

Post #14

rasppicputemp.png

Wo die Vorgehensweite im SAS-Web steht: Installation - RaspberryPI - Befehlsrechte für www-data (weit unten)
 
Zuletzt bearbeitet:
hallo,

habe Heute meinen Raspberry bekommen.

nach der Anleiting im SAS Web installiert.

keine größeren Probleme, es dauert nur etwas bis alles durch ist.

meine kleinen Probleme:

bei
Expand Filesystem auswählen und aufrufen tut sich nichts bei mir!

Change Timezone auswählen und aufrufen war beim ersten Durchgang nicht vorhanden, ganz am Ende nochmal die Config aufgerufen und dann war es da.

wenn ich Netzwerk auf staitic stelle hat er den Mirrorserver von Rasbian.org nicht gefunden!

der Befehl
nano /etc/apache2/sites-enabled/000-default
ist 2x in der Anleitung, sollte beim 2. mal eventuell was anderes stehen?

Samba ist nicht sofort gelaufen, erst als ich workgroup = BLUENET abgeändert habe. (BLUENET mit meiner Arbeitsgruppe ersetzt).

in der shstart.sh hast du das Verzeichnis sensorandswitch mit drin,
cd /var/www/sensorandswitch
php -f /var/www/sensorandswitch/sensorandswitchautopro.php

ist das richtig? wenn ja müsste dann das Verzeichnis nicht auch in WWW angelegt werden.

Usb-Stick wird bei mir keiner erkannt, weder mit Fat32 noch mit ext3.
da fehlt sicher noch was!

aber ansonsten, wie gesagt keine größeren Probleme, Super!
 
looool :lach:

...da wird sich JL3 über diese Rückmeldung aber freuen.
 
Holen Sie sich 3CX - völlig kostenlos!
Verbinden Sie Ihr Team und Ihre Kunden Telefonie Livechat Videokonferenzen

Gehostet oder selbst-verwaltet. Für bis zu 10 Nutzer dauerhaft kostenlos. Keine Kreditkartendetails erforderlich. Ohne Risiko testen.

3CX
Für diese E-Mail-Adresse besteht bereits ein 3CX-Konto. Sie werden zum Kundenportal weitergeleitet, wo Sie sich anmelden oder Ihr Passwort zurücksetzen können, falls Sie dieses vergessen haben.