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

Neue Version ist da.
 
Minimierung Schreibzugriffe auf die SD-Karte

mal ne Frage sind da nur die Sd-Karten so anfällig oder auch Usb-Sticks?
könnte doch SaS und alle Log-Dateien auf Usb-Sick verschieben ?
 
@ws65: Alle SolidState-Typen haben mit Schreibzugriffen ihre Lebensdauergrenze. SD-Karten, USB-Sticks (die haben meist sogar eine SD-Karte innen drin kurz nach dem Controllerchip direkt hinter dem Stecker), SSDs. SSDs sind dafür konzipiert, ein paar Millionen Schreiboperationen pro Speicherzelle auszuhalten und wechseln diese bei jedem Schreibvorgang, sodass alle mal dran kommen. :) Deswegen soll man diese Medientypen auch nie defragmentieren.

Generell kann man sagen: Robustheit von empfindlich bis ok:

SD-Karte (einige USB-Sticks)
USB-Sticks
SSDs
SSDs (die teure Sorte, die dafür getrimmt wurden, sei es durch spezielle Controller oder hohe NAND-Flash-Qualität)
 
dann habe ich mal weniger bis keine Angst vor einem Ausfall.

nutze schon einige Jahre Lang einen 8 Gb Usb-Stick, wo meine wichtigsten Daten drauf sind und täglich aktualisiert werden.
auch Thunderbird Portable ist da drauf uns alle meine Mails, hab ich immer so an jedem Computer aktuell.
und noch nie Probleme damit gehabt! sichere natürlich immer wieder auf dem Computer!

könnte man dann höchsten auf eine externe Festplatte ausweichen.
 
Das Problem sind eher Log-Dateien, die oft im Sekundentakt geschrieben werden. Die sollte man vermeiden oder ausschalten.

Eine externe Festplatte HDD funktioniert natürlch auch. Sollte beim RasbPI aber besser eine eigene Stromversorgung haben, da der RasbPI stromtechnisch etwas schwach auf der Brust ist, um selbst für stromhungrigere USB-Geräte die Versorgung zu stellen.
 
PROBLEM !

wollte das schreiben der Log-Dateien nach der Anleitung abstellen.

jetzt geht aber gar nichts mehr.

bis zum reboot hat er zwar alles geschluckt, aber als ich dann mit Watchdog weiter machen wollte, kam Meldung das Dateisystem ist nur lesbar! und hat die Aktion abgebrochen.

hab dann festgestellt, das auch kein Samba und Apache mehr geht!
am Fernseher mal geschaut was beim reboot passiert, lauter Fehlemeldungen Samba, Apache Xserve, Mpd usw.

wollte die Änderung dann Rückgängig machen, geht aber nicht, schon die /etc/fstab kann ich nicht mehr schreiben!

ich hoffe da fällt uns eine Lösung ein, ansonsten darf ich den Raspi wieder neu aufsetzen:mad:

Edit:
Rettung:
Tante Google weis fast alles, mit dem Befehl hab ich meinen Raspberry gerettet:
mount -o remount,rw,noatime,nodiratime,errors=remount-ro -t ext3 /dev/sda1 /

den eigentlichen Fehler hab ich auch gefunden, Tippfehler in der fstab!
 
Zuletzt bearbeitet:
In der fstab sollte man sich tunlichst keine Tippfehler leisten :mrgreen:

Immerhin, es läuft ja wieder :)
 
Ein genereller Tipp am Rande.

Bevor man Experimente startet, macht man am Raspi einen shutdown -h now und nimmt die SD-Karte raus. Dann stopft man die in seinen PC und macht von dieser mit W32DiskImager eine Imagedatei auf seinen PC. Geht dann was schief, hat man genau diesen Stand und kann dort weitermachen, indem man dann dieses gerettete Image wieder auf die Karte schreibt. ;)

Ist ganz einfach und erspart eine Menge Arbeit. :)
 
pseudoshutdown.php
PHP:
<?php

	/*
		+---------------------------------------------------------------------+
		|                                                                     |
		|   SensorAndSwitch Automation Pro                                    |
		|   PseudoGeräte-Script                                 RaspberryPI   |
		|   ===============================================================   |
		|   Shutdown                                              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:relative;top:-20px;font-size:14px;"><a href="doitshutdown.php"><img src="'.PIC.DESIGN.'schalter1.png"></a></div><div style="position:relative;top:-60px;font-size:16px;text-align:left;">RaspberryPI herunterfahren:</div>*HTML#';

	exit;
	
?>
doitshutdown.php
PHP:
<?php

	/*
		+---------------------------------------------------------------------+
		|                                                                     |
		|   SensorAndSwitch Automation Pro                                    |
		|   PseudoGeräte-Script                                 RaspberryPI   |
		|   ===============================================================   |
		|   Shutdown                                              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 shutdown -h now';
	$url=$helperurlpi."?befehl=".encodiere($befehl,33455);
	$Status=web($url,$post);

	exit;
	
?>

Ein Einbinden der Shutdown-Funktion der Himbeere direkt in sas wird es NICHT geben. Zu gerätespezifisch.

Diese beiden Scripte bewirken das Gleiche. Doch Vorsicht! Einmal angeklickt geht die Himbeere aus und der Webserver ist gleich mit weg. ;)
 
Hallo JL3,

ich habe seit einer Woche nun auch den SaS auf dem RaspberryPI laufen und bin sehr zufrieden damit.
Leider habe ich bei mir einen Fehler festgstellt der bei der Variante SaS auf der FritzBox 7490 nicht aufgetreten ist.

Ich konnte immer die CPU-Temperatur der 7490 anzeigen lassen leider geht es mit der Variante SaS auf PI nicht mehr.
Ich verwende die Variante SaS_v1.30.1284 auf dem PI und habe meine FritzBox mit dem Recoverfile auf die Version 6.20
zurückgesetzt um alle Fehler auszuschliessen.
Auf der Box läuft jetzt kein anderes Programm mehr, weil der PI alles übernehmen soll.

Meine Dect200-Dosen werden alle richtig angezeigt und schalten auch per Script mit Cron auf dem PI.

Die Scripte (Temp, Volt usw.) für den PI laufen ohne Fehler bei mir.

Der Versand der Log-Datei mittels PHPMailer geht leider auch nicht obwohl ich die nötigen Daten in der "sensorandswitch.conf"
eingetragen habe.

Folgender Fehler wird im Browser beim Testversand angezeigt "E#You must provide at least one recipient email address.#"

Mit dieser Befehlzeile führe ich den Test durch "http://IP des PI/sensorandswitch/sensorandswitchmail.php?vom=Test"

Erzeuge ich eine Datei "sensorandswitchmail.phpconf" im Ordner conf auf dem PI läuft der Versand der Mail ohne Fehler und es kommt die Meldung "M#1#".

Ich mache da etwas falsch und finde einfach keine Lösung für das Problem.

Vielleicht hast du einen Tipp
 
@ElefantenMaus:

Das sind mehrere Probleme, also der Reihe nach:

Die Temperatur der FB7490 anzeigen zu lassen geht nur, wenn Rootzugriff möglich ist und das geht nur, wenn auf der Fritzbox busybox httpd und php5 mit curl läuft. Da kann dann der sashelper den Rootzugriff übernehmen. Falls so etwas gewünscht ist, musst du erst wieder busybox mit httpd auf der Fritzbox installieren und dann die Datei sensorandswitchhelper.php auf den so angelegten Webserver der Fritzbox. Dann kann auch problemlos vom Raspi über sas und den sashelper auf Betrierbssystembefehlsebene auf die Fritzbox zugegriffen werden.

Zum Thema E-Mail-Versand Log-Datei:
Hier müssen unten in der Eingabemaske der Einstellungen von sas die Kontodaten eines bestehenden E-Mail-Accounts eingetragen werden. Nur dort und nicht direkt in die sensorandswitch.conf, denn einige Daten werden verschlüsselt.
Die Datei sensorandswitchmail.php kann gelöscht werden, denn sie hat keinerlei Funktion mehr. Genauso die sensorandswitchmail.phpconf.

Bitte bei dem Feld TLSSSL "tls" (wird vorgeblendet) und nicht wie früher "ja" eingeben, wenn ein verschlüsselter SMTP-Server verwendet wird.
 
Hallo,
Ich mache mir gerade ein Image mit einer Grundkonfiguration nach Deiner Anleitung. Der Tipp mit dem Image ist Gold wert :groesste:.
Danach baue ich eines mit den von mir vorgeschlagenen/erfragten Änderungen. Mal schauen :mrgreen:.

Btw: Kann man anstelle des Shutdown auch ein Reboot-Script erstellen :gruebel: ?
 
Ja.

pseudoreboot.php
PHP:
 <?php

    /*
        +---------------------------------------------------------------------+
        |                                                                     |
        |   SensorAndSwitch Automation Pro                                    |
        |   PseudoGeräte-Script                                 RaspberryPI   |
        |   ===============================================================   |
        |   Reboot                                                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:relative;top:-20px;font-size:14px;"><a href="doitreboot.php"><img src="'.PIC.DESIGN.'schalter1.png"></a></div><div style="position:relative;top:-60px;font-size:16px;text-align:left;">RaspberryPI rebooten:</div>*HTML#';

    exit;
    
?>

doitreboot.php

PHP:
<?php

    /*
        +---------------------------------------------------------------------+
        |                                                                     |
        |   SensorAndSwitch Automation Pro                                    |
        |   PseudoGeräte-Script                                 RaspberryPI   |
        |   ===============================================================   |
        |   Reboot                                                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 reboot';
    $url=$helperurlpi."?befehl=".encodiere($befehl,33455);
    $Status=web($url,$post);

    exit;
    
?>
 
Danke für die zwei Tipps, werde mir das mal überlegen die busybox mit httpd wieder auf der Fritzbox zuinstallieren.
Der Hinweis mit den Kontodaten in der Eingabemaske hatte ich schon gemacht und leider war die Datei sensonandswitchmail.phpconf noch im conf Verzeichnis vom PI.
Die beiden überflüssigen Dateien habe ich gelöscht.
Nun habe ich noch eine Frage kann man den Mailversand z.B. an ein Ereignis verknüpfen ( Dose 1 hat geschaltet dann soll sofort eine Mail gesendet werden ).
 
Hallo,

hab heute meine Bauteile Sender und Empfänger für 433Mhz Funksteckdosen bekommen.

mal provisorisch an den Raspberry angeschlossen, Fernbedienung von Intertechno und Rev Steckdosen konnte ich auslesen!

beim senden waren, sind aber noch Probleme,
bei den Intertechno hat die Fernbedienung ein Protocol " arctech_switches_old" geliefert.
das gibt es aber für pilight nicht, etwas versucht und festgestellt es gibt ein Protocol "intertechno_old" und damit funktionieren schonmal alle meine Intertechno Steckdosen und Einbauschalter.
muss jetzt nur den Befehl dazu " pilight-send -p intertechno_old -i 1 -u 0 -t" in mein Pseudeschalter einbauen.

Parameter -i steht für ID, ist bei mir Steckdose oder Schalter 1,2,3, usw
Parameter -u steht für unit, ist bei den IT-Steckdosen älteres System das Rädchen A=0, B=1, bis O=14
Parameter -t = ein, -f = aus

meine Rev Steckdosen wollen allerdings noch nicht, weis noch nicht wie ich da die Parameter einstellen muss.
 
Hallo,
Obwohl ich IMHO nichts in Deiner Anleitung vergessen habe, komme ich nicht per FTP auf den Raspi. Naja ... :noidea: Über den Explorer kommt man ja druff. Shutdown und Reboot funktionieren.

[EDIT]
Das Image ist ganz schön groß. Mit dem Expand in der Konfiguration wird es ja auch 16GB groß. :? Da hätte ich eine kleinere Karte nehmen können. Naja, man lernt halt.
 
Zuletzt bearbeitet von einem Moderator:
@ElefantenMaus: Nein, das ist (noch) nicht vorgesehen. Das Log soll täglich die geschalteten Vorgänge protokollieren.

Die Funktion kann man aber leicht als PseudoGeräteScript basteln.

pseudosendmailauto.php

PHP:
<?php 

	/*
		+---------------------------------------------------------------------+
		|                                                                     |
		|   SensorAndSwitch Automation Pro                                    |
		|   PseudoGeräte-Script                                               |
		|   ===============================================================   |
		|   -> sendMail                                                       |
		|                                                                     |
		+---------------------------------------------------------------------+
	*/

	error_reporting(0);
	require("phpmailer/phpmailer.php");
	$mail=new PHPMailer();
	include "include/includedateien.php";
	include "include/includefunctions.php";
	include "include/includeconf.php";
	include "include/includeconfig.php";
	include "include/includedefine.php";
	
	$Pfad=".";
	
	$ZeitG=date("HiNdmYI");
	$Zeit=substr($ZeitG,0,13);

	$Status="S##E##";
	if (!file_exists($Pfad."/statussendmail.txt")) {
		$fp=fopen($Pfad."/statussendmail.txt","w");
		$Status="0";
		fputs($fp,"S#".$Status."#");
		fclose($fp);
	}
	if ($_GET["info"]=="status") {
		$fp=fopen($Pfad."/statussendmail.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."/statussendmail.txt","w");
		$Status="S#1#";
		fputs($fp,$Status);
		fclose($fp);
	}
	if ($_GET["schalter"]=="0") {
		$fp=fopen($Pfad."/statussendmail.txt","w");
		$Status="S#0#";
		fputs($fp,$Status);
		fclose($fp);
	}
	
	if ($_GET["schalter"]=="0" or $_GET["schalter"]=="1") {
		$fp=fopen($Pfad."/statussendmail.html","w");
		$Status="Schaltvorgang [".$_GET["schalter"]."] wurde ausgelöst: ".substr($Zeit,0,2).":".substr($Zeit,2,2).' '.substr($Wt[substr($Zeit,4,1)],0,2).' '.substr($Zeit,5,2).".".substr($Zeit,7,2).".".substr($Zeit,9,4);
		fputs($fp,$Status);
		fclose($fp);
		$mailversendername='SensorAndSwitch Automation Pro';
		$mailversender=$Conf["MAILVERSENDER"];
		$mailempfaenger=$Conf["MAILEMPFAENGER"];
		$mailbetreff='Schaltvorgang ausgelöst';
		$mailserver=$Conf["MAILSERVER"];
		$mailserverport=$Conf["MAILSERVERPORT"];
		$mailbenutzer=$Conf["MAILBENUTZER"];
		$mailkennwort=$Conf["MAILKENNWORT"];
		$mailTLSSSL=$Conf["MAILTLSSSL"];
		$mailinhalt=$Pfad."/statussendmail.html";
		$mail->From=$mailversender;
		$mail->FromName=$mailversendername;
		$mail->AddAddress($mailempfaenger);
		$mail->IsSMTP();
		$mail->Host=$mailserver;
		$mail->Port=$mailserverport;
		$mail->SMTPSecure=$mailTLSSSL;
		$mail->SMTPAuth=true;
		$mail->Username=$mailbenutzer;
		$mail->Password=$mailkennwort;
		$mail->CharSet="ansi";
		$mail->IsHTML(true);
		$mail->Subject=$mailbetreff;
		$mail->Body = file_get_contents($mailinhalt);
		$mail->Send();
		unlink($Pfad."/statussendmail.html");
		$Status="S#".$_GET["schalter"]."#";
	}
	echo $Status;
	exit;

?>
 
Hallo,
Obwohl ich IMHO nichts in Deiner Anleitung vergessen habe, komme ich nicht per FTP auf den Raspi. Naja ... :noidea: Über den Explorer kommt man ja druff. Shutdown und Reboot funktionieren.
schau ich mir selbst nochmal an...
[EDIT]
Das Image ist ganz schön groß. Mit dem Expand in der Konfiguration wird es ja auch 16GB groß. :? Da hätte ich eine kleinere Karte nehmen können. Naja, man lernt halt.
Steck die Image in eine Zip-Datei auf dem PC ;)
 
Hallo,
Klar wird die gezippt ;) Liegt aber erst einmal in Natura auf dem NAS ;)
 
@JL3:

Habe da noch eine Frage zum Mail-Versand mit PHPMailer. Der Versand findet ja z.B. jeden Tag zu einer bestimmten Uhrzeit statt, kann ich meinen Mailversand auch mal testen um meine Einstellungen zu überprüfen z.B. durch eine Befehlszeile die man im Browser eintragen muss.

Danke im Voraus
 
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.