+ Antworten
Ergebnis 1 bis 9 von 9
  1. #1
    Registriert seit
    Jan 2016
    Ort
    Germany
    Beiträge
    78

    Standard Hilfe beim Eltako FSB14 einlernen

    Hallo zusammen,

    ich habe jetzt schier endlos versucht, einige FSB14 in IPS einzulernen.

    Mein Setup:
    FAM14 mit mehreren FSB14. an jedem FSB14 hängen zwei Motoren.

    Ich bin der Anleitung von IPS gefolgt:

    Geräte-ID eintragen und mit "Übernehmen" speichern
    Gerät in den Einlernmodus versetzen (siehe Herstelleranleitung)
    "Einlernen" klicken
    Funktion ggf. in der Testumgebung mit An/Aus testen
    "Suchen" klicken. Das Gerät sollte 5mal An/Aus gehen
    Gefundene ID auswählen und "Übernehmen"

    Als Geräte-ID trage ich zum Beispiel 12 ein.
    FSB 14 wird auf 10 gestellt und dann auf LRN gedreht.
    Dann drücke ich in IPS Einlernen, bekomme den FSB14 jedoch nicht zu sehen.

    Bin da echt ratlos und würde mich über Hilfe freuen.

    P.S.: im PCT14 habe ich bereits Adressen für alle Geräte vergeben. (Siehe Bild)


    Klicken Sie auf die Grafik für eine größere Ansicht 

Name:	PCT14-Gerätebezeichnungen.JPG 
Hits:	744 
Größe:	70.4 KB 
ID:	34219

  2. #2
    Registriert seit
    Feb 2005
    Ort
    Lübeck
    Beiträge
    21,890

    Welche Instanz verwendest du? Wir haben eigentlich dafür das Eltako Shutter Modul. Damit sollte das problemlos laufen

    paesy

  3. #3
    Registriert seit
    Jan 2016
    Ort
    Germany
    Beiträge
    78

    Standard Eltako Shutter

    Also ich habe über Instanz hinzufügen nach dem FSB14 gesucht und gefunden.
    Wie aus den Bildern ersichtlich.
    Daraus habe ich die Instanz erstellt.
    Es wird jedoch nach dem Klick auf Einlernen keine Rückmelde-ID erstellt und die Instanz ist nicht funktional.

    Klicken Sie auf die Grafik für eine größere Ansicht 

Name:	eltakofsb14.JPG 
Hits:	180 
Größe:	14.0 KB 
ID:	34231 Klicken Sie auf die Grafik für eine größere Ansicht 

Name:	fsb14.JPG 
Hits:	406 
Größe:	58.3 KB 
ID:	34232 Klicken Sie auf die Grafik für eine größere Ansicht 

Name:	instanzfsb14.JPG 
Hits:	400 
Größe:	29.3 KB 
ID:	34233

  4. #4
    Registriert seit
    Dec 2013
    Beiträge
    98

    Hallo micahelwsw5,

    hier eine kurze Erklärung zum Thema Enocean-IDs.

    Wenn dein Gateway z. B. die Base-ID FFFFFF00 hat, dann sind aus IPS heraus die Geräte-IDs dec 1-127 (0x01-0x7F) verwendbar. Eine komplette Sende-ID würde z. B. folgendermaßen aussehen: FFFFFF7B (123) Base-ID+Geräte-ID. Das wären dann die ID's, die Du mit dem PCT14 in die Aktoren einträgst.
    Für die Melde-IDs gilt der umgekehrte Weg. Also FAM14 Base-ID + Geräte-ID im Bus (siehe PCT14).

    Gruß
    bertel2013
    Geändert von bertel2013 (01.06.16 um 12:42 Uhr)
    IPS 5, IPSView, Enocean (Eltako FAM14, FAM-USB, FSR14, FUD14, FSB14, FMS14, F3Z14D, FBA14, FSM14, FWZ14, FUTH55D, FBH65, FCO2TF63, Multisensor, Hoppe Funk-Fenstergriff, FSR61, PTM Taster, Peha Easyclick Aktoren, Peha Easyclick-Komf.-Handsender, Permundo PSC234/PSC132), OneWire, Modbus, SML-USB-IR, PIKO 10.1, BWT AQA Perla, Philips Hue, Harmony Hub, Alexa

  5. #5
    Registriert seit
    Dec 2013
    Beiträge
    98

    Standard Eltako FSB14

    Hallo michaelwsw5,

    hier ist mein Skript zum senden der Fahrzeit an die FSBs. Es ist leider noch etwas "dirty", aber es funktioniert! Ich habe zu jedem Rollladen eine Integer Variable "Postion" erstellt und das Skript als Aktion hinterlegt, siehe Screenshots.

    Anhang 31265Anhang 31266

    Im WebFront sieht es dann so aus:

    Anhang 31264

    Im Skript müssen noch folgende Dinge definiert werden:
    - Laufzeiten der verschiedenen Typen
    - Die ID der Register Variable ($regvar)
    - In der Funktion "Telegramm" müssen noch die IDs ($id1-$id3) entsprechend der Gateway Base-ID eingetragen werden

    Bei der Variable "$ENOID" wird zuerst die bestehende Geräte-ID (im Aktor eingelernt als "Richtungstaster" für normal Auf/Ab) der jeweiligen Instanz ausgelesen und dann mit 128 und 64 addiert. 128 weil meine Gateway Base-ID mit 0x80 endet. Die 64 habe ich mir überlegt um die Vergabe der IDs für "Fahrkommando mit Zeitwertübergabe von GFVS" zu vereinfachen (also bestehende ID + 64). Ich habe also für jedes Beschattungselement in den Aktoren jeweils zwei IDs eingelernt, einmal normal als "Richtungstaster" (Instanz Enocean EltakoSwitch) und einmal als "Fahrkommando mit Zeitwertübergabe". Klingt kompliziert, ich hoffe du verstehst was ich meine.
    Hier noch ein Screenshot meiner Instanz:

    Anhang 31267

    Außerdem habe ich eine Variable "Typ", da ich verschiedene Beschattungstypen mit verschiedenen Laufzeiten habe. Die Variable wird vom Skript angelgt, es muss nur noch angepasst und das entsprechende Profil angelegt werden.

    Anhang 31268

    Übrigens, das Ganze basiert noch auf ESP2! Werde es irgendwann in ferner Zukunft mal auf ESP3 umstellen.

    PHP-Code:
    <?
    /*
    Skript zum Setzen der Beschattungsposition
    Auslöser: Webfront - Integer Variable (Slider)
    Bedingung:
    19.09.2015 - Roberto Martins
    */

    if($IPS_SENDER == "WebFront"){
    $regvar 12345//Register Variable
    $OldPosition GetValue($IPS_VARIABLE); // Alte Position vor ändern feststellen
    SetValue($IPS_VARIABLE$IPS_VALUE); // Neue Position setzen
    $ParentID IPS_GetParent($IPS_VARIABLE); // Instanz-ID ermitteln
    $DeviceID IPS_GetProperty($ParentID"DeviceID"); // Device-ID ermitteln
    $ENOID dec2hex02(128+64+$DeviceID); // Enocean Sender-ID der Instanz ermitteln (TCM-ID + 64, nur letzter Byte, für Zeitwertübergabe an FSB14)
    $TypeID CreateVariableByName($ParentID'Typ'"Beschattungstypen"1true);
    $Type GetValue($TypeID); // Rolladentyp ermitteln
    $MovingID CreateVariableByName($ParentID'Moving'""0true);

        switch (
    $Type)
        {
           case 
    1:
              
    $SecAuf '18'//Zeit Typ 1 auf in Sekunden
              
    $SecAb ='17'//Zeit Typ 1 zu in Sekunden
            
    break;
            case 
    2:
              
    $SecAuf '26'//Zeit Typ 2 auf in Sekunden
              
    $SecAb ='21'//Zeit Typ 2 zu in Sekunden
            
    break;
            case 
    3:
              
    $SecAuf '60'//Zeit Typ 3 auf in Sekunden
              
    $SecAb ='60'//Zeit Typ 3 zu in Sekunden
            
    break;
        }

            if (
    $IPS_VALUE $OldPosition// Ab sonst Auf
            
    {
                if (
    $IPS_VALUE == 100)
                {
                
    $Fahrzeit dec2hex02(($SecAb/100)*($IPS_VALUE $OldPosition)+5);
                }
                else
                {
                
    $Fahrzeit dec2hex02(($SecAb/100)*($IPS_VALUE $OldPosition));
                }
            
    $Bewegung "02"//Ab
            
    }
              else
            {
               if (
    $OldPosition 100)
               {
               
    $Fahrzeit dec2hex02(($SecAuf/100)*($OldPosition $IPS_VALUE));
               }
               else
               {
                
    $Fahrzeit dec2hex02(($SecAuf/100)*($OldPosition $IPS_VALUE)+5);
                }
            
    $Bewegung "01"//Auf
            
    }
        
    $telegram Telegramm($Fahrzeit$Bewegung$ENOID);
        
    SetValue($MovingIDtrue); //Moving-Variable auf true setzen wegen Positionsauswertung mit Statustelegramm
        
    IPS_Sleep(200);
        
    RegVar_SendText($regvar $telegram);
        
    IPS_Sleep((hexdec($Fahrzeit)*1000)+2000);
        
    SetValue($MovingIDfalse); //Moving-Variable wieder auf false setzen
    }


    //  #########################  FUNKTIONEN  #########################

    function Telegramm($data2$data1$id4)
    {
    //  Telegrammaufbau definieren
        
    $sync "A55A";
        
    $header "6B";
        
    $org "07";
        
    $data3 "02";
        
    //$data2 = "00";
        //$data1 = "00";
        
    $data0 "08";
        
    $id1 "FF";
        
    $id2 "FF";
        
    $id3 "FF";
        
    //$id4 = "B7";
        
    $status "00";
        
    $checksumcalc dec2hex04(hexdec($header) + hexdec($org) + hexdec($data3) + hexdec($data2) + hexdec($data1) + hexdec($data0) + hexdec($id1) + hexdec($id2) + hexdec($id3) + hexdec($id4) + hexdec($status));
        
    $checksumbytes str_split($checksumcalc2);
        
    $checksum $checksumbytes[1];
    //  Telegramm zusammenstellen
        
    $telegram Hex2Str($sync.$header.$org.$data3.$data2.$data1.$data0.$id1.$id2.$id3.$id4.$status.$checksum);
        return 
    $telegram;
    }


    function 
    Hex2Str($hex)
    {
        
    $string='';
        for (
    $i=0$i strlen($hex)-1$i+=2){
            
    $string .= chr(hexdec($hex[$i].$hex[$i+1]));
        }
        return 
    $string;
    }

    function 
    dec2hex04($dec)
    {
        return 
    sprintf("%04X"$dec);
    }

    function 
    dec2hex02($dec)
    {
        return 
    sprintf("%02X"$dec);
    }

    function 
    CreateVariableByName($id$name$profile$type$hidden)
    {
        
    $vid = @IPS_GetVariableIDByName($name$id);
        if(
    $vid===false) {
          
    $vid IPS_CreateVariable($type);
          
    IPS_SetParent($vid$id);
          
    IPS_SetName($vid$name);
          
    IPS_SetInfo($vid"This Variable was created by Script #".$_IPS['SELF']);
          
    IPS_SetHidden($vid$hidden);
                if(
    $profile !== "")
                    {
                 
    IPS_SetVariableCustomProfile($vid$profile);
                    }
             }
        return 
    $vid;
    }

    ?>
    Grüße
    Roberto
    Geändert von bertel2013 (01.06.16 um 12:51 Uhr)
    IPS 5, IPSView, Enocean (Eltako FAM14, FAM-USB, FSR14, FUD14, FSB14, FMS14, F3Z14D, FBA14, FSM14, FWZ14, FUTH55D, FBH65, FCO2TF63, Multisensor, Hoppe Funk-Fenstergriff, FSR61, PTM Taster, Peha Easyclick Aktoren, Peha Easyclick-Komf.-Handsender, Permundo PSC234/PSC132), OneWire, Modbus, SML-USB-IR, PIKO 10.1, BWT AQA Perla, Philips Hue, Harmony Hub, Alexa

  6. #6
    Registriert seit
    Dec 2013
    Beiträge
    98

    Und Hier noch das Skript zum auswerten der Statustelegramme der FSB14. Das Skript hängt an der Register Variable. Einfach die IDs eurer Beschattungsinstanzen im Array eintragen und die Fahrzeiten definieren. Das Skript ist auch noch etwas "dirty" aber es waren meine Anfänge mit IPS. Evtl. müssen noch händisch Variablen angelegt werden. Probiert es einfach aus...

    PHP-Code:
    <?
    if ($_IPS['SENDER'] == "RegisterVariable")
    {
    //Definition der auszuwertenden Aktoren
    //Rolladen-Typen: 1-Fenster, 2-Fenstertür, 3-Jalousie
    $devices = array ("Rolladen" => array  (12345,
                                            
    12346,
                                            
    12347,
                                            
    12348,
                                            
    12349)
                     );


    //  Erstelle Array Zuordnung ReturnID -> ObjektID
    foreach ($devices["Rolladen"] AS $objektid) {
        
    $returnid IPS_GetProperty($objektid"ReturnID");
        
    $rolladenids[$returnid] = $objektid;
        }

        
    //  Prüfen nach Sync-Bytes "A5 5A"
        
    if(strpos($_IPS['VALUE'], chr(0xA5).chr(0x5A)) !== false)
       {
            
    //  Telegramm in Hex umwandeln
            
    $telegram Str2Hex($_IPS['VALUE']);
            
    //  Telegramm im Bytes aufteilen
            
    $bytes explode(" "$telegram);
            
    //  Telegrammaufbau definieren
            
    $sync "$bytes[0]$bytes[1]";
            
    $header "$bytes[2]";
            
    $org "$bytes[3]";
            
    $data3 "$bytes[4]";
            
    $data2 "$bytes[5]";
            
    $data1 "$bytes[6]";
            
    $data0 "$bytes[7]";
            
    $id "$bytes[8]$bytes[9]$bytes[10]$bytes[11]";


    //  #########################   Beschattung  #########################

        
    if (array_key_exists("$id"$rolladenids)){
            
    $ParentID $rolladenids["$id"];
            
    $zustandsid IPS_GetObjectIDByName ("Zustand"$ParentID);
            
    $status IPS_GetObjectIDByName ("Status"$ParentID);
            
    $fahrzeitid CreateVariableByName($ParentID"Fahrzeit"1'fahrzeit''Sekunden'true);
            
    $MyFahrzeit = (hexdec($data2) * 0.1) + (hexdec($data3) * 0.1 255);
            
    $PositionID CreateVariableByName($ParentID"Position"1'position''~Intensity.100'false);
            
    $TypeID IPS_GetObjectIDByName("Typ"$ParentID);
            
    $OldPosition GetValue($PositionID);
            
    $Type GetValue($TypeID); // Rolladentyp ermitteln
            
    $MovingID IPS_GetObjectIDByName("Moving"$ParentID);
            
    $Moving GetValue($MovingID);

            switch (
    $Type){
                case 
    1:
                    
    $SecAuf '18';
                    
    $SecAb ='17';
                break;
                case 
    2:
                    
    $SecAuf '26';
                    
    $SecAb ='21';
                break;
                case 
    3:
                    
    $SecAuf '60';
                    
    $SecAb ='60';
                break;
            }
            if(
    $org == "05"){
                if(
    $data3 == "01"){
                    
    SetValue($zustandsid"Start Auf");
                }
                if(
    $data3 == "02"){
                    
    SetValue($zustandsid"Start Ab");
                }
                if(
    $data3 == "70"){
                    
    SetValue($zustandsid"Endlage Oben");
                    
    SetValue($PositionID,0);
                }
                if(
    $data3 == "50"){
                    
    SetValue($zustandsid"Endlage Unten");
                    
    SetValue($PositionID,100);
                }
            }
            if(
    $org == "07"){
                if(
    $data1 == "01"){
                    
    SetValue($zustandsid"Aufgefahren");
                    
    SetValue($fahrzeitid$MyFahrzeit);
                    
    $NewPosition $OldPosition - ($MyFahrzeit/$SecAuf*100);
                    if(
    $NewPosition 0$NewPosition 0;{
                          if(
    $Moving === false){
                            
    SetValue($PositionID,$NewPosition);
                        }
                    else{
                        echo 
    " +++ NICHTS +++";
                    }
                    }
                }
                if(
    $data1 == "02"){
                    
    SetValue($zustandsid"Abgefahren");
                    
    SetValue($fahrzeitid$MyFahrzeit);
                    
    $NewPosition $OldPosition + ($MyFahrzeit/$SecAb*100);
                    if (
    $NewPosition 100$NewPosition 100;{
                          if(
    $Moving === false){
                            
    SetValue($PositionID,$NewPosition);
                        }
                    else{
                        echo 
    " +++ NICHTS +++";
                    }
                    }
                }
            }
        }
        else{
            echo 
    "ID nicht bekannt!";
        }


        }
    }


    //  #########################  Funktionen  #########################

    function Str2Hex($daten)
    {
        
    $hex "";
         for(
    $i=0$i<strlen($daten); $i++)
       
    $hex .= sprintf("%02X "ord($daten[$i]));
         return 
    $hex;
    }


    function 
    CreateVariableByName($id$name$type$ident$profile$hidden)
    {
        
    $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"Created by Skript #".$_IPS['SELF']);
            
    IPS_SetHidden($vid$hidden);
            
              if(
    $profile !== "")
            {
                
    IPS_SetVariableCustomProfile($vid$profile);
            }
        }
        return 
    $vid;
    }
    ?>

    Gruß
    bertel2013
    Geändert von bertel2013 (01.06.16 um 12:49 Uhr)
    IPS 5, IPSView, Enocean (Eltako FAM14, FAM-USB, FSR14, FUD14, FSB14, FMS14, F3Z14D, FBA14, FSM14, FWZ14, FUTH55D, FBH65, FCO2TF63, Multisensor, Hoppe Funk-Fenstergriff, FSR61, PTM Taster, Peha Easyclick Aktoren, Peha Easyclick-Komf.-Handsender, Permundo PSC234/PSC132), OneWire, Modbus, SML-USB-IR, PIKO 10.1, BWT AQA Perla, Philips Hue, Harmony Hub, Alexa

  7. #7
    Registriert seit
    Dec 2013
    Beiträge
    98

    Hier noch ein Template meiner Excel-Tabelle, mit dem ich meine ganzen Devices verwalte und so einen sehr guten Überblick habe. Insbesondere was IDs angeht.
    Angehängte Dateien Angehängte Dateien
    IPS 5, IPSView, Enocean (Eltako FAM14, FAM-USB, FSR14, FUD14, FSB14, FMS14, F3Z14D, FBA14, FSM14, FWZ14, FUTH55D, FBH65, FCO2TF63, Multisensor, Hoppe Funk-Fenstergriff, FSR61, PTM Taster, Peha Easyclick Aktoren, Peha Easyclick-Komf.-Handsender, Permundo PSC234/PSC132), OneWire, Modbus, SML-USB-IR, PIKO 10.1, BWT AQA Perla, Philips Hue, Harmony Hub, Alexa

  8. #8
    Registriert seit
    Jan 2016
    Ort
    Germany
    Beiträge
    78

    Standard Danke erst mal

    Hallo bertel3013,

    Vielen Danke erst mal für deine ausführlichen Antworten!
    Ich komme wohl erst am Wochenende dazu, das zu testen, werde aber dann sicher noch einige Fragen an dich haben.

    Viele Grüße

  9. #9
    Registriert seit
    Jan 2016
    Ort
    Germany
    Beiträge
    78

    Standard Ips-id

    Hallo Bertel,

    ich habe gerade Zeit, mich in deine Beiträge zu den Eltakos zu vertiefen.
    Die Excel-Tabelle ist super, möchte ich so auch für mich übernehmen.

    Spalte 1, Geräte-ID in Symcon ist klar.

    Was aber sind Spalte 2 und 3 ( IPS-ID) ?

    Viele Grüße

Ähnliche Themen

  1. Eltako FSB14 und F4HK14
    Von andy1986 im Forum EnOcean
    Antworten: 16
    Letzter Beitrag: 06.03.18, 16:43
  2. Antworten: 26
    Letzter Beitrag: 15.09.17, 10:03
  3. Eltako FSR61 einlernen
    Von joschi79 im Forum EnOcean
    Antworten: 27
    Letzter Beitrag: 19.07.17, 15:11
  4. Eltako Dimmaktor einlernen
    Von wibo050447 im Forum EnOcean
    Antworten: 3
    Letzter Beitrag: 27.06.12, 19:45

Stichworte