SensorAndSwitch Haus-Automation auf Webserver-Basis

Vor Mitternacht, eigentlich indem die Einstellungen einmal gespeichert werden.
...funktioniert heute nicht.
:rolleyes:
 
Hallo,
Automatisch angezeigt wird es noch nicht. Wie lange dauert das eigentlich immer?

Ich habe heute Probleme mit dem Web-Space. Musste zweimal die Info-Datei updaten. Daher kann es da generell Probleme geben. Normalerweise wird einmal am Tag nach Üpdates gesucht und zwar beim ersten Aufruf am Tag von sas.php. Früher wurde auch bei Einstellungen und Speichern neu gesucht. Nach dem "Mehrbenutzerumbau" funktioniert dies nicht mehr. Daher besser sasupdate.php, wenn mal kein Update angezeigt wird. ;)
 
Das hat geklappt.
Also einfach mal nach der Updateankündigung hier sasupdate.php aufrufen.
 
Hallo,
Mit der Update-Datei habe ich es probiert, lief gestern damit durch.
Alles kein Thema, muss man nur wissen ;)
 
@ws65,
hi ws65 habe dein Script jetzt für meine Bedürfnisse soweit angepasst und es funktioniert soweit auch. Das heisst meine Smartphones wenn sie eingeloggt sind wird die Anzeige grün bzw. ausgeloggt rot.
Kannst du mir vielleicht helfen wie und wo ich jetzt den Zeitstempel in die Statusdatei(en) einfügen und zur Anzeige gebracht werden kann. Ein Beispiel wäre für mich sehr hilfreich.

Vielen Dank für deine Mühe

Gruß Benne007
 
hier mal ein Ausschnitt mit schreiben einer Zeit Datei,
PHP:
Sa1t 1 Ip - 100		
			$Statusdateinzw100=$Statuspfad."statusnzw100.txt";
			$zeitnzw100=$Statuspfad."zeitnzw100.txt";
			$fd=fopen($Statusdateinzw100,"r");
			$xml=fgets($fd);
			if ($on1!=0) {				
				$Status="S#1#";
				if ( $xml <> $Status ) { 
					$zeit=date("H:i")." ein \r\n" ;
					$fz=fopen($zeitnzw100,"a");
					fputs($fz,$zeit);
					$fd=fopen($Statusdateinzw100,"w");
					fputs($fd,$Status); 
					fclose($fd);
					}
				$t1="1";
            }
				else {				
					$Status="S#0#";
					if ( $xml <> $Status ) { 
						$zeit=date("H:i")." aus \r\n" ;
						$fz=fopen($zeitnzw100,"a");
						fputs($fz,$zeit);
						$fd=fopen($Statusdateinzw100,"w");
						fputs($fd,$Status); 
						fclose($fd);
					}
					$t1="0";
				}

bin nicht der geborene Programmierer, sollte aber funktionieren.

Schreibe dazu eine extra Datei, wo nur die Ein-, Ausschaltzeiten drin sind.

könnte man auch da wieder auslesen und, oder direkt in Sas mit anzeigen!
 
@ws65,
Hi ws65 ich habe jetzt dein Script soweit angepasst das es bei mir läuft. Was ich allerdings festgestellt habe das mir jetzt die Zeitstatus-Datei(txt) bei jedem ping mit einer neuen Zeit vollgeschrieben wird. man kann sagen im Minutentakt. Ist es irgenwie möglich das es nur beim ersten mal wenn sich das Smartphone einloggt der Zeitstempel 1x gesetzt wird und dan erst wieder beim erneuten einloggen bzw. ausloggen.
Ich weis es leider nicht weil ich noch weniger Ahnung habe als Du.
Das zweite Problem was ich habe ist wie kriege ich den Zeitstempel halbwegs gescheit in deinem Script angezeigt. Mit $zeit wird nur $zeit angezeigt. Ich kenne mich leider mit den ganzen Formatierungen nicht so gut aus. Wahrscheinlich ist auch die Schrift zu groß.

Ich habe mal die echo-Zeile hier dargestellt.
echo 'P#MI2SC Benne $zeit <img src="'.PIC.'mled'.$t1.'.png"> S5 Firmenhandy $zeit <img src="'.PIC.'mled'.$t2.'.png">*HTML#';

Vielleicht hast du ja noch eine Idee.
Gruß Benne007 und Danke
 
Hallo,

wenn bei jedem Ping ein Zeitstempel erstellt wird, hast du das am falschen Platz reingesetzt.
ist ja eine Abfrage drin, das der Status, Zeitstempel nur geschrieben wird, wenn sich der Status ändert!

es muss hinter dieser Abfrage stehen,

if ( $xml <> $Status ) {

mit der Formartierten Ausgabe hab ich auch so meine Probleme, muss ich nochmal in einer ruhigen Minute versuchen.

müsste aber machbar sein!

will mir aber nicht meine Scripte kaputt machen, muss ich mal eine zum Versuchen extra machen.

Edit:

du musst in deiner Echo Ausgabe die Zeit in Hochkomma setzen!
'.$zeit.'
 
Zuletzt bearbeitet:
Abend

@benne007: Schau mal wie $PIC reingeklebt wird. Genauso machstes mit: '.$zeit.'
 
PHP:
echo 'P#MI2SC Benne '.$zeit.' <img src="'.picdesign("mled".$t1.".png").'"> S5 Firmenhandy '.$zeit.' <img src="'.picdesign("mled".$t2.".png").'">*HTML#';
So wird auch das ggf. gewählte Design unterstützt. ;)
Die Konstante PIC ist nur noch für alte psgs zur Kompatibilität vorhanden und sollte nicht mehr für neue psgs verwendet werden.

Nachtrag:

Generell für PHP zur Darstellung von Text bzw. Variablen:
Als erstes zerlegt das, was Ihr anzeigen wollt in einzelne Stücke, um besser die Struktur dahinter zu erfassen. Als Beispiel nehmen wir mal oben die echo-Anweisung, die ja einen String ausgeben soll.

Code:
echo <- Der Befehl
'P#MI2SC Benne ' <- Ein Teil der Zeichenkette
. <- Der Punkt steht im PHP bei Zeichenketten für und
$zeit <- Der Inhalt der Variable $zeit
. <- und
' <img src="' <- wieder den Text zwischen den Hochkommas 'Text', hier der erste Teil des HTML-Befehls img
. <- und
picdesign("mled".$t1.".png") <- eine Funktion, die eine Zeichenkette ausgibt
. <- und
'"> S5 Firmenhandy ' <- mehr Text
. <- und
$zeit <- einen Variableninhalt
. <- und
' <img src="' <- wieder Text - HTML-Code ist ja auch Text.
. <- und
picdesign("mled".$t2.".png") <- eine Funktion
. <- und
'">*HTML#' <- nochmal Text
;

Ich hoffe das war etwas anschaulicher. ;)
 
Zuletzt bearbeitet:
Vor Mitternacht, eigentlich indem die Einstellungen einmal gespeichert werden.
...funktioniert heute nicht.
:rolleyes:
Soll ich das in der nächsten Version wieder einbauen, da es mehr ungewollt nicht mehr so reagiert? Dann testet sas immer, wenn man die Einstellungen aufruft, egal ob schon einmal zuvor auf eine neue Version geprüft wurde oder nicht.

Hintergrund: Die sas.conf wird inzwischen nicht mehr neu geschrieben sondern es werden nur noch fehlende Einträge ergänzt oder bestehende abgeändert. Früher wurde aus den zuvor eingelesenen Werten eine komplett neue Datei geschrieben.
 
Hm, nicht unbedingt.
Wenn ich mal von dem "Style Guide" ausgehe,
ist es eigentlich besser dem User eine Möglichkeit
zu geben selbst mal nachzuschauen.

"Update angekündigt/da und kein Button zum Anklicken" :fies:
 
Ich habe es jetzt doch wieder eingebaut. "Nur" einen Hinweis ohne Button ist eher sinnfrei, da ja trotzdem bereits die entsprechende Webseite auf dem Server des Providers aufgerufen werden muss. Traffic entsteht.

Daher ist beim übernächsten Update wieder alles wie gehabt. ;)

OT: Ich bin gerade damit beschäftigt ein LCD2004 (LCD-Display 20 Zeichen x 4 Zeilen) (hier) mit I2C-Schnittstelle über sas per psg-Script anzusteuern. Ist mit nur 4 Pins anschließbar ohne zu löten. Dies könnte unabhängig vom WebGUI Werte aus den psgs anzeigen. Ich dachte da an Außentemperatur, neue Mails, Anrufe, Fehlermeldungen, Zeit und Datum usw. Mal sehen, was sich da draus machen lässt. ;)
 
Hallo @Benne007,

hab das ganze nochmal umgebaut, waren auch noch einige Fehler drin.

war mir nicht sicher, ob die Variablen da durcheinander gemacht haben, oder ich?
hab deshalb nochmal alle Variablen umbenannt und eine zusätliche Zeitdatei angelegt.
ist einiges an Aufwand, 1 Datei für Status, 1 Datei für Zeitstempel und 1 Datei für LOG.

weis nicht ob letztere unbedingt gebraucht wird?
auch mit der Farbe hab ich was gespielt, Rot wenn aus, Grün wenn an.

hier nochmal das neue Script,
PHP:
<?php
			echo "FN#Benne-Test#";
            /*
                +---------------------------------------------------------------------+
                |                                                                     |
                |   SensorAndSwitch Automation Pro                                    |
                |   PseudoGeräte-Script                                 RaspberryPI   |
                |   ===============================================================   |
                |   Netzwerk Ping mit Zeitanzeige									  |
                |                                                                     |
                +---------------------------------------------------------------------+
            */
            error_reporting(0);
            
            include __DIR__."/../include/psg.php";
			include __dir__."/../conf/statuspfad.php";
			$gerarray=getGerInfo(substr(basename(__FILE__,".php"),3));

            $geraet1="192.168.178.31"; # IP Adressen anpassen
			$geraet2="192.168.178.35"; # 
			
			$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;

			$farbeein="lime";	# hier kann die Farbe für Anzeige EIN geändert werden
			$farbeaus="red";	# hier kann die Farbe für Anzeige AUS geändert werden
			
#	Ping 1 Ip ??		
			$Statusdateiping1=$Statuspfad."statusping1.txt"; # Status-Datei
			$zeitping1=$Statuspfad."zeitping1.txt"; 		# in dieser Datei ist nur die Zeit der lezten Statusänderung 
			$zeitping1log=$Statuspfad."zeitping1log.txt"; 	# Log-Datei für ein / aus
			$fd1=fopen($Statusdateiping1,"r");
			$xml1=fgets($fd1);
			if ($on1!=0) {				
				$Status1="S#1#";
				$farbe1=$farbeein;
				if ( $xml1 <> $Status1 ) { 
					$zeit1=date("H:i");
					$fz1=fopen($zeitping1,"w");	
					fputs($fz1,$zeit1);				# Ein Zeit speichern
					fclose($fz1);
					$zeit1s=$zeit1." ping1 ein \r\n" ;
					$fz1log=fopen($zeitping1log,"a");
					fputs($fz1log,$zeit1s);			# Log speichern
					fclose($fz1log);
					$fd1=fopen($Statusdateiping1,"w");
					fputs($fd1,$Status1); 
					fclose($fd1);
					}
				$t1="1";
            }
				else {				
					$Status1="S#0#";
					$farbe1=$farbeaus;
					if ( $xml1 <> $Status1 ) { 
						$zeit1=date("H:i") ;
						$fz1=fopen($zeitping1,"w");
						fputs($fz1,$zeit1);			# Aus Zeit speichern
						fclose($fz1);
						$zeit1s=$zeit1." ping1 aus \r\n";
						$fz1log=fopen($zeitping1log,"a");
						fputs($fz1log,$zeit1s);		# Log speichern
						fclose($fz1log);
						$fd1=fopen($Statusdateiping1,"w");
						fputs($fd1,$Status1); 
						fclose($fd1);
					}
					$t1="0";
				}
      
#	ping 2  IP - ??
			$Statusdateiping2=$Statuspfad."statusping2.txt";
			$zeitping2=$Statuspfad."zeitping2.txt";
			$zeitping2log=$Statuspfad."zeitping2log.txt";
			$fd2=fopen($Statusdateiping2,"r");
			$xml2=fgets($fd2);
			if ($on2!=0) {				
				$Status2="S#1#";
				$farbe2=$farbeein;
				if ( $xml2 <> $Status2 ) { 
					$zeit2=date("H:i");
					$fz2=fopen($zeitping2,"w");
					fputs($fz2,$zeit2);
					fclose($fz2);
					$zeit2s=$zeit2." ping2 ein \r\n" ;
					$fz2log=fopen($zeitping2log,"a");
					fputs($fz2log,$zeit2s);
					fclose($fz2log);
					$fd2=fopen($Statusdateiping2,"w");
					fputs($fd2,$Status2); 
					fclose($fd2);
					}
				$t2="1";
            }
				else {			
					$Status2="S#0#";
					$farbe2=$farbeaus;
					if ( $xml2 <> $Status2 ) { 
						$zeit2=date("H:i");
						$fz2=fopen($zeitping2,"w");
						fputs($fz2,$zeit2);
						fclose($fz2);
						$zeit2s=$zeit2." ping2 aus \r\n" ;
						$fz2log=fopen($zeitping2log,"a");
						fputs($fz2log,$zeit2s);
						fclose($fz2log);
						$fd2=fopen($Statusdateiping2,"w");
						fputs($fd2,$Status2); 
						fclose($fd2);
					}
					$t2="0";
				}
			if (($on1!=0) or ($on2!=0)) {
				echo "S#1#";
			}
				else {
				echo "S#0#";
			}
		$fz1=fopen($zeitping1,"r");	# Zeit von letzter Statusänderung Ping 1 lesen
		$zeit1=fgets($fz1);
		$fz2=fopen($zeitping2,"r");	# Zeit von letzter Statusänderung Ping 2 lesen
		$zeit2=fgets($fz2);
		fclose($fz2);
		fclose($fz2);
/*
hier nochmal 3 Möglichkeiten zum Anzeigen.
bitte nur 1 Auswahl aktivieren, was nicht gefällt die Raute # setzen oder löschen
ich mag die langen echo Ausgabezeile nicht, deshalb habe ich das aufgeteilt.
$Anz1 = Anzeige vom 1. Ping
$Anz2 = Anzeige vom 2. Ping
*/ 		
		
		$Anz1=' <span style="color: '.$farbe1.';"><b>Benne '.$zeit1.' </b></span><img src="'.PIC.'mled'.$t1.'.png">';
		$Anz2=' <span style="color: '.$farbe2.';"><b>Firma '.$zeit2.' </b></span><img src="'.PIC.'mled'.$t2.'.png">';

#		$Anz1=' <span style="color: '.$farbe1.';"><b> Benne '.$zeit1.'</b> -';
#		$Anz2=' <span style="color: '.$farbe2.';"><b> Firma '.$zeit2.'</b>';
		
		
#		$Anz1=' Benne <span style="color: '.$farbe1.';"><b>'.$zeit1.' </b></span><img src="'.PIC.'mled'.$t1.'.png">';
#		$Anz2=' Firma <span style="color: '.$farbe2.';"><b>'.$zeit2.' </b></span><img src="'.PIC.'mled'.$t2.'.png">';

			
		echo 'P#'.$Anz1.$Anz2.'*html#';

        exit;
            
        ?>

ging vllt. auch einfacher, aber das können nur die Profis

hoffe das funktioniert jetzt und viel Spass noch.
 
Bitte bei Bilddateien statt z. B.

PIC.'mled'.$t1.'.png'

picdesign("mled".$t1.".png")

verwenden. Die Konstante PIC ist alt und wird es in zukünftigen Versionen bald nicht mehr geben. ;)
 
hallo,

das mit dem PIC hatte ich auch kurz vorher gesehen!

muss ich nochmal ran, hab da noch einige alte Sachen zum ändern.
 
JL3 OFFTOPIC schrieb:
Ich bin gerade damit beschäftigt ein LCD2004 (LCD-Display 20 Zeichen x 4 Zeilen) (hier) mit I2C-Schnittstelle über sas per psg-Script anzusteuern. Ist mit nur 4 Pins anschließbar ohne zu löten. Dies könnte unabhängig vom WebGUI Werte aus den psgs anzeigen. Ich dachte da an Außentemperatur, neue Mails, Anrufe, Fehlermeldungen, Zeit und Datum usw. Mal sehen, was sich da draus machen lässt.

Und wenn du damit fertig bist: Touch me :D


JL3 schrieb:
Ich habe es jetzt doch wieder eingebaut. "Nur" einen Hinweis ohne Button ist eher sinnfrei, da ja trotzdem bereits die entsprechende Webseite auf dem Server des Providers aufgerufen werden muss. Traffic entsteht.
Wie wärs mit einem SaS Update PSG, als SaS Erweiterungsplugin, sozusagen?
... demonstriert u.a. die PSG Möglichkeiten (Aktualisierungszyklen z.B.).
 
@ws65,
hi ws65, ich habe jetzt dein neues Script für meine Bedürfnisse angepasst und läuft super.
Ich habe 4 Geräte die ich abfragen möchte und habe es auf 2 psg`s aufgeteilt aus platzgründen für die Darstellung bzw. Ausgabe.
Hast du für mich super hinbekommen und mit der echo Auswahl finde ich auch klasse.
Mein Dank gilt auch koyaanisqatsi und JL3 für die hilfreichen Bemerkungen und Ergenzungen.

Tolle Arbeit und nochmals vielen vielen Dank !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

Gruß Benne007
 
Und wenn du damit fertig bist: Touch me :D
Ja, so etwas hatte ich auch schon mal im Blick, aber das dient dann als echter Bildschirm für den Pi mit Bildschirmtreibern etc.
Treiber nur zum Display ansteuern gabs da nicht, nur ein angepasstes Raspbian. Aber schaun wir mal. :mrgreen:
Wie wärs mit einem SaS Update PSG, als SaS Erweiterungsplugin, sozusagen?
... demonstriert u.a. die PSG Möglichkeiten (Aktualisierungszyklen z.B.).
Ist eine Idee. Vielleicht bastel ich mal was in der Richtung. ;)
 
hallo,

das mit dem PIC hatte ich auch kurz vorher gesehen!

muss ich nochmal ran, hab da noch einige alte Sachen zum ändern.
Hintergrund ist, dass durch die Möglichkeit, mehrere Benutzerprofile anzulegen, die PIC-Konstante eigentlich nicht mehr ihren Zweck erfüllt. Die Funktion picdesign() ist bei mir gerade deswegen auch noch in Anpassungsarbeit. Weg von PIC ist zwar kein Muss, aber erspart später viel Anpassungsarbeit der psgs bei neuen sas-Versionen. ;)
 

Zurzeit aktive Besucher

Statistik des Forums

Themen
246,162
Beiträge
2,247,158
Mitglieder
373,688
Neuestes Mitglied
Alf777
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.