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
> 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
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
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
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
> 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
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
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
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
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
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
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