+ Antworten
Seite 1 von 27 1 2 3 11 ... LetzteLetzte
Ergebnis 1 bis 10 von 267
  1. #1
    Registriert seit
    Nov 2008
    Beiträge
    48

    Standard Chromoflex RC, FTDI

    Updated: 12.03.2010

    Hi alle zusammen.

    Chromoflex wurde hier im Forum schon angesprochen. Dabei handelt es sich um einen RGB Controller mit dem man RGB Stripes oder Spots ansteuern kann.
    Ich hab mich damals gleich für die Luxus-Variante entschieden: "RC" diese baut selbst ein Funknetzwerk auf und kann über einen USB Dongle ferngesteuert werden (Bis zu 8 verschiedene Netze paralel).

    Nun ein paar von euch haben die Beta des ChromoflexRC Moduls ja schon erfolgreich am laufen.
    Da ich in letzter Zeit immer mehr von Euch das Modul zugeschickt habe, denke ich die Zeit ist nun gekommen die Beta öffentlich zu machen.

    An diesem Post findet Ihr für die unterschiedlichen IPS Versionen downloads

    Wenn ich die Zeit gefunden habe um weiterzu arbeiten, findet Ihr hier immer die neuste Version der dll.

    Changelog:
    -beta 0.3 (b0.3):
    FadeColor Funktion für weiche Übergänge
    Ablaufsteuerung/Programm Funktionen

    -beta 0.2 (b0.2):
    Variablen hinzugefügt (Farbe, Programm + Dimmer)

    -beta 0.1 (b0.1):
    Erste Beta mit allen gängigen Funktionen
    Es stehen alle Versionen zum Download bereit.


    Die b0.3 für IPS 2.2 kommt mit neuen Funktionen:
    So gibt es jetzt die Funktion FadeColor, die es ermöglicht über eine definierbare Zeitspanne von der aktuellen Farbe zu einer neuen Überzublenden.
    Neu sind auch die Programm Funktionen:
    Mit dessen Hilfe kann man selbst eine Ablaufsteuerung definieren und so eigene Programme für das CF entwerfen. Anders als bei den Controller-Internen Programmen wird hier die Steuerung allerdings über IPS und den Dongle vorgenommen. Der Server sendet also alle Änderungen "LIVE" an die Controller. Um möglichst viel Spielraum bei dem Programm-Entwurf zu gewährleisten ist das ganze etwas komplizierter geworden. Es liegt aber eine Doku bei.


    Anleitung
    Das ganze ist eine dll Datei (ChromoflexRC.dll) die in den Modules Ordner von IPS gehört.
    Wenn die drin ist, Service neu starten und es gibt ein neues Modul.
    Barthelme > Chromoflex III RC Stripe und i350.
    Ist egal welches man nimmt, ist beides das selbe...aber Ordnung muss sein ^^.

    Als Parent wählt man FTDI und in dessen Einstellungen den Chromoflex Dongle aus der Liste.

    Da man selber leider noch keine Eigenschaften-Seiten für seine Module bauen kann, müssen die Modul-Einstellungen noch per PHP vorgenommen werden. Mittels SetNet (Netz 8 ist default) und SetDeviceId (s.u.) kann man das Modul einstellen.
    Die DeviceID kriegt man momentan nur mit dem Hersteller Tool, dort auf Suche gehen und die so ermittelten IDs (Hexadezimal) mit dem Windows-Taschenrechner (oder aus dem Kopf ) in Dezimal-Zahlen umwandeln. Mit google gehts auch: "0xEmpfängerID in decimal" eingeben (also z.B. "0x1009D2 in decimal")

    Entweder legt man nur ein Chromoflex Modul an und setzt die ID vor jedem Befehl neu oder man legt ein Modul pro Receiver an (so ists gedacht) und setzt die Eigenschaften jeweils einmal mit PHP, danach sollte IPS sich das merken...


    PHP-Code:
    ###############  
    #  Aktionen  # 
    ############### 
    // An Alle: 
    ChromoflexRC_BroadcastSetColor($objektID,$r,$g,$b,$dimm); 
    ChromoflexRC_BroadcastSetProgram($objektID,$program,$dimm);   // $program=0 => Chromoflex aus 
    ChromoflexRC_BroadcastSetDimmer($objektID,$dimm); 

    // nur an bestimmten Receiver 
    ChromoflexRC_SetColor($objektID,$r,$g,$b,$dimm); // $dimm: 0...254 0=aus, 254 voll an (alternativ zu 254 geht auch -1)
    ChromoflexRC_SetProgram($objektID,$program,$dimm);   // $program=0 => Chromoflex aus 
    ChromoflexRC_SetDimmer($objektID,$dimm); 

    ###############  
    # Properties # 
    ############### 
    ChromoflexRC_SetNet($objektID,$NetzId);   // $NetzId=> 1..8 Default ist 8. 
    ChromoflexRC_GetNet($objektID);      // Rückgabe: NetzId 

    ChromoflexRC_SetDeviceId($objektID,$DeviceId);   // $DeviceId => Bisher nur zu ermitteln mit CF_3 ColorEditor 
    ChromoflexRC_GetDeviceId($objektID);      // Rückgabe: DeviceId  

    ###############  
    # Beispiel # 
    ############### 
    ChromoflexRC_SetDeviceID(47950 /*[ChromoflexRC III Stripe]*/1051090); // Device ID setzen (Netz ist 8=Default)
    ChromoflexRC_BroadcastSetColor(47950 /*[ChromoflexRC III Stripe]*/ ,255,0,0,254); //Rot, Voll an 
    Das wars auch schon.

    Das Modul ist nach wie vor als Beta zu sehen.
    Es fehlen Eigenschaften und die Receiver Suche!
    Paresy hatte mir aber schon vor längerer Zeit angeboten eine Eigenschafts-Seite in IPS mit einzukompilieren, ich will aber erst die Suche fertig machen und dazu fehlt's grad an der Zeit.

    Wenn sich das Ändert gibt es hier das neuste Modul.

    Na dann machts mal Bunt!
    gruß Huelke

    Neue Funktionen der Beta 0.3
    PHP-Code:
    ##### Change-Log / Neue Befehle

    //"Stand-Alone"
    Chromflex_FadeColor(ObjectId,r,g,b,dimm,duration)
    Chromflex_BroadcastFadeColor(ObjectId,r,g,b,dimm,duration)

    //"Program"
    Chromflex_Program_Length(ObjectId) : integer
    Chromflex_Program_IsRunning
    (ObjectId) : boolean
    Chromflex_Program_Add
    (ObjectId,function,duration)
    Chromflex_Program_Clear(ObjectId)
    Chromflex_Program_Start(ObjectId,repeat)
    Chromflex_Program_StartBroadcast(ObjectId,repeat)
    Chromflex_Program_Stop(ObjectId)

    ###### 
    ###### "Stand-Alone" Funktionen:
    PHP-Code:

    Chromflex_FadeColor
    (ObjectId,r,g,b,dimm,duration)
    Chromflex_BroadcastFadeColor(ObjectId,r,g,b,dimm,duration)
    /*
    Von Aktueller Farbe zu Übergebener Farbe überblenden.
    Dauer des Überblendens: duration in Millisekunden, aber nicht unter 50 ms (Chromoflex blendet ohnehin minimal über)
    Während des Vorgangs wird die ProgramVariable des Moduls auf "88" gesetzt, nach Ablauf des Programms steht es dann auf 18 => Farbe
    Wird während eines Vorgangs eine andre CF Steuer-Funktion (SetColor,SetProgram,usw....) ausgeführt, so wird der Fade abgebrochen.
    */

    ###### 
    ###### Programmfunktionen:
    Das Modul bietet nun Zeitgesteuerte Programmfunktionen
    Man kann ein eigenes Ablauf-Program zusammenstellen und dieses starten.
    Dabei wird allerdings nicht das Interne ROM des Empfängers programmiert sondern der Empfänger wird "LIVE" angesteuert.
    Die Möglichkeiten sind beim Internen Rom zu begrenzt.
    Das bedeutet aber das (im Höchstfall) 25 mal pro Sekunde ein Befehl über den Dongle an die Empfänger geschickt wird.
    Das klingt krasser als es ist . Es wird nur ein Befehl gesendet wenn sich die Farbe auch wirklich geändert hat.
    Ich habe keine Störungen anderer Geräte feststellen können.

    PHP-Code:

    Chromflex_Program_Add
    (ObjectId,function,duration)
    /*
    Fügt dem Programm einen weiteren Punkt hinzu.
    duration:integer
    Dauer der Aktion

    function:string
    Zurzeit gibt es 3 Funktionen:

    "fadeTo(farbe)" // dimm: optional,default:254
    //Zu Farbe Überblenden (über die dauer)

    "set(farbe)"         // dimm: optional,default:254
    //Farbe setzen (und für die dauer halten)

    "hold"
    //Aktuelle Farbe halten (für die dauer)

    Die Farbe (farbe) hat grundsätzlich folgendes Format:
    r,g,b,dimm 
    Allerdings kann Sie auch viel mehr sein (siehe dazu unten: Farb-Definitionen) 
    */


    Chromflex_Program_Clear(ObjectId)
    // Program löschen

    Chromflex_Program_Start(ObjectId,repeat)
    // Starten für die betroffenen Device
    // repeat=false => Das Program läuft ein mal und beendet dann den Program Modus
    // repeat=true => Das Program wiederholt sich 

    Chromflex_Program_StartBroadcast(ObjectId,repeat)
    // Starten für alle Devices
    // repeat=false => Das Program läuft ein mal und beendet dann den Program Modus
    // repeat=true => Das Program wiederholt sich

    Chromflex_Program_Stop(ObjectId)
    // Das Program stoppen (wird auch durch jede andere Funktion die den Receiver ansteuert beendet (SetColor,SetProgram....)

    Chromflex_Program_Length(ObjectId) : integer
    // Länge des Programms (in Millisekunden) 

    Chromflex_Program_IsRunning(ObjectId) : boolean
    // Läuft grade das Userprogram?
    // Alternativ wird auch die ProgramVariable des Moduls auf "99" gesetzt, nach Ablauf des Programms steht es dann auf 18 => Farbe 
    ########### Beispiel "Sonnenaufgang" (langsam):
    PHP-Code:
    // Vor einem neuen Programm: resetten
    Chromflex_Program_Clear(11199)

    // Sonnen-Aufgang (über ~ 300 Sekunden, dann 10 Sekunden "halten")
    ChromoflexRC_Program_Add(11199,'set(255,0,0,0)',100);         //Rot und Dunkel machen
    ChromoflexRC_Program_Add(11199,'fadeTo(255,205,70,254)',300000);  //über 300 Sekunden aufblenden und Farbe auf Warmweiß
    ChromoflexRC_Program_Add(11199,'hold',10000);  //Tageslicht 10 Sekunden halten (hier unnötig) 

    // Programm starten: (nicht im Repeat Modus=> False)
    Chromflex_Program_Start(11199,FALSE); 
    Zumindest bei meinen RGB Stripes sind die Schritte bei Dunkelen Farben (rund Ums Schwarz) leider etwas grob und somit stufig.

    Theoretisch können *beliebig* viele Program-Punkte aneinander gereiht werden


    ###### Farb-Definitionen: (für Program_Add)

    Die Farben werden in folgendem Format angegeben, fehlt ein Parameter, so wird der Default-Wert gesetzt.

    Farb-Format:
    r,g,b,dimm

    r:rot : Default = 0
    g:grün : Default = 0
    b:blau : Default = 0
    dimm:dimmer : Default=254

    Die einzelnen Werte können Absolut oder auch Zufällig sein:

    Wert-Formate:
    x Zahl Absolut: x
    x-y Zufallszahl x bis y
    -y Zufallszahl 0 bis y
    x- Zufallszahl x bis 255
    - Zufallszahl 0 bis 255

    FarbPaletten:
    Anstelle nur einer Farbe können auch Paletten verwendet werden.
    Diese machen nur Sinn in sich wiederholenden Programmen!
    Hierbei werden die einzelnen "Farben" mit Semikolon getrennt.
    Man hat die Wahl ob eine Zufällige Farbe aus der Palette gewählt werden soll ODER die Farben in Reihe "abgearbeitet" werden sollen:

    (Zufällig)
    [farbe1;farbe2;farbe3]

    (Reihe)
    {farbe1;farbe2;farbe3}


    ##### Beispiele (alle für den "repeat-modus" gedacht):

    Für alle Beispiele gilt:
    Vor dem Adden das alte Programm löschen, also ChromoflexRC_Program_Clear aufrufen - Nach dem Adden muss das Programm noch gestartet werden (siehe oben)

    PHP-Code:
        // Kleine Pallette durchwandern: {}
        
    ChromoflexRC_Program_Add(11199,'set({255,0,0; 255,255,0; 0,255,0; 0,255,255; 0,0,255; 255,0,255})',5000); // Nächste Paletten Farbe 5 Sekunden halten
        
        // -geht natürlich auch als Fading -> "Regenbogen":
        
    ChromoflexRC_Program_Add(11199,'fadeTo({255,0,0; 255,255,0; 0,255,0; 0,255,255; 0,0,255; 255,0,255})',5000); // 5 Sekunden zu nächster Paletten Farbe Faden
        
        // Das entspricht im überigen exakt diesem Program - ist aber auf eine Zeile Komprimiert:
        
    ChromoflexRC_Program_Add(11199,'fadeTo(255,0,0)',5000);
        
    ChromoflexRC_Program_Add(11199,'fadeTo(255,255,0)',5000);
        
    ChromoflexRC_Program_Add(11199,'fadeTo(0,255,0)',5000);
        
    ChromoflexRC_Program_Add(11199,'fadeTo(0,255,255)',5000);
        
    ChromoflexRC_Program_Add(11199,'fadeTo(0,0,255)',5000);
        
    ChromoflexRC_Program_Add(11199,'fadeTo(255,0,255)',5000);
                                
        
    // Gleiche Palette aber diesmal ist Reihenfolge zufällig [] - das kann man nicht durch ein alternativ Programm lösen
        
    ChromoflexRC_Program_Add(11199,'set([255,0,0; 255,255,0; 0,255,0; 0,255,255; 0,0,255; 255,0,255])',5000); // 5 Sekunden zu nächster Paletten Farbe Faden
        

        ### Nun Zufällige Farbwerte

        // Zufall Farben r,g,b je 0 bis 255
        
    ChromoflexRC_Program_Add(11199,'set(-,-,-)',10000); // Zufälltige Farbe 10 Sekunden halten

        // Zufall Farben Primär Rot (Der Rotanteil liegt bei 200 - 255)
        
    ChromoflexRC_Program_Add(11199,'set(200-,-,-)',10000); // Zufälltige Farbe 10 Sekunden halten

        // Zufall Farben diesmal noch definierter (rot: 100 bis 200 - grün: 10 bis 100 - blau: 200-230
        
    ChromoflexRC_Program_Add(11199,'set(100-200,10-100,200-230)',10000); // Zufälltige Farbe 10 Sekunden halten

        // Natürlich kann man auch den Dimmer auf Zufall setzen (hier 100 bis 200)
        
    ChromoflexRC_Program_Add(11199,'set(255,190,230,100-200)',10000); 
        
        
    // Man kann Zufällige Zahlen auch in Paletten verwenden (Hier ein Zufälliger RotTon gefolgt von Weiß ... usw.)
        
    ChromoflexRC_Program_Add(11199,'set({200-,-100,-70; 255,255,255})',10000); 

        
        
    ### Hier noch einmal ein paar Beispiele
        
        // Weicher Wechsel 
        
    ChromoflexRC_Program_Add(11199,'fadeTo(100-,100-,100-)',3000); // 3 Sekunden zu Zufälltiger Farbe überblenden
        
    ChromoflexRC_Program_Add(11199,'hold',10000);                         // Farbe 10 Sekunden halten (für Repeat Modus)

        // FlashChange: Ein RotTon gefolgt von einem GrünTon dann ein BlauTon, Dazwischen jeweils ein kurzes aufblitzen in Weiß
        
    ChromoflexRC_Program_Add(11199,'set({200-,-100,-100;-100,200-,-100;-100,-100,200-})',5000 );
        
    ChromoflexRC_Program_Add(11199,'set(255,255,255)',100 );

        
    // So etwas wie Blob:
        
    ChromoflexRC_Program_Add(11199,'fadeTo({200-,-100,-100;-100,200-,-100;-100,-100,200-})',3000 );
        
    ChromoflexRC_Program_Add(11199,'fadeTo({200-,-100,-100;-100,200-,-100;-100,-100,200-})',3000 );    
        


        
    ### Beispiel für "kompliziertere" Proramme:

        // Gewitter: (Nicht so gut wie das "echte" -ein wenig "sanfter"*- aber es geht...   (* Das liegt daran das der CF leider IMMER leicht fadet wenn man die Farbe per Funk wechselt)
        // Auf diese Weise lässt sich sicherlich auch etwas wie das "Feuer-Program" erstellen.     
        
    ChromoflexRC_Program_Add(11199,'fadeTo(-50,-50,200-,-50)',1500 ); // fade zu einem zufälligen dunkelen Blau 
        
    ChromoflexRC_Program_Add(11199,'fadeTo(-50,-50,200-,-50)',1500 ); // fade zu einem (weiteren) zufälligen dunkelen Blau
        
    ChromoflexRC_Program_Add(11199,'fadeTo(-50,-50,200-,-50)',1500 ); // fade zu einem (weiteren) zufälligen dunkelen Blau (insg 4,5 Sekunden)
        // Das ist quasi das Hintergrund "Rauschen"

        // Nun muss ab und zu für einen Blitz gesorgt werden:
        // Dafür wird zufällig aus einer Palette aus Farben gewählt. Meistens ist es wieder nur ein weiteres zufälliges Blau. Manchmal aber auch ein reines Weiß:
        // Je nachdem wie oft man die Blaue Farbe da mit reinschreibt verringert sich natürlich die Wahrscheinlichkeit für den weißen Blitz...
        
    ChromoflexRC_Program_Add(11199,'set([-50,-50,200-,-50;-50,-50,200-,-50; -50,-50,200-,-50; 255,255,255,254)',100 ); // Kurzer "Flash" wahrscheinlichkeit 3:1 für weiß(=Blitz)
        
    ChromoflexRC_Program_Add(11199,'set([-50,-50,200-,-50; -50,-50,200-,-50; 255,255,255,254)',100 ); // Kurzer "Flash" wahrscheinlichkeit 2:1 für weiß(=Blitz)
        
    ChromoflexRC_Program_Add(11199,'set([-50,-50,200-,-50; -50,-50,200-,-50; 255,255,255,254)',100 ); // Kurzer "Flash" wahrscheinlichkeit 2:1 für weiß(=Blitz)
        
    ChromoflexRC_Program_Add(11199,'set([-50,-50,200-,-50;-50,-50,200-,-50; -50,-50,200-,-50; 255,255,255,254)',100 ); // Kurzer "Flash" wahrscheinlichkeit 3:1 für weiß(=Blitz)

        // Weil danach das Programm wiederholt wird wollen wir nicht das die letzte Farbe Weiß war:
        
    ChromoflexRC_Program_Add(11199,'set(-50,-50,200-,-50)',200 ); // Setze Dunkeles Blau (damit nicht vom Weiß eines "Blitzes" 1,5 Sek gefaded wird (repeat) 
    Der Kreativität sollten keine Grenzen gesetzt sein,
    wenn doch: also wenn Ihr ein Ablauf-Programm bauen wollt das Ihr so nicht umsetzten könnt... PN -> an HUELKE

    Nun denn, bitte Postet doch das ein oder andere Program, welches Ihr erstellt habt.
    Ich bin mal gespannt auf eure Ideen.

    Die Nutzung geschieht auf eigene Gefahr.

    WARNUNG: nicht mehrere Programme die Viel "Funkbedarf" (~25 Farbänderungen in der Sekunde) haben gleichzeitig laufen lassen.
    Der Dauer Test mit einem Einzelnen Programm hat problemlos funktioniert.
    Der Stress Test mit 4 Parallen Stressreichen(~25 Farbänderungen in der Sekunde mal 4!!! = 100) Programmen hat zu einer Fehlfunktion des Dongels geführt (nach längerer Laufzeit).




    Hier noch ein paar PHP Defines/Variabelen die Ihr brauchen könntet
    PHP-Code:
    //Programme
    define("cf_program_off",0);
    define("cf_program_savecolorandoff",1);
    define("cf_program_savedcolor",2);                    
    define("cf_program_colorchange",3);
    define("cf_program_medium_colorchange",4);
    define("cf_program_slow_colorchange",5);
    define("cf_program_blob",6);
    define("cf_program_burst",7);
    define("cf_program_fire",8);
    define("cf_program_flashes",9);
    define("cf_program_lsd",10);
    define("cf_program_user1",11);
    define("cf_program_user2",12);
    define("cf_program_user3",13);
    define("cf_program_slow_strobo",14);
    define("cf_program_strobo",15);
    define("cf_program_fast_strobo",16);
    define("cf_program_mix",17); // fast colorchange + blob
    define("cf_program_color",18); // set by "...SetColor"

    //Farbpalette (wie die im Herstellertool)
    $cf_color_table=array(
        array(
    25500),        /*/0: Rot */
        
    array(255200),        /*/1: Hell3rot */
        
    array(255400),        /*/2: Hell2rot*/
        
    array(255800),        /*/3: Hellrot*/
        
    array(2551200),        /*/4: Orange*/
        
    array(2552550),        /*/5: Gelb*/
        
    array(2002550),        /*/6: Gruengelb*/
        
    array(1002550),        /*/7: Hellgruen*/
        
    array(02550),                 /*/8: Reingruen*/
        
    array(025580),        /*/9: Leicht Indigo*/
        
    array(0255144),        /*/10: Indigo*/
        
    array(0255255),        /*/11: Hellblau*/
        
    array(0100255),        /*/12: Hellblau*/
        
    array(050255),        /*/13: Dunkelblau*/
        
    array(00255),        /*/14: Royal*/
        
    array(50,    0255),        /*/15:*/
        
    array(1000255),        /*/16:*/
        
    array(2550255),        /*/17: Magenta*/
        
    array(2550100),        /*/18 */
        
    array(255050),        /*/19 */
        
    array(255255255),    /*/ 20 *Weiss */
        
    array(25525580),    /*/ 21 Ungefaehr Weiss*/
        
    array(120255120),    /*/ 22 Ungefaehr Weiss*/
        
    array(190255180),    /*/ 23 Ungefaehr Weiss*/
        
    array(160255255)    /*/ 24 Ungefaehr Weiss */
    );

    // Passende Funktion für Palette
    function ChromoflexRC_SetPalColor($objectId$palColor$dimm);
        global 
    $cf_color_table;
        
    ChromoflexRC_SetColor($objectId$cf_color_table[$palColor][0],$cf_color_table[$palColor][1],$cf_color_table[$palColor][2],$dimm);
    }

    ###############  
    # Beispiel # 
    ############### 
    ChromoflexRC_SetPalColor(47950 /*[ChromoflexRC III Stripe]*/4254);  // Orange - voll an 

    Hier das "Ur-Posting":(um den weiteren Thread nicht zu zerstören )

    Nun gibt es zu der alten Kabel-Variante schon länger die Spezifikationen zum Protokol.
    Ich habe lange Zeit die Leute von Barthelme bekniet das die auch die Spezifikationen zum Chromoflex III RC rausgeben. Und ich hab sie nun endlich bekommen. Genauer gesagt hab ich die Sourcecodes des ColorEditors bekommen. =)

    Das tolle ist, das der USB Dongle vom Chromoflex auch den FTDI Chip benutzt und somit den selben Treiber wie die FHZ 1300 (FS 20) verwendet.
    Der IO Treiber (FTDI) zeigt den Chromoflex auch bereits an.

    Das bedeutet ich könnte ja theoretisch auf die FTDI IO Unit aufbauen und müsste nur noch den Splitter und ein Modul programmieren.

    Und da kommt Ihr ins Spiel, ich hab nämlich keine Ahnung wie genau ich da anfangen soll. Am besten wäre es natürlich die Source von dem FHZ1X00PC Splitter quasi als SDK bekommen könnte (vllt auch ein FS20-Modul dazu), dann könnte ich genau sehen wie die Kommunikation funktioniert.

    Ich arbeite allerdings schon mit V2...

    Hilfe!

    Vielen Dank im Vorraus,
    Huelke
    Edit von paresy:
    Download für IP-Symcon 2.3: http://www.ip-symcon.de/forum/92019-post199.html
    Geändert von paresy (21.01.11 um 13:44 Uhr)

  2. #2
    Registriert seit
    May 2005
    Beiträge
    2,336

    Das SDK für V2 kann man sich hier downloaden. Die Einbindung des FTDI-Moduls erfolgt (meistens) in dem man es als Parent zu seinem eigenem Modul anlegt oder dynamisch definiert. Das Modul sendet dann seine Daten an das eigene ReceiveText-Interface, während man seine Daten an das SendText-Interface des FTDI-Moduls übergibt.

    Das Thema SDK ist doch recht komplex. Evtl. ist es einfacher, sich einen virtuellen Comport für das FTDI-Device zu erstellen und dann mit dem ComPort-Modul direkt aus PHP zu arbeiten.

    Tommi

  3. #3
    Registriert seit
    Nov 2008
    Beiträge
    48

    Hi erstmal Danke für Deine Antwort.

    Das Problem ist auch das Ihr ja alles in Delphi bastelt, und die Chromoflex III RC Sourcecodes in C++ (Borland Builder 6) geschrieben wurden.
    Bin in Delphi jetzt nicht gerade fitt, und das portieren von C könnte schwierig werden :-/
    Das betrifft aber eigentlich nur die Schnittstelle zum Dongle, die eigentlichen Daten die da gesendet werden bekomme ich auch noch in Delphi hin. Wenn ich also den IO Treiber benutzte der schon da ist sollte das eigentlich nicht so schwierig sein.

    Ein Command sieht ungefähr so aus:
    Code:
    !x00101408000000a1fffffe800112000001ff0000009ee0
    gefolgt von einem CR


    Hast Du Erfahrung mit dem FTDI Treiber? Hab es nämlich bisher noch nicht hinbekommen den als virtuellen Comport zu installieren. Ich weis das es vom FTDI Hersteller zwei Treiber gibt. Den "direkten" und den für den VPort. Aber der zweite läuft nicht richtig oder ich mach es falsch.

    Hab gerade überlegt man könnte auch einen Server basteln, der per tcp Befehle annimmt. Den könnte man dann per PHP füttern.
    Eine Command Line Variante habe ich schon, die ist aber viel zu lahm, da sie ja bei jedem Aufruf erst die Verbindung zum Dongle aufbaut.

    Schöner fände ich das aber schon als Splitter/Modul...

    Wenn man sich das SDK-Winlirc Modul anschaut so erkennt man ja das mittels
    IIPSSendString(GetParent()).SendText( COMMAND/TEXT );
    Der Text an den Parent gesendet wird... Eigentlich ist es das doch schon oder? Denn das FTDI IO Modul erkennt den Chromoflex Dongle ja korrekt und kann auch eine Verbindung aufbauen.
    Also muss man doch nur noch den Command zusammenbasteln und das dem Parent FTDI Control "senden"...?

    Und wie "registriere" ich dann passende PHP Funktionen [ z.b CromoflexRC_SetColor(modulID,r,g,b,dimm); ] ?

    Viele Fragen ich weiß ... Aber ein "vollwertiges" SDK ist das ja nicht so wirklich

    Gruß und vielen Dank,
    Huelke
    Geändert von huelke (28.12.08 um 06:48 Uhr)

  4. #4
    Registriert seit
    Feb 2005
    Ort
    Lübeck
    Beiträge
    23,753

    Definier in deinem Interface einfache eine neue SetColor Funktion und schon ist sie in PHP drin. Mit dem Prefix, dass du beim "Register" angibst.

    Notfalls kannst du auch die FTDI_SendText Funktion nutzen.

    paresy

  5. #5
    Registriert seit
    Nov 2008
    Beiträge
    48

    Hey paresy danke für den Tipp mit FTDI_SendText ! So konnte ich schon mal ausprobieren ob sich was rührt, und ich bin begeistert direkt beim ersten Versuch hat's geklappt.
    Muss Dir/Euch an dieser Stelle mal ein riesen Lob ausprechen: IP-SYMCON ist echt genial aufgebaut. Dieses Modulare arbeiten ist echt cool.
    Auch die neue SOAP Designer Schnittstelle ist ideal.

    Ach ja und das die PHP funktionen automatisch aus dem Interface abgeleitet werden ist feinster Luxus. :thumbs up: Danke Dafür!

    Ich werde mich jetzt daran machen einen passenden Splitter und Module zu basteln.

    Gruß Huelke

  6. #6
    Registriert seit
    Feb 2005
    Ort
    Lübeck
    Beiträge
    23,753

    Habe dir mal eine PM geschickt... mit etwas mehr Beispiel-Code.

    Ach ja und das die PHP funktionen automatisch aus dem Interface abgeleitet werden ist feinster Luxus. :thumbs up: Danke Dafür!
    Tipp: Bei Parametern funktionieren nur simple Typen. Bei den Rückgabeparametern kannst du auch Objekte (immer von TRemotable ableiten) und Arrays (auch dynamische) verwenden. Bei Arrays musst du diese aber erst in einen eigenen "type" verpacken. (UIPSModuleTypes.pas hat viele Beispiele was Möglich ist)

    paresy
    Geändert von paresy (28.12.08 um 20:03 Uhr)

  7. #7
    Registriert seit
    Nov 2008
    Beiträge
    48

    Soo
    Dank paresy's Hilfe hab ich die erste Version des Chromoflex III RC Moduls fertig.
    Das sendet bisher eigenständig aber nur Broadcast, da ich noch nicht mit der Receiver-Suche fertig bin.
    Das kann es aber bald
    Wenn Ihr einen Receiver direkt ansprechen wollt, so geht das auch schon. Aber ihr müsst die ReceiverId vorher mit dem Hersteller Tool "Color Editor CF3" ermitteln [Suche].
    Die könnt Ihr dann dem Modul beibringen...

    Bisher verfügbare Funktionen:

    PHP-Code:
    ############### 
    #  Aktionen  #
    ###############
    // An Alle:
    ChromoflexRC_BroadcastSetColor($objektID,$r,$g,$b,$dimm);
    ChromoflexRC_BroadcastSetProgram($objektID,$program,$dimm);   // $program=0 => Chromoflex aus
    ChromoflexRC_BroadcastSetDimmer($objektID,$dimm);

    // nur an bestimmten Receiver
    ChromoflexRC_SetColor($objektID,$r,$g,$b,$dimm);
    ChromoflexRC_SetProgram($objektID,$program,$dimm);   // $program=0 => Chromoflex aus
    ChromoflexRC_SetDimmer($objektID,$dimm);

    ############### 
    # Properties #
    ###############
    ChromoflexRC_SetNet($objektID,$NetzId);   // $NetzId=> 1..8 Default ist 8.
    ChromoflexRC_GetNet($objektID);      // Rückgabe: NetzId

    ChromoflexRC_SetDeviceId($objektID,$DeviceId);   // $DeviceId => Bisher nur zu ermitteln mit CF_3 ColorEditor
    ChromoflexRC_GetDeviceId($objektID);      // Rückgabe: DeviceId 
    Wer interesse hat, meldet sich einfach bei mir

    MfG
    Huelke
    Geändert von huelke (31.08.09 um 19:40 Uhr)

  8. #8
    Registriert seit
    Dec 2006
    Ort
    Oberkrämer bei Berlin
    Beiträge
    1,576

    Schoen dass sich jemand dem CF IIIRC annimmt. Ich hatte es schon fast bereut auf die RC Version umgestiegen zu sein. Da sich bei Barthelme noch weniger tut als ueblich. Im Herbst sollte sich ja da was tun, aber der ist schon etwas vorbei.
    Ich bin auch schon sehr gespannt es aus zu probieren. Doch leider bin ich noch im, mit 32Grad noch kuehlen, Sri Lanka.
    Also, uebernaechste Woche lege ich los.
    (5x CF II und 5x CF IIIRC habe ich im Einsatz)
    MfG: Heiner_________________IPS5.4, NUC-i5 Lüfterlos, SSD, Win10Home, 24/7; IPS-Mobile Android V5.3.0; FHZ1300PC: FS20, HMS100, KS300, PS50, FHT; WDE1; Harmony1100 + Wandlung einzelner FHT80TF in FS20 Adressen mit FS20Manager; 3x ChromoflexII + 14x IIIRC; DMX4ALL, ArtNet (Dimmer6); IPS-868: EKM, RGBW, WDT, JKM/Termojet; 1Wire über blauem DS9490R; HomeMatic: CCU3, LAN_Adapter, Hm + HmIP, Winmatic; XBee Pro: Roomba;

  9. #9
    Registriert seit
    Dec 2005
    Ort
    Hamburg
    Beiträge
    2,261

    Hallo huelke, bist du mit deinem Modul schon weiter ?

  10. #10
    Registriert seit
    Dec 2005
    Ort
    Hamburg
    Beiträge
    2,261

    Hat jemand huelkes skript schon einmal erfolgreich eingesetzt ?

Ähnliche Themen

  1. "Installed Driver is Outdated" Error bei FTDI
    Von daniel1005 im Forum Allgemeine Diskussion (2.x/3.x)
    Antworten: 6
    Letzter Beitrag: 19.03.09, 22:58
  2. Chromoflex III RC
    Von Heidewinkler im Forum Schaufenster
    Antworten: 6
    Letzter Beitrag: 16.01.09, 17:29
  3. FTDI (FHZ und IRTrans)
    Von Spawn im Forum Allgemeine Diskussion (2.x/3.x)
    Antworten: 2
    Letzter Beitrag: 09.12.08, 18:47
  4. Autoreconnect FTDI und FHZ
    Von TK6 im Forum Allgemeine Diskussion
    Antworten: 1
    Letzter Beitrag: 29.08.06, 13:05
  5. FTDI D2xx & WS500 (ws300)
    Von samlehm im Forum Allgemeine Diskussion
    Antworten: 5
    Letzter Beitrag: 22.07.06, 23:15

Stichworte