2
0
mirror of https://github.com/fhem/fhem-mirror.git synced 2025-03-03 16:56:54 +00:00

73_AutoShuttersControl: change every package code

git-svn-id: https://svn.fhem.de/fhem/trunk@19638 2b470e98-0d58-463d-a4d8-8e2adae1ed80
This commit is contained in:
LeonGaultier 2019-06-18 13:28:42 +00:00
parent 539b042bdc
commit aa173b3b8d
2 changed files with 80 additions and 59 deletions

View File

@ -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.
- feature: 73_AutoShuttersControl: change every package code
- feature: 73_AMADCommBridge: try to use JSON::MaybeXS wrapper for chance of - feature: 73_AMADCommBridge: try to use JSON::MaybeXS wrapper for chance of
better performance + open code better performance + open code
- bugfix: 73_AutoShuttersControl: fix many bugs, code expand's and new - bugfix: 73_AutoShuttersControl: fix many bugs, code expand's and new

View File

@ -46,64 +46,11 @@ package main;
use strict; use strict;
use warnings; use warnings;
use FHEM::Meta;
my $version = '0.6.18';
sub AutoShuttersControl_Initialize($) {
my ($hash) = @_;
# ### alte Attribute welche entfernt werden
# my $oldAttr =
# 'ASC_temperatureSensor '
# . 'ASC_temperatureReading '
# . 'ASC_residentsDevice '
# . 'ASC_residentsDeviceReading '
# . 'ASC_rainSensorDevice '
# . 'ASC_rainSensorReading '
# . 'ASC_rainSensorShuttersClosedPos:0,10,20,30,40,50,60,70,80,90,100 '
# . 'ASC_brightnessMinVal '
# . 'ASC_brightnessMaxVal ';
## Da ich mit package arbeite müssen in die Initialize für die jeweiligen hash Fn Funktionen der Funktionsname
# und davor mit :: getrennt der eigentliche package Name des Modules
$hash->{SetFn} = 'FHEM::AutoShuttersControl::Set';
$hash->{GetFn} = 'FHEM::AutoShuttersControl::Get';
$hash->{DefFn} = 'FHEM::AutoShuttersControl::Define';
$hash->{NotifyFn} = 'FHEM::AutoShuttersControl::Notify';
$hash->{UndefFn} = 'FHEM::AutoShuttersControl::Undef';
$hash->{AttrFn} = 'FHEM::AutoShuttersControl::Attr';
$hash->{AttrList} =
'ASC_tempSensor '
. 'ASC_brightnessDriveUpDown '
. 'ASC_autoShuttersControlMorning:on,off '
. 'ASC_autoShuttersControlEvening:on,off '
. 'ASC_autoShuttersControlComfort:on,off '
. 'ASC_residentsDev '
. 'ASC_rainSensor '
. 'ASC_autoAstroModeMorning:REAL,CIVIL,NAUTIC,ASTRONOMIC,HORIZON '
. 'ASC_autoAstroModeMorningHorizon:-9,-8,-7,-6,-5,-4,-3,-2,-1,0,1,2,3,4,5,6,7,8,9 '
. 'ASC_autoAstroModeEvening:REAL,CIVIL,NAUTIC,ASTRONOMIC,HORIZON '
. 'ASC_autoAstroModeEveningHorizon:-9,-8,-7,-6,-5,-4,-3,-2,-1,0,1,2,3,4,5,6,7,8,9 '
. 'ASC_freezeTemp:-5,-4,-3,-2,-1,0,1,2,3,4,5 '
. 'ASC_shuttersDriveOffset '
. 'ASC_twilightDevice '
. 'ASC_windSensor '
. 'ASC_expert:1 '
. 'ASC_blockAscDrivesAfterManual:0,1 '
. 'ASC_debug:1 '
# . $oldAttr
. $readingFnAttributes;
$hash->{NotifyOrderPrefix} = '51-'; # Order Nummer für NotifyFn
return FHEM::Meta::InitMod( __FILE__, $hash );
}
sub ascAPIget($;$) { sub ascAPIget($;$) {
my ( $getCommand, $shutterDev ) = @_; my ( $getCommand, $shutterDev ) = @_;
return FHEM::AutoShuttersControl::ascAPIget( $getCommand, $shutterDev ); return AutoShuttersControl_ascAPIget( $getCommand, $shutterDev );
} }
## unserer packagename ## unserer packagename
@ -112,15 +59,14 @@ package FHEM::AutoShuttersControl;
use strict; use strict;
use warnings; use warnings;
use POSIX; use POSIX;
use utf8;
use FHEM::Meta; use FHEM::Meta;
use GPUtils qw(:all) use GPUtils qw(:all)
; # wird für den Import der FHEM Funktionen aus der fhem.pl benötigt ; # wird für den Import der FHEM Funktionen aus der fhem.pl benötigt
use Data::Dumper; #only for Debugging use Data::Dumper; #only for Debugging
use Date::Parse; use Date::Parse;
our $VERSION = 'v0.6.19';
# my $missingModul = '';
# eval "use JSON qw(decode_json encode_json);1" or $missingModul .= 'JSON ';
# try to use JSON::MaybeXS wrapper # try to use JSON::MaybeXS wrapper
# for chance of better performance + open code # for chance of better performance + open code
@ -194,9 +140,13 @@ if ($@) {
} }
## Import der FHEM Funktionen ## Import der FHEM Funktionen
#-- Run before package compilation
BEGIN { BEGIN {
# Import from main context
GP_Import( GP_Import(
qw(devspec2array qw(
devspec2array
readingsSingleUpdate readingsSingleUpdate
readingsBulkUpdate readingsBulkUpdate
readingsBulkUpdateIfChanged readingsBulkUpdateIfChanged
@ -210,6 +160,7 @@ BEGIN {
CommandDeleteAttr CommandDeleteAttr
CommandDeleteReading CommandDeleteReading
CommandSet CommandSet
readingFnAttributes
AttrVal AttrVal
ReadingsVal ReadingsVal
Value Value
@ -230,6 +181,25 @@ 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
ascAPIget
)
);
## Die Attributsliste welche an die Rolläden verteilt wird. Zusammen mit Default Werten ## Die Attributsliste welche an die Rolläden verteilt wird. Zusammen mit Default Werten
my %userAttrList = ( my %userAttrList = (
'ASC_Mode_Up:absent,always,off,home' => '-', 'ASC_Mode_Up:absent,always,off,home' => '-',
@ -319,6 +289,56 @@ sub ascAPIget($;$) {
} }
} }
sub Initialize($) {
my ($hash) = @_;
# ### alte Attribute welche entfernt werden
# my $oldAttr =
# 'ASC_temperatureSensor '
# . 'ASC_temperatureReading '
# . 'ASC_residentsDevice '
# . 'ASC_residentsDeviceReading '
# . 'ASC_rainSensorDevice '
# . 'ASC_rainSensorReading '
# . 'ASC_rainSensorShuttersClosedPos:0,10,20,30,40,50,60,70,80,90,100 '
# . 'ASC_brightnessMinVal '
# . 'ASC_brightnessMaxVal ';
## Da ich mit package arbeite müssen in die Initialize für die jeweiligen hash Fn Funktionen der Funktionsname
# und davor mit :: getrennt der eigentliche package Name des Modules
$hash->{SetFn} = 'FHEM::AutoShuttersControl::Set';
$hash->{GetFn} = 'FHEM::AutoShuttersControl::Get';
$hash->{DefFn} = 'FHEM::AutoShuttersControl::Define';
$hash->{NotifyFn} = 'FHEM::AutoShuttersControl::Notify';
$hash->{UndefFn} = 'FHEM::AutoShuttersControl::Undef';
$hash->{AttrFn} = 'FHEM::AutoShuttersControl::Attr';
$hash->{AttrList} =
'ASC_tempSensor '
. 'ASC_brightnessDriveUpDown '
. 'ASC_autoShuttersControlMorning:on,off '
. 'ASC_autoShuttersControlEvening:on,off '
. 'ASC_autoShuttersControlComfort:on,off '
. 'ASC_residentsDev '
. 'ASC_rainSensor '
. 'ASC_autoAstroModeMorning:REAL,CIVIL,NAUTIC,ASTRONOMIC,HORIZON '
. 'ASC_autoAstroModeMorningHorizon:-9,-8,-7,-6,-5,-4,-3,-2,-1,0,1,2,3,4,5,6,7,8,9 '
. 'ASC_autoAstroModeEvening:REAL,CIVIL,NAUTIC,ASTRONOMIC,HORIZON '
. 'ASC_autoAstroModeEveningHorizon:-9,-8,-7,-6,-5,-4,-3,-2,-1,0,1,2,3,4,5,6,7,8,9 '
. 'ASC_freezeTemp:-5,-4,-3,-2,-1,0,1,2,3,4,5 '
. 'ASC_shuttersDriveOffset '
. 'ASC_twilightDevice '
. 'ASC_windSensor '
. 'ASC_expert:1 '
. 'ASC_blockAscDrivesAfterManual:0,1 '
. 'ASC_debug:1 '
# . $oldAttr
. $readingFnAttributes;
$hash->{NotifyOrderPrefix} = '51-'; # Order Nummer für NotifyFn
return FHEM::Meta::InitMod( __FILE__, $hash );
}
sub Define($$) { sub Define($$) {
my ( $hash, $def ) = @_; my ( $hash, $def ) = @_;
my @a = split( '[ \t][ \t]*', $def ); my @a = split( '[ \t][ \t]*', $def );
@ -338,7 +358,7 @@ sub Define($$) {
my $name = $a[0]; my $name = $a[0];
$hash->{VERSION} = $version; $hash->{VERSION} = $VERSION;
$hash->{MID} = 'da39a3ee5e6b4b0d3255bfef95601890afd80709' $hash->{MID} = 'da39a3ee5e6b4b0d3255bfef95601890afd80709'
; # eine Ein Eindeutige ID für interne FHEM Belange / nicht weiter wichtig ; # eine Ein Eindeutige ID für interne FHEM Belange / nicht weiter wichtig
$hash->{NOTIFYDEV} = 'global,' $hash->{NOTIFYDEV} = 'global,'