+ Antworten
Ergebnis 1 bis 5 von 5
  1. #1

    Standard Buderus KM200 Web

    Habe in der Bucht eine KM200 Web geschossen. War OVP. Ich habe sie mit meinem SM200 Solarregler verbunden. Am gleichen EMS Bus hängt noch ein RC300. SM200 und RC300 kommunizieren brav.

    Nach dem booten habe ich auch eine schöne, statisch grüne LED an der KM 200 Web. Allerdings sagt mir die APP beim verbinden jedesmal, dass ich nicht die aktuelle Gateway Software drauf hätte. Allerdings ist die KM200 bereits seit heute Mittag am Netz.

    Also eigentlich sollte sie ja mittlerweile die neue Firmware gezogen haben. Habe drüben im FHEM Wiki gelesen, dass das in Extremfällen wohl auch über Nacht dauern kann, aber wieso sollte ich ein Extremfall sein ?

    Wenn ich die REST API abpolle, dann bekomme ich einige wenige Info's aus dem Gateway. Zumindest IP-Adresse und meine Passwörter scheinen aber zu stimmen. Was ich seltsam finde ist, dass er "no Bus" sagt, obwohl die LED ja statisch grün ist, er also eine Busverbindung hat

    CreateCategory: ( /gateway, 0gateway, 0 )
    CreateVariable: ( /gateway/uuid, 3, geheim, 0gateway0uuid, 35424 )
    Service /gateway/firmware returned NULL
    Service /gateway/userpassword returned NULL
    CreateVariable: ( /gateway/instAccess (writeable) (recordable), 3, off, 0gateway0instAccess, 35424 )
    Service /gateway/instPassword returned NULL
    CreateVariable: ( /gateway/instWriteAccess (writeable) (recordable), 3, off, 0gateway0instWriteAccess, 35424 )
    CreateVariable: ( /gateway/versionFirmware, 3, 01.09.04, 0gateway0versionFirmware, 35424 )
    CreateVariable: ( /gateway/versionHardware, 3, iCom_Low_v1, 0gateway0versionHardware, 35424 )
    CreateVariable: ( /gateway/DateTime (writeable) (recordable), 3, 2016-03-11T20:31:12, 0gateway0DateTime, 35424 )
    CreateCategory: ( /system, 0system, 0 )
    CreateVariable: ( /system/brand, 3, Buderus, 0system0brand, 18261 )
    CreateVariable: ( /system/bus, 3, No_Bus, 0system0bus, 18261 )
    Kann mir da jemand mit ein bisschen Erfahrung mit der KM200 mal auf die Sprünge helfen?
    IPS Ninja \\ Webfront auf 15" ELO Touch \\ z-wave \\ IPS-868 \\ FS20 \\ 1-wire \\ Oregon WMRS200 \\ Mediaportal \\ 4x Squeezebox \\ SONOS \\ Denon AVR1912 \\ Kostal Piko 5.5 \\ 7x Vivotek \\ 1x INStar \\ Gardena R40Li mit Robonect HX30
    Mehr auf www.diewuppers.de

  2. #2
    Registriert seit
    Jul 2006
    Ort
    Butzbach, die schöne Wetterau
    Beiträge
    1,477

    Hi,

    sag mal bist Du hier weitergekommen, schon was in IPS realisiert?
    Wenn ja, könntest Du mir sagen wie?

    Danke
    Gruß Uwe
    (bmwm3)


  3. #3

    Nicht wirklich.

    Die KM200 funktioniert nur mit einem RC300 Modul (Ich habe ein SC300) und das RC300 funktioniert wiederum nur mit einem Brenner oder Wärmepumpe zusammen (Ich habe Solar).

    Mit anderen Worten: KM200 funktioniert bei mir nicht.
    Du kannst aber den KM200 mit folgendem Skript auslesen, kommt irgendwo hier aus dem Forum:

    PHP-Code:
    <?
    include_once( "45307.ips.php" ); // KM200 Gateway
    $RootCategoryID 32306 /*[Heizung\KM 200 Web]*/;
    $km200_REST_URLs = array(   '/gateway',    '/system',    '/heatingCircuits',    '/solarCircuits',    '/heatSources',);
    function 
    CreateCategory$Name$Ident ''$ParentID ){    global $RootCategoryID;
        echo 
    "CreateCategory: ( $Name$Ident$ParentID ) \n";
        if ( 
    '' != $Ident )    {        $CatID = @IPS_GetObjectIDByIdent$Ident$ParentID );        if ( false !== $CatID )        {           $Obj IPS_GetObject$CatID );           if ( == $Obj['ObjectType'] ) // is category?              return $CatID;        }    }    $CatID = IPS_CreateCategory();    IPS_SetName( $CatID, $Name );   IPS_SetIdent( $CatID, $Ident );
        
    if ( == $ParentID )        if ( IPS_ObjectExists$RootCategoryID ) )            $ParentID $RootCategoryID;    IPS_SetParent$CatID$ParentID );
        return 
    $CatID;}
    function 
    SetVariable$VarID$Type$Value ){    switch( $Type )    {       case 0// boolean          SetValueBoolean( $VarID, $Value );          break;       case 1: // integer          SetValueInteger( $VarID, $Value );          break;       case 2: // float          SetValueFloat( $VarID, $Value );          break;       case 3: // string          SetValueString( $VarID, $Value );          break;    }}function CreateVariable( $Name, $Type, $Value, $Ident = '', $ParentID = 0 ){    echo "CreateVariable: ( $Name, $Type, $Value, $Ident, $ParentID ) \n";    if ( '' != $Ident )    {        $VarID = @IPS_GetObjectIDByIdent( $Ident, $ParentID );        if ( false !== $VarID )        {           SetVariable( $VarID, $Type, $Value );           return;        }    }    $VarID = @IPS_GetObjectIDByName( $Name, $ParentID );    if ( false !== $VarID ) // exists?    {       $Obj = IPS_GetObject( $VarID );       if ( 2 == $Obj['ObjectType'] ) // is variable?        {           $Var = IPS_GetVariable( $VarID );           if ( $Type == $Var['VariableValue']['ValueType'] )            {               SetVariable( $VarID, $Type, $Value );               return;            }        }    }    $VarID = IPS_CreateVariable( $Type );    IPS_SetParent( $VarID, $ParentID );    IPS_SetName( $VarID, $Name );    if ( '' != $Ident )       IPS_SetIdent( $VarID, $Ident );    SetVariable( $VarID, $Type, $Value );}
    function Traverse_REST_URL$REST_Service$ParentID ){    $Name $REST_Service;    $REST_Obj km200_GetData$REST_Service );    if( NULL == $REST_Obj )    {       echo "Service $REST_Service returned NULL\n";       return;    }    $Ident str_replace'/''0'$REST_Obj->id );
       if ( 
    property_exists$REST_Obj'writeable' ) )      if( !== $REST_Obj->writeable )         $Name .= " (writeable)";   if ( property_exists$REST_Obj'recordable' ) )      if( !== $REST_Obj->writeable )         $Name .= " (recordable)";
        switch( 
    $REST_Obj->type )    {       case 'refEnum':           // create category            $CatID = CreateCategory( $Name, $Ident, $ParentID );          // loop through enum array          foreach( $REST_Obj->references as $SubService )                Traverse_REST_URL( $SubService->id, $CatID ); // recurse            break;       case 'moduleList':           // create category            $CatID = CreateCategory( $Name, $Ident, $ParentID );          // loop through values array          foreach( $REST_Obj->values as $Modules )              CreateVariable( $Modules->Name, 3, $Modules->Version, $Ident . "0" . $Modules->Token, $CatID );            break;       case 'floatValue':          CreateVariable( $Name, 2, $REST_Obj->value, $Ident, $ParentID );          break;       case 'stringValue':          CreateVariable( $Name, 3, $REST_Obj->value, $Ident, $ParentID );            break;        case 'switchProgram':          CreateVariable( $Name, 3, "switchProgram, toDo!", $Ident, $ParentID );            break;        default:           echo "$Name ist Typ $REST_Obj->type !\n";          CreateVariable( $Name + $REST_Obj->type, 3, (string) $REST_Obj->value, $Ident, $ParentID );           break;    }}
    foreach( $km200_REST_URLs as $REST_Service )    Traverse_REST_URL$REST_Service$RootCategoryID )
    ?>

    Das include Skript ist:

    PHP-Code:
    <?php


    // IP Adresse oder DNS-Hostname des KM200
    define"km200_gateway_host"'IP DES HOSTS'true );
    // Port des KM200, nur bei Zugriff über Internet mit Portweiterleitung am Router ändern!
    define"km200_gateway_port"'80'true );

    /*


    Für die Einbindung des Schlüssels zur Kommunikation mit dem KM200 gibt folgende Möglichkeit


      Online unter https://ssl-account.com/km200.andreashahn.info/
      mit Geräte- und Benutzer-Passwort den AES-Key ausrechnen lassen und folgende Zeile in das Coding einbinden:






      Hier den Parameter von hex2bin durch den eigenen AES-Key ersetzen
    define( "km200_crypt_key_private", hex2bin( '22D3CF8751ED6BB163BE8D7CDE20210E0C2F9378C0DA3108F0673987B0D63E37' ), true );














    function km200_Encrypt( $encryptData )
    {
        // add PKCS #7 padding
        $blocksize = mcrypt_get_block_size(
            MCRYPT_RIJNDAEL_128,
            MCRYPT_MODE_ECB
        );
        $encrypt_padchar = $blocksize - ( strlen( $encryptData ) % $blocksize );
        $encryptData .= str_repeat( chr( $encrypt_padchar ), $encrypt_padchar );
        // encrypt
        return base64_encode(
            mcrypt_encrypt(
                MCRYPT_RIJNDAEL_128,
                km200_crypt_key_private,
                $encryptData,
                MCRYPT_MODE_ECB,
                ''
            )
        );
    }


    function km200_Decrypt( $decryptData )
    {
        $decrypt = (
            mcrypt_decrypt(
                MCRYPT_RIJNDAEL_128,
                km200_crypt_key_private,
                base64_decode( $decryptData ),
                MCRYPT_MODE_ECB,
                ''
            )
        );
        // remove zero padding
        $decrypt = rtrim( $decrypt, "\x00" );
        // remove PKCS #7 padding
        $decrypt_len = strlen( $decrypt );
        $decrypt_padchar = ord( $decrypt[ $decrypt_len - 1 ] );
        for ( $i = 0; $i < $decrypt_padchar ; $i++ )
        {
            if ( $decrypt_padchar != ord( $decrypt[$decrypt_len - $i - 1] ) )
            break;
        }
        if ( $i != $decrypt_padchar )
            return $decrypt;
        else
            return substr(
                $decrypt,
                0,
                $decrypt_len - $decrypt_padchar
            );
    }


    function km200_GetData( $REST_URL )
    {
        $options = array(
            'http' => array(
               'method' => "GET",
               'header' => "Accept: application/json\r\n" .
                            "User-Agent: TeleHeater/2.2.3\r\n"
            )
        );
        $context = stream_context_create( $options );
        $content = @file_get_contents(
            'http://' . km200_gateway_host . ':' . km200_gateway_port . $REST_URL,
            false,
            $context
        );
        if ( false === $content )
            return false;
        return json_decode(
            km200_Decrypt(
                $content
            )
        );
    }


    function km200_SetData( $REST_URL, $Value )
    {
        $content = json_encode(
            array(
                "value" => $Value
            )
        );
        $options = array(
            'http' => array(
               'method' => "PUT",
                'header' => "Content-type: application/json\r\n" .
                            "User-Agent: TeleHeater/2.2.3\r\n",
                'content' => km200_Encrypt( $content )
            )
        );
        $context = stream_context_create( $options );
        @file_get_contents(
            'http://' . km200_gateway_host . ':' . km200_gateway_port . $REST_URL,
            false,
            $context
        );
    }


    ?>
    Geändert von wupperi (01.04.16 um 11:18 Uhr)
    IPS Ninja \\ Webfront auf 15" ELO Touch \\ z-wave \\ IPS-868 \\ FS20 \\ 1-wire \\ Oregon WMRS200 \\ Mediaportal \\ 4x Squeezebox \\ SONOS \\ Denon AVR1912 \\ Kostal Piko 5.5 \\ 7x Vivotek \\ 1x INStar \\ Gardena R40Li mit Robonect HX30
    Mehr auf www.diewuppers.de

  4. #4
    Registriert seit
    Jul 2006
    Ort
    Butzbach, die schöne Wetterau
    Beiträge
    1,477

    Ah ok, danke.

    War am überlegen ob ich es mir hole. Hmm......
    Gruß Uwe
    (bmwm3)


  5. #5

    Hab eine abzugeben :-) mehr per PN falls Du willst.
    IPS Ninja \\ Webfront auf 15" ELO Touch \\ z-wave \\ IPS-868 \\ FS20 \\ 1-wire \\ Oregon WMRS200 \\ Mediaportal \\ 4x Squeezebox \\ SONOS \\ Denon AVR1912 \\ Kostal Piko 5.5 \\ 7x Vivotek \\ 1x INStar \\ Gardena R40Li mit Robonect HX30
    Mehr auf www.diewuppers.de

Ähnliche Themen

  1. Buderus Logamatic Web KM200 - Reloaded
    Von Slash im Forum Haustechnik
    Antworten: 434
    Letzter Beitrag: 15.10.20, 10:46
  2. Frage an die Buderus-Bastler (KM200 vs. EIB)
    Von ika im Forum Haustechnik
    Antworten: 5
    Letzter Beitrag: 27.10.14, 10:53
  3. Buderus Logamatic Web KM200
    Von Slash im Forum Haustechnik
    Antworten: 10
    Letzter Beitrag: 28.07.14, 12:31
  4. Buderus Logamatic Web KM200
    Von steiner im Forum Haustechnik
    Antworten: 0
    Letzter Beitrag: 24.07.14, 08:20