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

Wie ich sehe, wird auch mein midnight-blue-Design verwendet. :mrgreen:

Ist zwar auch OT, aber wie ich sehe, wird der Prozessor des Pi2 weniger heiß als der vom B+ trotz höherer Volt.

Zu deinem Problem: Der Rücksprung ist in den Scripten
http://192.168.178.111/sensorandswitch/doitsicherung-delete.php
http://192.168.178.111/sensorandswitch/doitsicherung-ftp.php
http://192.168.178.111/sensorandswitch/doitsicherung-sas.php

Zur Abhilfe: Übergib eine Variable mit dem Rücksprungziel und werte diese in den Scripten aus. ;)
oder erstelle jedes Script zweimal. Einmal das vom B+ und einmal das vom Pi2 aufgerufen wird mit den jeweiligen Rücksprungzielen. ;)
 
.........................
 
Zuletzt bearbeitet:
Heureka ... was ein Murks, das ist wieder irgend ein Rechte Problem

Unbenannt.JPG

Ich habe die Version von der Website eingespielt und dann selbstständig updaten lassen, dann ging es sofort. Ich habe schon an meinem Hirn gezweifelt.
 
Zuletzt bearbeitet:
Wunderbar. Hauptsache es läuft. :)

Ich bastle inzwischen an einer Webseite SAS4Pi, wo alles für die Pi-Installation drinstehen wird. Ich muss es auslagern, weil das SAS-Web zuviel Platz gerade wegen der Downloads braucht. Leider braucht das Umkopieren der Pi-Elemente von einem ins andere Web viel Zeit, weil der Freehoster die Bandbreite begrenzt. Sobald es verfügbar ist, poste ich es.
 
Hallo,
Wie ich sehe, wird auch mein midnight-blue-Design verwendet. :mrgreen:
Jo, vorher hatte ich das "metallic", dieses finde ich allerdings besser :mrgreen:
Ist zwar auch OT, aber wie ich sehe, wird der Prozessor des Pi2 weniger heiß als der vom B+ trotz höherer Volt.
Das kann auch daran liegen, dass der PI2 ohne Gehäuse (und ohne Kühkörper) in einem kalten Raum liegt und der B+ in einem Gehäuse (mit Kühlkörper) in einem recht warmen Raum :) ;)
Zur Abhilfe: Übergib eine Variable mit dem Rücksprungziel und werte diese in den Scripten aus. ;)
oder erstelle jedes Script zweimal. Einmal das vom B+ und einmal das vom Pi2 aufgerufen wird mit den jeweiligen Rücksprungzielen. ;)
Kannst Du einem DAU da einmal über die Strasse helfen? :oops:
 
Die einfachste und praktikabelste Variante ist, zwei Dateien jeder Sorte zu benutzen. Nehmen wir die doitsicherung-delete.php. Darin wird bestimmt am Ende ein header mit dem Aufruf einer url als nächste Seite stehen. Leider hast du die hier nicht gepostet, sonst könnte ich dir die Stelle markieren.

Die eine Datei lässt du so wie sie ist und die wird auch vom B+ so aufgerufen wie immer. Die Kopie - nennen wir sie mal doitsicherung-delete-vom-pi2.php - änderst du so ab, dass die url im header-Befehl nicht auf den B+ sondern den Pi2 geht. Die Datei rufst du vom pi2 aus.


Nochmal als Diagramm:

im Moment:

sas (B+) -> pseudods (B+) -> doitdelete (B+) -> sas (B+)
sas (pi2) -> pseudods (pi2) -> doitdelete (B+) -> sas (B+)

mit zwei Dateien:

sas (B+) -> pseudods (B+) -> doitdelete (B+) -> sas (B+)
sas (pi2) -> pseudods (pi2) -> doitdelete-pi2 (B+) -> sas (pi2)

Poste einfach mal eine deiner doit-Dateien. ;)
 
Hallo,
...Nehmen wir die doitsicherung-delete.php. Darin wird bestimmt am Ende ein header mit dem Aufruf einer url als nächste Seite stehen. Leider hast du die hier nicht gepostet, sonst könnte ich dir die Stelle markieren.
Die sieht so aus:
doitsicherung-sas.php (erstelle eine Sicherung des Verzeichnisses "sensorandswitch"
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";

    $befehl='sudo ./doitsicherung-sas.sh';
    $url=$helperurlpi."?befehl=".encodiere($befehl,33455);
    $Status=web($url,$post);
    header("Location: ".$Conf["EURL"]);

    exit;
    
?>
Die Idee ist, dass ich vom RaspberryPI 2 (IP 106) aus die Datei auf dem B+ (IP 111)aufrufe, dort die Sicherung erstellt wird und ich wieder im WebIF des PI 2 (IP 106) lande :mrgreen:
 
Die Datensicherungdatei, die du vom Pi2 aufrufst muss auf dem B+ so aussehen:

doitdatenscherung-vom-pi2-aufgerufen.php


Code:
<?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";

    $befehl='sudo ./doitsicherung-sas.sh';
    $url=$helperurlpi."?befehl=".encodiere($befehl,33455);
    $Status=web($url,$post);
    header("Location: ".[B][COLOR="#FF0000"]"http://[COLOR="#800080"]ip-des-pi2[/COLOR]/sensorandswitch/sensorandswitch.php"[/COLOR][/B]);

    exit;
    
?>
Da ruft er nach Abarbeitung dann den Pi2 wieder auf.

Nochmal: Ersteiie eine Kopie der doit-Dateien und alle die von fern vom Pi2 aufgerufen werden müssen dann wieder in die Ferne auf den Pi2 verweisen. ;)
 
Hallo,
Die Dateiel hatte ich wohl doppelt, allerdings mit falschem Inhalt :?.
Ich melde mich morgen wieder ;)

Franky

[EDIT]
:dance: klaaaapt :mrgreen:
 
Zuletzt bearbeitet von einem Moderator:
Sehr gut! :)

Mit dem sas4pi klappt es nicht. Den Webspace, den ich anlegen wollte (2 GB) hat er nur mit 1GB vorgenommen und das Löschen und Neuanlegen geht erst in einem Monat, solange sind Accountname, Mail-Adresse und Anmeldemöglichkeit gesperrt :(
 
Hier eine andere Lösung mit Ping:

PHP:
<?php

    /*
        +---------------------------------------------------------------------+
        |                                                                     |
        |   SensorAndSwitch Automation Pro                                    |
        |   PseudoGeräte-Script                                 RaspberryPI   |
        |   ===============================================================   |
        |   Smartphone                                            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";

	$geraet="IP-Adresse oder Gerätename"; # ändern
 	$befehl='sudo ping -w 2 '.$geraet;
	$url=$helperurlpi."?befehl=".encodiere($befehl,33455);
	$Status=web($url,$post);
	$on=substr($Status,strpos($Status,"transmitted,")+12)*1;
	if ($on!=0) {
		echo "S#1#";
	}
	else {
		echo "S#0#";
	}

    exit;
    
?>

Damit kann man jedes Gerät im Heimnetz testen, ob an oder aus.

Um dieses psg in SAS 4 nutzen zu können muß ich jetzt wahrscheinlich die Pfade anpassen von /sensorandswitch auf /sas oder ? Ich bin mir nicht sicher und frage mal freundlich an.

Gruß Benne007
 
Hi Leute,
habe das psg für meine Belange angepasst und es läuft auch.
Mein Problem ist das ich jetzt eine Abfrage erstellen möchte.
"Wenn Sonnenuntergang und Mein Smartphone eingeloggt ist und nicht 22:30Uhr oder später soll Dect200 einschalten."
Kann ich das mit Kettenglied hinbekommen ?
Ich habe leider keine Lösung gefunden.

Vielen Dank

Gruß Benne007

<?php

/*
+---------------------------------------------------------------------+
| |
| SensorAndSwitch Automation Pro |
| PseudoGeräte-Script RaspberryPI |
| =============================================================== |
| Smartphone 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 __DIR__."/../include/psg.php";

/* include "include/includedateien.php";
include "include/includefunctions.php";
include "include/includeconf.php";
include "include/includeconfig.php";
include "include/includedefine.php";
*/

$geraet="Mein Smartphone"; # ändern
$befehl='sudo ping -w 2 '.$geraet;
$url=$helperurlpi."?befehl=".encodiere($befehl,33455);
$Status=web($url,$post);
$on=substr($Status,strpos($Status,"transmitted,")+12)*1;
if ($on!=0) {
echo "S#1#";
}
else {
echo "S#0#";
}

exit;

?>
 
Moins

Ich denke dafür reicht 1 Kettenstartglied und ein Folgeglied.

Beispiel: Im WLAN schickt das Smartfon ein IP-Telefon in den Ruhezustand

Kettenstartglied 5
smartfon_kette_01.png
...schaltet nichts, aber es kommt ja noch das Folgeglied 6. ;)

Kettenfolgeglied 6
smartfon_kette_02.png
...prüft zweite Bedingung* und schaltet letztendlich, oder auch nicht.
Denn wenn das IP-Telefon nicht Online ist, braucht es die Schaltung nicht.

* Erste Bedingung ist: Smartfon ist im WLAN (Kettenstartglied 5)
 
Zuletzt bearbeitet:
Sorry koyaanisqatsi,
das verstehe ich nicht, wahrscheinlich reichen meine Gehirnwindungen dafür nicht aus. Vielleicht habe ich mich auch falsch ausgedrückt und versuche es nochmal.
Also es ist Sonnenuntergang und es ist noch nicht 22:30Uhr mein Smartphone loggt sich ein, Lampe an.
Wenn 22:30Uhr oder später mein Smartphone loggt sich ein, lampe bleibt aus.

Wie kann ich das realisieren ?

Gruß Benne007
 
Hallo,

normaler Weise sollte das so gehen, wie @koyaanisqatsi geschrieben hat,
aber ich gestehe, meine Gehirnwindungen haben da ähnliche Probleme.

hatte ähnliches Problem mit meiner Aussenbeleuchtung.
Habe das dann auf meine Art so gelöst:
2 Pseudoschalter, die nichts schalten sondern nur einen Zähler rauf / runter zählen.
Beispiel:
1. Pseudoschalter ist mein Zeitschalter, schaltet von 5:30 bis 23:00 Uhr ein,
2. Pseudoschalter ist mein Dämmerungsschalter, schaltet von Sonnenuntergang bis Sonnenaufgang ein,
als 3. Schalter ein Pseudoschalter, welcher den Zähler auswertet.
nur wenn der Zähler auf 2 steht geht das Licht wirklich an!

für dich müsste dann nur ein 3. Pseudoschalter dazu, der den Zähler um 1 erhöht, wenn Handy im Wlan.

Auswertung, schalten dann nur wenn der Zähler auf 3 steht!

Zeitschalter
PHP:
	<?php
        echo "FN#Zeitschalter#";
	/*
		+---------------------------------------------------------------------+
		|                                                                     |
		|   SensorAndSwitch Automation Pro                                    |
		|   PseudoGeräte-Script                                               |
		|   ===============================================================   |
		|   -> Schalter                                                       |
		|      Dieses Script soll Pseudozähler.php aufrufen                   |
		|                                                                     |
		+---------------------------------------------------------------------+
		Pfad für Statusdatei in "conf/statuspfad.php" angegeben !
		*/	

    include __DIR__."/../include/psg.php";
	include __dir__."/../conf/statuspfad.php";
#	$gerarray=getGerInfo(substr(basename(__FILE__,".php"),3));
	$Statusdatei=$Statuspfad."statushelfer1.txt";    #hier Namen für Status-Datei eingeben 
	$Zaehlerdatei=$Statuspfad."zaehler.txt";
	$dateihandle=fopen($Zaehlerdatei,"r+");
			$a = fread($dateihandle, 50);
			rewind($dateihandle);
	$Status="S##E##";
	if (!file_exists($Statusdatei)) {
		$fd=fopen($Statusdatei,"w");
		$Status="S#0#";
		fputs($fd,$Status);
		fclose($fd);
	}
	if ($_GET["info"]=="status") {
		$fd=fopen($Statusdatei,"r");
		$xml=fgets($fd);
		fclose($fd);
		if (strpos($xml,"1")) {
			$Status="S#1#";
		}
		if (strpos($xml,"0")) {
			$Status="S#0#";
		}
	}
	
	if ($_GET["schalter"]=="1") {
		$fd=fopen($Statusdatei,"w");		
			$a++;
			fwrite($dateihandle,$a);
			fclose($dateihandle);			
		$Status="S#1#";
		fputs($fd,$Status);
		fclose($fd);
	}
	if ($_GET["schalter"]=="0") {
		$fd=fopen($Statusdatei,"w");		
			$a--;
			fwrite($dateihandle,$a);
			fclose($dateihandle);			
		$Status="S#0#";
		fputs($fd,$Status);
		fclose($fd);
	}
	echo "P#".'1. Helfer Zeit - '.$a." Gerät(e) an *html#";
	echo $Status;
	exit;
?>

Dämmerungsschalter
PHP:
<?php 
	echo "FN#D-Schalter#";
	/*
		+---------------------------------------------------------------------+
		|                                                                     |
		|   SensorAndSwitch Automation Pro                                    |
		|   PseudoGeräte-Script                                               |
		|   ===============================================================   |
		|   -> Schalter                                                       |
		|      Dieses Script soll Pseudozähler.php aufrufen                   |
		|                                                                     |
		+---------------------------------------------------------------------+
		*/
    include __DIR__."/../include/psg.php";
	include __dir__."/../conf/statuspfad.php";   
	$Statusdatei=$Statuspfad."statushelfer2.txt";    #hier Namen für Status-Datei eingeben 
	$Zaehlerdatei=$Statuspfad."zaehler.txt";
		$dateihandle=fopen($Zaehlerdatei,"r+");
			$a = fread($dateihandle, 50);
			rewind($dateihandle);
			
	$Status="S##E##";
	if (!file_exists($Statusdatei)) {
		$fd=fopen($Statusdatei,"w");
		$Status="S#0#";
		fputs($fd,$Status);
		fclose($fd);
	}
	if ($_GET["info"]=="status") {
		$fd=fopen($Statusdatei,"r");
		$xml=fgets($fd);
		fclose($fd);
		if (strpos($xml,"1")) {
			$Status="S#1#";
		}
		if (strpos($xml,"0")) {
			$Status="S#0#";
		}
	}
	
	if ($_GET["schalter"]=="1") {
		$fd=fopen($Statusdatei,"w");			
			$a++;
			fwrite($dateihandle,$a);
			fclose($dateihandle);			
		$Status="S#1#";
		fputs($fd,$Status);
		fclose($fd);
	}
	if ($_GET["schalter"]=="0") {
		$fd=fopen($Statusdatei,"w");			
			$a--;
			fwrite($dateihandle,$a);
			fclose($dateihandle);			
		$Status="S#0#";
		fputs($fd,$Status);
		fclose($fd);
	}
	echo "P#". '2. Helfer SA / SU - '.$a." Gerät(e) an *html#"; 
	echo $Status;
	exit;
?>

Sensor-Zähler
PHP:
<?php
	echo "FN#Sensor-Zähler#";
	/*
		+---------------------------------------------------------------------+
		|                                                                     |
		|   SensorAndSwitch                                      PSG-Script   |
		|   ===============================================================   |
		|   Pseudo-Sensor                          							  |
		|   ---------------------------------------------------------------   |
		|                                                                     |
		+---------------------------------------------------------------------+
	*/

	include __DIR__."/../include/psg.php";
	include __dir__."/../conf/statuspfad.php";

	$Zaehlerdatei=$Statuspfad."zaehler.txt";
	$dateihandle=fopen($Zaehlerdatei,"r+");
			$a = fread($dateihandle, 50);
			rewind($dateihandle);
	$Status=$a;
	
	$ver="V#*$a#"; 

			$echo='P#'.$Status.'*Zähler#'.$ver;
		
	echo $echo;

1. und 2. Script ist gleich, nur ein anderer Name zur Auswahl in sasapui
3. Script müsste nur noch die Wlan Abfrage mit dem Zähler kombiniert werden.

das $Statuspfad. eventuell raus nehmen ist speziel nur für mich.

der Pseudo-Sensor sollte dann unter Schalttyp bei der Schalterfassung erscheinen.

Edit:

Wlan Abfrage ist ganz einfach, das gleiche Script wie bei 1. und 2. kopieren, mit anderen Namen speichen.
dann bei schalten nach Schalterposition (W-Lan Handy an) das 3. Script schalten.
 
Zuletzt bearbeitet:
@ws65,
erst mal vielen Dank für die Info ich werde mich mit diesem Thema morgen befassen denn es ist schon ziemlich spät.
Ich bezweifle allerdings ob ich es mit Deiner Methode hinbekomme, denn ich bin nicht der große und auch nicht der kleine Programmierer.
Ich kann mir im Moment auch nicht vorstellen das ich zu dem Ergebnis komme was ich mir vorstelle.
Mein nächstes Problem ist wenn ich Pseudoschalter anwähle das ich keine Auswahl habe.
Ich bin im Moment überfordert.

Vielen Dank

Gruß Benne007
 
Zuletzt bearbeitet:
noch ein Nachtrag,

die drei Helfer Scripte sind gleich, nur der Name ist anders und ganz wichtig, die Status Datei muss bei jedem Script einen anderen Namen haben!

bei mir
Script 1 = psgHelfer1.php, Statusdatei = statushelfer1.txt
Script 2 = psgHelfer2.php, Statusdatei = statushelfer2.txt
Script 3 = psgHelfer3.php, Statusdatei = statushelfer3.txt
 
@ws65,
ich habe es aufgegeben denn es ist in meinen Augen viel zu viel Aufwand für eine in meinen Augen Simple Bedingung.
Mit den Kettenstart und Folgeglied muß es doch irgendwie möglich sein die Funzel zu meinen Bedingungen zum leuchten zu bringen.
"WENN Sonnenuntergang UND Smartphone im Wlan eingeloggt und die UHRZEIT < 22:30 ist DANN schalte STECKDOSE 1 oder 3 oder was auch immer."
In meinen Augen ist diese Bedingung simpel aber vielleicht in PHP nicht.
Keinen Plan, mit den Ketten und Kettenfolgeglied kommt es mir jedenfalls sehr kompliziert vor oder mein Gehirnschmalz reicht dafür nicht aus.

Vielleicht kann JL3 ja das ganze etwas freier gestallten mit einer Art Auswahlmenue wie es teilweise schon der Fall ist. Ich meine das man von anfang an sich den String selbst zusammen bauen kann.

z.B "WENN" oder "WENN NICHT" "UND" oder "UND NICHT" usw. "=" oder "<>".
Vielleicht ist es auch zu kompliziert es in der Form zu Programmieren oder geht gar nicht, ich bin kein Experte und nur ein Leihe mit ganz wenigen Grundkenntnissen.
Oder JL3 hat eine andere Lösung die ich einfach nicht sehe.

Trozdem vielen vielen Dank für Deine Bemühungen.

Gruß Benne007
 
Moins

Mit Verlaub.

Kettenstart-, und Kettenfolgeglieder sind essentiell in/für SensorAndSwitch.
Ohne diese Schaltlogiken ist SaS nur eine Webseite die bunte Bilder anzeigt.
Es reicht nicht zu behaupten: Dafür reicht mein Gehirnschmalz nicht
...lernt diese Logiken zu gebrauchen.

Sonst bringt es auch nichts, wenn funktionierende Beispiele gezeigt werden
und als Antwort darauf der fehlende Gehirnschmalz
als Ausrede zum "nichtlernenwollen" herangezogen wird.
 
Hallo,
;) Mit verlaubtem Verlaub :mrgreen:,
Ich nutze SaS nicht zum Schalten. Bei mir dient es voll und ganz der Informationszentrale (Maileingänge, Anrufe, Statusabfragen, ...)
Ich nutze daher diese Verkettungen nicht.
Aber :doktor: man kann/muss versuchen, hinter die Scripte zu steigen. Ich habe dafür einen 2. PI, als "Spielwiese". Es geht auch, indem man die Scripte erst einmal "wegsichert" und dann mit Ihnen spielt.
Eine Änderung durchführen, warten was passiert und dann weitermachen, oder einen Schritt zurück :p.

So bin ich auch Stück für Stück weiter in die Material gekommen. Es dauert, aber es wird :)

Nur als Beispiel:
Anhang anzeigen 81828 Anhang anzeigen 81829 Anhang anzeigen 81830
 
Zuletzt bearbeitet von einem Moderator:
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.