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

Noch ein Bonbon: FritzDECT200-Werte in Pseudoscripts kann man so erlangen, ohne dass man was dafür "tun" muss:

Code:
[COLOR="#008000"]	include "include/includefritzbox.php";
	fritzboxGeraete();
	$Name="CZ-RaspPIauto"; # als Beispiel, das ist der Gerätename
	foreach ($GerListARR as $nr => $GerInfo) {
		if (strtoupper(trim($Name))==strtoupper(trim($GerInfo["Name"]))) {
			if ($GerInfo["NoAuto"]=="1") {
				$Name="display".$Name;
			}
[/COLOR]			# Hier ggf. die Variablen retten, die man möchte (muss man nur, wenn man danach 
			# eine andere Geräteinfo noch abfragen möchte
[COLOR="#800080"]			$Watt=$GerInfo["Watt"];
			$Energie=$GerInfo["Energie"];
			.
			.
			.
			[/COLOR][COLOR="#008000"]break;
		}
	}
[/COLOR]
Die Werte sind dann in den Variablen:

$GerInfo["Typ"]
$GerInfo["Aktiv"]
$GerInfo["Name"]
$GerInfo["ID"]
$GerInfo["AIN"]
$GerInfo["FBITP"]
$GerInfo["PSensor"][0]
$GerInfo["PSensor"][1]
$GerInfo["FBIT7"]
$GerInfo["FBIT8"]
$GerInfo["FBIT9"]
$GerInfo["FBIT10"]
$GerInfo["Firma"]
$GerInfo["Produkt"]
$GerInfo["FWV"]
$GerInfo["Temp"]
$GerInfo["TempK"]
$GerInfo["Watt"]
$GerInfo["Energie"]
$GerInfo["Schalter"]
$GerInfo["Mode"]
$GerInfo["Lock"]
$GerInfo["Members"]
$GerInfo["MemberOf"]
$GerInfo["FBCMD"]
 
Zuletzt bearbeitet:
bin zu dumm, um selbst das zu erstellen.

wie wäre es mit einem Beispiel?

wenn ich den Anfang mal hab, kann ich eventuell selbst ändern, erweitern.

ein Pseudoscript, welche von 2 Fritz!Dect Dosen die Temperatur und Watt ausliest.
nur als Pseudosensor nicht zum schalten.

möchte die Werte gerne auf der Anzeige haben, dürften aber nie ausgeschaltet werden, deshalb nur als Sensor!

ich komme bei dieser Zeile nicht weiter: fritzboxGeraete();
wenn ich das einbaue geht nichts mehr!
 
Moin

Probier das mal im SaS Verzeichnis...
test.php
PHP:
<?PHP
include "include/includeconf.php";
include "include/includeconfig.php";
include "include/includefunctions.php";
include "include/includedefine.php";
include "include/includefritzbox.php";
fritzboxGeraete();
print_r($GerInfo);
?>
...auf der Konsole ausführen mit...
Code:
php-cgi -f test.php
 
Codeschnipsel:

Code:
	.
	.
	.
	include "include/includefritzbox.php";
	fritzboxGeraete();
	$Name="[COLOR="#0000FF"]CZ-RaspPIauto[/COLOR]"; #Name der 1. Dose
	foreach ($GerListARR as $nr => [B][COLOR="#8B4513"]$GerInfo[/COLOR][/B]) {
		if (strtoupper(trim($Name))==strtoupper(trim($GerInfo["Name"]))) {
			if ($GerInfo["NoAuto"]=="1") {
				$Name="display".$Name;
			}
			#Hier die Variablen retten, die man möchte
[COLOR="#B22222"]			$Watt1=$GerInfo["Watt"];
			$Energie1=$GerInfo["Energie"];
[/COLOR]			break;
		}
	}
	$Name="[COLOR="#0000FF"]FX-Dose[/COLOR]"; #Name der 2. Dose
	foreach ($GerListARR as $nr => [B][COLOR="#8B4513"]$GerInfo[/COLOR][/B]) {
		if (strtoupper(trim($Name))==strtoupper(trim($GerInfo["Name"]))) {
			if ($GerInfo["NoAuto"]=="1") {
				$Name="display".$Name;
			}
			#Hier die Variablen retten, die man möchte
[COLOR="#B22222"]			$Watt2=$GerInfo["Watt"];
			$Energie2=$GerInfo["Energie"];
[/COLOR]			break;
		}
	}
	#Nun sind alle Werte ausgelesen und weiter gehts mit P# zum Darstellen...
	.
	.
	.

Die $GerInfo-Variablen müssen durch eine foreach-Schleife erst mit den richtigen Gerätewerten befüllt werden.

Sorry, habe ich oben vergessen, es deutlicher zu machen, dass durch die Schleife erst alle Geräteinformationen nach dem betreffenden Gerät (Gerätenamen) durchsucht werden müssen, sodass $GerInfo für dieses Gerät dann befüllt wird. :)
 
Zuletzt bearbeitet:
erst mal Danke,

ganz funktioniert es aber immer noch nicht.

die erste Lösung läuft im Browser nicht und auf der Console kommt:
undefined variable.

bei der Lösung von @JL3 musste ich noch
include "include/includeconf.php";
include "include/includeconfig.php";
include "include/includefunctions.php";
include "include/includedefine.php";

hinzufügen, sonst ist das Script mit weisem Bildschirm im Browser stehen geblieben.

Der Haken jetzt noch, die Variablen bleiben leer!

auch mit zusätzlichen echo Ausgaben im Browser versucht, nichts in den Variablen drin!

Edit:
auf Fritzbox und Raspi versucht.
 
Es ist ein Schnipsel, davor sind ... und dahinter auch ;)

$Watt1 und $Watt2 bleiben leer? Glaube ich nicht.
Anzeigename in $Name korrekt eingetragen?

Poste dein Script, sonst rät man nur, was falsch dran ist.
 
Zuletzt bearbeitet:
hab das ganze noch mal neu gemacht.

auch die Namen der Steckdosen einfach gehalten und bei der 2. Dose mit AIN versucht.

kann aber nur an der Abfrage mit den Namen liegen.
das Script springt da drüber und kommt nicht zu der Zuweisung der $Temp1 und $Temp2!

habe versuchsweise mal $Temp1 und $Temp2 vor der Abfrage mal gefüllt und dieser Inhalt bleibt drin und ändert sich nicht.

PHP:
<?PHP
	include "conf/sensorandswitchhelperurl.phpconf";
	include "include/includeconf.php";
	include "include/includeconfig.php";
	include "include/includefunctions.php";
	include "include/includedefine.php";
	include "include/includefritzbox.php";
	fritzboxGeraete();
	$AIN="087610076498";
	$Name="Steckdose1"; #Name der 1. Dose
	$Temp1="Grad";
	$Temp2="Celsius";
	echo "GerInfo : ".$GerInfo["Watt"];
	foreach ($GerListARR as $nr => $GerInfo) {
		if (strtoupper(trim($Name))==strtoupper(trim($GerInfo["Name"]))) {
			if ($GerInfo["NoAuto"]=="1") {
				$Name="display".$Name;
			}
			#Hier die Variablen retten, die man möchte
			$Watt1=$GerInfo["Watt"];
			$Temp1=$GerInfo["Temp"];
			break;
		}
	}
	echo "Test : ".$Watt1.$Name.$AIN.$GerInfo["Watt"];
	$AIN="087610144480";
	$Name="Steckdose2"; #Name der 2. Dose
	foreach ($GerListARR as $nr => $GerInfo) {
		if (strtoupper(trim($AIN))==strtoupper(trim($GerInfo["AIN"]))) {
			if ($GerInfo["NoAuto"]=="1") {
				$AIN="display".$AIN;
			}
			#Hier die Variablen retten, die man möchte
			$Watt2=$GerInfo["Watt"];
			$Temp2=$GerInfo["Temp"];
			break;
		}
	}

#Pseudoschalter	
	$Status="S##E##";
	if (!file_exists($Pfad."/statusschalter.txt")) {
		$fp=fopen($Pfad."/statusschalter.txt","w");
		$Status="0";
		fputs($fp,"S#".$Status."#");
		fclose($fp);
	}
# Pseudoschalter
	if ($_GET["info"]=="status") {
		$fp=fopen($Pfad."/statusschalter.txt","r");
		$xml=fgets($fp);
		fclose($fp);
		if (strpos($xml,"1")) {
			$Status="S#1#";
		}
		if (strpos($xml,"0")) {
			$Status="S#0#";
		}
	}
	if ($_GET["schalter"]=="1") {
		$fp=fopen($Pfad."/statusschalter.txt","w");
		$Status="S#1#";
		fputs($fp,$Status);
		fclose($fp);
	}
	if ($_GET["schalter"]=="0") {
		$fp=fopen($Pfad."/statusschalter.txt","w");
		$Status="S#0#";
		fputs($fp,$Status);
		fclose($fp);
	}
	echo "Ausgabe : ".$Temp1.$Watt1;
	echo "P# Temp ".$Temp2."Watt ".$Watt2."*html#";
#	echo "T#".$Temp."W#".$Watt."*html#"; 
	echo $Status;
	exit;
?>

die echo Ausgaben sind erst mal provisorisch, ob überhaupt was kommt.
 
Da fehlt ein include

PHP:
	include "conf/sensorandswitchhelperurl.phpconf";	
	include "include/includedateien.php";
	include "include/includefunctions.php";
	include "include/includeconf.php";
	include "include/includeconfig.php";
	include "include/includedefine.php";
	include "include/includefritzbox.php";

Die Reihenfolge der includes spielt auch eine Rolle. Kopiere oben diesen Block und ersetze damit deine includes und es läuft. Da hast du wohl incliudedateien.php vergessen gehabt ;)
 
Zuletzt bearbeitet:
ja, jetzt kommt was.

Danke!

jetz muss ich nur noch die Ausgabe Formartieren, aber das bekomme ich hin.
 
Ok. ;)

Nur nochmal zur Info: In includedateien.php sind die internen Pfade aller config-Dateien hinterlegt und ohne die, werden diese natürlich nicht gelesen und sind mit falschen bzw. ohne vernünftige Werte belegt.
 
Wichtig für die RaspberryPI-Installation, wenn der PI übers WLAN im Heimnetz hängt:

Der Pi beendet seine WLAN-Aktivitäten, sobald er die Verbindung mit dem Router verliert. Um dies zu verhindern gibt es einen Trick. Man editiert die /var/cron/shstart.sh mit
nano /var/cron/shstart.sh

und fügt folgende Zeile am besten vor dem sas-Aufruf ein:
/sbin/ifup wlan0

Dadurch verbindet sich der Pi spätestens nach einer Minute, nachdem er das WLAN verloren hat. :)
 
mal wieder eine Frage,

hab mein SAS ja auf eine USB-Festplatte am Raspi aus gelagert.
geht soweit ganz gut, nur warum gehen keine Pfad Angaben auf die Festplatte.
bräuchte das für die Edimax Dose und eventuell für die Statusdateien.

die Festplatte wird automatisch gemountet auf /media/usb0, und ist ext4 formatiert.
hab dan in der fstab nochmal
/media/usb0 /var/www/usbhd none bind 0 0
eingefügt, damit die Festplatte im Verzeichnis wwwdate eingebunden ist.
funktioniert ja soweit, nur wenn ich im Script darauf zugreifen will, geht das nicht.
hab als Pfad Versucht /media/usb0 und auch /var/www/usbhd
geht aber beides nicht!
jede andere Stelle auf dem Raspi kann ich erreichen, nur die HD nicht!
seltsamer Weise komme ich aber von server2go auf dem Pc, auf die HD am Raspi, und kann daruf mein Status schreiben?

Edit:
hat sich erledigt, waren mal wieder die Rechte!
hatte mit chmod -R +x * versucht, aber da ging gar nichts mehr,
dann mit chmod -R +rwx * , ging auch nicht richtig,
erst ein chmod -R 777 * hat geholfen
 
Zuletzt bearbeitet:
Raspi übertakten: Für und Wider:
Da man den Raspi ja offiziell in seinem Konfigurationsmenü übertakten kann, habe ich dies probeweise auch einmal versucht.

Höchste Stufe 1000 MHz: Er stieg sofort aus, weil sich der WLAN-Stick aufhängte.
Nächster Versuch mit 900 MHz lief problemlos. Jedoch war bei sasap keine Verbesserung der Geschwindigkeit ersichtlich. Die 900 MHz werden vom Raspi auch nicht dauerhaft gehalten, sondern er geht bei weniger Last auf 700 MHz zurück.
Mein Fazit: Für sas rentiert sich das Übertakten nicht. Rechenintensive Anwendungen können da durchaus profitieren.
 
vom Übertakten halte ich nicht so viel, will mein Spielzeug ja nicht kaputt machen.

hab aber schon mal überlegt als 2. Gerät einen Banana Pi an zu schaffen.
der hat ja eine bessere Cpu und auch mehr Speicher.
weis aber nicht wie kompatible der mit dem Raspberry ist, wie Apache und PHP darauf läuft?
 
Solange ein debian drauf läuft geht das alles. Die Banane ist aber wohl suboptimal. Ich habe mir einen dualcore pogoplug gekauft, für 20€. Bissel schneller. Wenn es ein debian für die ATV gäbe dann hätte ich schon so eine vergewaltigt. Die hat mal richtig bums ...
 
So sieht mein PI-Schalt- und Infocenter jetzt aus: :)
an:Anhang anzeigen 79948
aus:Anhang anzeigen 79949
(Die DECT200 ausschalten übernimmt sasap, wenn der PI aus ist (shutdown), dann verbaucht er unter 0,7 Watt und dann knipst sasap automatisch den Strom aus.)

Kannst Du das PI/Himbeere Pseudscript bitte mal einstellen mit allem was gebraucht wird, bzw. erklären.

Ich habe alles mögliche von Deiner Seite geladen, bekomme es aber nicht hin, ich denke da fehlt noch was ..

edit: die fehlt zum Beispiel: conf/sensorandswitchhelperurl.phpconf
 
Zuletzt bearbeitet:
Die conf/sensorandswitchhelperurl.phpconf ist eine Config-Datei, die du dir nach der Vorgabe in den Scripten aufbauen musst. Die Beschreibung steht im include/includepseudo.php und früher in den Scripten selbst. Findest du unter http://sensorandswitch.bplaced.net/sensorandswitch/komplettraspberrypi.php#sashi. Die Helperinstallation beschreibt den Aufbau der Datei. Mit jeder sas-Installation ist auch gleich der sashelper mit auf dem Gerät installiert.
Auch hier nochmal der Aufbau der Config-Datei. Sie kann wie folgt aussehen:

Beispielinhalt für Fritzbox und Pi
PHP:
<?php
	$helperurlfb='http://fritz.box:85/sensorandswitch/sensorandswitchhelper.php';
	$helperurlpi='http://himbeere/sensorandswitch/sensorandswitchhelper.php';
	$helperurlpi2='http://pi/sensorandswitch/sensorandswitchhelper.php';
	$helperurlgeraet4='';
	$helperurlgeraet5='';
?>

Alle anderen Dateien sind vorhanden unter pseudobeispiele/sashelper/raspberrypi

z. B. die doitreboot......
die doitshutdown......
die pseudoHimbeere.php
die pseudoPi.php
 
Irgendwie bin ich zu blöd dazu. Ich bekomme das nicht hin; kannst Du mir bitte mal alle Dateien zusammenpacken die ich brauche um PseudoHimbeere.php so anzuzeigen wie bei Dir? Ich muss da irgend einen dummen Fehler machen den auch bei mehrfachen hinschauen nicht finde.
 
Das Problem ist, ich kann dir nicht alles zusammenpacken, weil deine individuellen Einstellungen nicht kennen kann.

Du benötigst:

pseudobeispiele/sashelper/raspberrypi/pseudoHimbeere.php kopiert ins sas-Verzeichnis
pseudobeispiele/sashelper/raspberrypi/doitshutdown.php kopiert ins sas-Verzeichnis
pseudobeispiele/sashelper/raspberrypi/doitreboot.php kopiert ins sas-Verzeichnis
conf/sensorandswitchhelperurl.phpconf anlegen mit mindestens dem Inhalt, wenns auf dem Pi läuft:
Code:
<?php
	$helperurlpi='http://[COLOR="#FF0000"][B]ip-des-pi[/B][/COLOR]/sensorandswitch/sensorandswitchhelper.php';
?>
dass sashelper gefunden wird und arbeiten kann.
Das wars.


Nachtrag: Schau auch nochmal nach, dass alle Dateien UTF-8 ohne BOM codiert sind.
 
Zuletzt bearbeitet:
Hallo,
Ich habe einmal den PI2 und den B+ im Einsatz. Beim PI2 in der "conf/sensorandswitchhelperurl.phpconf" folgenden Eintrag:
PHP:
<?php     
$helperurlpi='http://ip-des-pi2/sensorandswitch/sensorandswitchhelper.php'; 
$helperurlpi2='http://ip-des-piB+i/sensorandswitch/sensorandswitchhelper.php';
?>
Im Script pseudoHimbeere muss man dann "$helperurlpi" in "$helperurlpi2" ändern. Dann werden die Werte angezeigt. Die URL zu de Rebootscripten muss man allerdings um die IP ergänzen ;)
[Problem]
Ich habe das "SicherungsScript" so angepasst, dass ich vom PI2 die Sicherung des PIB+ anstossen kann. Danach lande ich allerdings im WebIF des B+ und nicht zurück beim PI2 :noidea:

Wo liegt der Fehler?
PHP:
 <?php

    /*
        +---------------------------------------------------------------------+
        |                                                                     |
        |   SensorAndSwitch Automation Pro                                    |
        |   PseudoGeräte-Script                                 RaspberryPI   |
        |   ===============================================================   |
        |   Datensicherung                                        sashelper   |
        |                                                                     |
        +---------------------------------------------------------------------+
    */

    error_reporting(0);

    # In der folgenden Datei sind die Variablen der sashelper mit Pfadangaben
    # benannt, wie z. B.:
    # $helperurlpi='http://192.168.123.123/sensorandswitch/sensorandswitchhelper.php';
    include "conf/sensorandswitchhelperurl.phpconf";
    include "include/includedateien.php";
    include "include/includefunctions.php";
    include "include/includeconf.php";
    include "include/includeconfig.php";
    include "include/includedefine.php";

    echo 'P#<div style="position:absolute;top:-20px;font-size:14px;width:322px;"><a href="http://192.168.178.111/sensorandswitch/doitsicherung-delete.php"><img src="'.picdesign("schalter0.png").'"></a></div><div style="position:absolute;top:-20px;font-size:14px;width:277px;"><a href="http://192.168.178.111/sensorandswitch/doitsicherung-ftp.php"><img src="'.picdesign("schalter8.png").'"></a></div><div style="position:absolute;top:-20px;font-size:14px;width:232px"><a href="http://192.168.178.111/sensorandswitch/doitsicherung-sas.php"><img src="'.picdesign("schalter1.png").'"></a></div><div style="position:relative;top:+3px;font-size:16px;text-align:left;width:277px;">PI-Backup:</div>*HTML#';

    exit;
?>
 
Zuletzt bearbeitet von einem Moderator:

Statistik des Forums

Themen
246,156
Beiträge
2,247,039
Mitglieder
373,674
Neuestes Mitglied
Jens_120
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.