2
0
mirror of https://github.com/fhem/fhem-mirror.git synced 2025-03-03 04:36:36 +00:00

73_AMADCommBridge: change package code

git-svn-id: https://svn.fhem.de/fhem/trunk@19640 2b470e98-0d58-463d-a4d8-8e2adae1ed80
This commit is contained in:
LeonGaultier 2019-06-18 14:08:51 +00:00
parent da6ca11533
commit 80c6225365
3 changed files with 146 additions and 118 deletions

View File

@ -1,5 +1,6 @@
# 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.
- feature: 73_AMADCommBridge: change package code
- feature: 42_AptToDate: change every package code
- feature: 73_AutoShuttersControl: change every package code
- feature: 73_AMADCommBridge: try to use JSON::MaybeXS wrapper for chance of

View File

@ -58,65 +58,20 @@
##
##
package main;
use strict;
use warnings;
use FHEM::Meta;
my $modulversion = '4.4.2';
my $flowsetversion = '4.4.1';
sub AMADCommBridge_Initialize($) {
my ($hash) = @_;
# Provider
$hash->{ReadFn} = 'FHEM::AMADCommBridge::Read';
$hash->{WriteFn} = 'FHEM::AMADCommBridge::Write';
$hash->{Clients} = ':AMADDevice:';
$hash->{MatchList} = { "1:AMADDevice" => '{"amad": \{"amad_id":.+}}' };
# Consumer
$hash->{SetFn} = 'FHEM::AMADCommBridge::Set';
$hash->{DefFn} = 'FHEM::AMADCommBridge::Define';
$hash->{UndefFn} = 'FHEM::AMADCommBridge::Undef';
$hash->{AttrFn} = 'FHEM::AMADCommBridge::Attr';
$hash->{AttrList} =
'fhemControlMode:trigger,setControl,thirdPartControl '
. 'debugJSON:0,1 '
. 'enableSubCalls:0,1 '
. 'disable:1 '
. 'allowfrom '
. 'fhemServerIP '
. $readingFnAttributes;
foreach my $d ( sort keys %{ $modules{AMADCommBridge}{defptr} } ) {
my $hash = $modules{AMADCommBridge}{defptr}{$d};
$hash->{VERSIONMODUL} = $modulversion;
$hash->{VERSIONFLOWSET} = $flowsetversion;
}
return FHEM::Meta::InitMod( __FILE__, $hash );
}
package FHEM::AMADCommBridge;
use strict;
use warnings;
use POSIX;
use FHEM::Meta;
use GPUtils qw(GP_Import)
; # wird für den Import der FHEM Funktionen aus der fhem.pl benötigt
my $missingModul = '';
use HttpUtils;
use TcpServerUtils;
our $MODULVERSION = 'v4.4.2';
our $FLOWSETVERSION = 'v4.4.1';
my $missingModul = '';
eval "use Encode qw(encode encode_utf8);1" or $missingModul .= 'Encode ';
# try to use JSON::MaybeXS wrapper
@ -188,9 +143,13 @@ if ($@) {
}
}
}
}
## Import der FHEM Funktionen
#-- Run before package compilation
BEGIN {
# Import from main context
GP_Import(
qw(readingsSingleUpdate
readingsBulkUpdate
@ -202,6 +161,7 @@ BEGIN {
CommandAttr
CommandDelete
CommandSet
readingFnAttributes
attr
AttrVal
ReadingsVal
@ -217,6 +177,59 @@ BEGIN {
);
}
# _Export - Export references to main context using a different naming schema
sub _Export {
no strict qw/refs/; ## no critic
my $pkg = caller(0);
my $main = $pkg;
$main =~ s/^(?:.+::)?([^:]+)$/main::$1\_/g;
foreach (@_) {
*{ $main . $_ } = *{ $pkg . '::' . $_ };
}
}
#-- Export to main context with different name
_Export(
qw(
Initialize
)
);
sub Initialize($) {
my ($hash) = @_;
# Provider
$hash->{ReadFn} = 'FHEM::AMADCommBridge::Read';
$hash->{WriteFn} = 'FHEM::AMADCommBridge::Write';
$hash->{Clients} = ':AMADDevice:';
$hash->{MatchList} = { "1:AMADDevice" => '{"amad": \{"amad_id":.+}}' };
# Consumer
$hash->{SetFn} = 'FHEM::AMADCommBridge::Set';
$hash->{DefFn} = 'FHEM::AMADCommBridge::Define';
$hash->{UndefFn} = 'FHEM::AMADCommBridge::Undef';
$hash->{AttrFn} = 'FHEM::AMADCommBridge::Attr';
$hash->{AttrList} =
'fhemControlMode:trigger,setControl,thirdPartControl '
. 'debugJSON:0,1 '
. 'enableSubCalls:0,1 '
. 'disable:1 '
. 'allowfrom '
. 'fhemServerIP '
. $readingFnAttributes;
foreach my $d ( sort keys %{ $modules{AMADCommBridge}{defptr} } ) {
my $hash = $modules{AMADCommBridge}{defptr}{$d};
$hash->{VERSIONMODUL} = $MODULVERSION;
$hash->{VERSIONFLOWSET} = $FLOWSETVERSION;
}
return FHEM::Meta::InitMod( __FILE__, $hash );
}
sub Define($$) {
my ( $hash, $def ) = @_;
@ -240,8 +253,8 @@ sub Define($$) {
$hash->{BRIDGE} = 1;
$hash->{PORT} = $port;
$hash->{VERSIONMODUL} = $modulversion;
$hash->{VERSIONFLOWSET} = $flowsetversion;
$hash->{VERSIONMODUL} = $MODULVERSION;
$hash->{VERSIONFLOWSET} = $FLOWSETVERSION;
CommandAttr( undef, $name . ' room AMAD' )
if ( AttrVal( $name, 'room', 'none' ) eq 'none' );
@ -898,7 +911,7 @@ sub ProcessRead($$) {
if ( $data =~ /currentFlowsetUpdate.xml/ ) {
$response =
qx(cat $fhempath/FHEM/lib/74_AMADautomagicFlowset_$flowsetversion.xml);
qx(cat $fhempath/FHEM/lib/74_AMADautomagicFlowset_$FLOWSETVERSION.xml);
$c = $hash->{CD};
print $c "HTTP/1.1 200 OK\r\n",
"Content-Type: text/plain\r\n",
@ -912,7 +925,7 @@ qx(cat $fhempath/FHEM/lib/74_AMADautomagicFlowset_$flowsetversion.xml);
elsif ( $data =~ /currentTaskersetUpdate.prj.xml/ ) {
$response =
qx(cat $fhempath/FHEM/lib/74_AMADtaskerset_$flowsetversion.prj.xml);
qx(cat $fhempath/FHEM/lib/74_AMADtaskerset_$FLOWSETVERSION.prj.xml);
$c = $hash->{CD};
print $c "HTTP/1.1 200 OK\r\n",
"Content-Type: text/plain\r\n",

View File

@ -44,68 +44,6 @@
#
#
package main;
use strict;
use warnings;
use FHEM::Meta;
my $modulversion = '4.4.2';
my $flowsetversion = '4.4.1';
sub AMADDevice_Initialize($) {
my ($hash) = @_;
$hash->{Match} = '{"amad": \{"amad_id":.+}}';
$hash->{SetFn} = 'FHEM::AMADDevice::Set';
$hash->{DefFn} = 'FHEM::AMADDevice::Define';
$hash->{UndefFn} = 'FHEM::AMADDevice::Undef';
$hash->{AttrFn} = 'FHEM::AMADDevice::Attr';
$hash->{NotifyFn} = 'FHEM::AMADDevice::Notify';
$hash->{ParseFn} = 'FHEM::AMADDevice::Parse';
$hash->{AttrList} =
'setOpenApp '
. 'checkActiveTask '
. 'setFullscreen:0,1 '
. 'setScreenOrientation:0,1 '
. 'setScreenBrightness:noArg '
. 'setBluetoothDevice '
. 'setScreenlockPIN '
. 'setScreenOnForTimer '
. 'setOpenUrlBrowser '
. 'setNotifySndFilePath '
. 'setTtsMsgSpeed '
. 'setTtsMsgLang:de,en '
. 'setTtsMsgVol '
. 'setUserFlowState '
. 'setVolUpDownStep:1,2,4,5 '
. 'setVolMax '
. 'setVolFactor:2,3,4,5 '
. 'setNotifyVolMax '
. 'setRingSoundVolMax '
. 'setAPSSID '
. 'root:0,1 '
. 'disable:1 '
. 'IODev '
. 'remoteServer:Automagic,Autoremote,TNES,other '
. 'setTakeScreenshotResolution:1280x720,1920x1080,1920x1200 '
. 'setTakePictureResolution:800x600,1024x768,1280x720,1600x1200,1920x1080 '
. 'setTakePictureCamera:Back,Front '
. $readingFnAttributes;
foreach my $d ( sort keys %{ $modules{AMADDevice}{defptr} } ) {
my $hash = $modules{AMADDevice}{defptr}{$d};
$hash->{VERSIONMODUL} = $modulversion;
$hash->{VERSIONFLOWSET} = $flowsetversion;
}
return FHEM::Meta::InitMod( __FILE__, $hash );
}
## unserer packagename
package FHEM::AMADDevice;
@ -115,12 +53,12 @@ use POSIX;
use FHEM::Meta;
use Data::Dumper; #only for Debugging
use GPUtils qw(GP_Import)
; # wird für den Import der FHEM Funktionen aus der fhem.pl benötigt
our $MODULVERSION = 'v4.4.2';
our $FLOWSETVERSION = 'v4.4.1';
my $missingModul = '';
eval "use Encode qw(encode encode_utf8);1" or $missingModul .= 'Encode ';
# try to use JSON::MaybeXS wrapper
@ -192,9 +130,13 @@ if ($@) {
}
}
}
}
## Import der FHEM Funktionen
#-- Run before package compilation
BEGIN {
# Import from main context
GP_Import(
qw(readingsSingleUpdate
readingsBulkUpdate
@ -204,6 +146,7 @@ BEGIN {
CommandDeleteReading
defs
modules
readingFnAttributes
Log3
CommandAttr
attr
@ -223,6 +166,77 @@ BEGIN {
);
}
# _Export - Export references to main context using a different naming schema
sub _Export {
no strict qw/refs/; ## no critic
my $pkg = caller(0);
my $main = $pkg;
$main =~ s/^(?:.+::)?([^:]+)$/main::$1\_/g;
foreach (@_) {
*{ $main . $_ } = *{ $pkg . '::' . $_ };
}
}
#-- Export to main context with different name
_Export(
qw(
Initialize
)
);
sub Initialize($) {
my ($hash) = @_;
$hash->{Match} = '{"amad": \{"amad_id":.+}}';
$hash->{SetFn} = 'FHEM::AMADDevice::Set';
$hash->{DefFn} = 'FHEM::AMADDevice::Define';
$hash->{UndefFn} = 'FHEM::AMADDevice::Undef';
$hash->{AttrFn} = 'FHEM::AMADDevice::Attr';
$hash->{NotifyFn} = 'FHEM::AMADDevice::Notify';
$hash->{ParseFn} = 'FHEM::AMADDevice::Parse';
$hash->{AttrList} =
'setOpenApp '
. 'checkActiveTask '
. 'setFullscreen:0,1 '
. 'setScreenOrientation:0,1 '
. 'setScreenBrightness:noArg '
. 'setBluetoothDevice '
. 'setScreenlockPIN '
. 'setScreenOnForTimer '
. 'setOpenUrlBrowser '
. 'setNotifySndFilePath '
. 'setTtsMsgSpeed '
. 'setTtsMsgLang:de,en '
. 'setTtsMsgVol '
. 'setUserFlowState '
. 'setVolUpDownStep:1,2,4,5 '
. 'setVolMax '
. 'setVolFactor:2,3,4,5 '
. 'setNotifyVolMax '
. 'setRingSoundVolMax '
. 'setAPSSID '
. 'root:0,1 '
. 'disable:1 '
. 'IODev '
. 'remoteServer:Automagic,Autoremote,TNES,other '
. 'setTakeScreenshotResolution:1280x720,1920x1080,1920x1200 '
. 'setTakePictureResolution:800x600,1024x768,1280x720,1600x1200,1920x1080 '
. 'setTakePictureCamera:Back,Front '
. $readingFnAttributes;
foreach my $d ( sort keys %{ $modules{AMADDevice}{defptr} } ) {
my $hash = $modules{AMADDevice}{defptr}{$d};
$hash->{VERSIONMODUL} = $MODULVERSION;
$hash->{VERSIONFLOWSET} = $FLOWSETVERSION;
}
return FHEM::Meta::InitMod( __FILE__, $hash );
}
sub Define($$) {
my ( $hash, $def ) = @_;
@ -245,8 +259,8 @@ sub Define($$) {
$hash->{HOST} = $host;
$hash->{AMAD_ID} = $amad_id;
$hash->{VERSIONMODUL} = $modulversion;
$hash->{VERSIONFLOWSET} = $flowsetversion;
$hash->{VERSIONMODUL} = $MODULVERSION;
$hash->{VERSIONFLOWSET} = $FLOWSETVERSION;
$hash->{NOTIFYDEV} = 'global,' . $name;
$hash->{MODEL} = $remoteServer;