Chromoflex 50 unter ip-symcon V 3

Ich habe was Neues zu den zwei Problemen

  1. Problem:
    Ich habe nur eine Vermutung warum das Problem auftritt. Ich denke das, dass set_chromoflex Skript „zu schnell durchläuft“ wenn man eine Adresse mit einfügt. Deswegen habe ich nach der Zeile 64 ein
IPS_Sleep(100);

eingefügt. Danach lief alles so wie es sein muss. Ich muss das ganze nochmal genauer prüfen, aber bis jetzt lief es einwandfrei auf meinen zwei Chromos. Heute Abend kommt noch der dritte dazu und dann werde ich das gesamte „verbesserte“ Skript hier reinstellen.

  1. Problem:
    Nach dem ich mich durch das Skript gekämpft habe, musste ich feststellen, dass lediglich eine Variable nicht gesetzt war. Sobald man wie bbernhard schon in seiner Anleitung geschrieben hatte, alle 3 Skripte angelegt hat und das Setup Skript ausgeführt hatte, sollte man jeden Butten und jeden Slider einmal benutzen. Die Skripte arbeiten mit sehr vielen Internen Variablen. Einige davon werden nur gesetzt sobald man einen Slider benutzt. Bei mir war es der Slider „Dim-Time“.

Hallo [b]wowa37[/b]1

hier mein Script in Abwandlung von bbernards script, funkt einwandfrei.
Ist wohl selbsterklärend.


<?php

// User settings ---------------------------------------------------------------

    define ("ID_CommPort", 41049 /*[Serial Port 03 - Cromoflex]*/);
    // Integer Variable für Gruppenadresse kann man auch direkt eintragen
    $id_Gruppe      = 42750 /*[Chromoflex\Adresse 1 - Garagetor aussen\Gruppe]*/;
    // Integer Variable mit HexColor Profil
   $id_Color       = 13127 /*[Chromoflex\Adresse 1 - Garagetor aussen\Color]*/;
    // Integer Variable mit 100 % Profil
    $id_Helligkeit  = 25510 /*[Chromoflex\Adresse 1 - Garagetor aussen\Garagentor Helligkeit]*/;

    // Nur angelegt für Grundeinstellung Integer Variable mit 100 % Profil
    $id_GrundHell   = 26724 /*[Chromoflex\Vorgabeneinstellungen Chromoflex\Chromoflex-Grundhelligkeit]*/;
    // Nur angelegt für Grundeinstellung Integer Variable mit 100 % Profil
    $id_Dimmzeit    = 18547 /*[Chromoflex\Vorgabeneinstellungen Chromoflex\Chromoflex-Dimmzeit]*/;

    $Helligkeit     = GetValue($id_Helligkeit) * 2.5 / 10;
    $GrundHell      = GetValue($id_GrundHell);
    $Helligkeit     = $Helligkeit + $GrundHell;
    $Dimmzeit       = GetValue($id_Dimmzeit);
   $Gruppe         = GetValueInteger($id_Gruppe);
   $Adresse        = chr(0x0).chr(0x0).chr(0x0.$Gruppe);  // kann man auch direkt eintragen
    $Color          = GetValueInteger($id_Color);
   $Red            = floor(  $Color/65536);
   $Green          = floor(( $Color-($Red*65536))/256);
   $Blue           = $Color-($Green*256)-($Red*65536);
   $ChromoflexMode = 0; // hier kann erweitert werden für Programme

// Check If static RGB Mode or Chromoflex interenal Scenes should be used ------
    IF ($ChromoflexMode > 0) {

        // Code for Chromoflex internal Scenes
        $cmd = chr(0).chr(0).chr(0xFE); // RESET
        send_command($Adresse.$cmd);
        IPS_Sleep(700);

        $ProgNr = 200+($ChromoflexMode*3)-3;  // $IPS_Value = 1 bis 8 für Chromoflex interen Modes,
        $cmd    = chr(0).chr(3).chr(0x7D).chr(0x15).chr(0).chr($ProgNr);
        send_command($Adresse.$cmd);
    }
        // Code for static RGB Mode
    else {
        // Switch to manual Mode
        $cmd = chr(0).chr(3).chr(0x7E).chr(0x11).chr(0x01).chr(0x01);
        send_command($Adresse.$cmd);

        $cmd = chr(0).chr(5).chr(0x7E).chr(17).chr(1).chr(0x00);
        send_command($Adresse.$cmd);

        // set increments -> 255 = immediate, 1 = 2,55ms for step from 0 to 255
        $cmd = chr(0).chr(5).chr(0x7E).chr(8).chr($Dimmzeit).chr($Dimmzeit).chr($Dimmzeit).chr(0x00);
        send_command($Adresse.$cmd);

        // Set colors
        $red   = ($Red   * 2.5 / 100) * $Helligkeit;
        $green = ($Green * 2.5 / 100) * $Helligkeit;
        $blue  = ($Blue  * 2.5 / 100) * $Helligkeit;

        $cmd = chr(0).chr(5).chr(0x7E).chr(4).chr($red).chr($green).chr($blue).chr(0x00);
        send_command($Adresse.$cmd);
/*
        echo "Dimmzeit:   ".$Dimmzeit."
";
        echo "GrundHell   ".$GrundHell."
";
        echo "Helligkeit: ".$Helligkeit."
";
        echo "Rot:        ".$red."
";
        echo "Grün:       ".$green."
";
        echo "Blau:       ".$blue."
";
*/
    }

// Code to send Commands to Chromoflex -----------------------------------------
    function send_command($txt) {
    $head = chr(0xCA); //StartByte
    $crc  = crc16($head.$txt);
    $txt  = str_replace(chr(0xCB), chr(0xCB).chr(0x01), $txt);
    $txt  = str_replace(chr(0xCA), chr(0xCB).chr(0x00), $txt);
    COMPort_SendText(ID_CommPort/*[Serial Port]*/, $head.$txt.$crc);
    }

// Calc Checksumm --------------------------------------------------------------
    function CRC16($s) {        // CRC16 reverse
        $CRCreg = 0xffff << 1;   // Start
        $PLYreg = 0xA001 << 1;   // Polynom
        $len = strlen($s);

        for ($cp=0; $cp<$len; $cp++)
            {
                $CRCreg ^= ord($s[$cp]) << 1;
                for ($bp=0; $bp<8; $bp++)
                {
                    $CRCreg >>= 1;
                    if ($CRCreg & 0x01) $CRCreg ^= $PLYreg;
                }
            }
            $crc = $CRCreg >> 1;
            $crcLo = $crc & 0xff;
            $crcHi = $crc >> 8;
        return chr($crcHi). chr($crcLo);
    }

?>


Chromoflex.png

Bild nachgetragen