Nen Amazon Dash Button Hack wäre es doch

So günstige ist Zeug auch nicht, und hole mir Kram lieber selbst im Supermarkt oder lass es mir von REWE liefern wenn ich bequem bin.

Also für mich wäre es nichts da Eigenmarken genauso gut sind und weniger Kosten.

Von der Ersparnis kann man sich regelmäßig neuen Button holen von anderen Herstellern.
 
Bin hier grad drauf gestoßen und versuche einen einfachen Ein-/Aus-Taster für die Fritz 200 zu "bauen". Gibts da was Neues?

Hiernach (http://www.henning-mersch.de/amazon-dash-button-als-homematic-schalter) kann man ja php-Files mit dem Dash aufrufen. Hiernach (https://avm.de/fileadmin/user_upload/Global/Service/Schnittstellen/AHA-HTTP-Interface.pdf) gibts ja eine Api für das AVM Smart Home mit "setswitchon", sollte ja passen. Einen Webserver hab ich auf meiner Synology laufen, leider keine Ahnung von php. Hier habe ich mich durchgelesen (http://www.ip-phone-forum.de/showthread.php?t=196309), aber komme irgendwie nicht weiter. Sollte das mit den neuen Firmwares noch funktionieren? Ich komme nicht recht weiter, kann wer helfen?
 
Zum dash hier zwei Artikel:
Drückerei
Den Amazon Dash Button zweckentfremden
Johannes Merkert
Praxis & Tipps,Praxis,Dash-Button-Hack,Amazon, Amazon Dash, Dash-Button,
Internet der Dinge, Raspi, Scapy, ARP, Python, IoT
c't 21/16 S. 174 (jme)

Schnellkaufknopf
Amazon Dash seziert
Jan-Keno Janssen, Johannes Merkert, Christian Wölbert
Test & Kaufberatung,Test,Kaufbutton Amazon Dash,Online-Handel, Anason
Dash, Kauf-Button, eCommerce
c't 20/16 S. 20 (jkj)

Im Prinzip muss man ihm, nachdem man in in das lokale WLAN gebracht hat, den Zugang zum Internet klauen und die Aktion, die er dabei auslöst, für seine Zwecke missbrauchen.
 
Ja, das ist mir soweit klar. Was mir nicht klar ist,

1. Geht der Aufruf über php überhaupt noch mit neuer Firmware? und
2. Wenn ja, wie wird das php-File gebaut? Ich scheitere derzeit am abholen der SID. Die BEispiele die ich hier finde, sind ein fachlicher Overkil für mich.

- - - Aktualisiert - - -

Habe mal weiter gelesen und das Script von robw jetzt am laufen, mit dem man das ganze über einen Button aus- und einschalten kann. Sehr praktisch schonmal und ein erster Schritt. Zwei Dinge dazu:
1. Ich bekomme einen Fehler in Zeile 29, die lautet bei mir:
PHP:
switch($_GET['task']){case  "AN":$a=file_get_contents(CMD.'setswitchon&ain='.$_GET['ain']);break;default:$a=file_get_contents(CMD.'setswitchoff&ain='.$_GET['ain']);}function GetSid(){$b=simplexml_load_string(file_get_contents(LIN));$c=$b->SID;if($c=="0000000000000000"){$d=$b->Challenge;$a=$d."-".md5(mb_convert_encoding($d."-".PAS,"UCS-2LE","UTF-8"));$e=LIN."?username=".USR."&response=$a";$b=simplexml_load_string(file_get_contents($e));$c=$b->SID;}return $c;}?>

2. Wie kann ich nun umstellen, dass nicht erst der Button und Rückfrage kommen, sondern direkt mit Aufruf der Datei geschaltet wird (also bei AN auf AUS und umgekehrt)? Irgendein php-Experte mitlesend hier? Danach sollte es mit dem Dash-Button einfach sein, da der ja dann "nur" den Befehl aufrufen muss.

Hier noch das komplette Script:

PHP:
<?php
/* ===========================================================================
 * PERSONALIZATION
 * You can alter these entries to personalize your Fritzbox SmartHome Interface.
 * Requires Fritz!OS 6.10 or better.
 * Don't forget to verify your server port in case of https:
 * (c)2014 robw
 * =========================================================================== */

define("FBX","IP");
define("LIN",FBX."/login_sid.lua");
define("WEB",FBX."/webservices/homeautoswitch.lua");
if ($_SERVER['HTTPS'] == "on") {
    define("BOX","https://".$_SERVER['HTTP_HOST'].":443/net/home_auto_overview.lua");
} else {
    define("BOX",FBX."/net/home_auto_overview.lua");
}
define("USR","NAME");
define("PAS","PASSWORT");
define("IMG","web_images/"); //Image-Path with trailing slash!
define("CTON","4");    //Temp-Korrektur 'On'
define("CTOFF","0");   //Temp-Korrektur 'Off'

define("SID",GetSid());
define("CMD",WEB."?sid=".SID."&switchcmd=");

/* ================= NO NEED TO CHANGE ANYTHING BENEATH THIS LINE ============== */

switch($_GET['task']){case  "AN":$a=file_get_contents(CMD.'setswitchon&ain='.$_GET['ain']);break;default:$a=file_get_contents(CMD.'setswitchoff&ain='.$_GET['ain']);}function GetSid(){$b=simplexml_load_string(file_get_contents(LIN));$c=$b->SID;if($c=="0000000000000000"){$d=$b->Challenge;$a=$d."-".md5(mb_convert_encoding($d."-".PAS,"UCS-2LE","UTF-8"));$e=LIN."?username=".USR."&response=$a";$b=simplexml_load_string(file_get_contents($e));$c=$b->SID;}return $c;}?>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html><head><meta http-equiv="content-type" content="text/html;charset=UTF-8"><meta name="viewport" content="width=device-width, initial-scale=0.95, user-scalable=yes"><meta http-equiv="expires" content="0"><meta http-equiv="cache-control" content="no-cache"><title>Fritz-Dect</title><link rel="shortcut icon" href="favicon.ico"><style type="text/css">body{font-family:'Trebuchet MS','Segoe UI',Tahoma,Arial;font-size:15pt;text-align:left;}table{width:expression(document.body.clientWidth < 800? "400px":"50%" && document.body.clientWidth > 1220? "600px":"60%");}th,td{margin-top:0;margin-bottom:0;}img{border:none;}input{font-family:'Trebuchet MS','Segoe UI';font-size:14pt;width:180px;height:37px;padding-left:20px;padding-right:20px;background:"#DDDDDD";}.blue{color:#0000AF;}.green{color:#008C3F;}.gray{color:#A0A0A0;}a:link{color:#0000AF;text-decoration:none;}a:visited{color:#0000AF;text-decoration:none;}a:active{color:#0000AF;text-decoration:none;}a:hover{color:#2020FF;text-decoration:underline;}</style><script type="text/javascript">setTimeout(function(){window.location.reload(true);},60000);function Frage(akt,ziel,wie,zahl){if (confirm(akt+' '+wie+'\u2002>\u2002OK?')==true){window.location.href='?ain='+ziel+'&task='+wie;if (wie=="AN"){document.getElementById("schieb"+zahl).innerHTML="<img src='<?php echo IMG;?>switch_on.jpg'>";document.getElementById("knopf"+zahl).innerHTML="<input type='button' value='"+akt+"' style='background:#31CF70;font-weight:bold;color:white;'>";}else{document.getElementById("schieb"+zahl).innerHTML="<img src='<?php echo IMG;?>switch_off.jpg'>";document.getElementById("knopf"+zahl).innerHTML="<input type='button' value='"+akt+"'>";}}}</script></head><body><table border="0" cellspacing="6" cellpadding="0" style="max-width:430px;"><tr><th colspan="5" align="center"><a href="<?php echo BOX;?>" target="_blank">Die Netzwerk-Steckdosen</a></th></tr><tr class="green"><td width="2%">&nbsp;</td><td width="45%" align="center">Geräte</td><td width="15%" align="center">An/Aus</td><td width="15%" align="right">W&nbsp;</td><td width="20%" align="right">°C&nbsp;</td><td width="2%"></td></tr><tr><td colspan="5"><hr size="1" noshade></td></tr>
<?php $a=1;$b=simplexml_load_string(file_get_contents(CMD."getdevicelistinfos"));foreach($b->device as $c){$d=$c->name;$e=$c->switch->state;$f=str_replace(' ','',$c->attributes()->identifier);if($e==1){$g="'".$d."','".$f."','AUS',".$a;$h='switch_on.jpg';$j='style="background:#31CF70;font-weight:bold;color:white;"';$k=sprintf('%.1f',($c->temperature->celsius/10)-CTON);$l=sprintf('%.1f',($c->powermeter->power/1000));$watt+=$l;}else{$g="'".$d."','".$f."','AN',".$a;$h='switch_off.jpg';$j='';$k=sprintf('%.1f',($c->temperature->celsius/10)-CTOFF);$l='';}echo '<tr><td align="right" class="gray">'.$a.'</td>';echo '<td id="knopf'.$a.'" align="center" nowrap><input type="button" value="'.$d.'" onclick="javascript:Frage('.$g.')" '.$j.'></td>';echo '<td id="schieb'.$a.'" nowrap><a href="javascript:Frage('.$g.')"><img src="'.IMG.$h.'"></a></td>';echo '<td align="right" nowrap>'.$l.'</td>';echo '<td align="right" nowrap>'.$k.'</td></tr>';$a+=1;}?>
<tr><td colspan="5"><hr size="1" noshade></td></tr><tr class="green"><td></td><td align="center">Gesamt</td><td align="right" nowrap></td><td align="right"><?php echo sprintf('%.1f',$watt);?></td><td align="left" nowrap>W</td><td align="right" nowrap></td></tr></table></body></html>
 
Zwei Tipps, die Dich zwar nicht direkt bei der Lösung weiterbringen, aber vielleicht Antworten wahrscheinlicher machen:

1. "Ich bekomme einen Fehler in Zeile 29, die lautet bei mir:" klingt zwar "ausführlich" - aber um was für einen Fehler es sich da nun wohl handeln mag, soll man jetzt selbst durch eigenen Test oder bloßes Starren auf den Code ermitteln?

Ich vermute mal, so viel Arbeit wird sich nur jemand machen, der mindestens ein genauso großes Interesse daran hat wie Du. "Im Vorbeigehen" wird das wohl nichts werden - mach' es einem leichter, Dein Problem wirklich zu verstehen, auch wenn man nicht gleich Deine Umgebung nachbauen will.

2. Dazu gehört es auch, daß kein Mensch mit dem "kompletten Skript" etwas anfangen kann. Das ist mit "Kraut und Rüben" noch sehr zurückhaltend umschrieben - wenn Du beim Verfassen auf "Erweitert" gehst, kannst Du Dir vor dem Erstellen des Beitrags ansehen, wie das hinterher dargestellt wird und das sieht irgendwie so aus, als wäre da aber wirklich auch jedes Newline-Zeichen im Text auf der Strecke geblieben.
 
Danke dir für die Antwort. Ich gebe dir teilweise recht...

Ad 1: Richtig, hier ist auch die Fehlermeldung:
Code:
Warning:  file_get_contents(http://IP/webservices/homeautoswitch.lua?sid=1234567890&switchcmd=setswitchoff&ain=):  failed to open stream: HTTP request failed! HTTP/1.0 400 Bad Request  in /volume1/web/smarthome.php on line 29

AD 2: Grundsätzlich richtig, aber so sieht das Script auch im Original aus. Ich hatte es mir vorher in der Vorschau angeschaut und extra den php-Code Button genutzt. Aber so sieht es da leider aus und für mich als Laien ist das alles nicht zu verstehen. Daher meine Hoffnung, dass mir ein php-Experte unter die Arme greift.

EDIT: Dies ging an PeterPawn, hat sich überschnitten.

- - - Aktualisiert - - -

Habe den Code mal im Editor neu Strukturieren lassen, evt. hilft es ja wem besser zu lesen bzw. nachzuvollziehen.
PHP:
<?php
/* ===========================================================================
 * PERSONALIZATION
 * You can alter these entries to personalize your Fritzbox SmartHome Interface.
 * Requires Fritz!OS 6.10 or better.
 * Don't forget to verify your server port in case of https:
 * (c)2014 robw
 * =========================================================================== */
define("FBX","IP");
define("LIN",FBX."/login_sid.lua");
define("WEB",FBX."/webservices/homeautoswitch.lua");
if ($_SERVER['HTTPS'] == "on") {
    define("BOX","https://".$_SERVER['HTTP_HOST'].":443/net/home_auto_overview.lua");
} else {
    define("BOX",FBX."/net/home_auto_overview.lua");
}
define("USR","NAME");
define("PAS","PASSWORT");
define("IMG","web_images/"); //Image-Path with trailing slash!
define("CTON","4");    //Temp-Korrektur 'On'
define("CTOFF","0");   //Temp-Korrektur 'Off'
define("SID",GetSid());
define("CMD",WEB."?sid=".SID."&switchcmd=");
/* ================= NO NEED TO CHANGE ANYTHING BENEATH THIS LINE ============== */
switch($_GET['task']) {
    case  "AN": $a=file_get_contents(CMD.'setswitchon&ain='.$_GET['ain']);
    break;
    default: $a=file_get_contents(CMD.'setswitchoff&ain='.$_GET['ain']);
}
function GetSid() {
    $b=simplexml_load_string(file_get_contents(LIN));
    $c=$b->SID;
if($c=="0000000000000000") {
    $d=$b->Challenge;
    $a=$d."-".md5(mb_convert_encoding($d."-".PAS,"UCS-2LE","UTF-8"));
    $e=LIN."?username=".USR."&response=$a";
    $b=simplexml_load_string(file_get_contents($e));
    $c=$b->SID;
}
    return $c;
}?>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>  
  <head>    
    <meta http-equiv="content-type" content="text/html;charset=UTF-8">    
    <meta name="viewport" content="width=device-width, initial-scale=0.95, user-scalable=yes">    
    <meta http-equiv="expires" content="0">    
    <meta http-equiv="cache-control" content="no-cache">    
    <title>Fritz-Dect     
    </title>    
    <link rel="shortcut icon" href="favicon.ico">    
    <style type="text/css">body{font-family:'Trebuchet MS','Segoe UI',Tahoma,Arial;font-size:15pt;text-align:left;}table{width:expression(document.body.clientWidth        
      < 800? "400px":"50%" && document.body.clientWidth > 1220? "600px":"60%");}th,td{margin-top:0;margin-bottom:0;}img{border:none;}input{font-family:'Trebuchet MS','Segoe UI';font-size:14pt;width:180px;height:37px;padding-left:20px;padding-right:20px;background:"#DDDDDD";}.blue{color:#0000AF;}.green{color:#008C3F;}.gray{color:#A0A0A0;}a:link{color:#0000AF;text-decoration:none;}a:visited{color:#0000AF;text-decoration:none;}a:active{color:#0000AF;text-decoration:none;}a:hover{color:#2020FF;text-decoration:underline;}     
    </style>
<script type="text/javascript">setTimeout(function(){window.location.reload(true);},60000);function Frage(akt,ziel,wie,zahl){if (confirm(akt+' '+wie+'\u2002>\u2002OK?')==true){window.location.href='?ain='+ziel+'&task='+wie;if (wie=="AN"){document.getElementById("schieb"+zahl).innerHTML="<img src='<?php echo IMG;?>switch_on.jpg'>";document.getElementById("knopf"+zahl).innerHTML="<input type='button' value='"+akt+"' style='background:#31CF70;font-weight:bold;color:white;'>";}else{document.getElementById("schieb"+zahl).innerHTML="<img src='<?php echo IMG;?>switch_off.jpg'>";document.getElementById("knopf"+zahl).innerHTML="<input type='button' value='"+akt+"'>";}}}</script>  
  </head>  
  <body>    
    <table border="0" cellspacing="6" cellpadding="0" style="max-width:430px;">      
      <tr>        
        <th colspan="5" align="center">          
          <a href="<?php echo BOX;?>" target="_blank">Die Netzwerk-Steckdosen</a>        
        </th>      
      </tr>      
      <tr class="green">        
        <td width="2%">&nbsp;</td>        
        <td width="45%" align="center">Geräte</td>        
        <td width="15%" align="center">An/Aus</td>        
        <td width="15%" align="right">W&nbsp;</td>        
        <td width="20%" align="right">°C&nbsp;</td>        
        <td width="2%"></td>      
      </tr>      
      <tr>        
        <td colspan="5">          
          <hr size="1" noshade></td>      
      </tr>      
          <?php
              $a=1;
              $b=simplexml_load_string(file_get_contents(CMD."getdevicelistinfos"));
            foreach($b->device as $c) {
              $d=$c->name;
              $e=$c->switch->state;
              $f=str_replace(' ','',$c->attributes()->identifier);
            if($e==1) {
              $g="'".$d."', '".$f."', 'AUS', ".$a;
              $h='switch_on.jpg';
              $j='style="background: #31CF70;
              font-weight: bold;
              color: white;
              "';
              $k=sprintf('%.1f',($c->temperature->celsius/10)-CTON);
              $l=sprintf('%.1f',($c->powermeter->power/1000));
              $watt+=$l;
            }
            else {
              $g="'".$d."', '".$f."', 'AN', ".$a;
              $h='switch_off.jpg';
              $j='';
              $k=sprintf('%.1f',($c->temperature->celsius/10)-CTOFF);
              $l='';
            }
              echo '<tr><td align="right" class="gray">'.$a.'</td>';
              echo '<td id="knopf'.$a.'" align="center" nowrap><input type="button" value="'.$d.'" onclick="javascript:Frage('.$g.')" '.$j.'></td>';
              echo '<td id="schieb'.$a.'" nowrap><a href="javascript:Frage('.$g.')"><img src="'.IMG.$h.'"></a></td>';
              echo '<td align="right" nowrap>'.$l.'</td>';
              echo '<td align="right" nowrap>'.$k.'</td></tr>';
              $a+=1;
            }
            ?>      
      <tr>        
        <td colspan="5">          
          <hr size="1" noshade></td>      
      </tr>      
      <tr class="green"><td></td>        
        <td align="center">Gesamt</td>        
        <td align="right" nowrap></td>        
        <td align="right">          
          <?php echo sprintf('%.1f',$watt);?></td>        
        <td align="left" nowrap>W</td>        
        <td align="right" nowrap></td>      
      </tr>    
    </table>  
  </body>
</html>


Danke, da scheint jetzt aber was verloren gegangen zu sein, da der Button jetzt nicht mehr auftaucht und das Gerät auch nicht. Sieht jetzt so aus:
Code:
Warning: file_get_contents(IP/login_sid.lua): failed to open  stream: No such file or directory in /volume1/web/smarthome.php on line  25  Warning:  file_get_contents(IP/webservices/homeautoswitch.lua?sid=&switchcmd=setswitchoff&ain=):  failed to open stream: No such file or directory in  /volume1/web/smarthome.php on line 25                                                                  Warning:  file_get_contents(IP/webservices/homeautoswitch.lua?sid=&switchcmd=getdevicelistinfos):  failed to open stream: No such file or directory in  /volume1/web/smarthome.php on line 62  Warning: Invalid argument supplied for foreach() in  /volume1/web/smarthome.php on line 63              [TABLE="width: 430"]
[TR]
[TH="colspan: 5, align: center"]           
[/TH]
[/TR]
[TR="class: green"]
[TD="width: 2%"][/TD]
[TD="width: 45%, align: center"]Geräte[/TD]
[TD="width: 15%, align: center"]An/Aus[/TD]
[TD="width: 15%, align: right"]W[/TD]
[TD="width: 20%, align: right"]°C[/TD]
[TD="width: 2%"][/TD]
[/TR]
[TR]
[TD="colspan: 5"][/TD]
[/TR]
[TR]
[TD="colspan: 5"][/TD]
[/TR]
[TR="class: green"]
[TD][/TD]
[TD="align: center"]Gesamt[/TD]
[TD="align: right"][/TD]
[TD="align: right"]           0.0[/TD]
[TD="align: left"]W[/TD]
[/TR]
[/TABLE]

Die Fehlermeldung deutet ja darauf hin, dass was fehlt...aber was?
 
Zuletzt bearbeitet:
Hab Posting wieder entfernt, geht mit und ohne Optimierung nicht, scheint auch nicht für aktuelle Firmware zu sein.

Links sind z.B. http://fritz.box/?sid=XYZ&lp=sh statt homeautoswitch.lua

Und bei dir hast IP nicht angepasst und so, auch Fehlt ne Quelle wo Script her hast ect.

Besser andere Lösung suchen.

Auch solltest Editor im Forum Ändern. ;) -> http://www.ip-phone-forum.de/showthread.php?t=284224

Hast deine MyFritz Adresse gepostet, dann meldet sich deine DS mit Fehler 404, und wenn man auf dem DSM Port schaut, könntest mal Standardtext und Hintergrund anpassen vom DSM Login. :D
 
Zuletzt bearbeitet von einem Moderator:
Mann, das habe ich jetzt echt lange gesucht. Danke dir! Jetzt isses weg...

- - - Aktualisiert - - -

Ok, Problem 1 gelöst: Der Toggle des Fritz 200 über ein php-Script funktioniert! Siehe hier: http://www.ip-phone-forum.de/showthread.php?t=273150

Jetzt hab ich grad den Dash-Button bestellt und schaue mal, wie ich mich da durchbeisse...sieht ja doch nicht to trivial aus, aber man muss ja Projekte haben!

- - - Aktualisiert - - -

Update: Skript zum Abfangen der Befehle auf dem Pi ist eingerichtet (Anleitung von https://blog.thesen.eu/aktuellen-da...on-jk29lp-mit-dem-raspberry-pi-nutzen-hacken/ genutzt). Muss dann nur noch die Mac aktualisieren, dem Dash den Internetzugang sperren und dann sollte es klappen...also theoretisch :cool:
 
Klappt wunderbar! Nette Funktion, wenn die Fritz 200 irgendwo verbaut ist, wo man nicht gut dran kommt...
 
Update: Skript zum Abfangen der Befehle auf dem Pi ist eingerichtet (Anleitung von https://blog.thesen.eu/aktuellen-da...on-jk29lp-mit-dem-raspberry-pi-nutzen-hacken/ genutzt). Muss dann nur noch die Mac aktualisieren, dem Dash den Internetzugang sperren und dann sollte es klappen...also theoretisch :cool:

... wenn du schon ein Raspberry Pi verwendest, würde ich mir überlegen OpenHAB2 (aktuelles Snapshot-Build) zu installieren. Die Software unterstützt problemlos sowohl die Fritz!200 und erkennt auch Dash-Buttons im eigenen Netz. Dazu dann noch eine Regel anlegen und es passt schon.

Beispiel für so eine Regel:

Code:
rule "DB_DashButton"
when
    Channel "[COLOR=#a9a9a9][I]amazondashbutton:dashbutton:xx-xx-xx-xx-xx-xx:press[/I][/COLOR]" triggered
then
    logInfo("INFO", "Dash-Button für Beleuchtung ausgelöst!")
    if ([I][COLOR=#a9a9a9]gHaus_3Stock_Buero_LampeStehlampe[/COLOR][/I].state == ON) {
        logInfo("INFO", "Dash-Button Lampen: AUS")
        [COLOR=#a9a9a9][I]gHaus_3Stock_Buero_LampeStehlampe[/I][/COLOR].sendCommand(OFF)
    } else {
        logInfo("INFO", "Dash-Button Lampen: AN")
        [COLOR=#a9a9a9][I]gHaus_3Stock_Buero_LampeStehlampe[/I][/COLOR].sendCommand(ON)
    }
end

Die Regel muss natürlich noch angepasst werden an die entsprechenden Namen (Items) welche der Steckdose und dem Dash-Button zugeordnet ist.

Wichtig ist aber auch folgendes:
  1. Bei der initialen Einrichtung des Dash-Buttons nur das WLAN Passwort hinterlegen und bei der Frage, ob das WLAN Passwort bei Amazon gespeichert werden soll auf "nein" gehen. Bei der abschließenden Frage welches Produkt du "bestellen" willst, kein Produkt wählen und die Amazon Dash-App beenden.
  2. Im Anschluss auf der Fritz!Box (oder welcher Router auch immer eingesetzt wird) dem Dash-Button den Internetzugang entziehen. Der Dash Button sollte unter Heimgeräte auf jeden Fall zu finden sein.

Danach passt schon alles und wer weiß, vielleicht kommt man noch auf die Idee mittels OpenHAB2 das ganze etwas auszuweiten (z.B. WOL-Binding nutzen um Rechner ein Aufwach-Signal zu geben, Network-Binding nutzen um zu prüfen welche Netzwerkgeräte gerade im Netz aktiv sind - oder natürlich um weitere Heimautomatisierung Produkte zu verwenden (OpenHAB2 unterstützt verdammt viel - von KNX über Z-WAVE, ZigBee, HomeMatic bis zur Steuerung von Samsung-Fernseher praktisch alles).

Zumindest wäre die OpenHAB2-Lösung imho definitiv zukunftssicherer, vor allem was ein potentiell weiteren Ausbau angeht. Die PHP/Python-Lösung dagegen ist halt nur für die Dash/FritzBox-Kombination brauchbar. Das schöne dabei ist aber auch, dass man dennoch keine Cloud-Lösung verwendet und alles quasi daheim hat (zugänglich z.B. via VPN von außen). Theoretisch geht auch MyOpenhab - aber das ist meiner Meinung nach: ih-bäh.
 
Klingt echt gut, aber mein Pi übernimmt noch ein paar andere Aufgaben. Wenn ich es richtig verstehen, würde ich ja OpenHAB drüber bügeln und damit alles platt machen, oder? Außerdem reicht es mir derzeit so eigentlich völlig...
 
Klingt echt gut, aber mein Pi übernimmt noch ein paar andere Aufgaben. Wenn ich es richtig verstehen, würde ich ja OpenHAB drüber bügeln und damit alles platt machen, oder? Außerdem reicht es mir derzeit so eigentlich völlig...

nein, nicht wirklich. Es gibt zwar, soweit ich weiß, auch ein fertiges Image. Aber im Endeffekt kannst du eine bestehende Installation nehmen. Einfach wie unter http://docs.openhab.org/installation/rasppi.html beschrieben screen mc vim git htop und oracle-java8-jdk installieren um alle für Openhab2 notwendigen Programme vorher installiert zu haben. Danach einfach weiter nach der Anleitung unter http://docs.openhab.org/installation/linux.html#package-repository-installation vorgehen. Ich würde die Snapshot-Version erst einmal nehmen, da ich mir nicht sicher bin, ob die Beta-Version bereits die Unterstützung für den Dash-Button hat. Die Unterstützung ist relativ neu. Damit du auch auf die neusten Bindings/Extensions zugriff hast, musst du nach der Installation unter Configuration / System noch die beiden Optionen "Include Experimental Extensions" und "Remote Repositories" aktivieren. Danach sollte das Binding für den Dash-Button bereitstehen.

Damit das Dash-Binding allerdings dein Dash-Button erkennt, musst du noch ein paar weitere Pakete (leider) auf dem RaspberryPi installieren. Die weiteren benötigten Pakete findest du unter https://github.com/openhab/openhab2.../binding/org.openhab.binding.amazondashbutton

Interessant ist eventuell - falls du dich nicht durch die Berge von englischer Dokumentation durchwühlen möchtest - als Startpunkt für die Konfiguration die Seite http://onesmarthome.de/openhab-2-installation/ und http://onesmarthome.de/smart-home-openhab-2-konfiguration/. Wichtig noch evntl. für dich zu wissen ist, dass du bei den Anleitungen aufpassen musst. Die Konfiguration bei dem neuen OpenHAB2 läuft zum Teil komplett anders ab als bei der alten 1er Version. Viele Anleitungen sind allerdings noch für die 1er Version geschrieben.

Ich geb zu, das ist viel zu lesen - aber imho ist es das wert. Nur eine Warnung - wenn es dir wie mir geht - dann wirst du evntl. süchtig danach und baust es immer weiter aus ;-)
 
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.