[Gelöst] SensorAndSwitch: Pseudoscript für schaltbare Steckdosenleiste: Kookaam Netio 230B

Probier mal das:

PHP:
 <?
    error_reporting(0);
    include "include/includedateien.php";
    include "include/includefunctions.php";
    include "include/includeconf.php";
    include "include/includeconfig.php";
    include "include/includedefine.php";

    $urlstatus='http://lan-ip:port/tgi/control.tgi?login=p:benutzer:kennwort';
    $Status=web($urlstatus,$post);
    var_dump($Status);
    $urlstatus='http://lan-ip:port/tgi/control.tgi?port=list';
    $Status=web($urlstatus,$post);
    var_dump($Status);
    $urlstatus='http://lan-ip:port/tgi/control.tgi?quit=quit';
    $Status=web($urlstatus,$post);
    var_dump($Status);
?>

lan-ip, port, benutzer und kennwort entsprechend einsetzen.
Durch das Trennen der Befehlssequenz müsste es funktionieren. In dem PHP-Script wurde dies auch so gehandhabt. Mal sehen ob es funktioniert. :)
Bitte das Anzeigeergebnis hier posten.
 
Zuletzt bearbeitet:
irgendwas scheint noch zu klemmen, ewiges verbinden im browser, nichts passiert

error.log:

Code:
25-Feb-2015 20:48:12] PHP Warning:  mkdir() [<a href='function.mkdir'>function.mkdir</a>]: File exists in D:\Win7\server2go\htdocs\sensorandswitch\include\includedateien.php on line 9

[25-Feb-2015 20:48:12] PHP Warning:  mkdir() [<a href='function.mkdir'>function.mkdir</a>]: File exists in D:\Win7\server2go\htdocs\sensorandswitch\include\includedateien.php on line 36

[25-Feb-2015 20:48:12] PHP Notice:  Use of undefined constant PRG - assumed 'PRG' in D:\Win7\server2go\htdocs\sensorandswitch\include\includeconf.php on line 10

[25-Feb-2015 20:48:12] PHP Notice:  Use of undefined constant VER - assumed 'VER' in D:\Win7\server2go\htdocs\sensorandswitch\include\includeconf.php on line 11

[25-Feb-2015 20:48:12] PHP Notice:  Undefined variable: Repariere in D:\Win7\server2go\htdocs\sensorandswitch\include\includeconfig.php on line 16

[25-Feb-2015 20:48:12] PHP Notice:  Undefined variable: Repariere in D:\Win7\server2go\htdocs\sensorandswitch\include\includeconfig.php on line 16

......

[25-Feb-2015 20:48:12] PHP Notice:  Undefined variable: Repariere in D:\Win7\server2go\htdocs\sensorandswitch\include\includeconfig.php on line 16

[25-Feb-2015 20:48:13] PHP Notice:  Undefined variable: post in D:\Win7\server2go\htdocs\sensorandswitch\netio1test.php on line 10

der login mit meinen daten stimmt, da ich bei direkteingabe im browser (ohne php) folgende meldung bekomm :
zeile 9 aus netio1test.php : 100 HELLO
zeile 12 :0 0 0 0 (bei allen aus)
zeile 15 : 110 BYE
 
Zuletzt bearbeitet:
Ok, jetzt pur alles in einem Script:
PHP:
<?php
    error_reporting(0);
	$urlstatus='http://lan-ip:port/tgi/control.tgi?login=p:benutzer:kennwort';
	$crl = curl_init();
	$timeout = 5;
	curl_setopt ($crl, CURLOPT_URL,$urlstatus);
	curl_setopt ($crl, CURLOPT_RETURNTRANSFER, 1);
	curl_setopt ($crl, CURLOPT_CONNECTTIMEOUT, $timeout);
	$Status = curl_exec($crl);
	curl_close($crl);
    var_dump($Status);
    $urlstatus='http://lan-ip:port/tgi/control.tgi?port=list';
	$crl = curl_init();
	$timeout = 5;
	curl_setopt ($crl, CURLOPT_URL,$urlstatus);
	curl_setopt ($crl, CURLOPT_RETURNTRANSFER, 1);
	curl_setopt ($crl, CURLOPT_CONNECTTIMEOUT, $timeout);
	$Status = curl_exec($crl);
	curl_close($crl);
    var_dump($Status);
    $urlstatus='http://lan-ip:port/tgi/control.tgi?quit=quit';
	$crl = curl_init();
	$timeout = 5;
	curl_setopt ($crl, CURLOPT_URL,$urlstatus);
	curl_setopt ($crl, CURLOPT_RETURNTRANSFER, 1);
	curl_setopt ($crl, CURLOPT_CONNECTTIMEOUT, $timeout);
	$Status = curl_exec($crl);
	curl_close($crl);
    var_dump($Status);
?>
 
eiei, es geht vorran ! ;-)

browserausgabe : string(22) "100 HELLO" string(21) "0 0 0 0 " string(20) "110 BYE"
 
ok, das ist, was rauskommen soll. Dann bastel ich das zu einem Pseudoscript. Gute Aussichten, dass es dann läuft. :)
 
es ist doch noch nicht mal sonntag !! tsts
 
PHP:
<?php 

	/*
		+---------------------------------------------------------------------+
		|                                                                     |
		|   SensorAndSwitch Automation Pro                                    |
		|   Pseudo-Schalter-Script                                            |
		|   ===============================================================   |
		|   -> Schalter                                                       |
		|      Kookaam Schaltsteckdosen können mit diesem Script eingebunden  |
		|      werden.                                                        |
		|                                                                     |
		+---------------------------------------------------------------------+
	*/
 
	error_reporting(0);
	# ----------------------------------------------------------------------- #
	# Diese Variablen müssen gegebenenfalls angepasst werden:                 #
	# *******************************************************                 #
	$user="benutzer";                   # Benutzer                            #
	$password="1234567";                # Kennwort                            #
	$ipport="192.168.123.123:12345";    # IP-Adresse:Port                     #
	$dosennummer=1;                     # Nummer der Dose 1-4                 #
	# ----------------------------------------------------------------------- #
	
	$dose=$dosennummer-1;
	$on=substr("uuuu1uuuu",4-$dose,1);
	$off=substr("uuuu0uuuu",4-$dose,1);
	
	$urllogin='http://'.$ipport.'/tgi/control.tgi?login=p:'.$user.':'.$password;
	$urllogout='http://'.$ipport.'/tgi/control.tgi?quit=quit';
	$urlstatus='http://'.$ipport.'/tgi/control.tgi?port=list';
	$urlon='http://'.$ipport.'/tgi/control.tgi?p='.$on;
	$urloff='http://'.$ipport.'/tgi/control.tgi?p='.$off;
	
	$crl = curl_init();
	$timeout = 5;
	curl_setopt ($crl, CURLOPT_URL,$urllogin);
	curl_setopt ($crl, CURLOPT_RETURNTRANSFER, 1);
	curl_setopt ($crl, CURLOPT_CONNECTTIMEOUT, $timeout);
	$ret = curl_exec($crl);
	curl_close($crl);
	
	$Status="S#2#";
	if ($_GET["info"]=="status") {
		$crl = curl_init();
		$timeout = 5;
		curl_setopt ($crl, CURLOPT_URL,$urlstatus);
		curl_setopt ($crl, CURLOPT_RETURNTRANSFER, 1);
		curl_setopt ($crl, CURLOPT_CONNECTTIMEOUT, $timeout);
		$Status = curl_exec($crl);
		curl_close($crl);
		$Status="S#".substr($Status,2*$dose,1)."#";
	}
	if ($_GET["schalter"]=="1") {
		$crl = curl_init();
		$timeout = 5;
		curl_setopt ($crl, CURLOPT_URL,$urlon);
		curl_setopt ($crl, CURLOPT_RETURNTRANSFER, 1);
		curl_setopt ($crl, CURLOPT_CONNECTTIMEOUT, $timeout);
		$Status = curl_exec($crl);
		curl_close($crl);
		$Status="S#1#";
	}
	if ($_GET["schalter"]=="0") {
		$crl = curl_init();
		$timeout = 5;
		curl_setopt ($crl, CURLOPT_URL,$urloff);
		curl_setopt ($crl, CURLOPT_RETURNTRANSFER, 1);
		curl_setopt ($crl, CURLOPT_CONNECTTIMEOUT, $timeout);
		$Status = curl_exec($crl);
		curl_close($crl);
		$Status="S#0#";
	}

	$crl = curl_init();
	$timeout = 5;
	curl_setopt ($crl, CURLOPT_URL,$urllogout);
	curl_setopt ($crl, CURLOPT_RETURNTRANSFER, 1);
	curl_setopt ($crl, CURLOPT_CONNECTTIMEOUT, $timeout);
	$ret = curl_exec($crl);
	curl_close($crl);

	echo $Status;

?>
 
Korrektur:
PHP:
<?php 

	/*
		+---------------------------------------------------------------------+
		|                                                                     |
		|   SensorAndSwitch Automation Pro                                    |
		|   Pseudo-Schalter-Script                                            |
		|   ===============================================================   |
		|   -> Schalter                                                       |
		|      Kookaam Schaltsteckdosen können mit diesem Script eingebunden  |
		|      werden.                                                        |
		|                                                                     |
		+---------------------------------------------------------------------+
	*/
 
	error_reporting(0);
	# ----------------------------------------------------------------------- #
	# Diese Variablen müssen gegebenenfalls angepasst werden:                 #
	# *******************************************************                 #
	$user="benutzer";                   # Benutzer                            #
	$password="1234567";                # Kennwort                            #
	$ipport="192.168.123.123:12345";    # IP-Adresse:Port                     #
	$dosennummer=1;                     # Nummer der Dose 1-4                 #
	# ----------------------------------------------------------------------- #
	
	$dose=$dosennummer-1;
	$on=substr("uuuu1uuuu",4-$dose,1);
	$off=substr("uuuu0uuuu",4-$dose,1);
	
	$urllogin='http://'.$ipport.'/tgi/control.tgi?login=p:'.$user.':'.$password;
	$urllogout='http://'.$ipport.'/tgi/control.tgi?quit=quit';
	$urlstatus='http://'.$ipport.'/tgi/control.tgi?port=list';
	$urlon='http://'.$ipport.'/tgi/control.tgi?p='.$on;
	$urloff='http://'.$ipport.'/tgi/control.tgi?p='.$off;
	
	$crl = curl_init();
	$timeout = 5;
	curl_setopt ($crl, CURLOPT_URL,$urllogin);
	curl_setopt ($crl, CURLOPT_RETURNTRANSFER, 1);
	curl_setopt ($crl, CURLOPT_CONNECTTIMEOUT, $timeout);
	$ret = curl_exec($crl);
	curl_close($crl);
	
	$Status="S#2#";
	if ($_GET["info"]=="status") {
		$crl = curl_init();
		$timeout = 5;
		curl_setopt ($crl, CURLOPT_URL,$urlstatus);
		curl_setopt ($crl, CURLOPT_RETURNTRANSFER, 1);
		curl_setopt ($crl, CURLOPT_CONNECTTIMEOUT, $timeout);
		$Status = curl_exec($crl);
		curl_close($crl);
		$Status = str_replace("<html>", "", $Status);
		$Status = str_replace("</html>", "", $Status);
		$Status="S#".substr($Status,2*$dose,1)."#";
	}
	if ($_GET["schalter"]=="1") {
		$crl = curl_init();
		$timeout = 5;
		curl_setopt ($crl, CURLOPT_URL,$urlon);
		curl_setopt ($crl, CURLOPT_RETURNTRANSFER, 1);
		curl_setopt ($crl, CURLOPT_CONNECTTIMEOUT, $timeout);
		$Status = curl_exec($crl);
		curl_close($crl);
		$Status="S#1#";
	}
	if ($_GET["schalter"]=="0") {
		$crl = curl_init();
		$timeout = 5;
		curl_setopt ($crl, CURLOPT_URL,$urloff);
		curl_setopt ($crl, CURLOPT_RETURNTRANSFER, 1);
		curl_setopt ($crl, CURLOPT_CONNECTTIMEOUT, $timeout);
		$Status = curl_exec($crl);
		curl_close($crl);
		$Status="S#0#";
	}

	$crl = curl_init();
	$timeout = 5;
	curl_setopt ($crl, CURLOPT_URL,$urllogout);
	curl_setopt ($crl, CURLOPT_RETURNTRANSFER, 1);
	curl_setopt ($crl, CURLOPT_CONNECTTIMEOUT, $timeout);
	$ret = curl_exec($crl);
	curl_close($crl);

	echo $Status;

?>

Nachtrag:

Werte für $ipport, $user und $password müssen ersetzt werden
$dosennummer ist die Steckdose die es betrifft 1 für die 1. Dose, 4 für die letzte Dose.

Aufruf zum Test mit

pseudo.....php?info=status

zum Schalten:

....php?schalter=1 für an
....php?schalter=0 für aus
 
Zuletzt bearbeitet:
Holla die Waldfee, es geeeeht, die shice geht, und wieder ein gerät mehr das angesteuert werden kann....

recht herzlichen dank mal von meiner seite !!!!!!!


Öhm...wie kann ich den fred von "Frage" auf "Gelöst" ändern ?????
 
Zuletzt bearbeitet:
Sehr schön. Irgendwann musste es ja funktionieren. :)
 
das is mal voll geil, respekt vor dir ;-)

(habs noch gefunden wie man auf gelöst ändert !)
 
da hat sich doch noch ein kleiner fehler eingeschlichen, korrekt funktionieren tut nur die erste dose
2-4 wird im sas zwar "ein" signalisiert, die dosen schalten aber nicht, nach dem ladekringel von sas werden sie auch wieder als aus angezeigt !
 
Schau ich mir an und korrigiere es.

Nachtrag: Unten das korrigierte Script. Die Übergabe der Schaltports war falsch. es wurde nur eine Stelle übergeben statt alle 4. Ist korrigiert. Hatte ich wohl für die Probiererei auf die erste Dose beschränkt und nicht wieder für alle freigegeben.

Statt 1uuu wurde 1 gesendet und das funktionierte für die 1. Dose.
Für die 2. Dose hätte u1uu gesendet werden müssen, aber es wurde nur u gesendet und das machte gar nichts, da u für "belassen der Schalterstellung" steht.

Jetzt wird korrekt der vierstellige Schaltcode erzeugt. Müsste jetzt für alle Dosen funktionieren. :)

Nachtrag2: Absolut seltsam ist dennoch, dass die web()-Funktion, die exakt das Gleiche per curl weitergibt, zu keinem Ergebnis geführt hat. Einziger Unterschied, es wird hier im jetzigen Script keine Browseridentifikatin mitgeliefert. Ein merkwürdiges Verhalten von curl oder der Dose ist es dennoch. Aber Hauptsache es funktioniert jetzt mit dieser Konstellation. Sorry wegen meiner Unachtsamkeit mit den Schaltports. Hätte mir eigentlich gestern noch auffallen müssen. Ist immer etwas schwierig, wenn man es selbst vorher nicht testen kann.
 
Zuletzt bearbeitet:
PHP:
<?php 

	/*
		+---------------------------------------------------------------------+
		|                                                                     |
		|   SensorAndSwitch Automation Pro                                    |
		|   Pseudo-Schalter-Script                                            |
		|   ===============================================================   |
		|   -> Schalter                                                       |
		|      Kookaam Schaltsteckdosen können mit diesem Script eingebunden  |
		|      werden.                                                        |
		|                                                                     |
		+---------------------------------------------------------------------+
	*/
 
	error_reporting(0);
	# ----------------------------------------------------------------------- #
	# Diese Variablen müssen gegebenenfalls angepasst werden:                 #
	# *******************************************************                 #
	$user="benutzer";                   # Benutzer                            #
	$password="1234567";                # Kennwort                            #
	$ipport="192.168.123.123:12345";    # IP-Adresse:Port                     #
	$dosennummer=1;                     # Nummer der Dose 1-4                 #
	# ----------------------------------------------------------------------- #
	
	$dose=$dosennummer-1;
	$on=substr("uuuu1uuuu",4-$dose,4);
	$off=substr("uuuu0uuuu",4-$dose,4);
	
	$urllogin='http://'.$ipport.'/tgi/control.tgi?login=p:'.$user.':'.$password;
	$urllogout='http://'.$ipport.'/tgi/control.tgi?quit=quit';
	$urlstatus='http://'.$ipport.'/tgi/control.tgi?port=list';
	$urlon='http://'.$ipport.'/tgi/control.tgi?p='.$on;
	$urloff='http://'.$ipport.'/tgi/control.tgi?p='.$off;
	
	$crl = curl_init();
	$timeout = 5;
	curl_setopt ($crl, CURLOPT_URL,$urllogin);
	curl_setopt ($crl, CURLOPT_RETURNTRANSFER, 1);
	curl_setopt ($crl, CURLOPT_CONNECTTIMEOUT, $timeout);
	$ret = curl_exec($crl);
	curl_close($crl);
	
	$Status="S#2#";
	if ($_GET["info"]=="status") {
		$crl = curl_init();
		$timeout = 5;
		curl_setopt ($crl, CURLOPT_URL,$urlstatus);
		curl_setopt ($crl, CURLOPT_RETURNTRANSFER, 1);
		curl_setopt ($crl, CURLOPT_CONNECTTIMEOUT, $timeout);
		$Status = curl_exec($crl);
		curl_close($crl);
		$Status = str_replace("<html>", "", $Status);
		$Status = str_replace("</html>", "", $Status);
		$Status="S#".substr($Status,2*$dose,1)."#";
	}
	if ($_GET["schalter"]=="1") {
		$crl = curl_init();
		$timeout = 5;
		curl_setopt ($crl, CURLOPT_URL,$urlon);
		curl_setopt ($crl, CURLOPT_RETURNTRANSFER, 1);
		curl_setopt ($crl, CURLOPT_CONNECTTIMEOUT, $timeout);
		$Status = curl_exec($crl);
		curl_close($crl);
		$Status="S#1#";
	}
	if ($_GET["schalter"]=="0") {
		$crl = curl_init();
		$timeout = 5;
		curl_setopt ($crl, CURLOPT_URL,$urloff);
		curl_setopt ($crl, CURLOPT_RETURNTRANSFER, 1);
		curl_setopt ($crl, CURLOPT_CONNECTTIMEOUT, $timeout);
		$Status = curl_exec($crl);
		curl_close($crl);
		$Status="S#0#";
	}

	$crl = curl_init();
	$timeout = 5;
	curl_setopt ($crl, CURLOPT_URL,$urllogout);
	curl_setopt ($crl, CURLOPT_RETURNTRANSFER, 1);
	curl_setopt ($crl, CURLOPT_CONNECTTIMEOUT, $timeout);
	$ret = curl_exec($crl);
	curl_close($crl);

	echo $Status;

?>
 
jetz gehts korrekt, #1 hab ich für die nachwelt aktualisiert,

jetz hab ich nur noch ein klitzekleines problemchen,
da ich die netio direkt an ner dect200 hängen hab, die ich ja auch mit sas schalten kann, funktioniert mein komplettes sas
nicht in dem fall das die netio aus ist ! da ja keine rückmeldung kommen kann ! gibts da ev ne kleine lösung für dieses problem ??
 
Wenn ich das jetzt richtig verstanden habe, schaltest du dir mit der DECT200 alles ab, auch den Server, auf dem SAS läuft?

Wenn dem so ist, hänge die NETIO direkt an den Strom und verschmerze die paar Watt, die die NETIO verbraucht.
Ansonsten gibts nur einen PI anschaffen, den mit seinen 2 Watt im Dauerbetrieb an eine Steckdose hängen und 24/7 Dauerbetrieb. Der verbraucht so viel wie die DECT200 oder eine Edimax, wenn die aus sind.
Vorteil: Dein SAS ist immer erreichbar und aktiv, du kannst SAS 2.80 drauf machen und Schaltbedingungen beliebiger Art erstellen.
 
Zuletzt bearbeitet:
nene du, der server mit sas ist online, ich schalt mit der dect nur meine netio ab, nur wenn die netio aus ist funktioniert sas nicht mehr,
kann somit die netio nichtmal einschalten ! verstehst ?

wobei ich hab doch die sas 1.50 wg. der fritzboxversion 6.04 !!!

(bin schon am überlegen wegs nem PI, hab nur verdammten respekt den überhaupt ans laufen bringen zu können !!)
 
Zuletzt bearbeitet:
Ah, jetzt verstehe ich. Die vom Netz getrennte NETIO kann nicht mehr angesprochen werden und blockiert SAS. Da muss ich mir was ausdenken, wie man bevor man Befehle an die NETIO schickt, rausbekommen kann, ob die durch die DECT stromlos ist, bevor er da ewig lang versucht, eine Antwort zu bekommen. :gruebel:

Mit dem Pi das ist kein Problem. Ich bastel am Wochenende ein Minimalimage mit SAS, was auf jedem PI läuft und gleich alles installiert hat, was man dazu benötigt.
Einen Pi zum Laufen zu bekommen ist wirklich nicht schwierig. Eine Schritt für Schritt - Anleitung gibts im SAS-Web. Hier mal als Lektüre zum Reinlesen: http://sensorandswitch.bplaced.net/sensorandswitch/komplettraspberrypi.php
 
nene du, der server mit sas ist online, ich schalt mit der dect nur meine netio ab, nur wenn die netio aus ist funktioniert sas nicht mehr,
kann somit die netio nichtmal einschalten ! verstehst ?
Ich habe das Script bei mir getestet, da ich ja keine NETIO habe und somit er auch keine finden kann. In der Version 2.80 gab es keine Aussetzer oder Probleme. Nur wenn ich zu schalten versuchte, legte er eine 10 Sekunden Gedenkpause ein. Das liegt wohl am alten Konzept meiner Version 1.50, die dann je nach Webserverkonfiguration eine seeehr lange Gedenkpause einlegt, weil es auf Antwort hofft.

Vielleicht freundest du dich doch an den Gedanken an einen Pi als Schaltzentrale an. ;)
 
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.