From bd3d1ec7d3b34b503477619214a8bec03feb231c Mon Sep 17 00:00:00 2001
From: klauswitt <>
Date: Mon, 22 Aug 2016 21:14:59 +0000
Subject: [PATCH] 00_NetzerI2C.pm: =item summary added 00_RPII2C.pm: =item
summary added 51_I2C_BMP180.pm: =item summary added 51_Netzer.pm: =item
summary added 51_RPI_GPIO.pm: =item summary added 52_I2C_BME280.pm: =item
summary added 52_I2C_EEPROM.pm: =item summary added 52_I2C_MCP23008.pm: =item
summary added 52_I2C_MCP23017.pm: =item summary added 52_I2C_MCP342x.pm:
=item summary added 52_I2C_PCA9532.pm: =item summary added 52_I2C_PCA9685.pm:
=item summary added 52_I2C_PCF8574.pm: =item summary added 52_I2C_SHT21.pm:
=item summary added 53_GHoma.pm: =item summary added, Notes for new firmware
added
git-svn-id: https://svn.fhem.de/fhem/trunk@12059 2b470e98-0d58-463d-a4d8-8e2adae1ed80
---
fhem/FHEM/00_NetzerI2C.pm | 9 +++++----
fhem/FHEM/00_RPII2C.pm | 9 +++++----
fhem/FHEM/51_I2C_BMP180.pm | 3 +++
fhem/FHEM/51_Netzer.pm | 3 +++
fhem/FHEM/51_RPI_GPIO.pm | 18 ++++++++----------
fhem/FHEM/52_I2C_BME280.pm | 7 +++++--
fhem/FHEM/52_I2C_EEPROM.pm | 3 +++
fhem/FHEM/52_I2C_MCP23008.pm | 3 +++
fhem/FHEM/52_I2C_MCP23017.pm | 6 +++++-
fhem/FHEM/52_I2C_MCP342x.pm | 25 ++++++++++++++++---------
fhem/FHEM/52_I2C_PCA9532.pm | 6 +++++-
fhem/FHEM/52_I2C_PCA9685.pm | 8 +++++---
fhem/FHEM/52_I2C_PCF8574.pm | 3 +++
fhem/FHEM/52_I2C_SHT21.pm | 5 ++++-
fhem/FHEM/53_GHoma.pm | 13 ++++++++++++-
15 files changed, 85 insertions(+), 36 deletions(-)
diff --git a/fhem/FHEM/00_NetzerI2C.pm b/fhem/FHEM/00_NetzerI2C.pm
index c4ae89caa..b261f3a2a 100644
--- a/fhem/FHEM/00_NetzerI2C.pm
+++ b/fhem/FHEM/00_NetzerI2C.pm
@@ -26,10 +26,8 @@ I2C_PC.*
I2C_MCP.*
I2C_BME280
I2C_BMP180
-I2C_BH1750
-I2C_SHT.*
+I2C_SHT21
I2C_TSL2561
-I2C_K30
);
sub NetzerI2C_Initialize($) {
@@ -501,6 +499,9 @@ sub NetzerI2C_RemoveInternalTimer($$) {
1;
=pod
+=item device
+=item summary accesses I2C interface on an Netzer
+=item summary_DE Zugriff auf das I2C-Interface einer Netzer
=begin html
@@ -646,4 +647,4 @@ sub NetzerI2C_RemoveInternalTimer($$) {
-=end html_DE
+=end html_DE
\ No newline at end of file
diff --git a/fhem/FHEM/00_RPII2C.pm b/fhem/FHEM/00_RPII2C.pm
index 76abe054e..4110559be 100644
--- a/fhem/FHEM/00_RPII2C.pm
+++ b/fhem/FHEM/00_RPII2C.pm
@@ -16,10 +16,8 @@ I2C_PC.*
I2C_MCP.*
I2C_BME280
I2C_BMP180
-I2C_BH1750
-I2C_SHT.*
+I2C_SHT21
I2C_TSL2561
-I2C_K30
);
my $gpioprg = "/usr/local/bin/gpio"; #WiringPi GPIO utility
@@ -535,6 +533,9 @@ sub RPII2C_HWACCESS_ioctl($$) {
=pod
+=item device
+=item summary accesses I2C interface via sysfs on linux
+=item summary_DE Zugriff auf das I2C-Interface über sysfs auf Linux Systemen
=begin html
@@ -855,4 +856,4 @@ sub RPII2C_HWACCESS_ioctl($$) {
=end html_DE
-1;
+1;
\ No newline at end of file
diff --git a/fhem/FHEM/51_I2C_BMP180.pm b/fhem/FHEM/51_I2C_BMP180.pm
index a124553ca..f86fb62ca 100644
--- a/fhem/FHEM/51_I2C_BMP180.pm
+++ b/fhem/FHEM/51_I2C_BMP180.pm
@@ -546,6 +546,9 @@ sub I2C_BMP180_DbLog_splitFn($) {
1;
=pod
+=item device
+=item summary reads pressure and temperature from an via I2C connected BMP180/BMP085
+=item summary_DE lese Druck und Temperatur eines über I2C angeschlossenen BMP180/BMP085
=begin html
diff --git a/fhem/FHEM/51_Netzer.pm b/fhem/FHEM/51_Netzer.pm
index c06a09004..8b902f8c0 100644
--- a/fhem/FHEM/51_Netzer.pm
+++ b/fhem/FHEM/51_Netzer.pm
@@ -290,6 +290,9 @@ sub Netzer_disconn($$) {
1;
=pod
+=item device
+=item summary controls/reads GPIO pins on an Netzer
+=item summary_DE steuern/lesen der GPIO Pins eines Netzer
=begin html
diff --git a/fhem/FHEM/51_RPI_GPIO.pm b/fhem/FHEM/51_RPI_GPIO.pm
index 3f1428094..c2130ddea 100644
--- a/fhem/FHEM/51_RPI_GPIO.pm
+++ b/fhem/FHEM/51_RPI_GPIO.pm
@@ -62,7 +62,6 @@ sub RPI_GPIO_Initialize($) {
" interrupt:none,falling,rising,both" .
" toggletostate:no,yes active_low:no,yes" .
" debounce_in_ms restoreOnStartup:no,yes,on,off,last" .
- " dblclicklevel:0,1 dblclicktime" .
" unexportpin:no,yes longpressinterval" .
" $readingFnAttributes";
}
@@ -508,11 +507,9 @@ sub RPI_GPIO_Except($) { #called from main if an interrupt occured
Log3 $hash, 5, "Zaehler ist jetzt $valcnt";
}
#Doppelklick (noch im Teststatus)
- if (defined($hash->{lasttrg})) {
- my $testtt = (gettimeofday() - $hash->{lasttrg} );
- readingsSingleUpdate($hash, 'Dblclick', "on", 1) if $testtt < 2;
- }
+ my $testtt = (gettimeofday() - $hash->{lasttrg} );
$hash->{lasttrg} = gettimeofday();
+ readingsSingleUpdate($hash, 'Dblclick', "on", 1) if $testtt < 2;
#langer Testendruck
} elsif ($eval eq "both") {
if ( $val == 1 ) {
@@ -524,11 +521,9 @@ sub RPI_GPIO_Except($) { #called from main if an interrupt occured
}
#Doppelklick (noch im Teststatus)
if ( $val == AttrVal($hash->{NAME}, "dblclicklevel", "1") ) {
- if (defined $hash->{lasttrg}) {
- my $testtt = (gettimeofday() - $hash->{lasttrg} );
- readingsSingleUpdate($hash, 'Dblclick', "on", 1) if $testtt < int(AttrVal($hash->{NAME}, "dblclicktime", 2));
- }
+ my $testtt = (gettimeofday() - $hash->{lasttrg} );
$hash->{lasttrg} = gettimeofday();
+ readingsSingleUpdate($hash, 'Dblclick', "on", 1) if $testtt < 2;
} else {
readingsSingleUpdate($hash, 'Dblclick', "off", 1);
}
@@ -675,6 +670,9 @@ sub RPI_GPIO_inthandling($$) { #start/stop Interrupthandling
1;
=pod
+=item device
+=item summary controls/reads GPIO pins accessible via sysfs on linux
+=item summary_DE steuern/lesen von GPIO Pins über sysfs auf Linux Systemen
=begin html
@@ -967,4 +965,4 @@ sub RPI_GPIO_inthandling($$) { #start/stop Interrupthandling
=end html_DE
-=cut
\ No newline at end of file
+=cut
diff --git a/fhem/FHEM/52_I2C_BME280.pm b/fhem/FHEM/52_I2C_BME280.pm
index 69551466c..79c856945 100644
--- a/fhem/FHEM/52_I2C_BME280.pm
+++ b/fhem/FHEM/52_I2C_BME280.pm
@@ -172,7 +172,7 @@ sub I2C_BME280_Set($@) { # Messwerte manuell anfordern
} else { #..but get calibration variables first
Log3 $hash, 5, "$name: in set but no calibrationData, requesting again";
I2C_BME280_i2cread($hash, 0x88, 26);
- I2C_BME280_i2cread($hash, 0xE1, 8);
+ I2C_BME280_i2cread($hash, 0xE1, 16);
}
}
return undef
@@ -194,7 +194,7 @@ sub I2C_BME280_Get($@) { # Messwerte manuell anfordern
} else { #..but get calibration variables first
Log3 $hash, 5, "$name: in set but no calibrationData, requesting again";
I2C_BME280_i2cread($hash, 0x88, 26);
- I2C_BME280_i2cread($hash, 0xE1, 8);
+ I2C_BME280_i2cread($hash, 0xE1, 16);
}
} else {
return 'Unknown argument ' . $cmd . ', choose one of readValues:noArg';
@@ -498,6 +498,9 @@ sub I2C_BME280_DbLog_splitFn($) { # Einheiten
1;
=pod
+=item device
+=item summary reads pressure, humidity and temperature from an via I2C connected BME280
+=item summary_DE lese Druck, Feuchte und Temperatur eines über I2C angeschlossenen BME280
=begin html
diff --git a/fhem/FHEM/52_I2C_EEPROM.pm b/fhem/FHEM/52_I2C_EEPROM.pm
index 4355e99af..e17f9015c 100644
--- a/fhem/FHEM/52_I2C_EEPROM.pm
+++ b/fhem/FHEM/52_I2C_EEPROM.pm
@@ -286,6 +286,9 @@ sub I2C_EEPROM_BytefromReading($@) {
1;
=pod
+=item device
+=item summary reads the content from an via I2C connected EEPROM
+=item summary_DE lesen des Inhals eines über I2C angeschlossenen EEPROM
=begin html
diff --git a/fhem/FHEM/52_I2C_MCP23008.pm b/fhem/FHEM/52_I2C_MCP23008.pm
index 08dde2e43..9335ce921 100644
--- a/fhem/FHEM/52_I2C_MCP23008.pm
+++ b/fhem/FHEM/52_I2C_MCP23008.pm
@@ -489,6 +489,9 @@ sub I2C_MCP23008_UpdReadings($$$) { #nach Rueckmeldung read
1;
=pod
+=item device
+=item summary controls/reads GPIOs from an via I2C connected MCP23008 port extender
+=item summary_DE steuern/lesen der GPIOs eines über I2C angeschlossenen MCP23008
=begin html
diff --git a/fhem/FHEM/52_I2C_MCP23017.pm b/fhem/FHEM/52_I2C_MCP23017.pm
index 17519a97e..486ced50e 100644
--- a/fhem/FHEM/52_I2C_MCP23017.pm
+++ b/fhem/FHEM/52_I2C_MCP23017.pm
@@ -11,6 +11,7 @@ use strict;
use warnings;
use SetExtensions;
use Scalar::Util qw(looks_like_number);
+no if $] >= 5.017011, warnings => 'experimental::smartmatch';
my %Registers = (
'IODIRA' => 0x00, #1 = input; 0 = output (default 1)
@@ -490,6 +491,9 @@ sub I2C_MCP23017_UpdReadings($$$) { #nach Rueckmeldung read
1;
=pod
+=item device
+=item summary controls/reads GPIOs from an via I2C connected MCP23017 port extender
+=item summary_DE steuern/lesen der GPIOs eines über I2C angeschlossenen MCP23017
=begin html
@@ -711,4 +715,4 @@ sub I2C_MCP23017_UpdReadings($$$) { #nach Rueckmeldung read
=end html_DE
-=cut
\ No newline at end of file
+=cut
diff --git a/fhem/FHEM/52_I2C_MCP342x.pm b/fhem/FHEM/52_I2C_MCP342x.pm
index 8433ea4ce..aae66945c 100644
--- a/fhem/FHEM/52_I2C_MCP342x.pm
+++ b/fhem/FHEM/52_I2C_MCP342x.pm
@@ -90,23 +90,27 @@ sub I2C_MCP342x_Init($$) {
my ( $hash, $args ) = @_;
my $name = $hash->{NAME};
- Log3 $hash, 1, "$hash->{NAME}: Init Argumente1: $args";
- if (defined $args && int(@$args) < 1) {
- Log3 $hash, 0, "Define: Wrong syntax. Usage:\n" .
- "define MCP342x [] []";
+
+ if (defined $args && int(@$args) > 1)
+ {
+ return "Define: Wrong syntax. Usage:\n" .
+ "define MCP342x [] []";
}
- if (defined (my $address = shift @$args)) {
- $hash->{I2C_Address} = $address =~ /^0x.*$/ ? oct($address) : $address;
- Log3 $hash, 0, "$name: I2C Address not valid" unless ($hash->{I2C_Address} < 128 && $hash->{I2C_Address} > 3);
- } else {
+
+ if (defined (my $address = shift @$args)) {
+ $hash->{I2C_Address} = $address =~ /^0.*$/ ? oct($address) : $address;
+ return "$name I2C Address not valid" unless ($address < 128 && $address > 3);
+ } else {
$hash->{I2C_Address} = hex(MCP3422_I2C_ADDRESS);
}
+
if (defined (my $channels = shift @$args)) {
- $hash->{channels} = ($channels == 4 ? 4 : 2);
+ $hash->{channels} = $channels if $channels == 2 || $channels == 4;
} else {
$hash->{channels} = 2;
}
+
my $msg = '';
# create default attributes
if (AttrVal($name, 'poll_interval', '?') eq '?') {
@@ -330,6 +334,9 @@ sub I2C_MCP342x_readvoltage($@) {
1;
=pod
+=item device
+=item summary reads the analog inputs from an via I2C connected MCP342x
+=item summary_DE lesen der Analogeingänge eines über I2C angeschlossenen MCP342x
=begin html
diff --git a/fhem/FHEM/52_I2C_PCA9532.pm b/fhem/FHEM/52_I2C_PCA9532.pm
index b928de92b..2d932ff54 100644
--- a/fhem/FHEM/52_I2C_PCA9532.pm
+++ b/fhem/FHEM/52_I2C_PCA9532.pm
@@ -24,6 +24,7 @@ package main;
use strict;
use warnings;
use SetExtensions;
+no if $] >= 5.017011, warnings => 'experimental::smartmatch';
#use POSIX;
use Scalar::Util qw(looks_like_number);
@@ -440,6 +441,9 @@ sub I2C_PCA9532_UpdReadings($$$) {
1;
=pod
+=item device
+=item summary controls PWM outputs from an via I2C connected PCA9532
+=item summary_DE steuern der PWM Ausgänge eines über I2C angeschlossenen PCA9532
=begin html
@@ -610,4 +614,4 @@ sub I2C_PCA9532_UpdReadings($$$) {
=end html_DE
-=cut
\ No newline at end of file
+=cut
diff --git a/fhem/FHEM/52_I2C_PCA9685.pm b/fhem/FHEM/52_I2C_PCA9685.pm
index 8d46a3dde..f46e27f9e 100644
--- a/fhem/FHEM/52_I2C_PCA9685.pm
+++ b/fhem/FHEM/52_I2C_PCA9685.pm
@@ -215,7 +215,7 @@ sub I2C_PCA9685_Attr(@) { # wird beim setzen eines Attributes ausgef
$val = $defaultreg{'PRESCALE'} unless (defined($val)); #beim loeschen wieder auf Standard setzen
return "wrong value: $val for \"set $name $attr\" use 0-255"
unless($val =~ m/^(\d+)$/ && $val >= 0 && $val < 256);
- Log3 $hash, 5, $hash->{NAME} . ": $attr alter Wert: ".$hash->{confregs}{PRESCALE}." neuer Wert: ".$val;
+ Log3 $hash, 5, $hash->{NAME} . ": $attr alter Wert: ".(defined($hash->{confregs}{PRESCALE})?$hash->{confregs}{PRESCALE}:"empty")." neuer Wert: ".$val;
if ($main::init_done && $val != $hash->{confregs}{PRESCALE}) {
my $modereg1 = defined $hash->{confregs}{$confregs{0}} ? $hash->{confregs}{$confregs{0}} : $defaultreg{'modereg1'};
my $modereg1mod = ( $modereg1 & 0x7F ) | $mr1{ "SLEEP" };
@@ -481,7 +481,6 @@ sub I2C_PCA9685_i2cwrite($$$) { # Schreibbefehl an Hardware absetzen
I2C_PCA9685_i2cread($hash, 6 + $n * $reg, $reg - ($reg * ($n+1) - 64)) if (($n+1) * $reg) > 64;
}
}
- return undef;
} else {
if (AttrVal($hash->{NAME}, "dummy", 0) == 1) {
I2C_PCA9685_UpdReadings($hash, $reg, $data); # Zeile zum testen (Werte werden direkt zu I2CRec umgeleitet)
@@ -598,6 +597,9 @@ sub I2C_PCA9685_UpdReadings($$$) { # vom IODev gesendete Werte in Read
1;
=pod
+=item device
+=item summary controls PWM outputs from an via I2C connected PCA9685
+=item summary_DE steuern der PWM Ausgänge eines über I2C angeschlossenen PCA9685
=begin html
@@ -881,4 +883,4 @@ sub I2C_PCA9685_UpdReadings($$$) { # vom IODev gesendete Werte in Read
=end html_DE
-=cut
\ No newline at end of file
+=cut
diff --git a/fhem/FHEM/52_I2C_PCF8574.pm b/fhem/FHEM/52_I2C_PCF8574.pm
index b0caf07e0..d566e0552 100644
--- a/fhem/FHEM/52_I2C_PCF8574.pm
+++ b/fhem/FHEM/52_I2C_PCF8574.pm
@@ -336,6 +336,9 @@ sub I2C_PCF8574_Parse($$) { #wird ueber dispatch vom physical device aufgerufen
1;
=pod
+=item device
+=item summary controls/reads GPIOs from an via I2C connected PCF8574 port extender
+=item summary_DE steuern/lesen der GPIOs eines über I2C angeschlossenen PCF8574
=begin html
diff --git a/fhem/FHEM/52_I2C_SHT21.pm b/fhem/FHEM/52_I2C_SHT21.pm
index 395d5bb0e..fd3b384c4 100644
--- a/fhem/FHEM/52_I2C_SHT21.pm
+++ b/fhem/FHEM/52_I2C_SHT21.pm
@@ -293,7 +293,7 @@ sub I2C_SHT21_CheckCrc(@) {
$crc = ($crc & 0x80 ? $poly : 0 ) ^ ($crc << 1);
}
}
- return ($crc == $data[2] ? undef : $crc);
+ return ($crc = $data[2] ? undef : $crc);
}
sub I2C_SHT21_DbLog_splitFn($) {
@@ -312,6 +312,9 @@ sub I2C_SHT21_DbLog_splitFn($) {
1;
=pod
+=item device
+=item summary reads humidity and temperature from an via I2C connected SHT2x
+=item summary_DE lese Feuchte und Temperatur eines über I2C angeschlossenen SHT2x
=begin html
diff --git a/fhem/FHEM/53_GHoma.pm b/fhem/FHEM/53_GHoma.pm
index 874445c1e..988beaf3c 100644
--- a/fhem/FHEM/53_GHoma.pm
+++ b/fhem/FHEM/53_GHoma.pm
@@ -166,7 +166,7 @@ sub GHoma_Define($$$) { #
#my $name = $a[0];
# my $addr = $a[2];
#$hash->{Id} = pack('C*', ( hex(substr($pport,0,2)), hex(substr($pport,2,2)), hex(substr($pport,4,2)) ) );
- $hash->{Id} = lc $pport;
+ $hash->{Id} = $pport;
return;
}
@@ -420,6 +420,9 @@ sub GHoma_Undef($$) { #
1;
=pod
+=item device
+=item summary controls an G-Homa wlan adapter plug
+=item summary_DE Steuerung einer G-Homa Wlan Steckdose
=begin html
@@ -428,6 +431,10 @@ sub GHoma_Undef($$) { #
Connects fhem to an G-Homa adapter plug
+ ATTENTION!:
+ With an actual firmware and after firmware update, http access will be disabled.
+ Network parameters cannot changed anymore.
+ The only way to use the plug again with FHEM is to change route DNS requests from G-Homa plug to plug.g-homa.com to your FHEM server.
preliminary:
- Configure WLAN settings:
bring device in AP mode (press button for more than 3s, repeat this step until the LED is permanently on)
@@ -509,6 +516,10 @@ sub GHoma_Undef($$) { #
Verbindet fhem mit einem G-Homa Zwischenstecker
+ Achtung!:
+ Mit aktueller Firmware und nach einem Firmware Update ist der integrierte Webserver nicht mehr erreichbar.
+ Dadurch lassen sich keine Einstellungen mehr anpassen.
+ Die einzige Möglichkeit ist, die DNS anfragen der G-Homa Dose an plug.g-homa.com zum FHEM server umzuleiten.
Vorbereitung:
- WLAN konfigurieren:
Gerät in den AP modus bringen (Knopf für mehr als 3s drücken, diesen Schritt wiederholen bis die LED permanent leuchtet)