Seite 2 von 4

Re: Harmony Ultimate und AVM Fritz!Dect

Verfasst: 1. Dezember 2016 19:39
von user303
Anbei der Code

Code: Alles auswählen

<?php 

// User defined (only part where something needs to be changed)
$fritzbox_User = 'user';
$fritzbox_Password = 'pass';

/*
AVM Fritz!Box Dect 200 actuator set script
user303 on http://www.harmony-remote-forum.de/

Parameters used fpr request in URL
http://nas:800/fritz.php?actname=Media&action=on
actname = <name of the AVM DECT actor as defined in the Fritz!Box GUI>
action = on | off | toggle | poll    (poll checks the current state of the actuator  0=off 1=on)

Ressources
https://avm.de/fileadmin/user_upload/Global/Service/Schnittstellen/AHA-HTTP-Interface.pdf

Commands are sent via HTTP GET Request to the following URL
http://fritz.box/webservices/homeautoswitch.lua?ain=<ain>&switchcmd=<cmd>&sid=<sid>
(!) https was not used on purpose, as the Fritz!Box was blocking access

Used commands:
getdevicelistinfos
setswitchon
setswitchoff
setswitchtoggle
getswitchstate

Stream infos
getdevicelistinfos:
text/xml; charset=utf­8

all others:
text/plain; charset=utf­8





*/




//Parse Arguments
$actuatorname = htmlspecialchars($_GET["actname"]);
$actuatoraction = htmlspecialchars($_GET["action"]);


// Connect to FritzBox for SID
$ch = curl_init('http://fritz.box/login_sid.lua?username=' . $fritzbox_User);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$login = curl_exec($ch);
$session_status_simplexml = simplexml_load_string($login);

if ($session_status_simplexml->SID != '0000000000000000')
{
        echo "Already logged on with SID " . $SID . "\n" ;
   $SID = $session_status_simplexml->SID;
}
else
// Calculate Session ID with Challenge, Password and MD5-Encoding
{
   $challenge = $session_status_simplexml->Challenge;
   $response = $challenge . '-' . md5(mb_convert_encoding($challenge . '-' . $fritzbox_Password, "UCS-2LE", "UTF-8"));
   curl_setopt($ch, CURLOPT_POSTFIELDS, "response={$response}&page=/login_sid.lua");
   $sendlogin = curl_exec($ch);
   $session_status_simplexml = simplexml_load_string($sendlogin);
   if ($session_status_simplexml->SID != '0000000000000000'){
       $SID = $session_status_simplexml->SID;
   }
   else{
       //echo "Error: Cannot connect to Fritz!Box";
       http_response_code(403);
       return;
   }
       
}





//  Get getdevicelistinfos
$opts = array(
    'http' => array(
        'method'  => 'GET',
        'header'  => 'Content­Type: text/xml; charset=utf­8'       
                    )
             );
$context = stream_context_create($opts);

$switchcmd = 'getdevicelistinfos';
$url =  'http://fritz.box/webservices/homeautoswitch.lua?switchcmd='. $switchcmd .'&sid=' . $SID .'';

//retrieving the device list infos in XML structure
$result = simplexml_load_string(file_get_contents($url, false, $context));

//looking for the acutator to retrieve the AIN which is needed for the switching
$count = 0;
foreach ($result->device as $node){
    $tmpname = $node->name;
    if (strcmp ($tmpname ,$actuatorname) == 0 ) {
            //echo $tmpname . "<br>";

        $ain = str_replace(' ', '', $node->attributes()->identifier);
        //echo "retrieved AIN: " . $ain . "<br>";
        $count++;
    }
    
}

//Verifying if more that one actuators have been identified with the same name. Danger of inadvertantly switching the wrong actuator. Use unique names.
if ( $count > 1){
    //echo "More than one actuators found with the name " . $actuatorname . "<br>";
    http_response_code(400);
    return;
}
if ( $count == 0){
    //echo "No actuator was found with the name " . $actuatorname . "<br>";
    http_response_code(400);
    exit ("No actuator was found with the name " . $actuatorname);
}    

    
$opts = array(
    'http' => array(
        'method'  => 'GET',
        'header'  => 'Content­Type: text/plain; charset=utf­8'       
                    )
             );
$context = stream_context_create($opts);

//echo $actuatoraction . "<br>";
switch ($actuatoraction) {
    case "on":
        $switchcmd = 'setswitchon';
        $url =  'http://fritz.box/webservices/homeautoswitch.lua?ain=' . $ain . '&switchcmd='. $switchcmd .'&sid=' . $SID .'';
        //echo $url . "<br>";
        $result=file_get_contents($url, false, $context);
        //echo $result ."<br>";
        http_response_code(200);
        break;
    case "off":
        $switchcmd = 'setswitchoff';
        $url =  'http://fritz.box/webservices/homeautoswitch.lua?ain=' . $ain . '&switchcmd='. $switchcmd .'&sid=' . $SID .'';
        $result=file_get_contents($url, false, $context);
        //echo $result ."<br>";
        http_response_code(200);
        break;
    case "toggle":
        $switchcmd = 'setswitchtoggle';
        $url =  'http://fritz.box/webservices/homeautoswitch.lua?ain=' . $ain . '&switchcmd='. $switchcmd .'&sid=' . $SID .'';
        $result=file_get_contents($url, false, $context);
        //echo $result ."<br>";
        http_response_code(200);
        break;
    case "poll":
        $switchcmd = 'getswitchstate';
        $url =  'http://fritz.box/webservices/homeautoswitch.lua?ain=' . $ain . '&switchcmd='. $switchcmd .'&sid=' . $SID .'';
        $result=file_get_contents($url, false, $context);
        echo $result;
        http_response_code(200);
        break;        
    default:
        http_response_code(400);
        return;
}


// Close Session
curl_close($ch);
?>



Re: Harmony Ultimate und AVM Fritz!Dect

Verfasst: 6. Januar 2017 23:38
von m4d-maNu
user303 hat geschrieben:Hallo Zusammen,

für diejenigen die gerne ihre Dect 200 von AVM mit der Logitech Harmony Ulimate Hub integrieren möchten, wollte ich euch folgenden Lösungsansatz vorstellen:

Mit einigen Codeschnipseln aus dem Netz und der AVM API habe ich ein serverseitiges PHP skript gebastelt, welches auf einem internen Webserver läuft und mit dem man folgende Aktionen per Aktor(Fritz Dect 200)
- An
- Aus
- Toggle
schalten lassen kann.

Aufruf schaut folgendermaßen aus:

Code: Alles auswählen

http://server:port/fritz.php?actname=MediaCenter&action=on

actname = Name des Aktors wie in der FB definiert (Achtung keine Leerzeichen erlaubt, Aktoren müssen einen eindeutigen namen haben)
action = on, off, toggle   (toggle schaltet von on->off oder off->on)

 
Damit könnte man bereits mit dem JB Media Light Manager loslegen und auf bestimmte IR oder Funk Befehle die WebRequest triggern.

Einzige Konfiguration im Skript: User und Passwort für die Fritz!box.
Ich Empfehle einen eigener User in der Fritzbox zu konfigurieren und die Rechte nur auf Smarthome zu beschränken. (User und Password stehen klartext im PHP Skript)

Um die Fritz Aktoren mit der Harmony zu verwenden brauchen wir einen zusätzlichen Service:
Die Software "Home Automation Bridge" ha-bridge (https://github.com/bwssytems/ha-bridge) gaukelt der Harmony eine Philips Hue Bridge vor.
In der ha-bridge müssen jetzt nur noch die Fritz Aktoren als Bridge Devices hinzugefügt werden.

Bsp.
Für On:
http://server:port/fritz.php?actname=MediaCenter&action=on

Für Off:
http://server:port/fritz.php?actname=MediaCenter&action=off

Das wars.


Sobald die Harmony den Hue Bridge eingerichtet hat, tauchen die Aktoren unter Geräten im Bereich Beleuchtung auf.

Wenn interesse besteht kann ich gerne genauere Infos dazu schreiben.

Ich muss nun mal nachfragen, ob ich das richtig verstehe.

Man benötigt folgendes:
-FritzBox die DECT Fähig ist
-DECT 200
-Ultimate Hub
-Webserver
-und dann das Script
-AVM API


Mehr nicht? Oder ist auch der JB Media Manager wichtig?

Re: Harmony Ultimate und AVM Fritz!Dect

Verfasst: 7. September 2017 15:54
von Satalaner
könnte jemand erklären wie ich das auf der Fritzbox installiere. Benötige ich fhem?

Re: Harmony Ultimate und AVM Fritz!Dect

Verfasst: 7. September 2017 18:23
von Fonzo
Satalaner hat geschrieben: 7. September 2017 15:54 könnte jemand erklären wie ich das auf der Fritzbox installiere. Benötige ich fhem?
Auf der Fritzbox selber wird gar nichts installiert der Aufruf an die Fritzbox erfolgt über Lua. Du brauchst in dem Beispiel ein Webserver, dieser kann Teil eines Gateways sein. Alternativ kann man auch Apache nutzten oder so was wie IP-Symcon da ist der Webserver integriert. Wenn die Harmony Remote über spezielle Gerätetasten verfügt must Du die HA-Bridge nutzen damit ein Hue Device emuliert wird. Sollte die Harmony Remote über keine Spezialtasten verfügen oder Du mit irgendeiner Taste das ausführen wollen brauchst Du z.B. FHEM und Fakeroku.

Re: Harmony Ultimate und AVM Fritz!Dect

Verfasst: 9. März 2018 23:07
von Kat-CeDe
Hi,
das Script hat bis vor ein paar Tagen funktioniert. Ich habe jetzt die interne FritzOS vom 8.3. drauf und es geht nicht mehr. Wer benu8tzt noch das Script eventuell auch mit sehr aktuellen Betas?

Ralf

Re: Harmony Ultimate und AVM Fritz!Dect

Verfasst: 8. April 2018 21:50
von Kat-CeDe
Hi,
mit der aktuellen internen Firmware bekomme ich z.Z.
"No actuator was found with the name"

Mist es lief gerade wieder fast alles so schön rund.

Ralf

Re: Harmony Ultimate und AVM Fritz!Dect

Verfasst: 17. Dezember 2018 18:46
von schubi70
Hallo ins Forum,

bin neu hier und seit kurzem Besitzer einer Harmony Elite mit Hub. Der Großteil meiner Geräte funktioniert
einwandfrei, nur leider lassen sich die AVM DECT Steckdosen nicht einbinden. Deshalb bin ich auf der Suche
hier im Forum fündig geworden. Hab alles installiert (HA-Bridge auf der DSM415+ mit Docker), aber leider
wie der letzte Eintrag hier schon zeigt schalten die Dosen nicht per Weboberfläche der HA-Bridge. Bekomme
nur folgende INFO im Log:

On/off url not available for state change, lightId: 1, userId: wird hier angezeigt,
from IP: 192.168.xxx.xx, body: {"on":false}

Meine Frage gibts denn von den Tüftlern schon ne Lösung? Scheint ja seit Fritz!OS 7.0 zu bestehen.
Kenn mich leider mit PHP nicht so aus.

Gruß Rico

Re: Harmony Ultimate und AVM Fritz!Dect

Verfasst: 17. Dezember 2018 19:09
von Kat-CeDe
Hi,
wie wolltest Du die Steckdosen denn in HA-Bridge einbinden? Für AVM-Dect gibt es bei Alexa einen Skill.

Wenn Du wirklich HA-Bridge benutzen willst wird es etwas komplizierter. Ich benutze Script aus Anhang und in HA-Bridge dann ./schalter.sh AIN-Nummer 0/1. AIN erfährt man im Fritz-Webinterface erfährt. Bei mir gehen so 7-8 200/210 und auch eine 546.

Ralf

Re: Harmony Ultimate und AVM Fritz!Dect

Verfasst: 17. Dezember 2018 19:40
von schubi70
Hallo,

danke für die schnelle Antwort. Besitze keine Alexa und ist erstmal auch nicht geplant,
deshalb ja, ich will alles über die HA-Bridge steuern. Deine schalter.sh werde ich ausprobieren
und dann bescheid geben ob es funktioniert.

Danke Rico

Re: Harmony Ultimate und AVM Fritz!Dect

Verfasst: 17. Dezember 2018 19:46
von schubi70
Hallo noch mal,

eine Frage hätt ich noch. Hab ich das richtig verstanden, die schalter.sh Datei muss
in den Hauptordner der HA-Bridge oder doch in data Ordner abgelegt werden?

Danke Rico

Re: Harmony Ultimate und AVM Fritz!Dect

Verfasst: 17. Dezember 2018 20:18
von Kat-CeDe
Hi,
es müsste wohl bei der Docker-Version nach /config/script da Du ja dieses Script mit 2 Parametern (AIN und 0 für aus oder 1 für an) aufrufen musst. Du musst das Script auch editieren und deine Daten am Anfang eintragen.

Ralf

Re: Harmony Ultimate und AVM Fritz!Dect

Verfasst: 17. Dezember 2018 20:48
von schubi70
Hallo Ralf,

ich glaub ich steh grad auf der Leitung, also ich hab jetzt folgendes gemacht:

schalter.sh --> jetzt couch.sh (user, pw + AIN sind angepasst)
--> config/script gibts nicht // HA-Bridge trotz über Docker installiert nicht in einem Docker Unterordner sondern in nem extra während der
Installation angelegten öffentlichen Ordner // dort gibts dann nur noch nen data Ordner dort liegt die couch.sh jetzt
--> das mit 0 und 1 bei der AIN versteh ich auch wegen ON/OFF -- meinst du so AIN/0 und AIN/1 direkt hinter dem couch.sh

HA-Bridge wäre dann so

Http Verb GET
Content Typ text/plain
Content Body On ./data/couch.sh AIN0
Content Body Off ./data/couch.sh AIN1

--> wie gesagt bin hier absoluter Neuling und Dankbar über jede Hilfe

Rico

Re: Harmony Ultimate und AVM Fritz!Dect

Verfasst: 17. Dezember 2018 22:23
von Kat-CeDe
Hi,
welches Docker Image benutzt Du denn?

Es muss ein Space dazwischen sein also ./couch.sh 012345678 0 oder ./couch.sh 012345678 1 wobei 012345678 die AIN ist die Du bei Smart-Home im Web-Interface der Fritzbox findest.

Ralf

Re: Harmony Ultimate und AVM Fritz!Dect

Verfasst: 18. Dezember 2018 17:47
von schubi70
Hallo,

ich hab es mit 2 verschiedenen probiert, wobei ich sagen muss das ich bei dem einen nicht mal eine Weboberfläche aufrufen konnte.

onzu homebridge - keine Möglichkeit das Webinterface aufzurufen, obwohl vorhanden (alle Problemlösungen aus dem Netz probiert)
aptalca/home-automation-bridge - mit dieser probier ich jetzt seit Tagen, da Webinterface vorhanden

So wie Du es aufgeschrieben hast, so hatte ich es eingetragen :-) leider ohne Erfolg :-(

Das habe ich im Webinterface der HA-Bridge eingetragen

Wert für Http Verb GET
Wert für Content Typ text/plain
Wert für Content Body On http://192.168.xxx.x:80/schalter.sh AIN 0 - mit Adresse von meinem Webserver auf dem NAS
Wert für Content Body Off http://192.168.xxx.x:80/schalter.sh AIN 1 - mit Adresse von meinem Webserver auf dem NAS

bekomme egal was ich ändere keine wirkliche Fehlermeldung sondern nur ne Info Message im Log

INFO On/off url not available for state change, lightId: 3, userId: 65718a5b234141c58b3f93b702097380, from IP: 192.168.xxx.xx, body: {"on":true}

Bin am verzweifeln

Rico

Re: Harmony Ultimate und AVM Fritz!Dect

Verfasst: 18. Dezember 2018 20:08
von Kat-CeDe
Hi,
die HA-Bridge läuft doch im Image und das Script muss dahin wo HA-Bridge gestartet wurde. Es ist kein HTTP get sondern execute command.

Ich benutze linuxservcer:habridge latest und da gehören Scripte nach /config/scripts. Es muss da auch nich AIN stehen sondern eine Nummer für den Schalter die Du unter Heimnetz, Smart Home hinter "Aktor Identifikationsnummer" findest.

Ralf