Eltako Enocean Sensoren für Helligkeit, Bewegung und Temperatur

Begonnen von Guest, 11 August 2012, 08:47:09

Vorheriges Thema - Nächstes Thema

Guest

Originally posted by: <email address deleted>

Hallo Zusammen!

als Neueinsteiger in FHEM und Nicht-Programmierer habe ich mich an die
Einbindung einiger Enocean-Sensoren gewagt. Dazu habe ich in 10_EnOcean.pm
für die Sensoren
folgende subTypes definiert FAH, FBH und FTF und den Code in sub
EnOcean_Parse($$) eingefügt:

elsif($st eq "FAH") {
      ####################################
      # Eltako FAH60+FAH63+FIH63
      # (EEP: 07-06-01 plus Data_byte3)
      ####################################
      # $db_3 is the illuminance where min 0x00 = 0 lx, max 0xFF = 100 lx;
$db_2 must be 0x00
      if($db_2 eq 0x00) {
        my $luxlow = sprintf "%3d", $db_3;
        $luxlow = sprintf "%d", ( $luxlow * 100 / 255 ) ;
        push @event, "3:brightness:$luxlow";
        push @event, "3:state:$luxlow";
      } else {
      # $db_2 is the illuminance where min 0x00 = 300 lx, max 0xFF = 30000
lx
      my $lux = sprintf "%3d", $db_2;
      $lux = sprintf "%d", (( $lux * 116.48) + 300 ) ;
      push @event, "3:brightness:$lux";
      push @event, "3:state:$lux";
      }
     
} elsif($st eq "FBH") {
      ####################################
      # Eltako FABH63+FBH55+FBH63+FIBH63
      # (EEP: similar 07-08-01)
      ####################################
      # $db_0 motion detection where 0x0D = motion and 0x0F = no motion
(DB0_Bit1 = 1 or 0)
      if($db_0 eq 0x0D) {
        push @event, "3:motion:yes";
        push @event, "3:state:yes";
      }
      if($db_0 eq 0x0F) {
        push @event, "3:motion:no";
        push @event, "3:state:no";
      }
      # $db_2 is the illuminance where min 0x00 = 0 lx, max 0xFF = 2048 lx
      my $lux = sprintf "%3d", $db_2;
      $lux = sprintf "%d", ( $lux * 2048 / 255 ) ;
      push @event, "3:brightness:$lux";
      # $db_3 is voltage in EEP 07-08-01 but not used by Eltako !?
      # push @event, "3:voltage:$db_3";
     
} elsif($st eq "FTF") {
      ####################################
      # Eltako FTF55
      # (EEP: 07-02-05)
      ####################################
      # $db_1 is the temperature where 0x00 = 40°C and 0xFF 0°C
      my $temp = sprintf "%3d", $db_1;
      $temp = sprintf "%f.1", ( 40 - $temp * 40 / 255 ) ;
      push @event, "3:temperature:$temp";
      push @event, "3:state:$temp";
     
 }

Das funktioniert zwar, aber ich bin mir nicht im Klaren, ob dies die
richtige Einbindung in den Code ist. Eigentlich sind die Sensoren doch
bereits ein "subType". Muss ich neue Sensoren besser als "model" anlegen?

Gruß, Christian

--
To unsubscribe from this group, send email to
fhem-users+unsubscribe@googlegroups.com

rudolfkoenig

                                                   

> Eigentlich sind die Sensoren doch bereits ein "subType". Muss ich neue
> Sensoren besser als "model" anlegen?

Doch, das wurde im EnOcean modul bisher leider nicht praktiziert, MD15, SR04,
PM101 und das gerade eingebaute FSB61 sollten alle ueber model abgefragt
werden.  subType steht fuer eine "Klasse", sowas wie Schalter, Dimmer, etc.

Du muesstest also entscheiden, ob FAH60+FAH63+FIH63 ueber subType lightsensor,
ueber subtype eltakoLightsensor, oder ueber 3 unterschiedliche "model" Werte
abgefragt werden sollten. Den Rest werde ich demnaechst auch von subtype nach
model umziehen.

Mit passenden commandref Eintraegen kann ich dein Code gerne einchecken.

--
To unsubscribe from this group, send email to
fhem-users+unsubscribe@googlegroups.com

Guest

Originally posted by: <email address deleted>

Hallo Rudolf!


> Den Rest werde ich demnaechst auch von subtype nach model umziehen.
>

Die Theorie ist für mich verständlich und macht Sinn; jedoch mangelt es an
Programmierkenntnissen. Wenn Du die Dinge umgezogen hast, könnte ich meinen
Code anhand Deiner Beispiele auch umziehen/einbasteln. Vorerst bleibe ich
lieber bei der subType-Variante.
 

> Mit passenden commandref Eintraegen kann ich dein Code gerne einchecken.
>

Das ist mein commandref-Vorschlag, falls Du den Code tatsächlich einchecken
möchtest:

 [/list]
     
  • FAH60+FAH63+FIH63 brigthness senor (set subType to FAH
    manually)

         
    • brightness: $lux
             
    • state: $lux
           
       
         
    [/list]
         
  • FABH63+FBH55+FBH63+FIBH63 Motion/brightness sensor (set subType to
    FBH manually)

         
    • brightness: $lux
             
    • motion:[yes|no]
             
    • state: [motion: yes|no]
           
       
    [/list]
         
  • FTF55 Temperature sensor (set subType to FTF manually)

         
    • temperature: $temp
             
    • state: $temp
           

    Ist es eigentlich sinnvoll, dass ich den "state" mit einem Wert belege, der
    auch als zusätzliches Reading "temperature" bzw. erfasst ist, wenn es nur
    einen Sensorwert gibt?

    Gruß, Christian

    --
    To unsubscribe from this group, send email to
    fhem-users+unsubscribe@googlegroups.com

    rudolfkoenig

                                                       

    Hallo Christian,

    > Die Theorie ist für mich verständlich und macht Sinn; jedoch mangelt es an
    > Programmierkenntnissen.

    Ich habe es versucht sinnvoll zu reorganisieren, der Code akzeptiert jetzt
    sowohl subType als auch model, habs gerade auch samt Doku eingecheckt, testen
    konnte ich es mangels Geraete nicht.

    Es waere klasse, wenn Du aehnlich dem MD15 beim Anlernen subType und model
    automatisch setzen koenntest, weiss aber nicht, ob diese Geraete die noetigen
    Infos liefern.

    Achtung an andere EnOcean User: PM101 und FSB61 ist jetzt als model und nicht
    als subType zu setzen.

    Gruss,
      Rudi

    --
    To unsubscribe from this group, send email to
    fhem-users+unsubscribe@googlegroups.com

    Guest

    Originally posted by: <email address deleted>

    Hallo Rudolf!
     

    >
    > Ich habe es versucht sinnvoll zu reorganisieren, der Code akzeptiert jetzt
    > sowohl subType als auch model, habs gerade auch samt Doku eingecheckt,
    > testen
    > konnte ich es mangels Geraete nicht.
    >
    Danke! Bei mir läuft es bisher problemlos. Werde Deinen Code einmal
    durchschauen und versuchen zu verstehen....
     

    >
    > Es waere klasse, wenn Du aehnlich dem MD15 beim Anlernen subType und model
    > automatisch setzen koenntest, weiss aber nicht, ob diese Geraete die
    > noetigen
    > Infos liefern.
    >
     
    Den SubType könnte man afaik aus dem Lerntelegramm ermitteln; model aber
    wohl nicht. Bin mir aber nicht sicher, ob das wirklich sinnvoll ist. Eltako
    hat die EEP 2.1 teilweise anders umgesetzt/ergänzt. Wenn ich bspw. das
    EEP-Profil A5-08-01 für FBH vorbelege, wird dies bei anderen Herstellern,
    die sich streng an die EEP halten nicht passen. Der MD15 dürfte eine
    Sonderrolle spielen, da das passende EEP anscheinend auf den Hersteller des
    MD15 zurückgeht; daher wohl immer eindeutig.
     
    Ich wollte subType FAH, FBH und FTF löschen und nur noch über model als
    Untergruppe zu "sensor" arbeiten, so wie es doch eigentlich sein sollte!?
    Der Weg müsste doch sein, die EEP-Bezeichnung als model zu nehmen und über
    die Hersteller-Abfrage die Besonderheiten zu erfassen bzw. durch ein
    weiteres attr. Bsp: EEP-Profil A5-08-01 ist model "Light, Temperature and
    Occupancy Sensor, range xx-xy" ; Auswertung entsprechend dem EEP-Profil;
    mit Anpassung, wenn Herstelller Eltako bzw. attr FBH. Der SR04 nutzt doch
    wahrscheinlich auch ein EEP A5-10-xx, welches Eltako wohl auch nutzt. Fürmich noch alles mit vielen Fragezeichen behaftet, da FHEM und
    Programmierung zu neu, aber ich arbeite daran....
     
    @all: nutzt sonst niemand Enocean-Sensoren und könnte ein wenig Input geben?
     
    Gruß, Christian
     

    --
    To unsubscribe from this group, send email to
    fhem-users+unsubscribe@googlegroups.com

    rudolfkoenig

                                                       

    > Eltako  hat die EEP 2.1 teilweise anders umgesetzt/ergänzt.

    Ach so, EnOcean Standard, Eltako flavor :) Finde ich schade, dass EnOcean sowas
    durchgehen laesst.  Wenn Eltako ein so wichtiger Partner ist, dann koennte
    EnOcean fuer Eltako eigene EEP Nummer spendieren. Aber dass man bereits
    definierte verunstaltet...


    > Ich wollte subType FAH, FBH und FTF löschen und nur noch über model als
    > Untergruppe zu "sensor" arbeiten, so wie es doch eigentlich sein sollte!?

    Solange mir das Bild nicht ganz klar ist, wollte ich nicht so streng sein...


    > Der Weg müsste doch sein, die EEP-Bezeichnung als model zu nehmen und über
    > die Hersteller-Abfrage die Besonderheiten zu erfassen bzw. durch ein
    > weiteres attr.

    ... habe aber auch gegen diesen Vorschlag nichts einzuwenden.

    --
    To unsubscribe from this group, send email to
    fhem-users+unsubscribe@googlegroups.com

    Guest

    Originally posted by: <email address deleted>

    Ach so, EnOcean Standard, Eltako flavor :) Finde ich schade, dass EnOcean
    > sowas
    > durchgehen laesst.  Wenn Eltako ein so wichtiger Partner ist, dann koennte
    > EnOcean fuer Eltako eigene EEP Nummer spendieren. Aber dass man bereits
    > definierte verunstaltet...
    >

    Ich formulier es mal vorsichtiger: Vielleicht verstehe ich auch als
    Anfänger einiges noch nicht/falsch und/oder ich habe mit dem FBH A5-08-01
    nur eine Ausnahme erwischt.
     

    >
    > Solange mir das Bild nicht ganz klar ist, wollte ich nicht so streng
    > sein...
    >

    Darfst Du ruhig. Mir ist mit Sicherheit viel weniger klar


    > > Der Weg m�sste doch sein, die EEP-Bezeichnung als model zu nehmen und
    > �ber
    > > die Hersteller-Abfrage die Besonderheiten zu erfassen bzw. durch ein
    > > weiteres attr.
    >
    > ... habe aber auch gegen diesen Vorschlag nichts einzuwenden.
    >
     
    Na dann habe ich noch etwas zu basteln. Bei Erfolg weiteres..
     

    --
    To unsubscribe from this group, send email to
    fhem-users+unsubscribe@googlegroups.com

    Guest

    Originally posted by: <email address deleted>

    Am Samstag, 11. August 2012 08:47:09 UTC+2 schrieb krikan:
    >
    > Hallo Zusammen!
    >
    > als Neueinsteiger in FHEM und Nicht-Programmierer habe ich mich an die
    > Einbindung einiger Enocean-Sensoren gewagt. Dazu habe ich in 10_EnOcean.pm
    > für die Sensoren
    > folgende subTypes definiert FAH, FBH und FTF und den Code in sub
    > EnOcean_Parse($$) eingefügt:
    >
    > elsif($st eq "FAH") {
    >       ####################################
    >       # Eltako FAH60+FAH63+FIH63
    >       # (EEP: 07-06-01 plus Data_byte3)
    >       ####################################
    >       # $db_3 is the illuminance where min 0x00 = 0 lx, max 0xFF = 100 lx;
    > $db_2 must be 0x00
    >       if($db_2 eq 0x00) {
    >         my $luxlow = sprintf "%3d", $db_3;
    >         $luxlow = sprintf "%d", ( $luxlow * 100 / 255 ) ;
    >         push @event, "3:brightness:$luxlow";
    >         push @event, "3:state:$luxlow";
    >       } else {
    >       # $db_2 is the illuminance where min 0x00 = 300 lx, max 0xFF = 30000
    > lx
    >       my $lux = sprintf "%3d", $db_2;
    >       $lux = sprintf "%d", (( $lux * 116.48) + 300 ) ;
    >       push @event, "3:brightness:$lux";
    >       push @event, "3:state:$lux";
    >       }
    >      
    > } elsif($st eq "FBH") {
    >       ####################################
    >       # Eltako FABH63+FBH55+FBH63+FIBH63
    >       # (EEP: similar 07-08-01)
    >       ####################################
    >       # $db_0 motion detection where 0x0D = motion and 0x0F = no motion
    > (DB0_Bit1 = 1 or 0)
    >       if($db_0 eq 0x0D) {
    >         push @event, "3:motion:yes";
    >         push @event, "3:state:yes";
    >       }
    >       if($db_0 eq 0x0F) {
    >         push @event, "3:motion:no";
    >         push @event, "3:state:no";
    >       }
    >       # $db_2 is the illuminance where min 0x00 = 0 lx, max 0xFF = 2048 lx
    >       my $lux = sprintf "%3d", $db_2;
    >       $lux = sprintf "%d", ( $lux * 2048 / 255 ) ;
    >       push @event, "3:brightness:$lux";
    >       # $db_3 is voltage in EEP 07-08-01 but not used by Eltako !?
    >       # push @event, "3:voltage:$db_3";
    >      
    > } elsif($st eq "FTF") {
    >       ####################################
    >       # Eltako FTF55
    >       # (EEP: 07-02-05)
    >       ####################################
    >       # $db_1 is the temperature where 0x00 = 40°C and 0xFF 0°C
    >       my $temp = sprintf "%3d", $db_1;
    >       $temp = sprintf "%f.1", ( 40 - $temp * 40 / 255 ) ;
    >       push @event, "3:temperature:$temp";
    >       push @event, "3:state:$temp";
    >      
    >  }
    >
    > Das funktioniert zwar, aber ich bin mir nicht im Klaren, ob dies die
    > richtige Einbindung in den Code ist. Eigentlich sind die Sensoren doch
    > bereits ein "subType". Muss ich neue Sensoren besser als "model" anlegen?
    >
    > Gruß, Christian
    >

    --
    To unsubscribe from this group, send email to
    fhem-users+unsubscribe@googlegroups.com

    Guest

    Originally posted by: <email address deleted>

    Hallo,

    ich bin gerade dabei ein FBH63AP zu testen und kann nicht erkennen das sich
    hier Eltako nicht an das EEP hält.
    Aus diesem Grund müßte im EnOceanModul eigentlich etwas geändert werden .

    Diesr Abschnitt ist meines erachtens nicht ganz richtig:
    my $lux = sprintf "%3d", $db_2;
          $lux = sprintf "%d", ( $lux * 2048 / 255 ) ;
    statt dessen muß eine Fallunterscheidung gemäß EEP A50801 gemacht werden:
    If Type == 1
       $lux = sprintf "%d", ( $lux * 501 / 255 ) ;
    If Type == 2
       $lux = sprintf "%d", ( $lux * 1020 / 255 ) ;
    If Type == 3
       $lux = sprintf "%d", ( $lux * 1530 / 255 ) ;

    Da fehlt noch die Berechnung der Spannung:

    my $volt = sprintf "%3d", $db_3;
          $volt = sprintf "%d", ( $volt * 5.1 / 255 ) ;


    danke und Gruß







    --
    To unsubscribe from this group, send email to
    fhem-users+unsubscribe@googlegroups.com

    Guest

    Originally posted by: <email address deleted>

    Hallo!

    Wenn ich bei Eltako nachschaue
    (http://www.eltako.com/fileadmin/downloads/de/Datenblatt/Funktelegramme.pdf)
    ist dort nach meiner Meinung nur von "similar" zu EEP die Rede. In db2
    steht bei Eltako auch ein linearer Wert; von Fallunterscheidung ist
    nirgends die Rede. Ebensowenig von Spannung. So hatte ich das auch
    umgesetzt. Oder bin ich auf dem Holzweg?

    Gruß, Christian

    Am Freitag, 23. November 2012 17:31:46 UTC+1 schrieb andy staab:
    >
    >
    > Hallo,
    >
    > ich bin gerade dabei ein FBH63AP zu testen und kann nicht erkennen das
    > sich hier Eltako nicht an das EEP hält.
    > Aus diesem Grund müßte im EnOceanModul eigentlich etwas geändert werden .
    >
    > Diesr Abschnitt ist meines erachtens nicht ganz richtig:
    > my $lux = sprintf "%3d", $db_2;
    >       $lux = sprintf "%d", ( $lux * 2048 / 255 ) ;
    > statt dessen muß eine Fallunterscheidung gemäß EEP A50801 gemacht werden:
    > If Type == 1
    >    $lux = sprintf "%d", ( $lux * 501 / 255 ) ;
    > If Type == 2
    >    $lux = sprintf "%d", ( $lux * 1020 / 255 ) ;
    > If Type == 3
    >    $lux = sprintf "%d", ( $lux * 1530 / 255 ) ;
    >
    > Da fehlt noch die Berechnung der Spannung:
    >
    > my $volt = sprintf "%3d", $db_3;
    >       $volt = sprintf "%d", ( $volt * 5.1 / 255 ) ;
    >
    >
    > danke und Gruß
    >
    >
    >
    >
    >
    >
    >
    >

    --
    To unsubscribe from this group, send email to
    fhem-users+unsubscribe@googlegroups.com

    Guest

    Originally posted by: <email address deleted>

    Hab es mir noch einmal genauer angeschaut:

    ich bin gerade dabei ein FBH63AP zu testen und kann nicht erkennen das sich
    > hier Eltako nicht an das EEP hält.
    > aus diesem Grund müßte im EnOceanModul eigentlich etwas geändert werden .

    Nein, Umsetzung für Eltako ist korrekt!. Bewegung-/Helligkeitssenoren von
    Eltako ähnlich(=abweichend!) EEP A5-08-01 so wie im Enocean-Modul:

    > my $lux = sprintf "%3d", $db_2;
    >       $lux = sprintf "%d", ( $lux * 2048 / 255 ) ;
    >

     

    > statt dessen muß eine Fallunterscheidung gemäß EEP A50801 gemacht werden:
    >
    Was Du hier anführst sind verschiedene Telegramme und nicht nur A5-08-01
     

    > If Type == 1
    >    $lux = sprintf "%d", ( $lux * 501 / 255 ) ;
    >
    =EEP A5-08-01
     

    > If Type == 2
    >    $lux = sprintf "%d", ( $lux * 1020 / 255 ) ;
    >
    =EEP A5-08-02

    If Type == 3
    >    $lux = sprintf "%d", ( $lux * 1530 / 255 ) ;
    >
    =EEP A5-08-03


    Da fehlt noch die Berechnung der Spannung:
    >
    > my $volt = sprintf "%3d", $db_3;
    >       $volt = sprintf "%d", ( $volt * 5.1 / 255 ) T

     Eltako definiert keine Spannung in den Telegrammen. Mein FBH63AP liefert
    in db3 dennoch einen Wert; Inhalt=?

    --
    To unsubscribe from this group, send email to
    fhem-users+unsubscribe@googlegroups.com

    Guest

    Originally posted by: <email address deleted>

    Hi,


    ich bin gerade dabei ein FBH63AP zu testen und kann nicht erkennen das sich
    > hier Eltako nicht an das EEP hält.
    > aus diesem Grund müßte im EnOceanModul eigentlich etwas geändert werden .

    Nein, Umsetzung für Eltako ist korrekt!. Bewegung-/Helligkeitssenoren von
    Eltako ähnlich(=abweichend!) EEP A5-08-01 so wie im Enocean-Modul:

    > my $lux = sprintf "%3d", $db_2;
    >       $lux = sprintf "%d", ( $lux * 2048 / 255 ) ;
    >
    Ok laut Datenblatt von  Eltako ist das wohl so. Ich habe mich auf das
    EnOcean EEP bezogen.
    Ich werde das am Montag mal mit den EnOcean Developer Kit nachmessen welche
    lux Angabe nun wirklich stimmt.

     

    > statt dessen muß eine Fallunterscheidung gemäß EEP A50801 gemacht werden:
    >
    Was Du hier anführst sind verschiedene Telegramme und nicht nur A5-08-01

    Ja stimmt sorry sind verschiedene Profile


    Da fehlt noch die Berechnung der Spannung:
    >
    > my $volt = sprintf "%3d", $db_3;
    >       $volt = sprintf "%d", ( $volt * 5.1 / 255 ) T

     Eltako definiert keine Spannung in den Telegrammen. Mein FBH63AP liefert
    in db3 dennoch einen Wert; Inhalt=?

    Das ist aus dem EEP EnOcean Profile und nach dieser Formel bekommst du den
    Volt Wert heraus.
    Das habe ich mit dem EnOcean Developer Kit nachgemessen, dort bekommt man
    den Wert dann angezeigt,
    deshalb sollte der Wert stimmen.
    Nach der Lux Messung werde ich vielleicht mal Eltako direkt anschreiben.

       

    --
    To unsubscribe from this group, send email to
    fhem-users+unsubscribe@googlegroups.com