Ankündigung

Einklappen
Keine Ankündigung bisher.

Fritz Dect 200 Anbindung

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

    Fritz Dect 200 Anbindung

    Hallo,

    mein Name ist Wolfram ich lese schon geraume Zeit hier mit, da ich das Projekt sehr interessant finde.

    Ich habe im moment den Raspi mit Smarthome.pi, den Logitech Media Server am laufen. Der One wire bus lief auch schon.

    Dafür schon mal großes lob, für die Arbeit!

    Im moment scheiter ich leider dran meine Fritz Dect 200 Steckdosen einzubinden.

    Es gibt ja noch nichts vorgefertigtes.

    Erster Ansatz war: Die Steckdosen lassen siech über einen Http befehl schalten,
    Also Button mit dem Befehl erstellt und ausgeführt, siehe da er schaltet, ABER er öffnet immer ein neues Fenster mit der Rückmeldung alo 1 oder 0 für an oder aus.
    Ich bin allerdings kläglich dran gescheitert dieses Fenster zu unterdrücken.
    Somit fällt die Lösung aus.

    <input type="button" onclick="window.location.href = 'http://fritz.box/webservices/homeautoswitch.lua?ain=08761000XXXX&switchcmd=sets witchoff&sid=48bdc3ed1ce91XXX'" target="_blank" value="Fernsehen AUS" />

    Ich habe ein PHP script in einem anderem Forum gefunden, das macht im Prinzip genau das was ich brauche, nämlich den zustand der Steckdosen auslesen und knöpfe zum aus und anschalten bereitstellen.

    Jetzt hab ich leider 0,0 PHP Kenntnisse. Somit hab ich einfach versucht den Code in die Unterseite als Beispiel first.bath.html einzufügen. Den HTML code führt er aus, den PHP code nicht.

    Dann hab ich mich ein bisschen eingelesen und da gesehen das er ja nur auf den normalen HTML seiten die direkt aufgerufen werdn Code ausführt.

    In der Smartvisu macht er ja den aufruf nicht direkt sondern über index.php?page=first.bath.

    Also geht das nicht so wie ichs mir erhofft hatte.

    Hier mal der Code:
    Code:
    <?php
    /**
     * Script zur Benutzung des Fritzbox SmartHome Interfaces
     * (c) 2013 robw (auf Basis eines Scripts v. C. Koch)
     */
    //Die folgenden Zeilen MüSSEN an die lokalen Erfordernisse angepasst werden.
    
    define('USER','');
    define('PASS','');
    define('AIN1','08761000XXXX');
    define('AIN2','08761000XXXX');
    define('AIN3','0876100XXXXX');
    define('AIN4','08761000XXXX');
    define('AIN5','0876100XXXXX');
    define('AIN6','0876100XXXXX');
    
    
    /***************NO NEED TO CHANGE ANYTHING BENEATH THIS LINE**************************/
    
    define('LOGINURL','http://192.168.0.1/login_sid.lua');
    define('AHAURL','http://192.168.0.1/webservices/homeautoswitch.lua');
    define('SID',GetSid(USER,PASS));
    
    $ain = $_GET['ain'];
    $task = $_GET['task'];
    
    switch ($task) {
      case "off" :
        $rsp = file_get_contents(AHAURL."?ain=$ain&switchcmd=setswitchoff&sid=".SID);
        break;
      case "on" :
        $rsp = file_get_contents(AHAURL."?ain=$ain&switchcmd=setswitchon&sid=".SID);
        break;
    }
    
    function GetSid($user,$pass) {
      $doc = file_get_contents(LOGINURL);
      $xml = simplexml_load_string($doc);
      $sid = $xml->SID;
      if ($sid == "0000000000000000") {
        $chl = $xml->Challenge;
        $rsp = GetResponse($chl,PASS);
        $uri = LOGINURL."?username=".USER."&response=$rsp";
        $doc = file_get_contents($uri);
        $xml = simplexml_load_string($doc);
        $sid = $xml->SID;
      }
      return $sid;
     
    }
    
    function GetResponse($chl,$pass) {
       return $chl."-".GetMD5Hash($chl."-".PASS);
    }
    
    function GetMD5Hash($s){
       return md5(mb_convert_encoding($s,"UCS-2LE","UTF-8"));
    }
    ?>
    
    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    </head>
    
    <body>
    <div data-role="page" id="{{ page }}" class="base" data-theme="a">
    		<div data-role="header" data-position="fixed" data-tap-toggle="false">
    			<div class="ui-left">
    			</div>
    			<div class="ui-right">
    				<div class="mini">
    					<span id="miniclock" class="miniclock" data-widget="clock.miniclock" data-repeat="1i">{{ now|date('H:i') }}</span>, {{ now|date('d.m,') }} v{{ config_version }}</div>
    			</div>
    			<div class="signal hide" onClick="$('.ui-page-active .alert').popup('open');"></div>
    			<div class="alert" data-role="popup" data-overlay-theme="a">
    				<div data-role="header" data-theme="c"><h1></h1></div>
    				<p></p>
    
    				<div class="control">
    					<span class="stamp"></span>
    					<a onClick="notify.remove();" class="ui-mini" data-icon="check" data-iconpos="top" data-role="button" data-inline="true">OK</a>
    					<a onClick="$('.alert').popup('close');" class="ui-mini" class="ui-mini" data-icon="delete" data-iconpos="top" data-role="button" data-inline="true">Cancel</a>
    				</div>
    
    			</div>
    		</div>
    
    		<div data-role="content" class="page-bg">
    			<div class="primary" style="background-image: none;">
    <table border="0" cellspacing="0" cellpadding="0" width="500px">
    	<tr><th colspan="7" align="center">Die Fritzbox - Netzsteckdosen</th></tr>
    	<tr><td colspan="7"><hr noshade="noshade" size="1"></td></tr>
    	<tr><td>&nbsp;</td><td align="center" class="blue">Aktor</td><td class="blue">&nbsp;&nbsp;Schalter</td><td class="blue">AN</td><td class="blue">&nbsp;|&nbsp;W</td><td class="blue">&nbsp;|&nbsp;kWh</td></tr>
    	<tr><td colspan="7"><hr noshade="noshade" size="1"></td></tr>
    	<tr><td>
    		<form method="get" name="s1">
    	
    		<?php
    		$strom = '';
    		$verbrauch = '';
    		$name = file_get_contents(AHAURL.'?ain='.AIN1.'&switchcmd=getswitchname&sid='.SID);
    		$status = file_get_contents(AHAURL.'?ain='.AIN1.'&switchcmd=getswitchstate&sid='.SID);
    		if ($status == 1) {
    			$strom = file_get_contents(AHAURL.'?ain='.AIN1.'&switchcmd=getswitchpower&sid='.SID)/1000;
    			$verbrauch = file_get_contents(AHAURL.'?ain='.AIN1.'&switchcmd=getswitchenergy&sid='.SID)/1000;
    		}
    		?>
    		<td align="right"><?php echo $name;?></td>
    		<td>&nbsp;<input type="hidden" id="ain" name="ain" size="12" value="<?php echo AIN1;?>">
    			<select name="task" size="1" onchange="this.form.submit()">
    			<option>Switch ></option>
    			<option value="on">On</option>
    			<option value="off">Off</option>
    			</select>
    		</td>
    		<td align="center" width="2%" nowrap><?php echo $status;?></td>
    		<td width="5%" nowrap>&nbsp;|&nbsp;<?php echo $strom;?></td>
    		<td width="10%" nowrap>&nbsp;|&nbsp;<?php echo $verbrauch;?></td>
    		</form>
    	</td><td width="10%">&nbsp;</td></tr>
    	<tr><td>
    		<form method="get" name="s2">
    		<?php
    		$strom = '';
    		$verbrauch = '';
    		$name = file_get_contents(AHAURL.'?ain='.AIN2.'&switchcmd=getswitchname&sid='.SID);
    		$status = file_get_contents(AHAURL.'?ain='.AIN2.'&switchcmd=getswitchstate&sid='.SID);
    		if ($status == 1) {
    			$strom = file_get_contents(AHAURL.'?ain='.AIN2.'&switchcmd=getswitchpower&sid='.SID)/1000;
    			$verbrauch = file_get_contents(AHAURL.'?ain='.AIN2.'&switchcmd=getswitchenergy&sid='.SID)/1000;
    		}
    		?>
    		<td align="right"><?php echo $name;?></td>
    		<td>&nbsp;<input type="hidden" id="ain" name="ain" size="12" value="<?php echo AIN2;?>">
    			<select name="task" size="1" onchange="this.form.submit()">
    			<option>Switch ></option>
    			<option value="on">On</option>
    			<option value="off">Off</option>
    			</select>
    		</td>
    		<td align="center" width="2%" nowrap><?php echo $status;?></td>
    		<td width="5%" nowrap>&nbsp;|&nbsp;<?php echo $strom;?></td>
    		<td width="10%" nowrap>&nbsp;|&nbsp;<?php echo $verbrauch;?></td>
    		</form>
    	</td><td width="10%">&nbsp;</td></tr>
    	<tr><td>
    		<form method="get" name="s3">
    		<?php
    		$strom = '';
    		$verbrauch = '';
    		$name = file_get_contents(AHAURL.'?ain='.AIN3.'&switchcmd=getswitchname&sid='.SID);
    		$status = file_get_contents(AHAURL.'?ain='.AIN3.'&switchcmd=getswitchstate&sid='.SID);
    		if ($status == 1) {
    			$strom = file_get_contents(AHAURL.'?ain='.AIN3.'&switchcmd=getswitchpower&sid='.SID)/1000;
    			$verbrauch = file_get_contents(AHAURL.'?ain='.AIN3.'&switchcmd=getswitchenergy&sid='.SID)/1000;
    		}
    		?>
    		<td align="right"><?php echo $name;?></td>
    		<td>&nbsp;<input type="hidden" id="ain" name="ain" size="12" value="<?php echo AIN3;?>">
    			<select name="task" size="1" onchange="this.form.submit()">
    			<option>Switch ></option>
    			<option value="on">On</option>
    			<option value="off">Off</option>
    			</select>
    		</td>
    		<td align="center" width="2%" nowrap><?php echo $status;?></td>
    		<td width="5%" nowrap>&nbsp;|&nbsp;<?php echo $strom;?></td>
    		<td width="10%" nowrap>&nbsp;|&nbsp;<?php echo $verbrauch;?></td>
    		</form>
    	</td><td width="10%">&nbsp;</td></tr>
    	<tr><td>
    		<form method="get" name="s4">
    		<?php
    		$strom = '';
    		$verbrauch = '';
    		$name = file_get_contents(AHAURL.'?ain='.AIN4.'&switchcmd=getswitchname&sid='.SID);
    		$status = file_get_contents(AHAURL.'?ain='.AIN4.'&switchcmd=getswitchstate&sid='.SID);
    		if ($status == 1) {
    			$strom = file_get_contents(AHAURL.'?ain='.AIN4.'&switchcmd=getswitchpower&sid='.SID)/1000;
    			$verbrauch = file_get_contents(AHAURL.'?ain='.AIN4.'&switchcmd=getswitchenergy&sid='.SID)/1000;
    		}
    		?>
    		<td align="right"><?php echo $name;?></td>
    		<td>&nbsp;<input type="hidden" id="ain" name="ain" size="12" value="<?php echo AIN4;?>">
    			<select name="task" size="1" onchange="this.form.submit()">
    			<option>Switch ></option>
    			<option value="on">On</option>
    			<option value="off">Off</option>
    			</select>
    		</td>
    		<td align="center" width="2%" nowrap><?php echo $status;?></td>
    		<td width="5%" nowrap>&nbsp;|&nbsp;<?php echo $strom;?></td>
    		<td width="10%" nowrap>&nbsp;|&nbsp;<?php echo $verbrauch;?></td>
    		</form>
    	</td><td width="10%">&nbsp;</td></tr>
    	<tr><td>
    		<form method="get" name="s5">
    		<?php
    		$strom = '';
    		$verbrauch = '';
    		$name = file_get_contents(AHAURL.'?ain='.AIN5.'&switchcmd=getswitchname&sid='.SID);
    		$status = file_get_contents(AHAURL.'?ain='.AIN5.'&switchcmd=getswitchstate&sid='.SID);
    		if ($status == 1) {
    			$strom = file_get_contents(AHAURL.'?ain='.AIN5.'&switchcmd=getswitchpower&sid='.SID)/1000;
    			$verbrauch = file_get_contents(AHAURL.'?ain='.AIN5.'&switchcmd=getswitchenergy&sid='.SID)/1000;
    		}
    		?>
    		<td align="right"><?php echo $name;?></td>
    		<td>&nbsp;<input type="hidden" id="ain" name="ain" size="12" value="<?php echo AIN5;?>">
    			<select name="task" size="1" onchange="this.form.submit()">
    			<option>Switch ></option>
    			<option value="on">On</option>
    			<option value="off">Off</option>
    			</select>
    		</td>
    		<td align="center" width="2%" nowrap><?php echo $status;?></td>
    		<td width="5%" nowrap>&nbsp;|&nbsp;<?php echo $strom;?></td>
    		<td width="10%" nowrap>&nbsp;|&nbsp;<?php echo $verbrauch;?></td>
    		</form>
    	</td><td width="10%">&nbsp;</td></tr>
    	<tr><td>
    		<form method="get" name="s6">
    		<?php
    		$strom = '';
    		$verbrauch = '';
    		$name = file_get_contents(AHAURL.'?ain='.AIN6.'&switchcmd=getswitchname&sid='.SID);
    		$status = file_get_contents(AHAURL.'?ain='.AIN6.'&switchcmd=getswitchstate&sid='.SID);
    		if ($status == 1) {
    			$strom = file_get_contents(AHAURL.'?ain='.AIN6.'&switchcmd=getswitchpower&sid='.SID)/1000;
    			$verbrauch = file_get_contents(AHAURL.'?ain='.AIN6.'&switchcmd=getswitchenergy&sid='.SID)/1000;
    		}
    		?>
    		<td align="right"><?php echo $name;?></td>
    		<td>&nbsp;<input type="hidden" id="ain" name="ain" size="12" value="<?php echo $sid;?>">
    			<select name="task" size="1" onchange="this.form.submit()">
    			<option>Switch ></option>
    			<option value="on">On</option>
    			<option value="off">Off</option>
    			</select>
    		</td>
    		<td align="center" width="2%" nowrap><?php echo $status;?></td>
    		<td width="5%" nowrap>&nbsp;|&nbsp;<?php echo $strom;?></td>
    		<td width="10%" nowrap>&nbsp;|&nbsp;<?php echo $verbrauch;?></td>
    		</form>
    	</td><td width="10%">&nbsp;</td></tr>
    	<tr><td colspan="7"><hr noshade="noshade" size="1"></td></tr>
    	<tr><td colspan="7" align="center"><a href="http://fritz.box/net/home_auto_overview.lua" target="_blank">Zur Fritz-Box ></a></td></tr>
    </table>
    </body>
    </html>
    Nächster Ansatz war dann von mir, nach wieder 5h lesen, das ganze über ein Iframe zu machen.
    Also iframe in einen Block von der Seite gepackt. Siehe da das PHP script wird ausgeführt und wird auch angezeigt.
    Nachteil, er macht die Navigationsleiste links weg, und es übernimmt natürlich nicht das Design von der Smartvisu.



    Hat vielleicht jemand eine Lösung wie ich das script eingebunden bekomme?
    Oder hat jemand schon was gebastelt das man die Dosen richtig in smarthome.py einbinden kann?

    Ich würde jetzt noch Wochen lang probieren bis es klappt, aber dann sucht sich meine Frau wahrscheinlich einen Anderen,
    der nicht jeden Abend am Laptop sitzt und flucht. ;-)

    Vielen Dank im Voraus

    Gruß Wolfi
    Angehängte Dateien

    #2
    Hallo Wolfram,

    hatte ähnliches Problem mit Befehlen via HTML.

    Sieh dir mal das Thema an, evtl. hilft das:
    https://knx-user-forum.de/smarthome-...er-ip-cam.html
    sg martin

    Kommentar


      #3
      Hallo Martin,

      vielen Dank!
      Werd ich mir daheim gleich mal anschaun, ob ich da was basteln kann.


      Gruß Wolfi

      Kommentar


        #4
        Jaaaaawooooolll VIELEN VIELEN DANK Martin!!!!

        Es funktioniert.

        Hatte zwar dann noch kleinere Probleme, weil er den Befehl mit Fritz.box nicht ausführen wollte,
        Hab dann Probiert ob der Befehl überhaupt geht, indem ich meinen Kathrein Receiver geschalten hab.
        Das hat auf Anhieb geklappt.

        Dann hab ich fritz.box durch die IP ersetzt und jawoll!!

        Also alle die Ihre Fritz Dect über Smartvisu schalten wollen:
        eval = sh.tools.fetch_url('http://IPderFritzbox/webservices/homeautoswitch.lua?ain=hierdieAINderSteckdose&swit chcmd=setswitchoff&sid=hierdieSIDein')

        Vielen Vielen Dank

        Gruß Wolfi

        Kommentar


          #5
          Freut mich, dass ich mit meinem bescheidenen Wissen auch mal helfen kann!

          viel Spass!
          sg martin

          Kommentar

          Lädt...
          X