Harmony Ultimate und AVM Fritz!Dect

Ist eine Harmony das Richtige für mich? Wenn ja, welche passt am besten zu meinen Bedürfnissen?
Forumsregeln
Wichtige Hinweise zum erstellen neuer Themen - bitte vorher einmal unsere Forenregeln lesen!
user303
Device-Versteher
Device-Versteher
Beiträge: 3
Registriert: 30. November 2016 12:26

Re: Harmony Ultimate und AVM Fritz!Dect

Beitrag von user303 » 30. November 2016 14:04

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.

Benutzeravatar
Hoffi
Device-Versteher
Device-Versteher
Beiträge: 2
Registriert: 28. März 2011 09:10
1. Fernbedienung: H Elite
2. Fernbedienung: H One
3. Fernbedienung: H 555
Software: Beides
Heimkino 1: TV: Samsung 55"
Heimkino 2: AV: Onkyo TX-NR 626
Heimkino 3: BD: Denon 1713
Heimkino 4: Playstation 4
Heimkino 5: DALI Zensor
Wohnort: MS-Land
Wohnort: MS-Land
1. Fernbedienung: H Elite
2. Fernbedienung: H One
3. Fernbedienung: H 555
Software: Beides

Re: Harmony Ultimate und AVM Fritz!Dect

Beitrag von Hoffi » 30. November 2016 15:19

Das hört sich klasse an. Ich hab nen Raspberry und ein QNap aktiv, da ist Platz.

Aber was ist, wenn man schon eine Hue Bridge hat? Oder hat man damit dann zwei?

Würdest du das PHP Script zur Verfügung stellen?
:)
TV: Samsung 55"
AV: Onkyo TX-NR 626
BD: Denon 1713
Playstation 4
DALI Zensor

user303
Device-Versteher
Device-Versteher
Beiträge: 3
Registriert: 30. November 2016 12:26

Re: Harmony Ultimate und AVM Fritz!Dect

Beitrag von user303 » 30. November 2016 20:03

Hi,

ich habe leider kein physiches Hue Gerät zuhause. Deswegen, kann ich nicht sagen, ob es einen Effekt hat.
Im Internet liest man aber Berichte von Leuten die 2 Hue Bridges im Einsatz haben.

Gerne schicke ich Dir den Code, da es noch nicht gesäubert wurde, schicke ich es Dir per PN wenn Du möchtest.

Edit:
aus dem HA-Bridge How To - Somit sollte es mit physischen Hues funktioneren.
Hue Names and IP Addresses

Provide IP Addresses of your Hue Bridges that you want to proxy through the bridge. Also, give a meaningful name to each one so it is easy to decipher in the helper tab. When these names and IP's are given, the bridge will passthru the call it receives to the target Hue and device you configure.

Don't forget - You will need to push the link button when you got to the Hue Tab the first time ater the process comes up. (The user name is not persistent when the process comes up.)

user303
Device-Versteher
Device-Versteher
Beiträge: 3
Registriert: 30. November 2016 12:26

Re: Harmony Ultimate und AVM Fritz!Dect

Beitrag von user303 » 1. Dezember 2016 19:39

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);
?>



Benutzeravatar
m4d-maNu
Sequenzer
Sequenzer
Beiträge: 177
Registriert: 28. August 2012 21:17
1. Fernbedienung: H Ultimate
2. Fernbedienung: H Ultimate
3. Fernbedienung: H Touch
Software: myharmony.com
Heimkino 1: TV: Samsung UE46D8090
Heimkino 2: <---- Gehört noch zum linken System
Heimkino 3: TV: Samsung UE22F5470
Heimkino 4: DVR: Sagemcom RCIi88-320
Heimkino 5: Sound: Harman Kardon HS350
Heimkino 6: DVR: Samsung SMT-C7200
Heimkino 7: HTPC: Mac mini (mid '11) -> Plex
Heimkino 8: Sound: Lindy Toslink Switch
Heimkino 10: Konsole: PlayStation 3 (Fat)
Heimkino 11: Strom: Revolt Infrarot Steckdose
Heimkino 12: TV: Samsung LE23R32B
Heimkino 13: Konsole: PlayStation 4 (Pro)
Heimkino 15: DR: Sagemcom DCI85HD KD
1. Fernbedienung: H Ultimate
2. Fernbedienung: H Ultimate
3. Fernbedienung: H Touch
Software: myharmony.com

Re: Harmony Ultimate und AVM Fritz!Dect

Beitrag von m4d-maNu » 6. Januar 2017 23:38

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?
greez maNu
TV: Samsung UE46D8090
<---- Gehört noch zum linken System
TV: Samsung UE22F5470
DVR: Sagemcom RCIi88-320
Sound: Harman Kardon HS350
DVR: Samsung SMT-C7200
HTPC: Mac mini (mid '11) -> Plex
Sound: Lindy Toslink Switch
Konsole: PlayStation 3 (Fat)
Strom: Revolt Infrarot Steckdose
TV: Samsung LE23R32B
Konsole: PlayStation 4 (Pro)
DR: Sagemcom DCI85HD KD

Wer ist online?

Mitglieder in diesem Forum: CommonCrawl [Bot] und 0 Gäste