mirror of
https://github.com/fhem/fhem-mirror.git
synced 2025-04-15 22:26:04 +00:00
10_EnOcean: Eltako shutter: model Eltako_FSB_ACK added, digitalInput.03: (EEP A5-30-03) model Eltako_TF_RWB added
git-svn-id: https://svn.fhem.de/fhem/trunk@16891 2b470e98-0d58-463d-a4d8-8e2adae1ed80
This commit is contained in:
parent
f966cb0a42
commit
64bcc8f687
@ -425,11 +425,13 @@ my %EnO_models = (
|
|||||||
"Eltako_FSB14" => {attr => {manufID => "00D"}},
|
"Eltako_FSB14" => {attr => {manufID => "00D"}},
|
||||||
"Eltako_FSB61" => {attr => {manufID => "00D"}},
|
"Eltako_FSB61" => {attr => {manufID => "00D"}},
|
||||||
"Eltako_FSB70" => {attr => {manufID => "00D"}},
|
"Eltako_FSB70" => {attr => {manufID => "00D"}},
|
||||||
|
"Eltako_FSB_ACK" => {attr => {manufID => "00D"}},
|
||||||
"Eltako_FSM12" => {attr => {manufID => "00D"}},
|
"Eltako_FSM12" => {attr => {manufID => "00D"}},
|
||||||
"Eltako_FSM61" => {attr => {manufID => "00D"}},
|
"Eltako_FSM61" => {attr => {manufID => "00D"}},
|
||||||
"Eltako_FT55" => {attr => {manufID => "00D"}},
|
"Eltako_FT55" => {attr => {manufID => "00D"}},
|
||||||
"Eltako_FTS12" => {attr => {manufID => "00D"}},
|
"Eltako_FTS12" => {attr => {manufID => "00D"}},
|
||||||
"Eltako_TF"=> {attr => {manufID => "00D"}},
|
"Eltako_TF"=> {attr => {manufID => "00D"}},
|
||||||
|
"Eltako_TF_RWB"=> {attr => {manufID => "00D"}},
|
||||||
"Holter_OEM" => {attr => {pidCtrl => "off"}},
|
"Holter_OEM" => {attr => {pidCtrl => "off"}},
|
||||||
"Micropelt_MVA004" => {attr => {remoteCode => "FFFFFFFE", remoteEEP => "A5-20-01", remoteID => "getNextID", remoteManagement => "manager"}, xml => {productID => "0x004900000000", xmlDescrLocation => "/FHEM/lib/EnO_ReCom_Device_Descr.xml"}},
|
"Micropelt_MVA004" => {attr => {remoteCode => "FFFFFFFE", remoteEEP => "A5-20-01", remoteID => "getNextID", remoteManagement => "manager"}, xml => {productID => "0x004900000000", xmlDescrLocation => "/FHEM/lib/EnO_ReCom_Device_Descr.xml"}},
|
||||||
other => {},
|
other => {},
|
||||||
@ -7149,6 +7151,10 @@ sub EnOcean_Parse($$)
|
|||||||
# Eltako shutter
|
# Eltako shutter
|
||||||
if ($db[0] == 0x70) {
|
if ($db[0] == 0x70) {
|
||||||
# open
|
# open
|
||||||
|
if ($model eq 'Eltako_FSB_ACK') {
|
||||||
|
push @event, "3:position:0";
|
||||||
|
push @event, "3:anglePos:" . AttrVal($name, "angleMin", -90);
|
||||||
|
}
|
||||||
push @event, "3:endPosition:open_ack";
|
push @event, "3:endPosition:open_ack";
|
||||||
$msg = "open_ack";
|
$msg = "open_ack";
|
||||||
} elsif ($db[0] == 0x50) {
|
} elsif ($db[0] == 0x50) {
|
||||||
@ -7236,7 +7242,7 @@ sub EnOcean_Parse($$)
|
|||||||
# the state should remain released.
|
# the state should remain released.
|
||||||
if ($msg =~ m/released$/ &&
|
if ($msg =~ m/released$/ &&
|
||||||
AttrVal($name, "sensorMode", "switch") ne "pushbutton" &&
|
AttrVal($name, "sensorMode", "switch") ne "pushbutton" &&
|
||||||
$model !~ m/(FT55|FSB14|FSB61|FSB70|FSM12|FSM61|FTS12)$/) {
|
$model !~ m/(FT55|FSB.*|FSM12|FSM61|FTS12)$/) {
|
||||||
$event = "buttons";
|
$event = "buttons";
|
||||||
$msg = "released";
|
$msg = "released";
|
||||||
} else {
|
} else {
|
||||||
@ -9622,19 +9628,32 @@ sub EnOcean_Parse($$)
|
|||||||
|
|
||||||
} elsif ($st eq "digitalInput.03") {
|
} elsif ($st eq "digitalInput.03") {
|
||||||
# 4 digital inputs, wake, temperature (EEP A5-30-03)
|
# 4 digital inputs, wake, temperature (EEP A5-30-03)
|
||||||
my $in0 = $db[1] & 1;
|
|
||||||
my $in1 = ($db[1] & 2) > 1;
|
|
||||||
my $in2 = ($db[1] & 4) > 2;
|
|
||||||
my $in3 = ($db[1] & 8) > 3;
|
|
||||||
my $wake = $db[1] & 16 ? 'high' : 'low';
|
|
||||||
my $temperature = sprintf "%0.1f", 40 - $db[2] * 40 / 255;
|
my $temperature = sprintf "%0.1f", 40 - $db[2] * 40 / 255;
|
||||||
push @event, "3:in0:$in0";
|
|
||||||
push @event, "3:in1:$in1";
|
|
||||||
push @event, "3:in2:$in2";
|
|
||||||
push @event, "3:in3:$in3";
|
|
||||||
push @event, "3:wake:$wake";
|
|
||||||
push @event, "3:temperature:$temperature";
|
push @event, "3:temperature:$temperature";
|
||||||
push @event, "3:state:T: $temperature I: " . $in0 . $in1 . $in2 . $in3 . " W: " . $wake;
|
if ($model eq 'Eltako_TF_RWB') {
|
||||||
|
# Eltako TF-RWB smoke detector
|
||||||
|
my $alarm = $db[1] & 16 ? 'off' : 'smoke-alarm';
|
||||||
|
if (!exists($hash->{helper}{lastEvent}) || $hash->{helper}{lastEvent} ne $alarm || ReadingsVal($name, 'alarm', '') eq 'dead_sensor') {
|
||||||
|
push @event, "3:alarm:$alarm";
|
||||||
|
$hash->{helper}{lastEvent} = $alarm;
|
||||||
|
}
|
||||||
|
push @event, "3:state:$alarm";
|
||||||
|
@{$hash->{helper}{alarmTimer}} = ($hash, 'alarm', 'dead_sensor', 1, 5);
|
||||||
|
RemoveInternalTimer($hash->{helper}{alarmTimer});
|
||||||
|
InternalTimer(gettimeofday() + 1980, 'EnOcean_readingsSingleUpdate', $hash->{helper}{alarmTimer}, 0);
|
||||||
|
} else {
|
||||||
|
my $in0 = $db[1] & 1;
|
||||||
|
my $in1 = ($db[1] & 2) > 1;
|
||||||
|
my $in2 = ($db[1] & 4) > 2;
|
||||||
|
my $in3 = ($db[1] & 8) > 3;
|
||||||
|
my $wake = $db[1] & 16 ? 'high' : 'low';
|
||||||
|
push @event, "3:in0:$in0";
|
||||||
|
push @event, "3:in1:$in1";
|
||||||
|
push @event, "3:in2:$in2";
|
||||||
|
push @event, "3:in3:$in3";
|
||||||
|
push @event, "3:wake:$wake";
|
||||||
|
push @event, "3:state:T: $temperature I: " . $in0 . $in1 . $in2 . $in3 . " W: " . $wake;
|
||||||
|
}
|
||||||
|
|
||||||
} elsif ($st eq "digitalInput.04") {
|
} elsif ($st eq "digitalInput.04") {
|
||||||
# 3 digital inputs, 1 digital input 8 bit (EEP A5-30-04)
|
# 3 digital inputs, 1 digital input 8 bit (EEP A5-30-04)
|
||||||
@ -17498,7 +17517,8 @@ EnOcean_Delete($$)
|
|||||||
<a href="#shutTime">shutTime</a> and <a href="#shutTimeCloses">shutTimeCloses</a>,
|
<a href="#shutTime">shutTime</a> and <a href="#shutTimeCloses">shutTimeCloses</a>,
|
||||||
are set correctly.
|
are set correctly.
|
||||||
If <a href="#EnOcean_settingAccuracy">settingAccuracy</a> is set to high, the run-time is sent in 1/10 increments.<br>
|
If <a href="#EnOcean_settingAccuracy">settingAccuracy</a> is set to high, the run-time is sent in 1/10 increments.<br>
|
||||||
Set attr subType to manufProfile, manufID to 00D and attr model to Eltako_FSB14|FSB61|FSB70|TF manually.<br>
|
Set attr subType to manufProfile, manufID to 00D and attr model to Eltako_FSB14|FSB61|FSB70|FSB_ACK manually.
|
||||||
|
If the attribute model is set to Eltako_FSB_ACK, with the status "open_ack" the readings position and anglePos are also updated.<br>
|
||||||
Use the sensor type "Szenentaster/PC" for Eltako devices.
|
Use the sensor type "Szenentaster/PC" for Eltako devices.
|
||||||
</li>
|
</li>
|
||||||
<br><br>
|
<br><br>
|
||||||
@ -19905,6 +19925,21 @@ EnOcean_Delete($$)
|
|||||||
</li>
|
</li>
|
||||||
<br><br>
|
<br><br>
|
||||||
|
|
||||||
|
<li>Smoke Detector (EEP A5-30-03)<br>
|
||||||
|
[Eltako TF-RWB]<br>
|
||||||
|
<ul>
|
||||||
|
<li>smoke-alarm</li>
|
||||||
|
<li>off</li>
|
||||||
|
<li>alarm: dead_sensor|smoke-alarm|off</li>
|
||||||
|
<li>teach: <result of teach procedure></li>
|
||||||
|
<li>temperature: t/°C (Sensor Range: t = 0 °C ... 40 °C)</li>
|
||||||
|
<li>state: smoke-alarm|off</li>
|
||||||
|
</ul><br>
|
||||||
|
The attr subType must be digitalInput.03. This is done if the device was
|
||||||
|
created by autocreate. Set attr model to Eltako_TF_RWB manually.
|
||||||
|
</li>
|
||||||
|
<br><br>
|
||||||
|
|
||||||
<li>Digital Input (EEP A5-30-04)<br>
|
<li>Digital Input (EEP A5-30-04)<br>
|
||||||
3 digital Inputs, 1 digital Input 8 bits [untested]<br>
|
3 digital Inputs, 1 digital Input 8 bits [untested]<br>
|
||||||
<ul>
|
<ul>
|
||||||
@ -20135,8 +20170,10 @@ EnOcean_Delete($$)
|
|||||||
The values of the reading position and anglePos are updated automatically,
|
The values of the reading position and anglePos are updated automatically,
|
||||||
if the command position is sent or the reading state was changed
|
if the command position is sent or the reading state was changed
|
||||||
manually to open or closed.<br>
|
manually to open or closed.<br>
|
||||||
Set attr subType file, attr manufID to 00D and attr model to
|
Set attr subType manufProfile, attr manufID to 00D and attr model to
|
||||||
Eltako_FSB14|FSB61|FSB70 manually.
|
Eltako_FSB14|FSB61|FSB70|FSB_ACK manually.
|
||||||
|
If the attribute model is set to Eltako_FSB_ACK, with the status "open_ack" the readings position and anglePos are also updated.<br>
|
||||||
|
|
||||||
</li>
|
</li>
|
||||||
<br><br>
|
<br><br>
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user