[HowTo] SensorAndSwitch: Pseudoscript: PseudoGeräte selbst entwickeln.

Ähm, zu UTF-8 nochmal:

Umlaute werden auch bei UTF-8 mit BOM dargestellt, aber darauf kommt es nicht an. Es stört der BOM ( oder EF BB BF), der diese als vorangestellte Zeichen mitliefert, die dann Auswertungsprobleme bereiten.

Mit und ohne BOM wird UTF-8 korrekt mit Umlauten dargestellt, aber nur ohne BOM arbeiten die Pseudoscripte korrekt. koyaanisqatsi's Post #99 ist somit keine Garantie, dass die Codierung stimmt. Schaut lieber in Notepad++ nach und konvertiert es gegebenenfalls. ;)

Nachtrag: UTF-8 ohne BOM und ohne besondere Sonderzeichen im Text wird auch gerne wieder als ANSI von Notepad++ erkannt. Das stört nicht, solange man keine Sonderzeichen hinzufügt. Dann muss wieder eine Konvertierung zu UTF-8 ohne BOM vorgenommen werden. Ab php6 werden wir dieses "Problem" nicht mehr haben. Dann erkennt php den UTF-8 BOM und gibt ihn nicht mehr an die Ausgabe weiter. Aber bis dahin ....... schön konvertieren. ;)
 
Zuletzt bearbeitet:
Was wurde denn da zensiert? (*********)

hmm. da wurde das Wort d r o p b o x zensiert ... :)

Hallo, @Fred,
Kannst Du die Scripte einmal hier einstellen? ... Die Rücksicherung interessiert mich ...

Nur zum Verständnis: Ich sichere nur den SAS-Ordner (mache ich immer vor einem Update) und kann so bei Bedarf wieder zur vorigen oder früheren Versionen zurück.

Hier nochmal das Start Skript:
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 "include/includepseudo.php";

    echo 'P#<div style="position:relative;top:0px;font-size:16px;text-align:left">Raspi sichern/ruecksichern:</div><div style="position:absolute;top:-20px;font-size:14px;width:320px"><a href="doitdatenruecksicherung.php"><img src="'.picdesign("schalter1.png").'"></a></div><div style="position:absolute;top:-20px;font-size:14px;width:265px"><a href="doitdatensicherung.php"><img src="'.picdesign("schalterr.png").'"></a></div>*HTML#';
    exit;
    
?>

Über die 2 Buttons kann einmal die Sicherung gestartet werden:

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 ./doitdatensicherung.sh';
    $url=$helperurlpi."?befehl=".encodiere($befehl,33455);
    $Status=web($url,$post);
	header("Location: ".$Conf["EURL"]);

    exit;
    
?>

Hier wird also nur eine Skript-Datei gestartet:
Code:
#!/bin/sh
# Konstanten
DIR="/var/www/backup-sas"        # Verzeichnis wo das Backup erstellt werden soll
SAS="/var/www/sensorandswitch"   # Verzeichnis wo der Webspace liegt
DATUM=`date +%Y-%m-%d-%H-%M-%S`  # Datum wird modifiziert

# Backup SAS
cd $SAS

tar cvfz $DIR/backup-sas.tar.gz .

# Datum wird an das Webspace Backup angehaengt
cp $DIR/backup-sas.tar.gz $DIR/Sicherung-SAS-$DATUM.tar.gz

cd /var/www/

./dropbox_uploader.sh upload $DIR/backup-sas.tar.gz $DIR/backup-sas.tar.gz

mit dem 2. Button im Startskript kann die letzte Sicherung wieder zurückgespielt werden:

PHP:
<?php

    /*
        +---------------------------------------------------------------------+
        |                                                                     |
        |   SensorAndSwitch Automation Pro                                    |
        |   PseudoGeräte-Script                                 RaspberryPI   |
        |   ===============================================================   |
        |   Datenrücksicherung                                    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 ./doitdatenruecksicherung.sh';
    $url=$helperurlpi."?befehl=".encodiere($befehl,33455);
    $Status=web($url,$post);
	header("Location: ".$Conf["EURL"]);

    exit;
    
?>

Hier wird dieses Skript gestartet:

Code:
#!/bin/sh
# Konstanten
DIR="/var/www/backup-sas"        # Verzeichnis wo das Backup erstellt werden soll
SAS="/var/www/sensorandswitch"   # Verzeichnis wo der Webspace liegt
DATUM=`date +%Y-%m-%d-%H-%M-%S`  # Datum wird modifiziert

mv $SAS /var/www/sensorandswitch-alt-$DATUM

cd /var/www/

mkdir $SAS
chmod 777 $SAS

cd $DIR

tar -xvzf backup-sas.tar.gz -C $SAS

cd /var/www/

chown -R www-data $SAS
chgrp -R www-data $SAS

Das Rückspielen ist zwar quasi die Holzhammer-Methode, aber es funktioniert. Und so oft benötigt man es ja ohnehin nicht.
Die Sicherung selbst ist da wichtiger.
 

Anhänge

  • sas_backup.PNG
    sas_backup.PNG
    51.5 KB · Aufrufe: 17
Zuletzt bearbeitet:
Hallo,
Werde ich mir mal anschauen.
Wie gesagt, die Rücksicherung ist mir da wichtig.
Ich sichere auch nur das Verzeichnis sensorandswitch ;) (Nicht nur vor einem Update, auch wenn ich mit den Scripten "spiele & teste".)
Franky
 
Hallo,
Habe ich einmal so integriert. :D lääuuft :D
Anhang anzeigen 80734
Cool, ich habe zwar keine Dosen zum Schalten, aber es ist mittlerweile eine nette Info-Zentrale :mrgreen:
 
Aufgabe für SAS, geht das? und wie?

hab mal wieder eine Idee für ein Script, weis aber nicht ob das mit PHP geht.

Meine Webcam hat einen relativ kleinen Speicher, 256 Bilder.
Deshalb speichere ich seit ich den Rasperry habe die Bilder über FTP auf eine USB-Festplatte am Raspi.

Jetzt möchte ich die aber manchmal mit VirtzalDub weiter bearbeiten, was aber auf einem externen Laufwerk nicht geht.

meine Idee,

SAS prüft per Ping ob mein Rechner online ist ( einfach ).
Dann müsste etwas später, Rechner ist nicht der schnellste, deshalb ca. 20 Minuten warten,
ein Script aufgerufen werden, welches meine Bilder von der Festplatte am Rasperry auf mein Pc kopiert.
Besser noch verschiebt, mit Dateinamen umbenennen. ( schwierig bis unmöglich ?)
Probelme:
meine Kamera speichert die Bilder mit Timestamp in der Art bild20150313145900024.jpg,
also bildJahrMonatTagUhrzeit.jpg
kann man das mit Wilcarts kopieren?
wie kann ich vom Rasperry auf mein Windows Pc kopieren? mal was von opendir gehört, weis aber nicht ob das das richtige wäre?
Muss ja auch Benutzername und Passwort angegeben werden.
schön wäre auch wenn die Dateien beim kopieren direkt umbenannt werden, angefangen von bild1.jpg bis bild999.jpg
auch müssten immer die Bilder vom Vortag Beispiel bild20150312*.jpg in ein Verzeichnis 12.03.15 kopiert werden.
für Jeden Tag ein Verzeichnis anlegen!
sollte in etwa so aussehen, verschieben von
RASPBERRYPI/usbhd/ip-cam-sensor/bild20150312*.jpg nach WINDOWSPC/LW:D/ip-cam-sensor/märz/13.03.15/bild1.jpg ( bis bildxxxx.jpg).

wenn überhaupt machbar, was macht SAS während dem kopieren? bleibt das stehen und wartet bis fertig? kann schon mal paar Minuten dauern, oder läuft das normal weiter?

im Moment mache ich das von Windows aus über den Samba Server von Hand.
 
Moins

Brainstorm:
ws65 schrieb:
im Moment mache ich das von Windows aus über den Samba Server von Hand.
...schonmal was von IrfanView gehört?
Nehm ich immer wieder gern zum Umbenennen/Konvertieren im Batchmodus.
Siehe: Command Line Options
SaS sollte also diesen Job komplett IrfanView überlassen.

Von Hand machts aber damit auch Spass...
iv_umbenennen.jpg
 
Zuletzt bearbeitet:
Das umbenennen ist ja nicht das größte Problem, ich nehm dazu ACDSee oder den TotalCommander. Geht mit beiden recht flott.
Nur müssten die Dateien ja erst mal auf mein Pc!
umbenenn.JPG
 
Trotzdem muss SaS diesen Job abgeben, sonst ist SaS die ganze Zeit blockiert, bis fertig.
 
genau das habe ich befürchtet, also werde ich das schnell wieder vergessen.
 
Du könntest mit dem sashelper arbeiten. Damit ein Shell-Script aufrufen, was die eigentliche Aufgabe übernehmen soll und am Ende des Shell-Scriptaufrufs ein "&", sodass es in einem separaten Prozess startet und sas nicht blockiert. Als Status bekommxt du dann aber keinen Rückgabewert und musst selbst einen setzen.
 
Hallo,
hab mal etwas mit dem Status I#xxx# gespielt und mir 2 Info Zeilen gebastelt.

Die erste zeigt mir den Status der wichtigsten Schalter, Rot = aus, Grün = ein.
die zweite zeigt Status der Netzwekgeräte.

info.JPG

mein Kopf hat dabei am Anfang ganz schon geraucht, aber das musste sein.
 
Hallo,
Wie hast Du das unterste Script realisiert?
IMHO zeigt es an, welche Geräte im LAN aktiv sind, oder?
 
"Nur ein Ping, Vasily"
...pro Gerät. :mrgreen:
 
Hallo,
der Meister fragt beim Lehrling an?:gruebel:

war in der tat nicht ganz einfach, mit Ping Abfragen gingen nur 4 auf einmal, dann ist das Script abgestürzt.
Deshalb habe ich das anders gelöst.
Hab dazu die normalen Netzwerk Scripte mit Ping abfragen alle umgeschrieben und für jede Abfrage eine Statusdatei erstellt.
in der Info Zeile dann nur die Statusdateien abgefragt, und das geht problemlos!

Bei dem Status schreiben hatte ich anfangs auch Probleme, hat zu oft geschrieben, deshalb erst noch eine Abfrage ob sich der Status geändert hat, und nur dann neuen schreiben.

weis nicht ob das Programmiertechnisch korrekt ist, aber es funktioniert!

hier ein Beispiel mit Abfragen von 2 Technisat Digicoder

PHP:
        <?php
			echo "FN#Sat-Receiver#";
            /*
                +---------------------------------------------------------------------+
                |                                                                     |
                |   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.178.xxx/sas/sensorandswitchhelper.php';
            include __DIR__."/../include/psg.php";
			include __dir__."/../conf/statuspfad.php";
			$gerarray=getGerInfo(substr(basename(__FILE__,".php"),3));

            $geraet1="192.168.178.100"; # Digicorder 1
			$geraet2="192.168.178.102"; # Digicorder 2
			
			$befehl='sudo ping -w 2 '.$geraet1;
            $url=$helperurlpi."?befehl=".encodiere($befehl,33455);
            $Status1=web($url,$post);
            $on1=substr($Status1,strpos($Status1,"transmitted,")+12)*1;
            
			$befehl='sudo ping -w 2 '.$geraet2;
            $url=$helperurlpi."?befehl=".encodiere($befehl,33455);
            $Status2=web($url,$post);
            $on2=substr($Status2,strpos($Status2,"transmitted,")+12)*1;

#	Sa1t 1 Ip - 100		
			$Statusdateinzw100=$Statuspfad."statusnzw100.txt";	
			$fd=fopen($Statusdateinzw100,"r");
			$xml=fgets($fd);
			if ($on1!=0) {				
				$Status="S#1#";
				if ( $xml <> $Status ) { 
					$fd=fopen($Statusdateinzw100,"w");
					fputs($fd,$Status); 
					fclose($fd);
					}
				$t1="1";
            }
				else {				
					$Status="S#0#";
					if ( $xml <> $Status ) { 
					$fd=fopen($Statusdateinzw100,"w");
					fputs($fd,$Status); 
					fclose($fd);
					}
					$t1="0";
				}
      
#	Sat 2  IP - 102
			$Statusdateinzw102=$Statuspfad."statusnzw102.txt";
			$fd=fopen($Statusdateinzw102,"r");
			$xml=fgets($fd);
			if ($on2!=0) {				
				$Status="S#1#";
				if ( $xml <> $Status ) { 
					$fd=fopen($Statusdateinzw102,"w");
					fputs($fd,$Status); 
					fclose($fd);
					}
				$t2="1";
            }
				else {			
					$Status="S#0#";
					if ( $xml <> $Status ) { 
						$fd=fopen($Statusdateinzw102,"w");
						fputs($fd,$Status); 
						fclose($fd);
					}
					$t2="0";
				}
			if (($on1!=0) or ($on2!=0)) {
				echo "S#1#";
			}
				else {
				echo "S#0#";
			}
			echo 'P#Digicorder Erdgeschoss  <img src="'.PIC.'mled'.$t1.'.png"> Keller  <img src="'.PIC.'mled'.$t2.'.png">*HTML#';
            exit;
            
        ?>

hab sowieso schon bis zu drei Abfragen in einem Script gehabt.
ist aber ein Unterschied ob ich eine ganze Seite nur für Netzwerk verwende
Netzwerk.JPG
oder nur eine Zeile
 
Am schnellsten und für alle der Fritz!Box bekannten Geräte dürfte query.lua sein.
Gefiltert wird nach active="1" und active="0"...
landev
Code:
LANDEV=landevice:settings/landevice/list(name,ip,mac,active,online,ethernet_port)
...muss auf der Fritz!Box ausgeführt werden, also ein Fritz!Box Helper.

Beispiel:
landevs
Code:
#!/bin/sh
echo 'content-type: text/plain
'
cat landev | ../scripts/query.lua > queries.txt
cat queries.txt
#EOF

sh landevs | grep 'active="1"'
Code:
LANDEV_1_active="1"
LANDEV_5_active="1"
LANDEV_6_active="1"
LANDEV_7_active="1"
LANDEV_9_active="1"
LANDEV_10_active="1"
LANDEV_11_active="1"
LANDEV_12_active="1"

sh landevs | grep 'active="0"'
Code:
LANDEV_2_active="0"
LANDEV_3_active="0"
LANDEV_4_active="0"
LANDEV_8_active="0"

Die Fritz!Box ist dabei aber nicht so aktuell wie ein Ping, Vasily. ;)
 
Zuletzt bearbeitet:
Ich denke, ich habe das plötzliche, fehlermeldungslose Abbrechen von PHP-Scripten (psgs) gefunden.

Code:
nano /etc/apache2/apache2.conf

Code:
Timeout 30000
KeepAlive On
RLimitCPU max max
RLimitMEM max max
RLimitNPROC max max
MaxKeepAliveRequests 100
KeepAliveTimeout 500
 
den Meister würde ich mir nie anziehen.

für mich sahen deine formartierten Ausgaben aber wesentlich besser aus als meine.

@koyaanisqatsi,
hab aus versch. Gründen auf der Fritzbox kein Apache und sas mehr laufen, deshalb muss das alles mein Raspi machen.

OT. Hab mal versucht meine Technik zu vereinfachen, deshalb die 2. FB ausgebaut, dafür Gigabit Switches.
dadurch aber nur 1 Usb Anschluss und der wird für den USB-Fernzugang ( Drucker ) gebraucht, somit kein Platz für für Apache auf Usb-Stick.
nur so als abschreckendes Beispiel, meine Haustechnik.
Technik-3.jpg
 
Hallo,
für mich sahen deine formartierten Ausgaben aber wesentlich besser aus als meine.
Naja, das Aussehen verändern oder selber die Skripte herstellen, das sind noch große Unterschiede ;). Mal schauen, wie ich mich mit dem Skript noch auseinander setzen werde :-Ö
Aber Dank für die Blumen :mrgreen:
 
@koyaanisqatsi: Gibt es per lua-Aufruf der Fritzbox, die Möglichkeit das Pseudogerätescript Anrufbeantworter (ohne sashelper auf der Fritzbox) zu realisieren? Irgendwie finde ich nichts.
 

Zurzeit aktive Besucher

Statistik des Forums

Themen
246,158
Beiträge
2,247,073
Mitglieder
373,677
Neuestes Mitglied
MK34
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.