SensorAndSwitch Haus-Automation auf Webserver-Basis

hallo,

hab mal wieder eine Frage an die Experten.

ich kann ja in der Browser Zeile mit

sensorandswitch.php?ain=08761 0144480&schalter=an

eine Fritzdose direkt einschalten.
Geht das auch aus einem anderen PHP-Script?
Versuche mit include("sensorandswitch.php?ain=08761 0144480&schalter=an")
funktionieren nicht.
Gibt es da einen anderen Befehl, oder wie kann ich dabei die Parameter mit übergeben?
 
Mit HTTP URL Syntax lieber so...
PHP:
function HTTP_CALL($url) {
$ch = curl_init();
$timeout = 5;
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0)");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST,false);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER,false);
curl_setopt($ch, CURLOPT_MAXREDIRS, 10);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
$Link = curl_exec($ch);
curl_close($ch);
}
...im PHP: HTTP_CALL("http://fritz.box:81/sensorandswitch/sas.php?ain=087610144480&schalter=an");

Mit PHP include und require_once kannst du keine ? und & verwenden.
 
Zuletzt bearbeitet:
Danke, Super

hat zwar etwas gedauert bis ich das gerafft habe, aber es geht.

reicht das wenn die Funktion einmal definiert wird, oder muss ich das vor jeden Schaltaufruf neu machen?

kann ich aber austesten.
 
Einmal reicht.
Sie kann aber auch inkludiert werden. ;)
Also als PHP abspeichern und wo du es in irgendeinem PHP brauchst inkludieren.
Zum Beispiel als my_funcs.inc
Und natürlich in: <?PHP...?>
Im PHP Skript (Oben) dann: require oder require_once oder include "my_funcs.inc";

So ähnlich macht JL3 das bestimmt auch oft, um das Rad nicht immerwieder Neuzuerfinden.
 
Zuletzt bearbeitet:
hmm. Das Update auf 991 ist gelaufen. Nun sehen ich aber nur noch meine Pseudogeräte und nicht mehr die Smarthome Steckdosen. Die Zugangsdaten zur Fritzbox scheinen aber zu stimmen. Habe sie auch nochmal neu eingetragen.

Vor dem Update lief alles normal.

Irgendeine Idee?

//edit: ich habe seit langem mal von vorne angefangen. Mit leerem Verzeichnis und der erst-Installation. Nun läuft es. Keine Ahnung was da schiefgelaufen ist.
 
Zuletzt bearbeitet:
@alle:

Hallo ich habe mal das Script "pseudofon1.php" vom Beitrag #473 auf meine Box 7390 geladen
und wollte es bei einem bestimmten Ereignis klingeln lassen ( z.B. Verbrauch an Dect200-Dose über 300Watt signalisieren ).

Um diese Funktion zu nutzen habe ich im "sensorandswitchautoproui.php" einfach einen Schaltpunkt erzeugt
und mit "sensorandswitchautopro.php" laufen lassen.

Das Telefon ist am FON1 Anschluss angeschlossen und klingelt bei normalen Anrufen aber leider nicht bei meinem gewollten Ereignis.

Leider habe ich noch nicht den Fehler gefunden was da bei mir an Einstellungen oder Dateien noch fehlt bzw. was noch installiert werden muss.

Für einen Tipp wie ich das Script zum laufen bekomme, wäre ich froh.

Vielen Dank
 
Zuletzt bearbeitet:
Voraussetzung: Webserver läuft auf Fritz!Box
Zu beachten ist: Wählhilfe Telefon ist Quelltelefon (Das klingelt nicht b.z.w. erst wenn Ziel abnimmt)
Also: Fon1 nicht anrufen oder als Wählhilfe ein DECT einstellen.
 
@ElefantenMaus

das aus Post #473 tut´s bei mir auch nicht.

habe aber inzwischen jede Menge ander Scripte zum klingeln.

z.B.
PHP:
	/*
		+---------------------------------------------------------------------+
		|                                                                     |
		|   SensorAndSwitch Automation Pro                                    |
		|   PseudoGeräte-Script                                               |
		|   ===============================================================   |
		|   -> Schalter                                                       |
		|      Dieses Script schaltet durch wählen einer Telefon-Nummer       |
		|                                                                     |
		|                                                                     |
		+---------------------------------------------------------------------+
	*/
 
	$Pfad=".";
	
	$Status="S##E##";
	if (!file_exists("statusschalter.txt")) {
		$fp=fopen("statusschalter.txt","w");
		$Status="0";
		fputs($fp,"S#".$Status."#");
		fclose($fp);
	}
	if ($_GET["info"]=="status") {
		$fp=fopen("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("statusschalter.txt","w");
		shell_exec('/usr/bin/ctlmgr_ctl w telcfg command/Dial **1');
		$Status="S#1#";
		fputs($fp,$Status);
		fclose($fp);
		sleep(5);
		shell_exec('/usr/bin/ctlmgr_ctl w telcfg command/Hangup 1');
	}
	if ($_GET["schalter"]=="0") {
		$fp=fopen("statusschalter.txt","w");
		shell_exec('/usr/bin/ctlmgr_ctl w telcfg command/Dial **1');
		$Status="S#0#";
		fputs($fp,$Status);
		fclose($fp);
		sleep(5);
		shell_exec('/usr/bin/ctlmgr_ctl w telcfg command/Hangup 1');
	}
	echo $Status;

?>

das wählt die Nummer 1 und legt nach 5 Sekunden wieder auf
 
Danke für die Hinweise und das Script werde alles ausprobieren.
 
Beim Beispiel in Post #473 wird CGI (Shellskript) benutzt.
Im Serverroot muss also auch ein cgi-bin/dialer.cgi existieren.
Alle CGI Skripte müssen auch ausführbar sein.
Ist bei meiner Installation so und funktioniert auch.
Beispiel, meine Startdatei: /sensorandswitch/index.cgi
Code:
#!/bin/sh
echo 'Content-Type: text/html; charset="utf-8"
Refresh: 2;URL=sas.php
'
echo '<!DOCTYPE html>
<html>
<head>
<title>SensorAndSwitch</title>
</head>
<body>...leite um...</body>
</html>
'
Deswegen muss ich Post #473 auch nicht korrigieren.
 
Zuletzt bearbeitet:
Seit gestern Abend habe ich die Himbeere und inzwischen hat sie den Fritzbox-Part mit Webserver, PHP, CURL usw. übernommen. Dabei kam mir die nicht funktionierende E-Mailverschickung, die ja nur auf der Fritzbox lief, in die Quere. Kurzerhand gibt es jetzt eine Lösung für alle Webserver. Ich habe PHPMailer eingebunden und das funktioniert auch mit Fritzbox und RaspPI sehr gut. Zwar mussten mehr Felder in die sensorandswitchmail.phpconf aufgenommen werden, doch werden diese soweit möglich selbst generiert, sodass kein Benutzereingriff nötig sein dürfte.

Ich teste es noch bis es als 1.20 eingestellt wird. :)
 
Cool dann wird alles auch für mein Synology NAS einfacher ...
 
@ws65:

das Script läuft wunderbar und es hat die Möglichkeit die Nummeren zu ändern je nach DECT-Fon.
Jetzt fehlt nur noch die Möglickkeit je nach Ereignis einen anderen Klinkenton zu aktivieren was leider daran scheitert das nur immer ein Klingelton für "Intern / Rundruf" auzuwählen ist. Aber mit 1 Internen Ton kann man erstmal das ganze laufen lassen.

Gruss ElefantenMaus
 
Neue Version 1.20.1022
weitere Infos im
SensorAndSwitch Web
  • [1022] Mit PHPMailer kommt die Einführung eines neuen E-Mail-Versandt-Systems, welches nun nicht nur auf der Fritzbox, sondern auch auf RaspberryPI und anderen Webservern funktioniert. Änderungen in der sensorandswitchmail.phpconf können, müssen aber nicht angepasst werden, da das Script fehlende Werte selbst bildet oder umwandelt und dann verwendet.
 
@JL3:

Habe mal eine Frage zum "SAS-Zusatzpaket cURL für die Fritzbox" für was wird dieses Paket auf der FritzBox benötigt.
 
@ElefantenMaus: Z. B. für einen Benutzer, der cURL als "Betriebssystembefehl" für seine Edimax-Dosen benötigt, die sich so über PseudoGeräte schalten lassen. Ansonsten benötigt man es nicht zur Lauffähigkeit von sas.
 
Zuletzt bearbeitet:
@JL3:

kann man das Symbol (z.B. Wolke,Regen,Sonne,Nebel usw.) und die Temperatur was das Script "pseudowetter.php"
laut der Standortdaten ausliest nicht in ein Bild wandeln.

Damit hat man die Möglichkeit mit der Funktion Life-Bild der AVM-Telefone MT-F, C4 usw. sich das aktuelle Wetter auf
den Telefonen anzeigen zulassen.

Meine Versuche liefen mit einem JPG-Bild was ich in einem Ordner auf meinem USB-Stick der an der FritzBox steckt
geladen habe.

Der Link der benutzt werden kann wäre z.B.: "ftp://Benutername:p[email protected]/meinwetter.jpg"

Der User muss nur einen Ordner auf dem USB-Stick mit Benutzername und Passwort auf der FritzBox freigeben
und hat dadurch die Möglichkeit das "Wettersymbol und die Temperatur des Standorts" auf dem Telefon anzuzeigen.

Leider fehlt mir das nötige Wissen und die Programme um das Symbol und die Temperaturdaten in ein JPG-Bild umzuwandeln
und dann in den Ordner auf den USB-Stick zuladen.

Das ist mal ein Gedanke für ein neues Script was auf der FritzBox laufen könnte.
 
@ElefantenMaus: Ich arbeite an dem Problem, Daten generell in kurzen Zeitabständen auf das MT-F etc. zu schicken. Denn jedesmal das Livebild am MT-F aufrufen zu müssen, würde mich stören. Die hier in anderen Threads aufgezeigten Lösungen (z Tl. als Windows-Programm) sind nicht wirklich für PHP geeignet. Da wird zum Teil von der veränderungsanfälligen Weboberfläche Daten ermittelt, die aber für mich nicht so ganz stimmig sind, weil ich daraus nur schwer ermitteln kann, was das ermittelte jeweilige Telefon wirklich anzeigen kann. Eine hochinteressante Lösung sind auch digitale Bilderrahmen. Auch dazu gibt es hier einige interessante Threads. Da hätte man dann gleich ein kleines Anzeige-Kontrollzentrum. Das wäre auch Fritzbox-unabhängig. Die Rahmen werden über URL mit Infos per PUSH versorgt. Man schickt hin und die zeigen an.

Ich behalte das Ganze im Auge. ;)
 
Das mit der Anzeige und Steuerung über MT-F wäre eine feine Sache.
@JL3 ich sehe in deiner Signatur 8 mal Dect 200, über die Fritzbox sind doch nur max. 6 Geräte über DECT möglich?
Könnte man da mehr anschliessen?
 
Zuletzt bearbeitet:
6 DECT-Telefone und 10 DECT200, dann ist lt. AVM Schluss. ;)

546E über WLAN beliebig viele (bis IP-Adressraum belegt ist)

Nachtrag: Muss meine Signatur ändern, hab jetzt 10 DECT200. :)
 
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.