+ Antworten
Ergebnis 1 bis 8 von 8
  1. #1
    Registriert seit
    Nov 2011
    Beiträge
    406

    Standard Chromoflex RC III + USB Dongle am Pi?

    Hallo hat schon jemand das oben beschriebene Zenario am laufen?

    Würde mich freuen wenn ich da ein paar Informationen bekommen könnte habe im Forum bis jetzt noch Nix gefunden.
    Unter Windows ist jetzt perfekt, allerdings kann ich es nicht direkt übernehmen da es beim Pi ja wohl keine direkte FTDI Ansteuerung gibt oder? Hat jemand schon irgendwelche Skripte die er zu Verfügung stellen kann/würde?

  2. #2
    Registriert seit
    Jul 2010
    Ort
    Bachhagel
    Beiträge
    140

    Hallo Mastershort,

    habe das Script in Serial geändert und funktioniert super.

    Ja leider ist kein ftdi möglich. Dies wäre mir auch viele lieber.

    Grüße

    Oli
    Grüße aus Bachhagel - Oli
    IPS V4.2 / QNAP TVS-EC1080+ / Windows 2016 / KNX / Busch Prion / WAGO 750 / Philips Hue / 1-Wire / Viessmann / eHZ / Plugwise / Adatis FaceEntry / Chromoflex / eKey Fingerprint / Gardena Sileno / Solarlog / Fronius-Wechselrichter / Raspberry PI 3 / Senec.Home - SolarInvert G2 Plus XL / BMW i3 / KEBA P30

  3. #3
    Registriert seit
    Nov 2011
    Beiträge
    406

    Mit der Serialen Sache habe ich noch nicht ganz auf dem Schirm!?

    Kannst du mir ganz kurz eine kleine Einweisung geben?

    Bzw. Dein Script mir kurz andeuten! Ich habe sonst den ColorPicker von Nickblue genommen? Hast du das Script angepasst ?

  4. #4
    Registriert seit
    Jul 2010
    Ort
    Bachhagel
    Beiträge
    140

    Hi,

    hier kommt mal meine RGB_Control.php

    PHP-Code:
    <?

    //ID der I/O Instanz vom Chromoflex RC III.
    //Konfiguration: 115200, 8, 1, N
    $id 32594 /*[Chromoflex COM]*///I/O Instanz


    /*******************************************************************************

     Copyright 2012, IP-Symcon/meike0_0. Version 1.2.0 - DO NOT MODIFY BELOW THIS LINE!

    ********************************************************************************/

    if($_IPS['SENDER'] == "RunScript")
    {
        if(isset(
    $_IPS['Action']))
        {
           switch(
    $_IPS['Action'])
            {
               case 
    "Initialize":
                  
    Initialize();
                    break;
                case 
    "SetColor":
                    if(!isset(
    $_IPS['Net']))
                        
    $_IPS['Net'] = 8;
                    if(!isset(
    $_IPS['DeviceID']))
                        
    $_IPS['DeviceID'] = "000000";
                    if(!isset(
    $_IPS['R']))
                        
    $_IPS['R'] = 0xFF;
                    if(!isset(
    $_IPS['G']))
                        
    $_IPS['G'] = 0xFF;
                    if(!isset(
    $_IPS['B']))
                        
    $_IPS['B'] = 0xFF;
                    if(!isset(
    $_IPS['D']))
                        
    $_IPS['D'] = 0xFF;

                    if(
    IPS_SemaphoreEnter($_IPS['SELF'],5000)){}else
                    {
                        
    $x "";
                        
    $x .= chr($_IPS['Net']); //Network
                        
    $x .= HexToStr($_IPS['DeviceID']); //Remote Serial
                        
    $x .= chr(GetSequenceNumber());
                        
    $x .= chr(0xFF).chr(0xFF).chr(0xFE); //PC Serial

                        
    $x .= chr(0x80); //Command: Write
                        
    $x .= chr(0x01); //RAM Adress (???)
                        
    $x .= chr(0x12); //ProgramPC (???)

                        
    $x .= chr(max(1$_IPS['D'])); //Dimmer (0 = ON, 1 = 0%, 255 = 100%)
                        
    $x .= chr(0x00); //Index (???)
                        
    $x .= chr(0x01); //Dummy (???)
                        
    $x .= chr(0xFF); //Temp (???)

                        
    $x .= chr($_IPS['R']); //Red
                        
    $x .= chr($_IPS['G']); //Green
                        
    $x .= chr($_IPS['B']); //Blue

                        
    SPRT_SendText($idCreatePacket($x));
                        
    IPS_Sleep(100);
                        
    IPS_SemaphoreLeave($_IPS["SELF"]);
                    }
                   break;
                case 
    "SetProgram":
                    if(!isset(
    $_IPS['Net']))
                        
    $_IPS['Net'] = 8;
                    if(!isset(
    $_IPS['DeviceID']))
                        
    $_IPS['DeviceID'] = "000000";
                    if(!isset(
    $_IPS['P']))
                        
    $_IPS['P'] = 0;
                        
                        
                   
    //   if(!isset($_IPS['D']))
                 //       $_IPS['D'] = 0xFF;
                        
                        
                    
    if(IPS_SemaphoreEnter($_IPS['SELF'],5000)){}else
                    {
                        switch (
    $_IPS['P'])
                        {
                            case 
    0//Aus
                            
    case 1//Speichern&Aus
                            
    case 2//Fix Color
                            
    case 3//Color Change
                            
    case 4//Med.Color
                            
    case 5//Slow.Color
                            
    case 6//Blob
                            
    case 7//LSD
                            
    case 8//Fire
                            
    case 9//Flashes
                            
    case 10//Bursts
                            
    case 11//User 1
                            
    case 12//User 2
                            
    case 13//User 3
                            
    case 14//Slow Strobo
                            
    case 15//Strobo
                            
    case 16//Fast Strobo
                            
    case 17//Mix
                            
    case 18//Color
                                
    $x "";
                                
    $x .= chr($_IPS['Net']); //Network
                                
    $x .= HexToStr($_IPS['DeviceID']); //Remote Serial

                                
    $x .= chr(GetSequenceNumber());
                                         
    $x .= chr(0xFF).chr(0xFF).chr(0xFE); //PC Serial

                                    //     $x .= chr(max(1, $_IPS['D'])); //Dimmer (0 = ON, 1 = 0%, 255 = 100%)

                                         
    $x .= chr(0x80); //Index (???)
                                
    $x .= chr(0x01); //Dummy (???)
                                
    $x .= chr($_IPS['P']); //Temp (???)
                                
    $x .= chr(0x00); //Temp (???)
                                
    break;
                        }

                        
    SPRT_SendText($idCreatePacket($x));
                        
    IPS_Sleep(100);
                        
    IPS_SemaphoreLeave($_IPS["SELF"]);
                    }
                    break;
            }
        }
    }
    if(
    $_IPS['SENDER'] == "Execute")
    {
        
    Initialize();
        
    IPS_Sleep(200);
        
    IPS_RunScriptEx($_IPS['SELF'], Array("Action"=>"SetColor""R"=> rand(0255), "G" => rand(0255), "B" => rand(0255)));
    }

    function 
    Initialize()
    {
        global 
    $id;
         
    SPRT_SetDTR($idtrue);
         
    SPRT_SetRTS($idtrue);

       
    SPRT_SendText($id"!n0701\r");
    }

    function 
    GetSequenceNumber()
    {
        
    //32-47 Sequence Number (0..15 + 32)
        
    $seq_id 25812 /*[Scripte_oli\Scripte\Licht\RGB_Control\Sequence Number]*/;//CreateVariableByIdent($_IPS['SELF'], "SequenceNumber", "Sequence Number", 1);
        
    $seq GetValue($seq_id);
        
    $seq = ($seq+1) % 16;
        
    SetValue($seq_id$seq);
        return 
    $seq 32;
    }

    function 
    CreateVariableByIdent($id$ident$name$type)
     {
         
    $vid = @IPS_GetObjectIDByIdent($ident$id);
         if(
    $vid === false)
         {
             
    $vid IPS_CreateVariable($type);
             
    IPS_SetParent($vid$id);
             
    IPS_SetName($vid$name);
             
    IPS_SetIdent($vid$ident);
             
    IPS_SetInfo($vid"this variable was created by script #".$_IPS['SELF']);
         }
         return 
    $vid;
    }

    function 
    CreatePacket($data)
    {
        return 
    "!x0000".StrToHex(Chr(strlen($data)+2)).StrToHex($data).StrToHex(MakeCRC($data))."\r\r";
    }

    function 
    MakeCRC($data)
    {
        
    // Fast generation of CRC by using a table...
        
    $CRC_TABLE_A = Array(
             
    0x000xC10x810x400x010xC00x800x410x010xC0,
             
    0x800x410x000xC10x810x400x010xC00x800x41,
             
    0x000xC10x810x400x000xC10x810x400x010xC0,
             
    0x800x410x010xC00x800x410x000xC10x810x40,
             
    0x000xC10x810x400x010xC00x800x410x000xC1,
             
    0x810x400x010xC00x800x410x010xC00x800x41,
             
    0x000xC10x810x400x010xC00x800x410x000xC1,
             
    0x810x400x000xC10x810x400x010xC00x800x41,
             
    0x000xC10x810x400x010xC00x800x410x010xC0,
             
    0x800x410x000xC10x810x400x000xC10x810x40,
             
    0x010xC00x800x410x010xC00x800x410x000xC1,
             
    0x810x400x010xC00x800x410x000xC10x810x40,
             
    0x000xC10x810x400x010xC00x800x410x010xC0,
             
    0x800x410x000xC10x810x400x000xC10x810x40,
             
    0x010xC00x800x410x000xC10x810x400x010xC0,
             
    0x800x410x010xC00x800x410x000xC10x810x40,
             
    0x000xC10x810x400x010xC00x800x410x010xC0,
             
    0x800x410x000xC10x810x400x010xC00x800x41,
             
    0x000xC10x810x400x000xC10x810x400x010xC0,
             
    0x800x410x000xC10x810x400x010xC00x800x41,
             
    0x010xC00x800x410x000xC10x810x400x010xC0,
             
    0x800x410x000xC10x810x400x000xC10x810x40,
             
    0x010xC00x800x410x010xC00x800x410x000xC1,
             
    0x810x400x000xC10x810x400x010xC00x800x41,
             
    0x000xC10x810x400x010xC00x800x410x010xC0,
             
    0x800x410x000xC10x810x40
        
    );

        
    $CRC_TABLE_B = Array(
             
    0x000xC00xC10x010xC30x030x020xC20xC60x06,
             
    0x070xC70x050xC50xC40x040xCC0x0C0x0D0xCD,
             
    0x0F0xCF0xCE0x0E0x0A0xCA0xCB0x0B0xC90x09,
             
    0x080xC80xD80x180x190xD90x1B0xDB0xDA0x1A,
             
    0x1E0xDE0xDF0x1F0xDD0x1D0x1C0xDC0x140xD4,
             
    0xD50x150xD70x170x160xD60xD20x120x130xD3,
             
    0x110xD10xD00x100xF00x300x310xF10x330xF3,
             
    0xF20x320x360xF60xF70x370xF50x350x340xF4,
             
    0x3C0xFC0xFD0x3D0xFF0x3F0x3E0xFE0xFA0x3A,
             
    0x3B0xFB0x390xF90xF80x380x280xE80xE90x29,
             
    0xEB0x2B0x2A0xEA0xEE0x2E0x2F0xEF0x2D0xED,
             
    0xEC0x2C0xE40x240x250xE50x270xE70xE60x26,
             
    0x220xE20xE30x230xE10x210x200xE00xA00x60,
             
    0x610xA10x630xA30xA20x620x660xA60xA70x67,
             
    0xA50x650x640xA40x6C0xAC0xAD0x6D0xAF0x6F,
             
    0x6E0xAE0xAA0x6A0x6B0xAB0x690xA90xA80x68,
             
    0x780xB80xB90x790xBB0x7B0x7A0xBA0xBE0x7E,
             
    0x7F0xBF0x7D0xBD0xBC0x7C0xB40x740x750xB5,
             
    0x770xB70xB60x760x720xB20xB30x730xB10x71,
             
    0x700xB00x500x900x910x510x930x530x520x92,
             
    0x960x560x570x970x550x950x940x540x9C0x5C,
             
    0x5D0x9D0x5F0x9F0x9E0x5E0x5A0x9A0x9B0x5B,
             
    0x990x590x580x980x880x480x490x890x4B0x8B,
             
    0x8A0x4A0x4E0x8E0x8F0x4F0x8D0x4D0x4C0x8C,
             
    0x440x840x850x450x870x470x460x860x820x42,
             
    0x430x830x410x810x800x40
        
    );

        
    $CRC_A 0xFF;
        
    $CRC_B 0xFF;

        for(
    $i=0$i<strlen($data); $i++)
        {
           
    $INDEX $CRC_A Ord($data{$i});
           
    $CRC_A $CRC_TABLE_A[$INDEX] ^ $CRC_B;
           
    $CRC_B $CRC_TABLE_B[$INDEX];
        }
        return 
    Chr($CRC_B) . Chr($CRC_A);
    }

    //Copy&Paste from php.net (http://php.net/manual/de/function.hexdec.php)
    function StrToHex($x) {
        
    $s '';
        
    $p str_split($x);
        foreach(
    $p as $c)
            
    $s .= strtolower(sprintf("%02X",ord($c)));
        return(
    $s);
    }

    function 
    HexToStr($x) {
        
    $s '';
        
    $p explode("\n",trim(chunk_split($x,2)));
        foreach(
    $p as $h)
            
    $s .= chr(hexdec($h));
        return(
    $s);
    }

    ?>
    Grüße

    Oli
    Grüße aus Bachhagel - Oli
    IPS V4.2 / QNAP TVS-EC1080+ / Windows 2016 / KNX / Busch Prion / WAGO 750 / Philips Hue / 1-Wire / Viessmann / eHZ / Plugwise / Adatis FaceEntry / Chromoflex / eKey Fingerprint / Gardena Sileno / Solarlog / Fronius-Wechselrichter / Raspberry PI 3 / Senec.Home - SolarInvert G2 Plus XL / BMW i3 / KEBA P30

  5. #5
    Registriert seit
    Nov 2011
    Beiträge
    406

    Danke Olli !
    Aber ein paar Fragen habe ich noch! Wenn das Ok ist? Ich habe jetzt lange nix mehr gemacht!

    Folgendes habe ich bis jetzt gemacht.

    - USB Dongle an Pi gesteckt

    - I/O Serial Port angelegt Port = ttyUSB0

    - Dein Script angelegt oben die ID Des Serial Ports eingesetzt!!

    Wo sage dem Script jetzt noch das genau das Chromoflex RC Modul ist was angesprochen werden soll!!

    Wenn ich das script ausführe dann müsste was passieren, oder ?

  6. #6
    Registriert seit
    Jul 2010
    Ort
    Bachhagel
    Beiträge
    140

    Hi Mastershort,

    ich würde dir mal folgenden Eintrag hier im Forum vorschlagen.

    Chromoflex RC Steuerung mit RGB Fader und Color Picker

    Solltest du Probleme haben, einfach melden.

    Grüße

    Oli
    Grüße aus Bachhagel - Oli
    IPS V4.2 / QNAP TVS-EC1080+ / Windows 2016 / KNX / Busch Prion / WAGO 750 / Philips Hue / 1-Wire / Viessmann / eHZ / Plugwise / Adatis FaceEntry / Chromoflex / eKey Fingerprint / Gardena Sileno / Solarlog / Fronius-Wechselrichter / Raspberry PI 3 / Senec.Home - SolarInvert G2 Plus XL / BMW i3 / KEBA P30

  7. #7
    Registriert seit
    Nov 2011
    Beiträge
    406

    Genau das hatte ich vorher am laufen aber halt auf einem Windows Client!
    Nach dem ich das Hirn eingeschaltet habe, habe ich das Problem auch gefunden! Der Fehler war so blöd, das ich es garnicht sagen mag !!

    Ich hatte die BaudRate bei dem Serial Port noch nicht umgestellt, sie stand noch auf 9600!!

    Ich bin dir Super dankbar für das Skript und deine Hilfe!

  8. #8
    Registriert seit
    Nov 2011
    Beiträge
    406

    Hallo oheidinger

    ich hatte eine ganze Zeit am laufen. Hätte es aufgrund von einem Umbau abgebaut! Und zwischenzeitlich auch aus IPS entfernt.

    Jetzt wollte ich es wieder an den Start bringen und funktioniert wider nicht. Ich kann alles installieren etc. aber es wird anscheint nix über die Serielle Schnittstelle gesendet.

    Hast du deins noch unter 4.2 am laufen?

Ähnliche Themen

  1. Fgw14 usb
    Von mäc im Forum EnOcean
    Antworten: 5
    Letzter Beitrag: 07.06.16, 10:37
  2. Suche Chromoflex 3 RC USB Dongle Funkprotokoll
    Von ironkrutt im Forum Beleuchtung / Lichttechnik
    Antworten: 2
    Letzter Beitrag: 25.06.14, 19:37
  3. Chromoflex Usb-Dongle Problem
    Von immergut im Forum Beleuchtung / Lichttechnik
    Antworten: 2
    Letzter Beitrag: 02.01.12, 14:44
  4. Chromoflex USB-Dongle über LAN ansteuern?
    Von revel1985 im Forum Beleuchtung / Lichttechnik
    Antworten: 25
    Letzter Beitrag: 29.10.11, 05:53