From f542d2050cb98ee41cb7b1de300857aa6a55bad0 Mon Sep 17 00:00:00 2001
From: oliverk <>
Date: Wed, 8 Nov 2023 11:29:12 +0000
Subject: [PATCH] 21_N4HMODULE:Support of more modules

git-svn-id: https://svn.fhem.de/fhem/trunk@28138 2b470e98-0d58-463d-a4d8-8e2adae1ed80
---
 fhem/FHEM/21_N4HMODULE.pm | 38 ++++++++++++++++++++++++--------------
 1 file changed, 24 insertions(+), 14 deletions(-)

diff --git a/fhem/FHEM/21_N4HMODULE.pm b/fhem/FHEM/21_N4HMODULE.pm
index 612076984..3b27ee2e5 100644
--- a/fhem/FHEM/21_N4HMODULE.pm
+++ b/fhem/FHEM/21_N4HMODULE.pm
@@ -4,7 +4,7 @@
 #
 # net4home Busconnector Device
 #
-# (c) 2014-2018 Oliver Koerber <koerber@net4home.de>
+# (c) 2014-2023 Oliver Koerber <koerber@net4home.de>
 #
 # $Id$
 #
@@ -22,7 +22,7 @@ sub N4HMODULE_Get ($$@);
 sub N4HMODULE_Update($@);
 sub N4HMODULE_DbLog_splitFn($$);
 
-my $n4hmodule_Version = "1.0.3.0 - 29.10.2023";
+my $n4hmodule_Version = "1.0.4.0 - 07.11.2023";
 
 my %OT_devices = (
 	"1" 	=> {"name" => "leer", "OTcanSet" => "false", "OTcanReq" => "false", "fields" => [] },
@@ -184,6 +184,9 @@ sub N4HMODULE_Define($$) {
 	
     $attr{$name}{room} = "net4home" if( !defined($attr{$name}{room}) );
 
+    my $state_format;
+	my $icon;
+
 		# Timer zum regelmäßigem aktualisieren auf dem Bus starten
 	if (($ot ==  24) or #Temperatur
         ($ot ==  25) or #Licht
@@ -194,9 +197,7 @@ sub N4HMODULE_Define($$) {
 		($ot == 246) or #Luftdruck-Tendenz
 	    ($ot == 245)) { #Regenmenge l/h
 
-        my $state_format;
-		my $icon;
-		
+	
         if( $ot == 24 ) { 
           $state_format .= " " if( $state_format );
           $state_format .= "T: temperature";
@@ -204,6 +205,7 @@ sub N4HMODULE_Define($$) {
         } elsif( $ot == 25 ) {
           $state_format .= " " if( $state_format );
           $state_format .= "L: brightness";
+		  $icon 		 = "weather_light_meter";
         } elsif( $ot == 26 ) {
           $state_format .= " " if( $state_format );
           $state_format .= "H: humidity";
@@ -235,6 +237,16 @@ sub N4HMODULE_Define($$) {
 	} elsif (( $ot ==  34 ) or # TLH
 			(  $ot ==   3 ) or # Aktor, Relais
 			(  $ot ==   5)) {  # Aktor, Dimmer
+		
+
+        if( $ot == 5 ) { 
+		  $icon 		 = "light_control";
+        } elsif( $ot == 34 ) {
+		  $icon 		 = "temp_control";
+        }
+
+        $attr{$name}{icon} = $icon if( !defined($attr{$name}{icon}) && defined($icon) );
+			
 		# get initial value from bus after first start
 		Log3 $hash, 3, "N4HMODULE Define (get) -> $name ($ot)";
 		InternalTimer( gettimeofday() + int(rand(10)) , "N4HMODULE_Start", $hash, 0 );
@@ -353,8 +365,6 @@ sub N4HMODULE_Parse($$) {
 	
 	# 0c 6100 ff7f d817 05 65 09 05 01 67 4004000001ff4004000001f8403600c000000659
 	
-#	Log3 "xx", 1, "(DECOMP2): T8($type8) - MI$ipsrc DST-> $ipdst SRC<-$objsrc";
-	
 	if ( length($msg) <= $pos ) {
 		return undef;
 	}
@@ -371,7 +381,6 @@ sub N4HMODULE_Parse($$) {
 	}
 
 	my $hash = $modules{N4HMODULE}{defptr}{$object};
-    Log3 $hash, 5, "N4HMODULE (parse): $msg";
 	
 	if (!$hash) {
 		$object = $objsrc;
@@ -379,13 +388,17 @@ sub N4HMODULE_Parse($$) {
 		}
 
 	if(!$hash) {
-		my $ret = "Undefined ObjectAddress ($object)";
+		my $ret = "Undefined ObjectAddress (MI$ipsrc) ($object) ($ipdst) ($ddata) ";
+		Log3 $hash, 5, "N4HMODULE (parse): $ret - $msg";
 		return undef;
 	}	
 		
 		my $devtype = $hash->{OT};
 
 		N4HMODULE_ParsePayload($hash, $devtype, $ipsrc, $objsrc, $ddata);
+
+		my $ret = "(MI$ipsrc) ($object) ($ipdst) ($ddata) ";
+		Log3 $hash, 5, "N4HMODULE (parse): $ret - $msg";
 		return $hash->{NAME};
 
 }
@@ -739,7 +752,7 @@ sub N4HMODULE_paramToText($@) {
 	
 # 	+++++++++++++++++++ Licht analog - IN_HW_NR_IS_LICHT_ANALOG
 	if (hex(substr($ddata,2,2)) == 5 ){
-		$rettype = "Brightness";
+		$rettype = "brightness";
 	}	
 
 # 	+++++++++++++++++++ Uhrzeit - IN_HW_NR_IS_CLOCK
@@ -849,7 +862,7 @@ sub N4HMODULE_Set($@) {
     my $cmd  = shift(@a);
 	my $ext  = shift(@a);
 	
-#	Log3 $hash, 5, "N4HMODULE (set): (Name: $name) (CMD: $cmd) (ext: $ext)";
+	Log3 $hash, 5, "N4HMODULE (set): (Name: $name) (CMD: $cmd) (ext: $ext)";
 
 	my $ot 			= $hash->{OT};
 	my $ipdst		= $hash->{OBJADR};
@@ -985,9 +998,6 @@ sub N4HMODULE_Get($$@) {
 	my $ipdst		= $hash->{OBJADR};
 	my $ddata 		= "";
 	my $fieldcmd	= "";
-	my $list 	    = "";
-
-	my $list = "desired-temperature:noArg";
 
 	return "\"get $name\" needs at least one argument" unless(defined($opt));