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

So, habs auch gleich "modernisiert":


pseudokookaam1.php
PHP:
<?php 

	/*
		+---------------------------------------------------------------------+
		|                                                                     |
		|   SensorAndSwitch Automation Pro                                    |
		|   Pseudo-Schalter-Script                                            |
		|   ===============================================================   |
		|   -> Schalter                                                       |
		|      Kookaam Schaltsteckdosen können mit diesem Script eingebunden  |
		|      werden.                                                        |
		|                                                                     |
		+---------------------------------------------------------------------+
	*/
 
	error_reporting(0);
	include "include/includedateien.php";
	include "include/includefunctions.php";
	include "include/includeconf.php";
	include "include/includeconfig.php";
	include "include/includedefine.php";
	# ----------------------------------------------------------------------- #
	# Diese Variablen müssen gegebenenfalls angepasst werden:                 #
	# *******************************************************                 #
	$user="benutzer";                   # Benutzer                            #
	$password="1234567";                # Kennwort                            #
	$ip="192.168.123.123";              # IP-Adresse                          #
	$dosennummer=1;                     # Nummer der Dose 1-4                 #
	# ----------------------------------------------------------------------- #
	$Scriptname=pathinfo($_SERVER['PHP_SELF'],PATHINFO_FILENAME);
	
	$dose=$dosennummer-1;
	$on=substr("uuuu1uuuu",4-$dose,1);
	$off=substr("uuuu0uuuu",4-$dose,1);
	
	$urlstatus='http://'.$ip.'/cgi/control.cgi?login=p:'.$user.':'.$password.'&p=l';
	$urlon='http://'.$ip.'/cgi/control.cgi?login=p:'.$user.':'.$password.'&p='.$on;
	$urloff='http://'.$ip.'/cgi/control.cgi?login=p:'.$user.':'.$password.'&p='.$off;
	
	$Status="S#2#";
	if ($_GET["info"]=="status") {
#		$Status=web($urlstatus,$post);
		$Status=file_get_contents($urlstatus);
		$Status="S#".$Status."#";
#		$Status="S#".substr($Status,2*$dose,1)."#";
	}
	if ($_GET["schalter"]=="1") {
#		$Status=web($urlon,$post);
		$Status=file_get_contents($urlon);
		$Status="S#1#";
	}
	if ($_GET["schalter"]=="0") {
#		$Status=web($urloff,$post);
		$Status=file_get_contents($urloff);
		$Status="S#0#";
	}
	echo $Status;

?>

Nachtrag: Zur Erklärung: Die Datenholung und der Aufruf erfolgen nun nicht mehr über curl sondern über file_get_contents(). Dabei versucht php, eine Webseitenadresse zum Senden ihres Inhalts zu bringen. Es kann sein, dass dabei mehr Daten (also auch html-Tags) mitgesendet werden. Daher nicht enttäuscht sein, wenn nichts Gescheites rauskommt. Wichtig ist, dass zwischen den S## was steht. :) Wenn das der Fall ist, bekommen wir es schon hin.

Nachtrag2: Habe gerade nochmal den Code ergänzt!
Nachtrag: Fehler korrigiert.
 
Zuletzt bearbeitet:
die 1.50.1581 hab ich noch, muß ich nur aufn server kopieren

na mir gehts ja eigentlich auch darum strom zu sparen (bin leider ein echter schwabe *gg*) die netio kommt an die dect 200

in die netio
Thecus YES-box (NAS die sich nicht per wol einschalten lässt)
hightech Drucker
2.Router

für die paar dinge zu schalten wäre ein ständig laufender server stromverschwendung, wobei moment,
da kommt mir gerade ne ideeeee, den server könnt ich ja auch gleich mit der dect 200 mitstarten !hm...
 
Nur so am Rande. Der RaspberryPI verbraucht nur 1,8W. Das ist weniger als die DECT200. ;)
 
so 1.50 läuft

fehlerausgabe info status : Parse error: syntax error, unexpected T_DNUMBER in /var/www/vhosts/123456.de/httpdocs/sasverzeichnis/pseudokookaam1.php on line 33

Code:
$on=substr("uuuu1uuuu".4-$dose,1);

sind da ev. zuviele u 's drinne ?

Code:
$on=substr("1uuu".4-$dose,1);

vielleicht so besser ??
 
Zuletzt bearbeitet:
Nein, aber da steht . statt , .... sorry

muss heißen:
$on=substr("uuuu1uuuu",4-$dose,1);
$off=substr("uuuu0uuuu",4-$dose,1);
 
status info : S##

jetzt dauert auch der hauptseitenaufbau wieder ewig
da kam die fehlermeldung vorhin echt mal flotter ! *gg*
 
Zuletzt bearbeitet:
Dann sieht es schlecht aus, von Außen über php-Aufrufe an die Steckdose zu kommen. Zumindest fällt mir im Moment kein Weg dazu ein. Es scheint doch irgendwas gesperrt zu sein. Dass wieder garnichts ankommt, heißt, dass der Befehl nicht durchkommt und keine Rückantwort von der Dose bekommt.

Vielleicht fällt mir noch was ein, aber im Augenblick siehts nicht gut aus, das zu realisieren.
 
d.h. ich müßte von einem internen server aus steuern !?

ich realisier das morgen mal mit dem server2go und versuchs mal intern

intern müßte dann auch des curl laufen oder ?
 
Damit müsste es funktionieren, da du dort auch alle Teile, die im Webserver benötigt werden, hinzufügen kannst und auch zur Nutzung freigeben kannst.
 
oki, denn bedank ich mich mal vorerst für die mühen und meld mich wieder wenns intern läuft (oder auch nicht *gg*)
 
Die Frage ist halt nur, ob sich der Aufwand lohnt, einen Webserver dafür komplett aufzusetzen.
 
eine frage hätt ich jetzt aber noch, wie bekomme ich das hauptdisplay von sensorandswitch an den oberen rand des browserfensters und darunter noch ein bisschen html integriert ohne extra noch frames einzubauen ??
 
Das ist etwas kompliziert, da die sas-Seite eine css3-Formatierung besitzt. Das heißt, die Mittung des Dialoges müsste aus der /include/includehtml.php entfernt werden.

Vielleicht besser wäre es, wenn du die includehtml.php editierst und ganz unten in der function HTMLBottom() deinen HTML-Code hinzufügst und zwar hier:

PHP:
function HTMLBottom() {
/*******************/
	printf ('
		DAS-WAS-DU-EINFÜGEN-MÖCHTEST-AN-HTML-CODE
	');
	printf (
					   '</div>
					</div>
				</div>
			</body>
		</html>'
	);
}

?>
 
Zu deiner Dose hätte ich auch noch eine letzte Idee:

Kopiere an die Stelle, die xxxxxxxxxx heißt, deinen kompletten Link, den du in deinem Browser zum manuellen Aufruf des Status benutzt komplett mit http..... usw. und rufe das Script dann im Browser auf:

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='xxxxxxxxxx';

	var_dump(file_get_contents($urlstatus));
	var_dump(web($urlstatus,$post));
?>

Wenn da auch nichts rauskommt außer boolean(false), gehts einfach nicht in der Konstellation.
 
bin hier am mitlesen, da mich so eine Steckdosenleiste auch Interressieren würde.

im allgemeinen, wenn @JL3 das nicht zum laufen kriegt, sieht es schlecht aus.

nur eins ist mir neim lesen der Bedienungsanleitung aufgefallen,

5.3.4
CGI commands
NETIO-230B can easily be integrated into your applications using CGI commands.
CGI command device control uses the following command format:
http://<IPaddress>/tgi/control.tgi?<command>

da ist nicht cgi sondern tgi geschrieben, hat das was zu bedeuten?
das deshalb kein Status zurück kommt.
 
@ws65: Jep, in der Bedienungsanleitung steht t. Ist echt etwas verwirrend. Deswegen mein Rat, dass oha0815 mal seinen manuellen URL-Link vom Browser, der schaltet bzw. anzeigt, da reinkopiert. Bin gespannt aufs Ergebnis.
 
naabend,

die browserausgabe zeigt blöderweise : bool(false)

ich hab im statusabruflink der dose original "cgi/" drin stehn des passt und funktioniert !
ich les da nirgends tgi:cgi.JPG dosen firmware 4.05

die dose schaltet auch über die html-links superschnell wenn ich über die dyndns-adresse geh,
könnte es ev. noch an meinem verwendeten port liegen ??
öhm, was muß ich beim verwendeten FB benutzer außer :
Zugang auch aus dem Internet erlaubt und
Smarthome
noch was aktivieren ?

meine dect geht ja über sas
portfreigabe hab ich für die dose, sonst würde mein html-link ja auch nicht funktionieren !

was ich jetz aber noch gefunden hab in der bed-anleitung:

ich hab da nen web-port und nen kshell-port, könnte des was bringen wenn ich den kshell benutz ?
 
Zuletzt bearbeitet:
Haha, tgi war schlicht ein Druckfehler, das dachte ich mir schon.
Wichtig wären die Rückgaben, aber da hilft dir JL3 bestimmt.
 
@oha0815: hast du das aus Post #55 versucht? Bitte Ergebnis posten.

Vergiss es, hast du ja, wie ich grad überlesen habe...

bool(false) bedeutet, dass der Befehl nicht ausgeführt werden konnte und einen Fehler liefert. :gruebel:

Hm, der Port muss raus und rein frei sein. Du gehst ja den Umweg über "draußen". Vielleicht deshalb.
 
Zuletzt bearbeitet:
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.