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)