mirror of
https://github.com/fhem/fhem-mirror.git
synced 2025-04-08 01:14:19 +00:00
00_HXB / 10_HXBDevice: modules for Hexabus devices added
git-svn-id: https://svn.fhem.de/fhem/trunk@7335 2b470e98-0d58-463d-a4d8-8e2adae1ed80
This commit is contained in:
parent
08464ae9e2
commit
23a38c6c52
@ -1,5 +1,6 @@
|
|||||||
# Add changes at the top of the list. Keep it in ASCII, and 80-char wide.
|
# Add changes at the top of the list. Keep it in ASCII, and 80-char wide.
|
||||||
# Do not insert empty lines here, update check depends on it.
|
# Do not insert empty lines here, update check depends on it.
|
||||||
|
- added: 00_HXB / 10_HXBDevice for Hexabus devices
|
||||||
- feature: HUEbridge: added group handling
|
- feature: HUEbridge: added group handling
|
||||||
added pollDevices attribute
|
added pollDevices attribute
|
||||||
added httpUtils for nonblocking mode
|
added httpUtils for nonblocking mode
|
||||||
|
150
fhem/FHEM/00_HXB.pm
Normal file
150
fhem/FHEM/00_HXB.pm
Normal file
@ -0,0 +1,150 @@
|
|||||||
|
# $Id: $
|
||||||
|
################################################################
|
||||||
|
#
|
||||||
|
# Copyright notice
|
||||||
|
#
|
||||||
|
# (c) 2014 Copyright: Dr. Boris Neubert
|
||||||
|
# e-mail: omega at online dot de
|
||||||
|
#
|
||||||
|
# This file is part of fhem.
|
||||||
|
#
|
||||||
|
# Fhem is free software: you can redistribute it and/or modify
|
||||||
|
# it under the terms of the GNU General Public License as published by
|
||||||
|
# the Free Software Foundation, either version 2 of the License, or
|
||||||
|
# (at your option) any later version.
|
||||||
|
#
|
||||||
|
# Fhem is distributed in the hope that it will be useful,
|
||||||
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
# GNU General Public License for more details.
|
||||||
|
#
|
||||||
|
# You should have received a copy of the GNU General Public License
|
||||||
|
# along with fhem. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
#
|
||||||
|
################################################################################
|
||||||
|
|
||||||
|
package main;
|
||||||
|
|
||||||
|
use strict;
|
||||||
|
use warnings;
|
||||||
|
|
||||||
|
use IO::Socket::Multicast6;
|
||||||
|
|
||||||
|
#####################################
|
||||||
|
sub
|
||||||
|
HXB_Initialize($)
|
||||||
|
{
|
||||||
|
my ($hash) = @_;
|
||||||
|
|
||||||
|
my %matchlist= (
|
||||||
|
"1:HXBDevice" => "^HX0C.+",
|
||||||
|
);
|
||||||
|
|
||||||
|
# Provider
|
||||||
|
#$hash->{WriteFn} = "HXB_Write";
|
||||||
|
$hash->{ReadFn} = "HXB_Read";
|
||||||
|
$hash->{Clients} = ":HXBDevice:";
|
||||||
|
$hash->{MatchList} = \%matchlist;
|
||||||
|
$hash->{ReadyFn} = "FHZ_Ready";
|
||||||
|
|
||||||
|
# Consumer
|
||||||
|
$hash->{DefFn} = "HXB_Define";
|
||||||
|
$hash->{UndefFn} = "HXB_Undef";
|
||||||
|
#$hash->{ReadyFn} = "HXB_Ready";
|
||||||
|
#$hash->{GetFn} = "HXB_Get";
|
||||||
|
#$hash->{SetFn} = "HXB_Set";
|
||||||
|
#$hash->{AttrFn} = "HXB_Attr";
|
||||||
|
#$hash->{AttrList}= "";
|
||||||
|
}
|
||||||
|
|
||||||
|
#####################################
|
||||||
|
sub
|
||||||
|
HXB_Define($$)
|
||||||
|
{
|
||||||
|
my ($hash, $def) = @_;
|
||||||
|
my $name= $hash->{NAME};
|
||||||
|
|
||||||
|
Log3 $hash, 3, "$name: Opening multicast socket...";
|
||||||
|
my $socket = IO::Socket::Multicast6->new(
|
||||||
|
Domain => AF_INET6,
|
||||||
|
Proto => 'udp',
|
||||||
|
LocalPort => '61616',
|
||||||
|
);
|
||||||
|
$socket->mcast_add('FF05::205');
|
||||||
|
|
||||||
|
$hash->{TCPDev}= $socket;
|
||||||
|
$hash->{FD} = $socket->fileno();
|
||||||
|
delete($readyfnlist{"$name"});
|
||||||
|
$selectlist{"$name"} = $hash;
|
||||||
|
|
||||||
|
return undef;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
#####################################
|
||||||
|
sub
|
||||||
|
HXB_Undef($$)
|
||||||
|
{
|
||||||
|
my ($hash, $arg) = @_;
|
||||||
|
|
||||||
|
my $socket= $hash->{TCPDev};
|
||||||
|
$socket->mcast_drop('FF05::205');
|
||||||
|
$socket->close;
|
||||||
|
|
||||||
|
return undef;
|
||||||
|
}
|
||||||
|
|
||||||
|
#####################################
|
||||||
|
sub
|
||||||
|
HXB_DoInit($)
|
||||||
|
{
|
||||||
|
my $hash = shift;
|
||||||
|
|
||||||
|
$hash->{STATE} = "Initialized" if(!$hash->{STATE});
|
||||||
|
|
||||||
|
return undef;
|
||||||
|
}
|
||||||
|
|
||||||
|
#####################################
|
||||||
|
# called from the global loop, when the select for hash->{FD} reports data
|
||||||
|
sub HXB_Read($)
|
||||||
|
{
|
||||||
|
my ($hash) = @_;
|
||||||
|
my $name= $hash->{NAME};
|
||||||
|
my $socket= $hash->{TCPDev};
|
||||||
|
my $data;
|
||||||
|
return unless $socket->recv($data, 128);
|
||||||
|
|
||||||
|
Log3 $hash, 5, "$name: Received " . length($data) . " bytes.";
|
||||||
|
Dispatch($hash, $data, undef); # dispatch result to HXBDevices
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
#############################
|
||||||
|
1;
|
||||||
|
#############################
|
||||||
|
|
||||||
|
|
||||||
|
=pod
|
||||||
|
=begin html
|
||||||
|
|
||||||
|
<a name="HXB"></a>
|
||||||
|
<h3>HXB</h3>
|
||||||
|
<ul>
|
||||||
|
<br>
|
||||||
|
|
||||||
|
<a name="HXB"></a>
|
||||||
|
<b>Define</b>
|
||||||
|
<ul>
|
||||||
|
<code>define <name> HXB</code><br>
|
||||||
|
<br>
|
||||||
|
Defines a Hexabus. You need one Hexabus to receive multicast messages from <a href="#HXBDevice">Hexabus devices</a>.
|
||||||
|
Have a look at the <a href="https://github.com/mysmartgrid/hexabus/wiki">Hexabus wiki</a> for more information on Hexabus.
|
||||||
|
<br><br>
|
||||||
|
You need the perl modules IO::Socket::Multicast6 and Digest::CRC. Under Debian and its derivatives they are installed with <code>apt-get install libio-socket-multicast6-perl libdigest-crc-perl</code>.
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
|
||||||
|
=end html
|
281
fhem/FHEM/10_HXBDevice.pm
Normal file
281
fhem/FHEM/10_HXBDevice.pm
Normal file
@ -0,0 +1,281 @@
|
|||||||
|
# $Id: $
|
||||||
|
##############################################################################
|
||||||
|
#
|
||||||
|
# 10_HXBDevice.pm
|
||||||
|
# Copyright 2014 by Dr. Boris Neubert
|
||||||
|
# e-mail: omega at online dot de
|
||||||
|
#
|
||||||
|
# This file is part of fhem.
|
||||||
|
#
|
||||||
|
# Fhem is free software: you can redistribute it and/or modify
|
||||||
|
# it under the terms of the GNU General Public License as published by
|
||||||
|
# the Free Software Foundation, either version 2 of the License, or
|
||||||
|
# (at your option) any later version.
|
||||||
|
#
|
||||||
|
# Fhem is distributed in the hope that it will be useful,
|
||||||
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
# GNU General Public License for more details.
|
||||||
|
#
|
||||||
|
# You should have received a copy of the GNU General Public License
|
||||||
|
# along with fhem. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
#
|
||||||
|
##############################################################################
|
||||||
|
|
||||||
|
# Debian: libdigest-crc-perl
|
||||||
|
|
||||||
|
package main;
|
||||||
|
|
||||||
|
use strict;
|
||||||
|
use warnings;
|
||||||
|
|
||||||
|
use Digest::CRC;
|
||||||
|
|
||||||
|
#############################
|
||||||
|
|
||||||
|
|
||||||
|
my %HXB_PTYPES= (
|
||||||
|
HXB_PTYPE_ERROR => 0x00, # An error occured -- check the error code field for more information
|
||||||
|
HXB_PTYPE_INFO => 0x01, # Endpoint provides information
|
||||||
|
HXB_PTYPE_QUERY => 0x02, # Endpoint is requested to provide information
|
||||||
|
HXB_PTYPE_WRITE => 0x04, # Endpoint is requested to set its value
|
||||||
|
HXB_PTYPE_EPINFO => 0x09, # Endpoint metadata
|
||||||
|
HXB_PTYPE_EPQUERY => 0x0A, # Request endpoint metadata
|
||||||
|
);
|
||||||
|
|
||||||
|
#print Dumper \%HXB_PTYPES;
|
||||||
|
my %HXB_PTYPES_r = reverse %HXB_PTYPES;
|
||||||
|
|
||||||
|
my %HXB_DTYPES= (
|
||||||
|
HXB_DTYPE_UNDEFINED => 0x00, # Undefined: Nonexistent data type
|
||||||
|
HXB_DTYPE_BOOL => 0x01, # Boolean. Value still represented by 8 bits, but may only be HXB_TRUE or HXB_FALSE
|
||||||
|
HXB_DTYPE_UINT8 => 0x02, # Unsigned 8 bit integer
|
||||||
|
HXB_DTYPE_UINT32 => 0x03, # Unsigned 32 bit integer
|
||||||
|
HXB_DTYPE_DATETIME => 0x04, # Date and time
|
||||||
|
HXB_DTYPE_FLOAT => 0x05, # 32bit floating point
|
||||||
|
HXB_DTYPE_128STRING => 0x06, # 128char fixed length string
|
||||||
|
HXB_DTYPE_TIMESTAMP => 0x07, # timestamp - used for measuring durations, time differences and so on - uint32; seconds
|
||||||
|
HXB_DTYPE_65BYTES => 0x08, # raw 65 byte array, e.g. state machine data.
|
||||||
|
HXB_DTYPE_16BYTES => 0x09, # raw 16 byte array, e.g. state machine ID.
|
||||||
|
);
|
||||||
|
my %HXB_DTYPES_r = reverse %HXB_DTYPES;
|
||||||
|
|
||||||
|
my %HXB_FLAGS= (
|
||||||
|
HXB_FLAG_NONE => 0x00, # No flags set
|
||||||
|
);
|
||||||
|
my %HXB_FLAGS_r = reverse %HXB_FLAGS;
|
||||||
|
|
||||||
|
my %EP= (
|
||||||
|
EP_DEVICE_DESCRIPTOR => 0,
|
||||||
|
EP_POWER_SWITCH => 1,
|
||||||
|
EP_POWER_METER => 2,
|
||||||
|
EP_TEMPERATURE => 3,
|
||||||
|
EP_BUTTON => 4,
|
||||||
|
EP_HUMIDITY => 5,
|
||||||
|
EP_PRESSURE => 6,
|
||||||
|
EP_ENERGY_METER_TOTAL => 7,
|
||||||
|
EP_ENERGY_METER => 8,
|
||||||
|
EP_SM_CONTROL => 9,
|
||||||
|
EP_SM_UP_RECEIVER => 10,
|
||||||
|
EP_SM_UP_ACKNAK => 11,
|
||||||
|
EP_SM_RESET_ID => 12,
|
||||||
|
EP_ANALOGREAD => 22,
|
||||||
|
EP_SHUTTER => 23,
|
||||||
|
EP_HEXAPUSH_PRESSED => 24,
|
||||||
|
EP_HEXAPUSH_CLICKED => 25,
|
||||||
|
EP_PRESENCE_DETECTOR => 26,
|
||||||
|
EP_HEXONOFF_SET => 27,
|
||||||
|
EP_HEXONOFF_TOGGLE => 28,
|
||||||
|
EP_LIGHTSENSOR => 29,
|
||||||
|
EP_IR_RECEIVER => 30,
|
||||||
|
EP_LIVENESS => 31,
|
||||||
|
EP_EXT_DEV_DESC_1 => 32,
|
||||||
|
EP_GENERIC_DIAL_0 => 33,
|
||||||
|
EP_GENERIC_DIAL_1 => 34,
|
||||||
|
EP_GENERIC_DIAL_2 => 35,
|
||||||
|
EP_GENERIC_DIAL_3 => 36,
|
||||||
|
EP_GENERIC_DIAL_4 => 37,
|
||||||
|
EP_GENERIC_DIAL_5 => 38,
|
||||||
|
EP_GENERIC_DIAL_6 => 39,
|
||||||
|
EP_GENERIC_DIAL_7 => 40,
|
||||||
|
EP_PV_PRODUCTION => 41,
|
||||||
|
EP_POWER_BALANCE => 42,
|
||||||
|
EP_BATTERY_BALANCE => 43,
|
||||||
|
EP_HEATER_HOT => 44,
|
||||||
|
EP_HEATER_COLD => 45,
|
||||||
|
EP_HEXASENSE_BUTTON_STATE => 46,
|
||||||
|
EP_FLUKSO_L1 => 47,
|
||||||
|
EP_FLUKSO_L2 => 48,
|
||||||
|
EP_FLUKSO_L3 => 49,
|
||||||
|
EP_FLUKSO_S01 => 50,
|
||||||
|
EP_FLUKSO_S02 => 51,
|
||||||
|
EP_GL_IMPORT_L1 => 52,
|
||||||
|
EP_GL_IMPORT_L2 => 53,
|
||||||
|
EP_GL_IMPORT_L3 => 54,
|
||||||
|
EP_GL_EXPORT_POWER => 55,
|
||||||
|
EP_GL_EXPORT_L1 => 56,
|
||||||
|
EP_GL_EXPORT_L2 => 57,
|
||||||
|
EP_GL_EXPORT_L3 => 58,
|
||||||
|
EP_GL_IMPORT_ENERGY => 59,
|
||||||
|
EP_GL_EXPORT_ENERGY => 60,
|
||||||
|
EP_GL_FIRMWARE => 61,
|
||||||
|
EP_GL_CURRENT_L1 => 62,
|
||||||
|
EP_GL_CURRENT_L2 => 63,
|
||||||
|
EP_GL_CURRENT_L3 => 65,
|
||||||
|
EP_GL_VOLTAGE_L1 => 66,
|
||||||
|
EP_GL_VOLTAGE_L2 => 67,
|
||||||
|
EP_GL_VOLTAGE_L3 => 68,
|
||||||
|
EP_GL_POWER_FACTOR_L1 => 69,
|
||||||
|
EP_GL_POWER_FACTOR_L2 => 70,
|
||||||
|
EP_GL_POWER_FACTOR_L3 => 71,
|
||||||
|
EP_METERING_RMS_CURRENT => 72,
|
||||||
|
EP_METERING_RMS_VOLTAGE => 73,
|
||||||
|
EP_METERING_FREQUENCY => 74,
|
||||||
|
EP_METERING_REACTIVE_POWER => 75,
|
||||||
|
EP_METERING_POWER_FACTOR => 76,
|
||||||
|
EP_METERING_APPARENT_POWER => 77,
|
||||||
|
EP_METERING_FUNDAMENTAL_ACTIVE_POWER => 78,
|
||||||
|
EP_METERING_FUNDAMENTAL_REACTIVE_POWER => 79,
|
||||||
|
EP_DIMMER_MODE => 80,
|
||||||
|
EP_DIMMER_BRIGHTNESS => 81,
|
||||||
|
);
|
||||||
|
my %EP_r= reverse %EP;
|
||||||
|
|
||||||
|
|
||||||
|
#############################
|
||||||
|
sub
|
||||||
|
HXBDevice_Define($$)
|
||||||
|
{
|
||||||
|
my ($hash, $def) = @_;
|
||||||
|
my @a = split("[ \t]+", $def);
|
||||||
|
|
||||||
|
return "Usage: define <name> HXBDevice <ipv6>" if($#a != 2);
|
||||||
|
|
||||||
|
my $name= $a[0];
|
||||||
|
my $ipv6= $a[2];
|
||||||
|
|
||||||
|
$hash->{fhem}{ipv6}= $ipv6;
|
||||||
|
AssignIoPort($hash);
|
||||||
|
$modules{$hash->{TYPE}}{defptr}{"$ipv6"}= $hash;
|
||||||
|
|
||||||
|
return undef;
|
||||||
|
}
|
||||||
|
|
||||||
|
###################################
|
||||||
|
sub
|
||||||
|
HXBDevice_Initialize($)
|
||||||
|
{
|
||||||
|
my ($hash) = @_;
|
||||||
|
|
||||||
|
$hash->{Match} = "HX0C.+";
|
||||||
|
|
||||||
|
#$hash->{GetFn} = "HXBDevice_Get";
|
||||||
|
#$hash->{SetFn} = "HXBDevice_Set";
|
||||||
|
$hash->{DefFn} = "HXBDevice_Define";
|
||||||
|
$hash->{ParseFn} = "HXBDevice_Parse";
|
||||||
|
|
||||||
|
#$hash->{AttrFn} = "HXBDevice_Attr";
|
||||||
|
$hash->{AttrList} = $readingFnAttributes;
|
||||||
|
}
|
||||||
|
|
||||||
|
#####################################
|
||||||
|
|
||||||
|
sub
|
||||||
|
crc16Kermit($) {
|
||||||
|
my ($raw)= @_;
|
||||||
|
my $ctx= Digest::CRC->new(width=>16, init=>0x0000, xorout=>0x0000,
|
||||||
|
refout=>1, poly=>0x1021, refin=>1, cont=>1);
|
||||||
|
$ctx->add($raw);
|
||||||
|
return $ctx->digest;
|
||||||
|
}
|
||||||
|
|
||||||
|
#############################
|
||||||
|
sub
|
||||||
|
HXBDevice_Parse($$)
|
||||||
|
{
|
||||||
|
|
||||||
|
# we never come here if $msg does not match $hash->{MATCH} in the first place
|
||||||
|
|
||||||
|
my ($IOhash, $data) = @_; # IOhash points to the HXB, not to the HXBDevice
|
||||||
|
|
||||||
|
my $socket= $IOhash->{TCPDev};
|
||||||
|
my $ipv6= $socket->peerhost;
|
||||||
|
|
||||||
|
my $hash= $modules{"HXBDevice"}{defptr}{"$ipv6"};
|
||||||
|
return "UNDEFINED HXB_$ipv6 HXBDevice $ipv6" unless(defined($hash));
|
||||||
|
|
||||||
|
my $n= length($data);
|
||||||
|
return undef if($n< 8);
|
||||||
|
|
||||||
|
my ($magic, $ptype, $flags, $payload, $crc)= unpack("A4CCa" . ($n-8) . "n", $data);
|
||||||
|
my $raw= unpack("a" . ($n-2), $data);
|
||||||
|
return undef unless($crc = crc16Kermit($raw));
|
||||||
|
my $hxb_ptype= $HXB_PTYPES_r{$ptype};
|
||||||
|
my $hxb_flag= $HXB_FLAGS_r{$flags};
|
||||||
|
if($hxb_ptype eq "HXB_PTYPE_INFO") {
|
||||||
|
my ($eid, $dtype, $value)= unpack("NCa*", $payload);
|
||||||
|
my $ep= $EP_r{$eid};
|
||||||
|
my $hxb_dtype= $HXB_DTYPES_r{$dtype};
|
||||||
|
my $v= "<unknown>";
|
||||||
|
if($hxb_dtype eq "HXB_DTYPE_BOOL") {
|
||||||
|
$v= unpack("b", $value);
|
||||||
|
} elsif($hxb_dtype eq "HXB_DTYPE_UINT8") {
|
||||||
|
$v= unpack("C", $value);
|
||||||
|
} elsif($hxb_dtype eq "HXB_DTYPE_UINT32") {
|
||||||
|
$v= unpack("N", $value);
|
||||||
|
} elsif($hxb_dtype eq "HXB_DTYPE_DATETIME") {
|
||||||
|
$v= "?";
|
||||||
|
} elsif($hxb_dtype eq "HXB_DTYPE_FLOAT") {
|
||||||
|
$v= unpack("f", $value);
|
||||||
|
} elsif($hxb_dtype eq "HXB_DTYPE_128STRING") {
|
||||||
|
$v= "?";
|
||||||
|
} elsif($hxb_dtype eq "HXB_DTYPE_TIMESTAMP") {
|
||||||
|
$v= "?";
|
||||||
|
} elsif($hxb_dtype eq "HXB_DTYPE_65BYTES") {
|
||||||
|
$v= "?";
|
||||||
|
} elsif($hxb_dtype eq "HXB_DTYPE_16BYTES") {
|
||||||
|
$v= "?";
|
||||||
|
}
|
||||||
|
Log3 $hash,5, sprintf("%s: %s %s %s %s %s= %s",
|
||||||
|
$hash->{NAME}, $hxb_ptype, $hxb_flag,
|
||||||
|
$ep, $hxb_dtype, unpack("H*", $value), $v);
|
||||||
|
|
||||||
|
readingsSingleUpdate($hash, "state", "$ep= $v", 1);
|
||||||
|
readingsSingleUpdate($hash, $ep, $v, 1);
|
||||||
|
|
||||||
|
return $hash->{NAME};
|
||||||
|
|
||||||
|
}
|
||||||
|
return undef;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
#############################
|
||||||
|
1;
|
||||||
|
#############################
|
||||||
|
|
||||||
|
=pod
|
||||||
|
=begin html
|
||||||
|
|
||||||
|
<a name="HXBDevice"></a>
|
||||||
|
<h3>HXBDevice</h3>
|
||||||
|
<ul>
|
||||||
|
<br>
|
||||||
|
|
||||||
|
<a name="HXB"></a>
|
||||||
|
<b>Define</b>
|
||||||
|
<ul>
|
||||||
|
<code>define <name> HXB <IPv6Address></code><br>
|
||||||
|
<br>
|
||||||
|
Defines a Hexabus device at the IPv6 address <IPv6Address>. You need one <a href="#HXB">Hexabus</a>
|
||||||
|
to receive multicast messages from Hexabus devices.
|
||||||
|
Have a look at the <a href="https://github.com/mysmartgrid/hexabus/wiki">Hexabus wiki</a> for more information on Hexabus.
|
||||||
|
<br><br>
|
||||||
|
Example:
|
||||||
|
<code>define myPlug fd01:1::50:c4ff:fe04:81ad</code>
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
|
||||||
|
=end html
|
@ -19,6 +19,7 @@ FHEM/00_CUL.pm rudolfkoenig http://forum.fhem.de SlowRF
|
|||||||
FHEM/00_FBAHA.pm rudolfkoenig http://forum.fhem.de FRITZ!Box
|
FHEM/00_FBAHA.pm rudolfkoenig http://forum.fhem.de FRITZ!Box
|
||||||
FHEM/00_FHZ.pm rudolfkoenig http://forum.fhem.de SlowRF
|
FHEM/00_FHZ.pm rudolfkoenig http://forum.fhem.de SlowRF
|
||||||
FHEM/00_HMLAN.pm martinp876 http://forum.fhem.de HomeMatic
|
FHEM/00_HMLAN.pm martinp876 http://forum.fhem.de HomeMatic
|
||||||
|
FHEM/00_HXB.pm borisneubert http://forum.fhem.de Sonstige Systeme
|
||||||
FHEM/00_KM271.pm physikus http://forum.fhem.de Sonstiges
|
FHEM/00_KM271.pm physikus http://forum.fhem.de Sonstiges
|
||||||
FHEM/00_LIRC.pm rudolfkoenig http://forum.fhem.de Sonstiges
|
FHEM/00_LIRC.pm rudolfkoenig http://forum.fhem.de Sonstiges
|
||||||
FHEM/00_MAXLAN.pm mgehre http://forum.fhem.de MAX
|
FHEM/00_MAXLAN.pm mgehre http://forum.fhem.de MAX
|
||||||
@ -47,6 +48,7 @@ FHEM/10_EnOcean.pm klaus-schauer http://forum.fhem.de EnOcean
|
|||||||
FHEM/10_FBDECT.pm rudolfkoenig http://forum.fhem.de FRITZ!Box
|
FHEM/10_FBDECT.pm rudolfkoenig http://forum.fhem.de FRITZ!Box
|
||||||
FHEM/10_FRM.pm ntruchsess http://forum.fhem.de Sonstige Systeme
|
FHEM/10_FRM.pm ntruchsess http://forum.fhem.de Sonstige Systeme
|
||||||
FHEM/10_FS20.pm rudolfkoenig http://forum.fhem.de SlowRF
|
FHEM/10_FS20.pm rudolfkoenig http://forum.fhem.de SlowRF
|
||||||
|
FHEM/00_HXBDevice.pm borisneubert http://forum.fhem.de Sonstige Systeme
|
||||||
FHEM/10_IT.pm justme1968 http://forum.fhem.de InterTechno
|
FHEM/10_IT.pm justme1968 http://forum.fhem.de InterTechno
|
||||||
FHEM/10_Itach_IR ulimaass http://forum.fhem.de Sonstige Systeme
|
FHEM/10_Itach_IR ulimaass http://forum.fhem.de Sonstige Systeme
|
||||||
FHEM/10_MAX.pm mgehre http://forum.fhem.de MAX
|
FHEM/10_MAX.pm mgehre http://forum.fhem.de MAX
|
||||||
@ -164,20 +166,20 @@ FHEM/55_GDS.pm betateilchen http://forum.fhem.de Unterstue
|
|||||||
FHEM/55_PIFACE.pm klaus.schauer http://forum.fhem.de Einplatinencomputer
|
FHEM/55_PIFACE.pm klaus.schauer http://forum.fhem.de Einplatinencomputer
|
||||||
FHEM/55_weco.pm betateilchen http://forum.fhem.de Unterstuetzende Dienste
|
FHEM/55_weco.pm betateilchen http://forum.fhem.de Unterstuetzende Dienste
|
||||||
FHEM/56_POKEYS.pm axelberner http://forum.fhem.de Sonstiges
|
FHEM/56_POKEYS.pm axelberner http://forum.fhem.de Sonstiges
|
||||||
FHEM/57_Calendar.pm borisneubert http://forum.fhem.de Unterstützende Dienste
|
FHEM/57_Calendar.pm borisneubert http://forum.fhem.de Unterstuetzende Dienste
|
||||||
FHEM/59_HCS.pm mfr69bs http://forum.fhem.de Automatisierung
|
FHEM/59_HCS.pm mfr69bs http://forum.fhem.de Automatisierung
|
||||||
FHEM/59_OPENWEATHER.pm tupol http://forum.fhem.de Unterstuetzende Dienste (Link senden: http://forum.fhem.de/index.php?action=pm;sa=send;u=5432)
|
FHEM/59_OPENWEATHER.pm tupol http://forum.fhem.de Unterstuetzende Dienste (Link senden: http://forum.fhem.de/index.php?action=pm;sa=send;u=5432)
|
||||||
FHEM/59_Twilight.pm dietmar63 http://forum.fhem.de Unterstuetzende Dienste
|
FHEM/59_Twilight.pm dietmar63 http://forum.fhem.de Unterstuetzende Dienste
|
||||||
FHEM/59_PROPLANTA.pm tupol http://forum.fhem.de Unterstuetzende Dienste (Link senden: http://forum.fhem.de/index.php?action=pm;sa=send;u=5432)
|
FHEM/59_PROPLANTA.pm tupol http://forum.fhem.de Unterstuetzende Dienste (Link senden: http://forum.fhem.de/index.php?action=pm;sa=send;u=5432)
|
||||||
FHEM/59_WWO.pm baumrasen http://forum.fhem.de Sonstiges
|
FHEM/59_WWO.pm baumrasen http://forum.fhem.de Sonstiges
|
||||||
FHEM/59_Weather.pm borisneubert http://forum.fhem.de Unterstützende Dienste
|
FHEM/59_Weather.pm borisneubert http://forum.fhem.de Unterstuetzende Dienste
|
||||||
FHEM/60_EM.pm rudolfkoenig http://forum.fhem.de SlowRF
|
FHEM/60_EM.pm rudolfkoenig http://forum.fhem.de SlowRF
|
||||||
FHEM/61_EMWZ.pm rudolfkoenig http://forum.fhem.de SlowRF
|
FHEM/61_EMWZ.pm rudolfkoenig http://forum.fhem.de SlowRF
|
||||||
FHEM/62_EMEM.pm rudolfkoenig http://forum.fhem.de SlowRF
|
FHEM/62_EMEM.pm rudolfkoenig http://forum.fhem.de SlowRF
|
||||||
FHEM/63_EMGZ.pm rudolfkoenig http://forum.fhem.de SlowRF
|
FHEM/63_EMGZ.pm rudolfkoenig http://forum.fhem.de SlowRF
|
||||||
FHEM/64_ESA2000.pm stromer-12 http://forum.fhem.de SlowRF
|
FHEM/64_ESA2000.pm stromer-12 http://forum.fhem.de SlowRF
|
||||||
FHEM/66_ECMD.pm borisneubert http://forum.fhem.de Sonstiges
|
FHEM/66_ECMD.pm borisneubert http://forum.fhem.de Sonstige Systeme
|
||||||
FHEM/67_ECMDDevice.pm borisneubert http://forum.fhem.de Sonstiges
|
FHEM/67_ECMDDevice.pm borisneubert http://forum.fhem.de Sonstige Systeme
|
||||||
FHEM/70_EGPM.pm alexus http://forum.fhem.de Sonstiges
|
FHEM/70_EGPM.pm alexus http://forum.fhem.de Sonstiges
|
||||||
FHEM/70_ENIGMA2.pm loredo http://forum.fhem.de Multimedia
|
FHEM/70_ENIGMA2.pm loredo http://forum.fhem.de Multimedia
|
||||||
FHEM/70_Jabber.pm BioS http://forum.fhem.de Unterstuetzende Dienste
|
FHEM/70_Jabber.pm BioS http://forum.fhem.de Unterstuetzende Dienste
|
||||||
@ -205,11 +207,11 @@ FHEM/73_MPD.pm wzut http://forum.fhem.de Multimedi
|
|||||||
FHEM/75_MSG.pm ruebedo http://forum.fhem.de Automatisierung
|
FHEM/75_MSG.pm ruebedo http://forum.fhem.de Automatisierung
|
||||||
FHEM/76_MSGFile.pm ruebedo http://forum.fhem.de Automatisierung
|
FHEM/76_MSGFile.pm ruebedo http://forum.fhem.de Automatisierung
|
||||||
FHEM/76_MSGMail.pm ruebedo http://forum.fhem.de Automatisierung
|
FHEM/76_MSGMail.pm ruebedo http://forum.fhem.de Automatisierung
|
||||||
FHEM/80_M232.pm borisneubert http://forum.fhem.de Sonstiges
|
FHEM/80_M232.pm borisneubert http://forum.fhem.de Sonstige Systeme
|
||||||
FHEM/80_xxLG7000.pm painseeker http://forum.fhem.de Sonstiges
|
FHEM/80_xxLG7000.pm painseeker http://forum.fhem.de Sonstiges
|
||||||
FHEM/81_M232Counter.pm borisneubert http://forum.fhem.de Sonstiges
|
FHEM/81_M232Counter.pm borisneubert http://forum.fhem.de Sonstige Systeme
|
||||||
FHEM/82_LGTV.pm painseeker http://forum.fhem.de Sonstiges
|
FHEM/82_LGTV.pm painseeker http://forum.fhem.de Sonstiges
|
||||||
FHEM/82_M232Voltage.pm borisneubert http://forum.fhem.de Sonstiges
|
FHEM/82_M232Voltage.pm borisneubert http://forum.fhem.de Sonstige Systeme
|
||||||
FHEM/87_WS2000.pm tdressler http://forum.fhem.de Sonstiges
|
FHEM/87_WS2000.pm tdressler http://forum.fhem.de Sonstiges
|
||||||
FHEM/88_ALL4000T.pm sachag http://forum.fhem.de Sonstiges
|
FHEM/88_ALL4000T.pm sachag http://forum.fhem.de Sonstiges
|
||||||
FHEM/88_LINDY_HDMI_SWITCH.pm sachag http://forum.fhem.de Multimedia
|
FHEM/88_LINDY_HDMI_SWITCH.pm sachag http://forum.fhem.de Multimedia
|
||||||
|
Loading…
x
Reference in New Issue
Block a user