457 Commits

Author SHA1 Message Date
ae5057fbc5 Merge pull request 'patch-adv' (#121) from patch-adv into dev
Reviewed-on: #121
2022-12-20 14:20:57 +01:00
9cd0d364b4 change Copyright text
new year range
2022-12-20 14:17:08 +01:00
f216e1b308 Merge branch 'dev' of git.cooltux.net:FHEM/mod-AutoShuttersControl into dev 2022-12-20 13:56:59 +01:00
6f137256e0 Merge pull request 'fix selfdefense' (#120) from patch-selfdefense into dev
Reviewed-on: #120
2022-12-20 13:55:47 +01:00
cc5ef41e21 fix selfdefense
change selfdefense condition in SunRiseShuttersAfterTimerFn
2022-12-15 09:56:26 +01:00
587d4e4316 Merge branch 'dev' of https://github.com/fhem/AutoShuttersControl into dev 2022-11-17 10:13:20 +01:00
f517b72f23 Merge pull request #97 from riedel2/patch-1
Update 73_AutoShuttersControl.pm
2022-11-05 23:18:48 +01:00
ad5cbaac12 Update 73_AutoShuttersControl.pm
HORIZON option not yet added to german help
2022-11-05 21:52:39 +01:00
8da3b13bcc Merge pull request 'testing' (#119) from testing into main
Reviewed-on: #119
2022-08-30 18:20:26 +02:00
c09edf5496 Merge pull request 'dev' (#118) from dev into testing
Reviewed-on: #118
2022-08-30 18:20:03 +02:00
cd1c2c104a Merge pull request 'closes: #116' (#117) from patch-cant_locate_object_method into dev
Reviewed-on: #117
2022-08-30 18:13:21 +02:00
51256c1ed9 closes: #116
[Ticket: #116]
2022-08-30 18:12:01 +02:00
c0a7bfa6df Merge pull request 'patch-CommandRef' (#115) from patch-CommandRef into dev
Reviewed-on: #115
2022-08-29 13:31:17 +02:00
403936fe73 fix CommandRef ASC_Up and ASC_Down entry 2022-08-29 13:30:37 +02:00
5095c65d80 Merge pull request 'main' (#113) from main into testing
Reviewed-on: #113
2022-08-29 10:17:58 +02:00
0bd8d6273f Merge pull request 'dev' (#112) from dev into main
Reviewed-on: #112
2022-08-29 10:09:12 +02:00
c3b61def25 Merge pull request 'fix is in external trigger and shading is aktive' (#111) from patch-externalTriggerAndShading into dev
Reviewed-on: #111
2022-08-29 10:08:01 +02:00
9c096902e8 Merge branch 'dev' into patch-externalTriggerAndShading 2022-08-29 10:07:37 +02:00
6dfc92c35e Merge pull request 'fix little typo in ASC_WindParameter' (#110) from patch-Commandref into dev
Reviewed-on: #110
2022-08-29 10:00:58 +02:00
9994af6ca2 fix is in external trigger and shading is aktive
[Ticket: X]
2022-08-29 10:00:01 +02:00
eb85a74a07 fix little typo in ASC_WindParameter
[Ticket: no]
2022-08-29 09:43:06 +02:00
358c760b45 Merge pull request 'Change WindUnprotectionFn if ShuttersPlace awning' (#109) from patch-windIsDay into dev
Reviewed-on: #109
2022-08-29 09:27:13 +02:00
34a6a88401 Change WindUnprotectionFn if ShuttersPlace awning
[Ticket: X]
2022-08-29 09:25:34 +02:00
bb80fb5d3a Merge pull request 'fix ASC_Shading_BetweenTheTime Commandref entry' (#108) from patch-IsInTimeFn into dev
Reviewed-on: #108
2022-08-29 09:08:34 +02:00
2907e19d3b fix ASC_Shading_BetweenTheTime Commandref entry
[Ticket: no]
2022-08-29 08:45:51 +02:00
ae86468077 Merge pull request 'dev' (#107) from dev into main
Reviewed-on: #107
2022-08-29 07:45:43 +02:00
7cba141447 Merge pull request 'patch-regen' (#106) from patch-regen into dev
Reviewed-on: #106
2022-08-29 07:42:17 +02:00
f67d56e1cc expane rain and wind protection control
add condition for wind and rain protection

[Ticket: none]
2022-06-20 15:56:47 +02:00
527d72dd57 code review rain unprotection drive 2022-04-19 12:32:19 +02:00
459b8508ec Merge pull request 'dev' (#105) from dev into main
Reviewed-on: #105
2022-04-07 21:29:10 +02:00
ac87015478 Merge pull request 'patch-shading_markise_IsDay' (#104) from patch-shading_markise_IsDay into dev
Reviewed-on: #104
2022-04-07 21:27:00 +02:00
26105fa434 more Log out with information 2022-04-07 21:25:03 +02:00
15be0a6885 observed ShuttersPlace awning for shading condition
[Ticket: no]
2022-03-24 09:54:55 +01:00
cca6e90303 Merge pull request 'dev' (#102) from dev into main
Reviewed-on: #102
2022-03-04 07:03:43 +01:00
de5d6cbc6a Merge pull request 'patch-informationTable' (#101) from patch-informationTable into dev
Reviewed-on: #101
2022-03-04 07:03:20 +01:00
4925e654ec change ShuttersInformation fn
add table frame and whitespace-character to ShuttersInformation

[Ticket: no]
2022-03-04 07:01:54 +01:00
97caf64308 Merge pull request 'dev' (#100) from dev into main
Reviewed-on: #100
2022-03-02 16:49:31 +01:00
6bf2b17d6f Merge pull request 'patch-codeRewrite' (#99) from patch-codeRewrite into dev
Reviewed-on: #99
2022-03-02 16:48:54 +01:00
fb27bedf48 fix bug if comfotPos 0
if Comfort_Pos 0 and window is open then shutter is no drive

[Ticket: no]
2022-03-02 16:47:56 +01:00
f52187ad35 Merge pull request 'testing' (#98) from testing into main
Reviewed-on: #98
2022-01-15 15:46:42 +01:00
103697184e Merge pull request 'dev' (#97) from dev into testing
Reviewed-on: #97
2022-01-15 15:46:13 +01:00
c9894453bb Merge pull request 'patch-wrongReadingsNameFromSetter' (#96) from patch-wrongReadingsNameFromSetter into dev
Reviewed-on: #96
2022-01-15 15:42:33 +01:00
14eee0e6dd fix setter readings Bug 2022-01-15 15:39:29 +01:00
9545dda125 Merge pull request 'testing' (#94) from testing into main
Reviewed-on: #94
2022-01-14 08:48:29 +01:00
3135a27c63 Merge pull request 'dev' (#93) from dev into testing
Reviewed-on: #93
2022-01-10 11:10:09 +01:00
13689963f1 Merge pull request 'patch-codeRewrite' (#92) from patch-codeRewrite into dev
Reviewed-on: #92
2022-01-10 11:09:39 +01:00
d8881ff6d1 change default value for ASC_advEndDate 2022-01-10 11:07:42 +01:00
12f48e98b5 fix condition 2022-01-10 11:04:43 +01:00
a1d19a797d fix error in adv condition 2022-01-10 11:01:07 +01:00
f1f265b89a add end of advent season variable
change attribut ASC_advDate to ASC_advStartDate
2022-01-10 10:43:51 +01:00
ca99e2bd0c Merge pull request 'dev' (#91) from dev into testing
Reviewed-on: #91
2022-01-02 08:52:18 +01:00
29e3a1a8d7 Merge pull request 'patch-codeRewrite' (#90) from patch-codeRewrite into dev
Reviewed-on: #90
2022-01-02 08:51:45 +01:00
e02395a82f no critic for perlcritic parser 2022-01-02 08:49:58 +01:00
663ce748e2 bugfix 2022-01-02 08:31:38 +01:00
d35dda835a coderewrite 2022-01-02 08:26:14 +01:00
47be49617d Merge pull request 'dev' (#89) from dev into testing
Reviewed-on: #89
2022-01-02 07:56:13 +01:00
0dc0a9c6e4 Merge pull request 'patch-codeRewrite' (#88) from patch-codeRewrite into dev
Reviewed-on: #88
2022-01-02 07:55:49 +01:00
79d369b9f5 little bugfix 2022-01-02 07:55:00 +01:00
8109cd7ebe change condition syntax of SetFn 2022-01-02 07:49:03 +01:00
842e41e3dc export object variable 2022-01-02 07:13:04 +01:00
35a4f60a53 chnage require@ISA to use base 2022-01-02 06:42:49 +01:00
ef650b2d4b Merge pull request 'testing' (#87) from testing into dev
Reviewed-on: #87
2022-01-01 20:25:58 +01:00
bf773ca2d7 Merge pull request 'bugfix' (#86) from patch-fix into testing
Reviewed-on: #86
2022-01-01 20:22:17 +01:00
ae88630277 bugfix 2022-01-01 20:21:26 +01:00
f811cfd87f Merge pull request 'dev' (#85) from dev into testing
Reviewed-on: #85
2022-01-01 09:46:43 +01:00
1a71c63652 Merge pull request 'change version' (#84) from patch-newVersion into dev
Reviewed-on: #84
2022-01-01 09:41:47 +01:00
7d3d11d1e2 change version 2022-01-01 09:39:28 +01:00
1eeeb85eaf Merge pull request 'patch_issues73-DriveUpDriveDownRoommate' (#83) from patch_issues73-DriveUpDriveDownRoommate into dev
Reviewed-on: #83
2022-01-01 09:29:52 +01:00
397f949a21 fix FHEM::Automation::ShuttersControl::Helper::GetAttrValues 2022-01-01 09:22:19 +01:00
4ea1db3aa0 fix bareword sunsettime 2022-01-01 09:08:49 +01:00
004a15ea42 fix error wrong hash sunrisetime bareword 2022-01-01 09:04:09 +01:00
9a1b6acad3 change modul header 2022-01-01 08:55:31 +01:00
4aa24587a5 Merge branch 'dev' into patch_issues73-DriveUpDriveDownRoommate 2021-12-11 14:24:14 +01:00
c76280639f Merge pull request 'patch_issues75-ShadingOutBreaksExternalTrigger' (#80) from patch_issues75-ShadingOutBreaksExternalTrigger into dev
Reviewed-on: #80
2021-12-09 10:30:43 +01:00
a3c023711c Merge branch 'dev' into patch_issues75-ShadingOutBreaksExternalTrigger 2021-12-09 10:29:22 +01:00
c6e88f2d45 Merge pull request 'patch_issues67-Lockout_and_BlockingManualTime' (#79) from patch_issues67-Lockout_and_BlockingManualTime into dev
Reviewed-on: #79
2021-12-09 10:20:43 +01:00
f0f5cbde4b fix syntax error 2021-12-08 11:45:22 +01:00
5928276b74 fix little bug is shutter position above the window tilted position
and shutters place is terrace and sybType is twoState and event is
window open
2021-12-08 11:35:55 +01:00
32a3ac9d13 change condition for BlockingAfterManualDrive in WendowRec Section 2021-12-08 11:14:46 +01:00
ef590e002e change logical in condition 2021-12-05 11:01:19 +01:00
427018ab46 bugfix 2021-12-05 07:44:51 +01:00
89431a2af3 change hardBlock action if shutters pos close 2021-12-04 20:48:53 +01:00
39c7ec3dc5 Merge branch 'devel' into patch_issues75-ShadingOutBreaksExternalTrigger 2021-12-04 10:57:50 +01:00
37044b2316 Merge branch 'devel' into patch_issues73-DriveUpDriveDownRoommate 2021-12-04 10:57:06 +01:00
a44fffe94e Merge branch 'devel' into patch_issues67-Lockout_and_BlockingManualTime 2021-12-04 10:56:05 +01:00
870f2be5d8 Merge pull request 'fix: #77' (#78) from patch_issues77-DriveDownResidentsHomeButAutoControlOFF into devel
Reviewed-on: #78
2021-12-04 10:53:12 +01:00
36669f1405 fix: #77 2021-12-04 10:50:29 +01:00
a61458cfc2 fix logical issues 2021-12-04 10:22:22 +01:00
8c17eb5f6a change condition of Window events if the place is terrace 2021-12-04 09:55:46 +01:00
d87ddb146c all shading functions are disabled when external trigger active 2021-12-04 09:28:38 +01:00
58b2f20f19 fix condition 2021-12-04 09:07:31 +01:00
301fd32048 change condition for GetUp roommate. no shutters drive if you have been on absent or gone 2021-12-04 08:36:56 +01:00
0255be94b5 Merge pull request 'patch-commandrefChangeToId' (#74) from patch-commandrefChangeToId into devel
Reviewed-on: #74
2021-11-29 15:26:57 +01:00
4773fd0ea0 add commandref change of Beta_User 2021-11-29 15:20:33 +01:00
1ce3805427 Merge branch 'devel' of git.cooltux.net:FHEM/mod-AutoShuttersControl into devel 2021-11-25 08:26:44 +01:00
5f00d33fa9 Merge pull request 'devel' (#72) from jochenluedering/mod-AutoShuttersControl:devel into devel
Reviewed-on: #72
2021-11-22 22:38:45 +01:00
da79e25929 rain un-protect: keep awning open at night 2021-11-22 22:20:05 +01:00
0b22ac9e12 Merge pull request 'devel' (#1) from FHEM/mod-AutoShuttersControl:devel into devel
Reviewed-on: jochenluedering/mod-AutoShuttersControl#1
2021-11-22 22:08:16 +01:00
e6a01cdb18 Merge pull request 'merge from testing' (#71) from testing into master
Reviewed-on: #71
2021-11-14 14:00:43 +01:00
fb44ff9f1a Merge pull request 'merge from devel' (#70) from devel into testing
Reviewed-on: #70
2021-11-14 13:54:53 +01:00
9663b2dd43 Merge pull request 'closed: #68' (#69) from fix-Umlaute-uninitialized-value into devel
Reviewed-on: #69
2021-11-14 13:49:04 +01:00
d6cb059eaf closed: #68
fix bug PERL WARNING: Use of uninitialized value within %charHash in
substitution iterator at lib/FHEM/Automation/ShuttersControl/Helper.pm
line 1021 is FHEM startup.
2021-11-14 13:44:35 +01:00
6774e3a918 Merge pull request 'testing' (#64) from testing into master
Reviewed-on: #64
2021-10-27 10:01:55 +02:00
e28fad13d7 Merge pull request 'devel' (#63) from devel into testing
Reviewed-on: #63
2021-10-27 10:01:35 +02:00
1c1ac77851 Merge pull request 'patch-commandref' (#62) from patch-commandref into devel
Reviewed-on: #62
2021-10-27 10:01:13 +02:00
1ac38a7216 fix commandref 2021-10-27 09:59:53 +02:00
8d6044c404 Merge pull request 'testing' (#61) from testing into master
Reviewed-on: #61
2021-10-27 09:46:54 +02:00
fcce22b102 Merge pull request 'devel' (#60) from devel into testing
Reviewed-on: #60
2021-10-27 09:46:23 +02:00
4b5b03a8fc Merge pull request 'patch-renameConntrolTemplateVariables' (#59) from patch-renameConntrolTemplateVariables into devel
Reviewed-on: #59
2021-10-27 09:45:51 +02:00
f412e88325 change names of CommandTemplate variables, change commadref for
CommandTemplate
2021-10-27 09:43:16 +02:00
0dca852ad0 Merge pull request 'merge testing to master' (#58) from testing into master
Reviewed-on: #58
2021-10-27 08:49:21 +02:00
8ea4101747 Merge pull request 'merge from devel to testing' (#57) from devel into testing
Reviewed-on: #57
2021-10-27 08:43:44 +02:00
b9a7328661 Merge pull request 'closed: #53 Patch beliebigen Fahrbefehl zulassen' (#54) from patch-implementationCommandTemplate into devel
Reviewed-on: #54
2021-10-27 08:37:27 +02:00
f03a7d690f Merge branch 'devel' into patch-implementationCommandTemplate 2021-10-26 20:20:15 +02:00
5ccceaba16 add example with owner perlfunction for ASC_CommandTemplate 2021-10-26 19:42:19 +02:00
54450962ac Merge pull request 'closed: #55 fix ASC_BlockingTime_beforNightClose wird bei Regen(-schutz) ignoriert' (#56) from patch-rainprotection_blockingtime into devel
Reviewed-on: #56
2021-10-26 19:31:28 +02:00
9409c60400 change ASC_BlockingTime_beforNightClose and
ASC_BlockingTime_beforDayOpen Attributs
2021-10-26 19:29:29 +02:00
75f5b6bf01 add drive reason to CommandTemplte varibales 2021-10-26 14:05:06 +02:00
98edf0c5f6 change commandref 2021-10-25 19:54:51 +02:00
a9a47f9e70 fix ASC_BlockingTime_beforNightClose wird bei Regen(-schutz) ignoriert 2021-10-25 19:25:13 +02:00
f2b7e8490f fix Can't locate object method "getCommandTemplte" 2021-10-25 18:43:30 +02:00
3d7f9fcf92 add commandref enrty for ASC_CommandTemplate Attribut 2021-10-25 18:24:17 +02:00
e037a12879 change version 2021-10-25 17:58:08 +02:00
096e4ab815 Patch beliebigen Fahrbefehl zulassen #53 2021-10-25 17:51:37 +02:00
feba24bf99 Merge pull request 'closed: #40 Terrasse schließen Prüfung auf externe Trigger zum nachholen der Fahrt' (#52) from patch-ExternalTrigger_TerraceClose into devel
Reviewed-on: #52
2021-10-25 10:04:47 +02:00
e5a6bbdbe5 Terrasse schließen Prüfung auf externe Trigger zum nachholen der Fahrt 2021-10-25 10:02:29 +02:00
a66daa7d5a Merge pull request 'close: #50 expand regex to detect position event with dot's' (#51) from patch-driveDetection into devel
Reviewed-on: #51
2021-10-24 18:33:45 +02:00
617b7a7531 expand regex to detect position event with dot's 2021-10-24 17:16:11 +02:00
f498829347 fix set rainstate by night 2021-10-23 10:08:37 +02:00
4cc3ecc40a Merge branch 'patch-shadingOut_externalTrigger' into devel 2021-10-21 09:33:11 +02:00
95446cc91e change code for ExternlTriggerStatus. 2021-10-09 08:10:09 +02:00
63393b4cd4 add EG_window to ShuttersPlace and expand ProcessingResidents Fn for
close Shutter by open window then gone
2021-10-09 07:53:53 +02:00
6a62226a39 Merge branch 'testing' 2021-10-09 07:12:54 +02:00
cbd058773d Merge branch 'devel' into testing 2021-10-09 07:12:37 +02:00
1016b7d087 change version and contact information in all files 2021-10-09 07:11:52 +02:00
649d21f19b Merge branch 'devel' into testing 2021-10-08 11:44:44 +02:00
93bd0cd22e fix rain 2021-10-08 11:44:13 +02:00
62a4a249b4 Merge pull request 'devel' (#48) from devel into testing
Reviewed-on: #48
2021-10-08 10:02:12 +02:00
e66aa0cb4d Merge pull request 'close: #46' (#47) from patch-rainProtection into devel
Reviewed-on: #47
2021-10-08 09:58:58 +02:00
34afd51a11 fix: #46 2021-10-08 09:55:44 +02:00
a2c878e333 Merge branch 'devel' into testing 2021-10-01 08:09:29 +02:00
bb1d139ed7 Merge pull request 'drive awning to open position if (wind unprotected) at night' (#45) from jochenluedering/mod-AutoShuttersControl:devel into devel
Reviewed-on: #45
2021-09-29 08:36:42 +02:00
ef5b9a982e drive awning to open position if (wind unprotected) at night 2021-09-28 11:12:14 +02:00
4c1d6c7885 Merge branch 'devel' into testing 2021-09-14 09:51:23 +02:00
2b12b9ed10 fix Copyright 2021-09-14 09:50:44 +02:00
6babb451c9 Merge branch 'devel' into testing 2021-09-14 09:20:52 +02:00
9afc3ccf97 fix CVS ID Tag 2021-09-14 09:19:39 +02:00
bee5ff33ae Merge pull request #96 from rejoe2/devel
commandref fixes, esp. "name" => "id"
2021-09-14 08:50:45 +02:00
9ba046452a Add HMCCUDEV TYPE 2021-09-10 09:51:33 +02:00
5e60229c7a Add Shelly TYPE 2021-09-09 13:11:28 +02:00
8009a27869 use "id" format, add some missing info in english 2021-08-31 12:34:04 +02:00
0b048e7dc0 prepare vor use of "id" sections in commandref 2021-08-31 12:32:22 +02:00
bd6e901ca1 Merge pull request 'testing' (#39) from testing into master
Reviewed-on: #39
2021-06-02 11:53:51 +02:00
f36101f48a Merge pull request 'devel' (#38) from devel into testing
Reviewed-on: #38
2021-05-27 09:03:30 +02:00
f51cdf4943 Merge pull request 'patch-privacyDown_WindowCloseAfterNight' (#37) from patch-privacyDown_WindowCloseAfterNight into devel
Reviewed-on: #37
2021-05-27 09:00:55 +02:00
2c68ae8406 change version to v0.10.15 2021-05-27 08:55:48 +02:00
697cdd1089 add condition for window closed and status open and shuttersPlace
terrace
2021-05-25 07:58:53 +02:00
d3af20bc01 Merge branch 'patch-privacyDown_WindowCloseAfterNight' of git.cooltux.net:FHEM/mod-AutoShuttersControl into patch-privacyDown_WindowCloseAfterNight 2021-05-25 07:53:24 +02:00
7882128336 add condition for hardLock ne off and window closed at night 2021-05-24 11:32:09 +02:00
c25c395a5b fix #36 2021-05-24 11:15:08 +02:00
d89a05632b change version 2021-05-18 10:43:10 +02:00
879caa1b25 Merge pull request 'patch-raindelaiObject' (#34) from patch-raindelaiObject into devel
Reviewed-on: #34
2021-05-18 10:30:27 +02:00
f5004dbc93 change Code for rain protection 2021-05-18 09:58:00 +02:00
c1b71c12b4 change unprotection Code 2021-05-18 09:32:07 +02:00
93420b80f1 fix default value for rain waiting time 2021-05-18 09:01:27 +02:00
52fe367c81 fix Global symbol "$shutters" requires explicit package name 2021-05-18 08:50:21 +02:00
7b988a395d bugfix scalar 2021-05-18 08:48:38 +02:00
4d968405fd change remove InternalTimer Routine for Rain Unprotection 2021-05-18 08:42:49 +02:00
774fe63a26 add remove DelayTimer or set new then new rain protection trigger 2021-05-18 08:38:31 +02:00
aadc88c570 Close: #29
Merge branch 'patch-rainprotection' into devel
2021-05-17 14:28:08 +02:00
7f7fcae522 change function call 2021-05-17 14:17:46 +02:00
7454200c7a change object call methode 2021-05-17 14:14:58 +02:00
c5b1a03c65 bugfix 2021-05-17 14:09:13 +02:00
273e53fb83 change function name in function call 2021-05-17 14:05:28 +02:00
9e41936dcd bugfix 2021-05-17 10:17:15 +02:00
f6085b2df8 bugfix 2021-05-17 10:11:49 +02:00
4851ecb6a7 change package loading 2021-05-17 10:08:09 +02:00
df27f70161 add new file for git pre-commit 2021-05-17 10:02:19 +02:00
dd75295e94 fix syntax error line 1061, near "} return" 2021-05-11 06:19:05 +02:00
c3f7191f70 Merge pull request 'stop CreateSunRiseSetShuttersTimer fn processing if no DevHash found for' (#31) from NoShuttersDevHashGiven into devel
Reviewed-on: #31
2021-05-10 08:24:29 +02:00
70644d715d stop CreateSunRiseSetShuttersTimer fn processing if no DevHash found for
shutter device name
2021-05-10 08:21:00 +02:00
2012ec1fc3 change Code for Window closed then place is terrace 2021-04-29 12:20:49 +02:00
36285e57bb Implementation for rain unprotected delay drive,
split rain function in to new asc rain package
2021-04-27 08:55:10 +02:00
f1124548da fix $getModeUp declaration 2021-04-21 13:21:53 +02:00
9a3dd21e26 fix Logikfehler? siehe Forum
https://forum.fhem.de/index.php/topic,120390.msg1149463.html#msg1149463
2021-04-17 15:24:14 +02:00
489a7d829f fix ignore shading waiting time after set current state 2021-02-26 13:59:25 +01:00
4f2af22628 fix problem with brightness and weekend function 2021-02-03 11:34:33 +01:00
a0c08bdfc0 fix sytax error 2021-01-04 08:25:26 +01:00
c63f4d64d5 fix SleepPos after set party mode off if sleep pos configure 2021-01-04 08:17:09 +01:00
c6e25e391b patch from FunkOdyssey2001, problem with absent 2021-01-04 07:26:39 +01:00
bfeadd0bbf add use HTTP::Date for IsAdv Fn 2020-12-10 09:39:30 +01:00
ba4d2203f4 add commandref for AdvDate 2020-11-20 11:26:16 +01:00
07c4755845 add selection Adv Date, FirstAdvent or DeadSunday 2020-11-20 11:16:20 +01:00
98529d3c15 siehe #90 auf Github 2020-11-17 07:55:23 +01:00
cd080e1d4d condition and log output for bug no name given in readingsBeginUpdate 2020-11-09 07:07:15 +01:00
9eda91cac1 fix global shading on condition 2020-11-09 06:55:35 +01:00
c18f128722 add hook file 2020-11-09 06:41:31 +01:00
8e93599f3b change version 2020-11-08 07:58:38 +01:00
0289358b83 fix wrong package name for GetAttrValues() fn 2020-11-08 07:46:33 +01:00
4ceb3a1ab8 fix drive shutter then Roommate Event asleep but down mode is absent 2020-11-08 07:29:14 +01:00
e74c9a8b28 change Meta.pm inclusion 2020-10-28 13:15:14 +01:00
4604fcb0b0 change support mail 2020-10-23 07:20:34 +02:00
3bb26eb255 add use Meta in package main 2020-10-19 09:22:44 +02:00
b0805d0fc8 code style 2020-10-12 08:54:28 +02:00
b71a74b52e fix IsDay Fn for weekend condition 2020-10-12 07:44:54 +02:00
2c6f8bacab fix detected IsDay for Brightness 2020-10-05 13:52:38 +02:00
121b9063ea fixes: #25 2020-10-05 13:40:24 +02:00
5cfcd4de2b fix typo 2020-10-05 12:57:40 +02:00
1a8685eae3 fix little typo 2020-10-05 12:54:33 +02:00
b69493ac6f fix NotifyFn handling 2020-10-05 12:45:00 +02:00
31e2afe553 add shading deaktivated logic pro shutter 2020-10-05 12:29:01 +02:00
09fd5cd36b add set global shading off logic 2020-10-05 10:37:50 +02:00
a2d88bddf2 change default logic for ASC_BrightnessSensor and Morning, Evening drive
value.
none = -2 and -1 minimal value
2020-10-05 10:00:21 +02:00
7b55671166 move terrace block code in ShuttersControl.pm 2020-09-14 08:26:05 +02:00
61d9f29ad7 add new function to delete Brightness Average Array 2020-09-07 09:17:45 +02:00
3535042915 add feature
isNotDay and all condition for shading is true. shutter drive in the
morning from ClosedPos to Shading Pos
2020-09-04 14:26:24 +02:00
154f6a58de change Sunrise drive code to fix SelfDefense 2020-09-04 08:31:30 +02:00
70a56ddf3b fix bug in call IsAfterShuttersTimeBlocking()
wrong Package Kontext
2020-08-20 11:32:56 +02:00
7ef429c80f fix numeric eq 2020-08-18 08:39:00 +02:00
9439e3b2e2 change Version 2020-08-12 10:57:16 +02:00
95f520901a change from %k to %H for better compability with Strawberry Perl on
Windows
2020-08-12 10:55:29 +02:00
13134ebcdb fix Github #82 2020-08-10 10:56:50 +02:00
8a5a6cafdd fix Gifhub #79 2020-08-10 09:47:15 +02:00
fbca7af3c6 fix Github #77 2020-08-10 09:28:48 +02:00
7f88f4c82f change version 2020-08-06 14:30:58 +02:00
d1b04fcdce change logical for drive on shading then shutter pos is closed
change code in EventProcessingFunctions to call function
ShadingProcessingDriveCommand
2020-08-06 09:38:07 +02:00
0b4a5a0d4f fix window closed at night an ModeDown is roommate
shutter drive open
2020-08-04 08:21:31 +02:00
338db55e05 fix little typo 2020-07-26 17:30:57 +02:00
5d270eca3a fix Global symbol "$getClosedPos" requires explicit package 2020-07-26 17:28:39 +02:00
7a154a5f85 change Shading in Code,
fix shading drive if Shutters Closed
2020-07-26 17:16:59 +02:00
933b4f1c91 fix commandref for better understanding 2020-07-09 12:51:46 +02:00
ed1325e735 add new object function to condition between the time
then shading in
2020-07-09 12:26:52 +02:00
4792dcea10 fix little fn import bug 2020-07-09 11:19:47 +02:00
b0ff527957 add Global symbol $cmdFromAnalyze import 2020-07-09 11:13:31 +02:00
eb28fef84f add new attribut ASC_Shading_BetweenTheTime
for Shading In drive only between the Time
2020-07-09 11:09:49 +02:00
fa82a77665 add support for awning
control drive by shading out
2020-07-09 10:41:21 +02:00
84da158b64 fix wrong fn call 2020-07-09 09:23:44 +02:00
684f91b697 fix little bug 2020-07-09 09:02:20 +02:00
8329cf35d1 add import CheckASC_ConditionsForShadingFn fn from Shading
geändert:       lib/FHEM/Automation/ShuttersControl.pm
2020-07-09 08:56:46 +02:00
9eef44ca3a remove Shading import fn from lib/FHEM/Automation/ShuttersControl.pm
to lib/FHEM/Automation/ShuttersControl/EventProcessingFunctions.pm
2020-07-09 08:53:34 +02:00
27cf612b2f fix bug in fn export and import 2020-07-09 08:48:01 +02:00
58f86d05e0 fix little bug
add export for EventProcessingFunctions
2020-07-09 08:44:18 +02:00
a27233869b change control file 2020-07-09 08:29:41 +02:00
770be1d91e add new modul file for EventProcessing functions 2020-07-09 08:21:44 +02:00
f74ec772b9 import fn from main 2020-07-09 07:37:36 +02:00
00eeb93318 change code style 2020-07-08 22:24:58 +02:00
b7160fa8b4 fix little exporter bug 2020-07-08 22:13:56 +02:00
d9ae8152d1 remove little helper function to new Helper.pm Modul file 2020-07-08 22:05:38 +02:00
864138a2e3 change code for more shift 2020-07-08 22:04:48 +02:00
f8800e910b new module files, change rain and wind code
for multisensor
	geändert:       ShuttersControl.pm
	geändert:       ShuttersControl/Dev/Attr.pm
	neue Datei:     ShuttersControl/Helper.pm
	geändert:       ShuttersControl/Shading.pm
	geändert:       ShuttersControl/Shutters.pm
2020-07-08 20:46:21 +02:00
269288c24a change condition for multisensor to reading RegEx only
geändert:       lib/FHEM/Automation/ShuttersControl.pm
2020-07-08 11:34:28 +02:00
ea8813cd2c remove IsAfterShuttersManualBlocking condition for rain-protected
geändert:       lib/FHEM/Automation/ShuttersControl.pm
2020-07-08 10:52:22 +02:00
b6bb0af471 change condition in rain fn
geändert:       lib/FHEM/Automation/ShuttersControl.pm
2020-07-08 10:45:49 +02:00
11870789e1 fix EventProcessingRain val dry condition
geändert:       lib/FHEM/Automation/ShuttersControl.pm
2020-07-08 10:33:31 +02:00
468d5713b2 fix RegEx Bug 2020-07-08 10:27:59 +02:00
b8488ebdc2 fix return bug in condition 2020-07-08 10:16:33 +02:00
2850f6394f fix RegEx Bug 2020-07-08 10:12:05 +02:00
417ecbf8fd fix RegEx Bug 2020-07-08 10:08:01 +02:00
2bafc3d433 fix PERL WARNING: Argument "rain" isn't numeric in multiplication
geändert:       lib/FHEM/Automation/ShuttersControl/Dev/Attr.pm
2020-07-08 10:02:29 +02:00
a37b6eddb9 Merge branch 'master' into devel 2020-07-07 14:51:06 +02:00
b6034b7357 fix bug with wrong skalar in condition
geändert:       lib/FHEM/Automation/ShuttersControl.pm
2020-07-07 14:44:20 +02:00
4ffcc1a7ef Merge branch 'patch_master-multisensor' into devel 2020-07-07 14:42:17 +02:00
daf94c9483 change version 2020-07-06 09:42:01 +02:00
1efe3b576c change version 2020-07-06 09:36:34 +02:00
b928c021c2 Merge branch 'patch_master-multisensor' into devel 2020-07-06 09:35:52 +02:00
5df984048d add condition in Fn EventProcessingGeneral
to differentiate ASC device and other sensor device in NOTIFYDEV
2020-07-06 09:32:22 +02:00
c6b76320a4 Merge branch 'master' into devel 2020-07-04 11:22:14 +02:00
3f8397a6a2 fix drive condition for ASCenable and idleDetection 2020-07-04 11:14:14 +02:00
05479ffdd6 fix Global symbol "$hash" requires explicit package name
geändert:       lib/FHEM/Automation/ShuttersControl.pm
2020-07-03 13:36:59 +02:00
8812be8fca add delete and shutdown Fn
need to delete all Shutter timer then ASC delete
	geändert:       FHEM/73_AutoShuttersControl.pm
	geändert:       lib/FHEM/Automation/ShuttersControl.pm
2020-07-03 13:27:11 +02:00
924363fe18 fix shading out drive in open pos then shutter complete closed at night
geändert:       lib/FHEM/Automation/ShuttersControl/Shading.pm
2020-07-03 12:48:43 +02:00
837ad71c48 change control file 2020-07-03 11:35:46 +02:00
82934125fe add shutters->getShadingLastPos
for condition drivePos != ShadingLastPos
2020-07-03 08:53:23 +02:00
185fe7576b Merge branch 'devel' into patch-shading 2020-07-02 18:04:43 +02:00
331b0b0432 fix ascAPIset with value 0 bug 2020-07-02 18:02:32 +02:00
857683fbe2 bugix crash fhem 2020-07-02 14:48:46 +02:00
bb6f4860f9 fix end of file 2020-07-02 14:11:23 +02:00
026904e898 change version 2020-07-02 14:07:59 +02:00
554195f476 export shading function in seperated file 2020-07-02 14:07:20 +02:00
0d168b488a fix setter table in commandref 2020-07-02 12:28:58 +02:00
7200ebfbb3 fixes #22
PERL WARNING: Use of uninitialized value $posAssignment
2020-06-30 12:41:08 +02:00
254c84ffe1 fixes #21 2020-06-29 19:11:29 +02:00
9bbd2445e2 change version 2020-06-29 17:01:33 +02:00
af7894753c remove ASC_slatDriveCmdInverse and the extended Fn Code 2020-06-29 14:06:34 +02:00
9f2eeea6d8 check brightness sunset and sunrise
change code
2020-06-29 13:41:46 +02:00
4a5b4d9ac1 remove all unless conditions 2020-06-29 09:58:53 +02:00
109a67e388 change ExternalTriggerState to ExternalTriggerStatus
remove getExternalTriggerState from
lib/FHEM/Automation/ShuttersControl/Shutters/Attr.pm and add in
lib/FHEM/Automation/ShuttersControl/Shutters.pm as
getExternalTriggerStatus
2020-06-29 09:02:12 +02:00
83fe657171 add one more condition to run ShadingProcessingDriveCommand 2020-06-24 13:26:02 +02:00
af727cd2f2 change shading info message
to warn message
2020-06-24 08:11:42 +02:00
ad1c541891 Merge branch 'testing' 2020-06-22 11:51:20 +02:00
c69b72c081 change version 2020-06-22 11:48:18 +02:00
7b83072b83 Merge branch 'testing' 2020-06-22 11:46:00 +02:00
7511e4254b fix bug in commandref unbalanced td 2020-06-22 11:43:18 +02:00
242de9523b Merge branch 'devel' 2020-06-22 09:43:06 +02:00
cd2adb49f3 add more commandref text
change version number, patch release
change commandref for rain waiting time, feature not yet implemented
	geändert:       FHEM/73_AutoShuttersControl.pm
2020-06-19 14:27:30 +02:00
cb7c3f8667 new mail 2020-06-18 08:13:48 +02:00
63f86165ba fix empty shuttername 2020-06-18 08:07:59 +02:00
d3e05719f0 add new commandref
geändert:       FHEM/73_AutoShuttersControl.pm
2020-06-18 07:59:54 +02:00
92a9175fe3 change constrols 2020-06-09 14:02:30 +02:00
c607e9b81a my 2020-06-09 13:57:17 +02:00
20584f6294 create controls 2020-06-09 13:22:54 +02:00
245a9b7357 create controls 2020-06-09 13:22:17 +02:00
7a60b04777 add setter for commandref, fix roomate fn if roommate come home and shading active 2020-06-09 13:21:16 +02:00
8d748b65ce change controls 2020-06-05 22:26:11 +02:00
c356217eaf change controls 2020-06-05 22:25:42 +02:00
d5d8d5a116 fix slat drive bug then set getSlatDriveCmdInverse 2020-06-05 22:25:17 +02:00
2d2c10ed9c change control file 2020-06-04 17:57:04 +02:00
9fafc505ae fix Undefined subroutine &main::AutoShuttersControl_ascAPIget 2020-06-04 17:56:27 +02:00
b79ab5efaf change control file 2020-06-04 10:51:54 +02:00
2bd44d3073 add more ascAPIget commands to commandref 2020-06-04 10:50:39 +02:00
60db9c4f5d test 2020-06-04 10:17:25 +02:00
b2a70e6917 more commandref 2020-06-04 10:11:08 +02:00
6d755015aa test hook und change commandref 2020-06-04 09:50:33 +02:00
d34d71277c test hook und change commandref 2020-06-04 09:36:29 +02:00
80831c167b test hook und change commandref 2020-06-04 09:32:07 +02:00
5ab7c09712 change controls 2020-06-04 08:22:14 +02:00
4e493e6a4b new controls 2020-06-04 07:26:33 +02:00
c1695ae811 fix shading drive out of closed Pos 2020-06-04 07:21:56 +02:00
1b90829744 change execute condition for ShadingProcessingDriveCommand 2020-06-03 22:12:34 +02:00
9b3ca6618a fix shading drive out of closed Pos 2020-06-03 21:59:55 +02:00
5ddf5adfad remove use Meta in 73_AutoShuttersControl 2020-06-03 21:26:36 +02:00
3b31474e18 add controls file for FHEM update 2020-06-03 18:36:40 +02:00
f3979f090f fix devStateIcon 2020-06-03 18:07:16 +02:00
c19f9728a0 Ready for package and object methode 2020-06-03 18:00:56 +02:00
4e0e9203c9 fix diverse Fehlermeldungen 2020-06-03 16:31:54 +02:00
578b96a4ff change package code in mutiple files 2020-06-03 12:59:04 +02:00
e5ce1f40e3 add more commandref entry for asc api 2020-06-03 10:22:48 +02:00
fd708c2685 add commandref attribut ASC_slatDriveCmdInverse 2020-06-02 14:47:59 +02:00
a5d1582d5a add ASC device attribut ASC_slatDriveCmdInverse 2020-06-02 14:44:50 +02:00
29e35be498 fixes: #17 2020-06-02 11:13:54 +02:00
0fa7dc308c fixes: #15 2020-06-02 10:36:48 +02:00
82a9d2c930 add new function getHomemode 2020-05-24 09:32:07 +02:00
ccbe471931 fix broken modul load 2020-05-23 09:00:39 +02:00
242e056069 fix bug then shading out but not drive and timestamp is to old 2020-05-22 15:58:49 +02:00
2dc5da70c2 fix bug then shading out but not drive and timestamp is to old 2020-05-22 15:58:16 +02:00
419bba1e74 change version number 2020-05-21 11:24:28 +02:00
b440b1b96e fixed #11 2020-05-21 11:22:30 +02:00
3b5cb7730f fixes: #12 drive shutters in closePos then is not day and triggerPosInactiv 2020-05-21 09:49:39 +02:00
ca56067e5c fixes: #12 drive shutters in closePos then is not day and triggerPosInactiv 2020-05-21 09:46:37 +02:00
6ab65372d2 change outTemp condition for shading out 2020-05-21 09:39:39 +02:00
2e7deafc55 change outTemp condition for shading out 2020-05-21 09:38:20 +02:00
ac818f6250 change outTemp Code in ProcessingShadingBrightness7 2020-05-21 09:17:28 +02:00
e87578a082 change outTemp Code in ProcessingShadingBrightness7 2020-05-21 09:10:58 +02:00
a61adbef0c fix shading in drive after blocking time 2020-05-21 08:12:13 +02:00
9d0a1b0141 fix shutters closed then windows closed and shutter position is privacydown position 2020-05-15 13:49:41 +02:00
15b186b4c7 fix shutters closed then windows closed and shutter position is privacydown position 2020-05-15 13:49:07 +02:00
2a2122f93a fix night detection 2020-05-15 11:02:23 +02:00
c1a4c5a470 fix night detection 2020-05-15 11:01:25 +02:00
20191f4565 fix bug then privacyDownPos and night drive with window open 2020-05-12 22:40:17 +02:00
806074325f fix bug then privacyDownPos and night drive with window open 2020-05-12 22:28:05 +02:00
1a2b8f52cd roleback to 0.6.x version 2020-05-11 18:57:22 +02:00
ce5fb58b34 expand commandref 2020-05-11 18:55:12 +02:00
9268276518 fix bug not a scalar reference 2020-05-09 14:50:51 +02:00
47066ea068 expand API documantation 2020-05-09 08:40:58 +02:00
7a0aad9ff7 Closes: #10, add API commandref, fix Rain unprotected bug 2020-05-01 16:23:09 +02:00
0498d0323b check roommate status then drive in shading pos 2020-04-21 23:50:04 +02:00
d98e5a903c add my Scalar in all loop declaration, more robust for NOTIFYDEV after reboot 2020-04-21 23:29:12 +02:00
005340a2fa add more info for shading information reading 2020-04-21 18:42:16 +02:00
9d77ac4811 fix Eventhandling 2020-04-20 15:17:33 +02:00
3e7becaf89 little fix 2020-04-20 14:59:46 +02:00
2a90962675 add more shading information in reading 2020-04-20 14:52:27 +02:00
fc81592a32 add more shading information at shutters 2020-04-19 17:38:43 +02:00
63ec20cde6 add more shading information at shutters 2020-04-19 16:58:10 +02:00
e4a2f82419 add first works shadind condition info 2020-04-19 15:16:21 +02:00
107a2b1c96 rolleback ASC_Shading_Mode default to off 2020-04-19 13:32:51 +02:00
ed5be615e0 remove shutter device tempsensor in AntiFreeze condition, use only ASC device tempsensor 2020-04-19 10:10:55 +02:00
9ed15f90fe add Privacy Positions for Slat Support 2020-04-18 18:16:06 +02:00
fbc7a39fe0 fix drive in shading then window open 2020-04-18 15:38:24 +02:00
0e8137eb09 fix ClosedPos bug then SleepPos not set 2020-04-17 22:49:22 +02:00
dc4982fa19 add off in Mode_Up Attribut for Shading Condition 2020-04-17 20:17:51 +02:00
770fd0d26f fix Perlcode use in Position Attributs 2020-04-17 16:28:16 +02:00
775219b034 add extra Slat Device and SlatCmd Code, add new Attribut ASC_SlatPosCmd_SlatDevice 2020-04-17 12:01:25 +02:00
1f99f0fbd7 add more Positions for Slat Support 2020-04-17 08:28:27 +02:00
f50f20f197 first version for slat support 2020-04-15 18:23:23 +02:00
65708ae9ec change default value für ASC_Pos_Cmd 2020-04-15 14:02:28 +02:00
c87353f204 improve shading processing Fn 2020-04-14 08:42:39 +02:00
6ad0baabe5 fix bug then ModeUp and ModeDown absent 2020-04-14 08:12:55 +02:00
3607269e72 rollback Notify Regex, fix Shading routine in reservied out reservied 2020-04-13 14:50:06 +02:00
c0104a3c53 fix drive up then roommate absent and ASC_Up absent 2020-04-12 11:21:18 +02:00
453794ecd5 add additional condition for shutters drive out of shading 2020-04-12 11:01:31 +02:00
18b6286cbc Fix little Bugs in Shading and Window open with shading state 2020-04-11 15:53:21 +02:00
6fa8fa8817 fix shading out drive then roommate asleep 2020-04-11 14:47:54 +02:00
164a85edaa fix ShadingProcessingDriceCommand check windows open condition 2020-04-11 10:28:22 +02:00
f61ceaf6f0 code style 2020-04-10 15:42:44 +02:00
df93a8b8c1 fix bug then shading pos drive in 2020-04-10 15:40:48 +02:00
78427bf1bc fix shading drive if current position under shading position 2020-04-09 08:16:13 +02:00
95349ce3db fix set command in Set Fn and bug in WindowRec shading mode absent fixes: 8 2020-04-05 19:20:20 +02:00
b1025d746d fix default value bug in getAutoAstroModeMorningHorizon AttrVal 2020-04-04 15:24:47 +02:00
b2e035b6a2 change version number 2020-04-04 11:46:20 +02:00
9b96323f3e fix _averageBrightness bug 2020-04-04 08:53:01 +02:00
a38a29a99d fix little typo and condition code 2020-04-03 09:53:14 +02:00
ab54aba823 change version 2020-04-02 00:09:50 +02:00
aad143c2cc remove return code in ShadingBrightness Fn 2020-04-01 15:15:40 +02:00
a871e70dec remove is not day detect in shadingbrightness fn 2020-04-01 08:40:33 +02:00
b60ddfd90b fix return code 2020-03-31 22:17:28 +02:00
9a5ef3654e change log output to level 4 for shadingbrightness fn 2020-03-31 20:53:03 +02:00
2338089eba change return 0 to return and fix little shading bug 2020-03-31 20:32:02 +02:00
219187bd7b add logging for shading 2020-03-31 11:47:32 +02:00
8a9db0fd8f fix ASC_Down roommate and drive down then coming home bug 2020-03-31 07:27:49 +02:00
d7adb36ca5 fix return bug in Fn _getOutTempSensor 2020-03-30 17:29:07 +02:00
62caa1d5c3 change all foreach statements to for 2020-03-30 12:11:21 +02:00
f311bcf9cb bugfix after code change 2020-03-30 08:13:42 +02:00
3e1fe3f329 code review and change code to PBP 2020-03-29 16:46:26 +02:00
9d050b7b28 fix change code in NotifyFn 2020-03-26 23:20:21 +01:00
878bf99a16 code change 2020-03-26 21:00:42 +01:00
3ef0ae9ccf change Code to parseParams Fn 2020-03-26 12:02:56 +01:00
42007fa86b change default value for rain and wind protection, add rain protection to commandref 2020-03-25 10:01:18 +01:00
831f8a37ff expand Debug Logging for ShadingDriveCommand Fn 2020-03-24 18:36:51 +01:00
cb8f3d693a fix little bug in Brightness Fn 2020-03-24 15:06:53 +01:00
f59c40ead6 fix little bug in Brightness Fn 2020-03-24 14:34:32 +01:00
9fcf615af8 change RegEx m# ... # to m{ ... }xms for better formating 2020-03-24 11:14:47 +01:00
208bac6ae0 remove all prototyps 2020-03-24 09:47:27 +01:00
0e9a212aa0 remove IsWeTomorrow Fn and change IsWe Fn to use tomorrow 2020-03-24 09:29:42 +01:00
b608d511ce fix _IsDay Fn 2020-03-23 19:24:45 +01:00
4bdb540368 add holidayWeekend Support for brightness 2020-03-23 12:02:17 +01:00
46eb9da8c8 code style 2020-03-22 16:13:58 +01:00
4454838eba fix PrivacyDownStatus in Brightness 2020-03-22 16:09:59 +01:00
0081b53d16 change commandref for ASC_Drive_Delay and ASC_Drive_DelayStart 2020-03-22 15:04:28 +01:00
412243e2bd add set brightness average max objects in array attribut 2020-03-21 14:16:12 +01:00
fa552d8a25 remove old Attribut changes, fix little typos 2020-03-21 13:03:56 +01:00
caddb87d57 add additional condition for holidyweekend drive Time 2020-03-19 09:46:56 +01:00
68f9f46fb5 fix SleepPos conditions in residents and roommates Fn 2020-03-08 08:29:19 +01:00
f8218646a7 bugfix SleepPosition #1 2020-02-21 09:54:12 +01:00
d421be61d1 fix AntiFreez bug 2020-02-07 09:11:04 +01:00
2ddda0c622 fix antifreezeFn 2020-02-03 09:01:41 +01:00
bca593a36c change commandref 2020-01-20 08:40:56 +01:00
72a35e94d2 change Meta release_status 2020-01-15 07:03:45 +01:00
44b4837664 change table summary 2020-01-14 13:17:36 +01:00
42e4fdcc44 change get ShuttersInformation, add SummaryFn 2020-01-14 10:52:17 +01:00
85d5ffefba fix ExternalTrigger Bug 2020-01-12 10:29:35 +01:00
f2548ee6fa change commandref 2020-01-12 09:49:01 +01:00
f718eeabf8 remove old Attributs 2020-01-12 09:23:29 +01:00
87d18928c0 little bugfix 2020-01-10 05:02:39 +01:00
eeffd9b16b change version 2020-01-06 15:43:24 +01:00
02c16ebc6c fix SelfDefense then drive day open 2020-01-06 15:37:25 +01:00
e361bc037e make beautiful code 2020-01-05 12:59:12 +01:00
97a9e2fce4 add adv icon 2020-01-05 07:54:12 +01:00
3396c515b9 fix IsDay Bug use PrivacyDown 2019-12-29 20:03:52 +01:00
a3333949ae change RegEx for devStateIcon roommate 2019-12-16 09:01:13 +01:00
3f90155119 fix devStateIcon for roommate come home 2019-12-11 16:31:34 +01:00
11029985ee add delete event-on* and set new devStateIcon 2019-12-11 12:23:02 +01:00
c27a8b46ba add devStateIcon Fn 2019-12-10 11:22:58 +01:00
b4927e169f fix selfDefense then coming home at privacy down brightness 2019-12-09 15:00:42 +01:00
eb61c5c7e0 fix selfDefense then coming home at night with brightnes 2019-12-09 14:18:24 +01:00
4d52cd52a4 fix Commandref, skip ExternalTrigger Drive from adv check 2019-12-06 09:41:55 +01:00
58544edf2a fix close drive after selfdefense drive bug 2019-11-28 13:24:16 +01:00
11782224c9 fix selfdefense bug then residents switch to home 2019-11-28 12:43:03 +01:00
60ae53a9cf Merge branch 'devel' 2019-11-27 11:26:29 +01:00
1776f8bd3b fix time format problem 2019-11-27 11:26:14 +01:00
3ae315d1e3 fix time format problem 2019-11-27 11:25:06 +01:00
f654d4f8a5 fix RegEx for Time format check 2019-11-27 10:28:05 +01:00
a7519695f6 fix little bug 2019-11-26 06:32:10 +01:00
34d87eef17 fix commandref table css options 2019-11-25 11:39:10 +01:00
3bfe619164 fix brightness morning drive in with roommate condition 2019-11-18 07:22:32 +01:00
7c37fe11b6 fix incompatibilities with older perl version 2019-11-16 14:26:59 +01:00
a11eb2487d fix Unbalanced li die zweite 2019-11-15 12:47:39 +01:00
ac3c2bb14b fix Unbalanced li 2019-11-15 12:42:58 +01:00
19 changed files with 12407 additions and 7810 deletions

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,16 @@
UPD 2022-12-20_14:16:31 116314 FHEM/73_AutoShuttersControl.pm
UPD 2022-12-20_14:12:54 76615 lib/FHEM/Automation/ShuttersControl.pm
UPD 2022-12-20_14:14:29 2691 lib/FHEM/Automation/ShuttersControl/Dev.pm
UPD 2022-12-20_14:13:42 2675 lib/FHEM/Automation/ShuttersControl/Roommate.pm
UPD 2022-12-20_14:13:20 31828 lib/FHEM/Automation/ShuttersControl/Shutters.pm
UPD 2022-12-20_14:13:30 25541 lib/FHEM/Automation/ShuttersControl/Shading.pm
UPD 2022-12-20_14:14:20 112297 lib/FHEM/Automation/ShuttersControl/EventProcessingFunctions.pm
UPD 2022-12-20_14:14:08 40681 lib/FHEM/Automation/ShuttersControl/Helper.pm
UPD 2022-12-20_14:13:02 2209 lib/FHEM/Automation/ShuttersControl/Window.pm
UPD 2022-12-20_14:16:12 11857 lib/FHEM/Automation/ShuttersControl/Dev/Attr.pm
UPD 2022-12-20_14:16:04 7265 lib/FHEM/Automation/ShuttersControl/Dev/Readings.pm
UPD 2022-12-20_14:15:59 52751 lib/FHEM/Automation/ShuttersControl/Shutters/Attr.pm
UPD 2022-12-20_14:14:58 2799 lib/FHEM/Automation/ShuttersControl/Shutters/Readings.pm
UPD 2022-12-20_14:14:47 3887 lib/FHEM/Automation/ShuttersControl/Window/Attr.pm
UPD 2022-12-20_14:14:39 2200 lib/FHEM/Automation/ShuttersControl/Window/Readings.pm
UPD 2022-12-20_14:13:55 7394 lib/FHEM/Automation/ShuttersControl/Rainprotection.pm

53
hooks/pre-commit Executable file
View File

@ -0,0 +1,53 @@
#!/usr/bin/perl -w
use File::Basename;
use POSIX qw(strftime);
use strict;
my @filenames = ( 'FHEM/73_AutoShuttersControl.pm',
'lib/FHEM/Automation/ShuttersControl.pm',
'lib/FHEM/Automation/ShuttersControl/Dev.pm',
'lib/FHEM/Automation/ShuttersControl/Roommate.pm',
'lib/FHEM/Automation/ShuttersControl/Shutters.pm',
'lib/FHEM/Automation/ShuttersControl/Shading.pm',
'lib/FHEM/Automation/ShuttersControl/EventProcessingFunctions.pm',
'lib/FHEM/Automation/ShuttersControl/Helper.pm',
'lib/FHEM/Automation/ShuttersControl/Window.pm',
'lib/FHEM/Automation/ShuttersControl/Dev/Attr.pm',
'lib/FHEM/Automation/ShuttersControl/Dev/Readings.pm',
'lib/FHEM/Automation/ShuttersControl/Shutters/Attr.pm',
'lib/FHEM/Automation/ShuttersControl/Shutters/Readings.pm',
'lib/FHEM/Automation/ShuttersControl/Window/Attr.pm',
'lib/FHEM/Automation/ShuttersControl/Window/Readings.pm',
'lib/FHEM/Automation/ShuttersControl/Rainprotection.pm'
);
my $controlsfile = 'controls_AutoShuttersControl.txt';
open(FH, ">$controlsfile") || return("Can't open $controlsfile: $!");
for my $filename (@filenames) {
my @statOutput = stat($filename);
if (scalar @statOutput != 13) {
printf 'error: stat has unexpected return value for ' . $filename . "\n";
next;
}
my $mtime = $statOutput[9];
my $date = POSIX::strftime("%Y-%m-%d", localtime($mtime));
my $time = POSIX::strftime("%H:%M:%S", localtime($mtime));
my $filetime = $date."_".$time;
my $filesize = $statOutput[7];
printf FH 'UPD ' . $filetime . ' ' . $filesize . ' ' .$filename . "\n";
}
close(FH);
system("git add $controlsfile");
print 'Create controls File succesfully' . "\n";
exit 0;

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,83 @@
###############################################################################
#
# Developed with VSCodium and richterger perl plugin
#
# (c) 2018-2023 Copyright: Marko Oldenburg (fhemdevelopment at cooltux dot net)
# All rights reserved
#
# Special thanks goes to:
# - Bernd (Cluni) this module is based on the logic of his script "Rollladensteuerung für HM/ROLLO inkl. Abschattung und Komfortfunktionen in Perl" (https://forum.fhem.de/index.php/topic,73964.0.html)
# - Beta-User for many tests, many suggestions and good discussions
# - pc1246 write english commandref
# - FunkOdyssey commandref style
# - sledge fix many typo in commandref
# - many User that use with modul and report bugs
# - Christoph (christoph.kaiser.in) Patch that expand RegEx for Window Events
# - Julian (Loredo) expand Residents Events for new Residents functions
# - Christoph (Christoph Morrison) for fix Commandref, many suggestions and good discussions
#
#
# This script is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License,or
# any later version.
#
# The GNU General Public License can be found at
# http://www.gnu.org/copyleft/gpl.html.
# A copy is found in the textfile GPL.txt and important notices to the license
# from the author is found in LICENSE.txt distributed with these scripts.
#
# This script is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
#
# $Id$
#
###############################################################################
## Klasse ASC_Dev plus Subklassen ASC_Attr_Dev und ASC_Readings_Dev##
package FHEM::Automation::ShuttersControl::Dev;
use FHEM::Automation::ShuttersControl::Dev::Readings;
use FHEM::Automation::ShuttersControl::Dev::Attr;
use base
qw(FHEM::Automation::ShuttersControl::Dev::Readings FHEM::Automation::ShuttersControl::Dev::Attr);
use strict;
use warnings;
use utf8;
sub new {
my $class = shift;
my $self = { name => undef, };
bless $self, $class;
return $self;
}
sub setName {
my $self = shift;
my $name = shift;
$self->{name} = $name if ( defined($name) );
return $self->{name};
}
sub setDefault {
my $self = shift;
my $defaultarg = shift;
$self->{defaultarg} = $defaultarg if ( defined($defaultarg) );
return $self->{defaultarg};
}
sub getName {
my $self = shift;
return $self->{name};
}
1;

View File

@ -0,0 +1,403 @@
###############################################################################
#
# Developed with VSCodium and richterger perl plugin
#
# (c) 2018-2023 Copyright: Marko Oldenburg (fhemdevelopment at cooltux dot net)
# All rights reserved
#
# Special thanks goes to:
# - Bernd (Cluni) this module is based on the logic of his script "Rollladensteuerung für HM/ROLLO inkl. Abschattung und Komfortfunktionen in Perl" (https://forum.fhem.de/index.php/topic,73964.0.html)
# - Beta-User for many tests, many suggestions and good discussions
# - pc1246 write english commandref
# - FunkOdyssey commandref style
# - sledge fix many typo in commandref
# - many User that use with modul and report bugs
# - Christoph (christoph.kaiser.in) Patch that expand RegEx for Window Events
# - Julian (Loredo) expand Residents Events for new Residents functions
# - Christoph (Christoph Morrison) for fix Commandref, many suggestions and good discussions
#
#
# This script is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License,or
# any later version.
#
# The GNU General Public License can be found at
# http://www.gnu.org/copyleft/gpl.html.
# A copy is found in the textfile GPL.txt and important notices to the license
# from the author is found in LICENSE.txt distributed with these scripts.
#
# This script is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
#
# $Id$
#
###############################################################################
## Subklasse Attr ##
package FHEM::Automation::ShuttersControl::Dev::Attr;
use strict;
use warnings;
use utf8;
sub getShuttersOffset {
my $self = shift;
my $name = $self->{name};
return ::AttrVal( $name, 'ASC_shuttersDriveDelay', -1 );
}
sub getBrightnessMinVal {
my $self = shift;
my $name = $self->{name};
return $self->{ASC_brightness}->{triggermin}
if ( exists( $self->{ASC_brightness}->{LASTGETTIME} )
&& ( ::gettimeofday() - $self->{ASC_brightness}->{LASTGETTIME} ) < 2 );
$FHEM::Automation::ShuttersControl::ascDev->getBrightnessMaxVal;
return $self->{ASC_brightness}->{triggermin};
}
sub getBrightnessMaxVal {
my $self = shift;
my $name = $self->{name};
return $self->{ASC_brightness}->{triggermax}
if ( exists( $self->{ASC_brightness}->{LASTGETTIME} )
&& ( ::gettimeofday() - $self->{ASC_brightness}->{LASTGETTIME} ) < 2 );
$self->{ASC_brightness}->{LASTGETTIME} = int( ::gettimeofday() );
my ( $triggermax, $triggermin ) =
FHEM::Automation::ShuttersControl::Helper::GetAttrValues( $name,
'ASC_brightnessDriveUpDown', '800:500' );
## erwartetes Ergebnis
# max:min
$self->{ASC_brightness}->{triggermin} = $triggermin;
$self->{ASC_brightness}->{triggermax} = $triggermax;
return $self->{ASC_brightness}->{triggermax};
}
sub _getTwilightDevice {
my $self = shift;
my $name = $self->{name};
return ::AttrVal( $name, 'ASC_twilightDevice', 'none' );
}
sub getAutoAstroModeEvening {
my $self = shift;
my $name = $self->{name};
return ::AttrVal( $name, 'ASC_autoAstroModeEvening', 'REAL' );
}
sub getAutoAstroModeEveningHorizon {
my $self = shift;
my $name = $self->{name};
return ::AttrVal( $name, 'ASC_autoAstroModeEveningHorizon', 0 );
}
sub getAutoAstroModeMorning {
my $self = shift;
my $name = $self->{name};
return ::AttrVal( $name, 'ASC_autoAstroModeMorning', 'REAL' );
}
sub getAutoAstroModeMorningHorizon {
my $self = shift;
my $name = $self->{name};
return ::AttrVal( $name, 'ASC_autoAstroModeMorningHorizon', 0 );
}
sub getAutoShuttersControlMorning {
my $self = shift;
my $name = $self->{name};
return ::AttrVal( $name, 'ASC_autoShuttersControlMorning', 'on' );
}
sub getAutoShuttersControlEvening {
my $self = shift;
my $name = $self->{name};
return ::AttrVal( $name, 'ASC_autoShuttersControlEvening', 'on' );
}
sub getAutoShuttersControlComfort {
my $self = shift;
my $name = $self->{name};
return ::AttrVal( $name, 'ASC_autoShuttersControlComfort', 'off' );
}
sub getFreezeTemp {
my $self = shift;
my $name = $self->{name};
return ::AttrVal( $name, 'ASC_freezeTemp', 3 );
}
sub getSlatDriveCmdInverse {
my $self = shift;
my $name = $self->{name};
return ::AttrVal( $name, 'ASC_slatDriveCmdInverse', 0 );
}
sub _getTempSensor {
my $self = shift;
my $name = $self->{name};
return $self->{ASC_tempSensor}->{device}
if ( exists( $self->{ASC_tempSensor}->{LASTGETTIME} )
&& ( ::gettimeofday() - $self->{ASC_tempSensor}->{LASTGETTIME} ) < 2 );
$self->{ASC_tempSensor}->{LASTGETTIME} = int( ::gettimeofday() );
my ( $device, $reading ) =
FHEM::Automation::ShuttersControl::Helper::GetAttrValues( $name,
'ASC_tempSensor', 'none' );
## erwartetes Ergebnis
# DEVICE:READING
$self->{ASC_tempSensor}->{device} = $device;
$self->{ASC_tempSensor}->{reading} =
( $reading ne 'none' ? $reading : 'temperature' );
return $self->{ASC_tempSensor}->{device};
}
sub getTempSensorReading {
my $self = shift;
my $name = $self->{name};
return $self->{ASC_tempSensor}->{reading}
if ( exists( $self->{ASC_tempSensor}->{LASTGETTIME} )
&& ( ::gettimeofday() - $self->{ASC_tempSensor}->{LASTGETTIME} ) < 2 );
$FHEM::Automation::ShuttersControl::ascDev->_getTempSensor;
return $self->{ASC_tempSensor}->{reading};
}
sub _getResidentsDev {
my $self = shift;
my $name = $self->{name};
return $self->{ASC_residentsDev}->{device}
if ( exists( $self->{ASC_residentsDev}->{LASTGETTIME} )
&& ( ::gettimeofday() - $self->{ASC_residentsDev}->{LASTGETTIME} ) <
2 );
$self->{ASC_residentsDev}->{LASTGETTIME} = int( ::gettimeofday() );
my ( $device, $reading ) =
FHEM::Automation::ShuttersControl::Helper::GetAttrValues( $name,
'ASC_residentsDev', 'none' );
$self->{ASC_residentsDev}->{device} = $device;
$self->{ASC_residentsDev}->{reading} =
( $reading ne 'none' ? $reading : 'state' );
return $self->{ASC_residentsDev}->{device};
}
sub getResidentsReading {
my $self = shift;
my $name = $self->{name};
return $self->{ASC_residentsDev}->{reading}
if ( exists( $self->{ASC_residentsDev}->{LASTGETTIME} )
&& ( ::gettimeofday() - $self->{ASC_residentsDev}->{LASTGETTIME} ) <
2 );
$FHEM::Automation::ShuttersControl::ascDev->_getResidentsDev;
return $self->{ASC_residentsDev}->{reading};
}
sub _getRainSensor {
my $self = shift;
my $name = $self->{name};
return $self->{ASC_rainSensor}->{device}
if ( exists( $self->{ASC_rainSensor}->{LASTGETTIME} )
&& ( ::gettimeofday() - $self->{ASC_rainSensor}->{LASTGETTIME} ) < 2 );
$self->{ASC_rainSensor}->{LASTGETTIME} = int( ::gettimeofday() );
my ( $device, $reading, $max, $hyst, $pos, $wait ) =
FHEM::Automation::ShuttersControl::Helper::GetAttrValues( $name,
'ASC_rainSensor', 'none' );
## erwartetes Ergebnis
# DEVICE:READING MAX:HYST
return $device if ( $device eq 'none' );
$self->{ASC_rainSensor}->{device} = $device;
$self->{ASC_rainSensor}->{reading} =
( $reading ne 'none' ? $reading : 'rain' );
$self->{ASC_rainSensor}->{triggermax} = (
( $max ne 'none' && $max =~ m{\A(-?\d+(\.\d+)?)\z}xms )
? $max
: 1000
);
$self->{ASC_rainSensor}->{triggerhyst} = (
$hyst ne 'none'
? $self->{ASC_rainSensor}->{triggermax} - $hyst
: ( $self->{ASC_rainSensor}->{triggermax} * 0 )
);
$self->{ASC_rainSensor}->{shuttersClosedPos} = (
$pos ne 'none'
? $pos
: $FHEM::Automation::ShuttersControl::shutters->getClosedPos
);
$self->{ASC_rainSensor}->{waitingTime} =
( $wait ne 'none' ? $wait : 0 );
return $self->{ASC_rainSensor}->{device};
}
sub getRainSensorReading {
my $self = shift;
my $name = $self->{name};
return $self->{ASC_rainSensor}->{reading}
if ( exists( $self->{ASC_rainSensor}->{LASTGETTIME} )
&& ( ::gettimeofday() - $self->{ASC_rainSensor}->{LASTGETTIME} ) < 2 );
$FHEM::Automation::ShuttersControl::ascDev->_getRainSensor;
return $self->{ASC_rainSensor}->{reading};
}
sub getRainTriggerMax {
my $self = shift;
my $name = $self->{name};
return $self->{ASC_rainSensor}->{triggermax}
if ( exists( $self->{ASC_rainSensor}->{LASTGETTIME} )
&& ( ::gettimeofday() - $self->{ASC_rainSensor}->{LASTGETTIME} ) < 2 );
$FHEM::Automation::ShuttersControl::ascDev->_getRainSensor;
return $self->{ASC_rainSensor}->{triggermax};
}
sub getRainTriggerMin {
my $self = shift;
my $name = $self->{name};
return $self->{ASC_rainSensor}->{triggerhyst}
if ( exists( $self->{ASC_rainSensor}->{LASTGETTIME} )
&& ( ::gettimeofday() - $self->{ASC_rainSensor}->{LASTGETTIME} ) < 2 );
$FHEM::Automation::ShuttersControl::ascDev->_getRainSensor;
return $self->{ASC_rainSensor}->{triggerhyst};
}
sub getRainSensorShuttersClosedPos {
my $self = shift;
my $name = $self->{name};
return $self->{ASC_rainSensor}->{shuttersClosedPos}
if ( exists( $self->{ASC_rainSensor}->{LASTGETTIME} )
&& ( ::gettimeofday() - $self->{ASC_rainSensor}->{LASTGETTIME} ) < 2 );
$FHEM::Automation::ShuttersControl::ascDev->_getRainSensor;
return $self->{ASC_rainSensor}->{shuttersClosedPos};
}
sub getRainWaitingTime {
my $self = shift;
my $name = $self->{name};
return $self->{ASC_rainSensor}->{waitingTime}
if ( exists( $self->{ASC_rainSensor}->{LASTGETTIME} )
&& ( ::gettimeofday() - $self->{ASC_rainSensor}->{LASTGETTIME} ) < 2 );
$FHEM::Automation::ShuttersControl::ascDev->_getRainSensor;
return $self->{ASC_rainSensor}->{waitingTime};
}
sub _getWindSensor {
my $self = shift;
my $name = $self->{name};
return $self->{ASC_windSensor}->{device}
if ( exists( $self->{ASC_windSensor}->{LASTGETTIME} )
&& ( ::gettimeofday() - $self->{ASC_windSensor}->{LASTGETTIME} ) < 2 );
$self->{ASC_windSensor}->{LASTGETTIME} = int( ::gettimeofday() );
my ( $device, $reading ) =
FHEM::Automation::ShuttersControl::Helper::GetAttrValues( $name,
'ASC_windSensor', 'none' );
return $device if ( $device eq 'none' );
$self->{ASC_windSensor}->{device} = $device;
$self->{ASC_windSensor}->{reading} =
( $reading ne 'none' ? $reading : 'wind' );
return $self->{ASC_windSensor}->{device};
}
sub getWindSensorReading {
my $self = shift;
my $name = $self->{name};
return $self->{ASC_windSensor}->{reading}
if ( exists( $self->{ASC_windSensor}->{LASTGETTIME} )
&& ( ::gettimeofday() - $self->{ASC_windSensor}->{LASTGETTIME} ) < 2 );
$FHEM::Automation::ShuttersControl::ascDev->_getWindSensor;
return (
defined( $self->{ASC_windSensor}->{reading} )
? $self->{ASC_windSensor}->{reading}
: 'wind'
);
}
sub getBlockAscDrivesAfterManual {
my $self = shift;
my $name = $self->{name};
return ::AttrVal( $name, 'ASC_blockAscDrivesAfterManual', 0 );
}
sub getAdvStartDate {
my $self = shift;
my $name = $self->{name};
return ::AttrVal( $name, 'ASC_advStartDate', 'FirstAdvent' );
}
sub getAdvEndDate {
my $self = shift;
my $name = $self->{name};
return ::AttrVal( $name, 'ASC_advEndDate', 'EpiphanyDay' );
}
1;

View File

@ -0,0 +1,284 @@
###############################################################################
#
# Developed with VSCodium and richterger perl plugin
#
# (c) 2018-2023 Copyright: Marko Oldenburg (fhemdevelopment at cooltux dot net)
# All rights reserved
#
# Special thanks goes to:
# - Bernd (Cluni) this module is based on the logic of his script "Rollladensteuerung für HM/ROLLO inkl. Abschattung und Komfortfunktionen in Perl" (https://forum.fhem.de/index.php/topic,73964.0.html)
# - Beta-User for many tests, many suggestions and good discussions
# - pc1246 write english commandref
# - FunkOdyssey commandref style
# - sledge fix many typo in commandref
# - many User that use with modul and report bugs
# - Christoph (christoph.kaiser.in) Patch that expand RegEx for Window Events
# - Julian (Loredo) expand Residents Events for new Residents functions
# - Christoph (Christoph Morrison) for fix Commandref, many suggestions and good discussions
#
#
# This script is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License,or
# any later version.
#
# The GNU General Public License can be found at
# http://www.gnu.org/copyleft/gpl.html.
# A copy is found in the textfile GPL.txt and important notices to the license
# from the author is found in LICENSE.txt distributed with these scripts.
#
# This script is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
#
# $Id$
#
###############################################################################
## Subklasse Readings ##
package FHEM::Automation::ShuttersControl::Dev::Readings;
use strict;
use warnings;
use utf8;
use GPUtils qw(GP_Import);
## Import der FHEM Funktionen
BEGIN {
GP_Import(qw(defs));
}
sub setDelayCmdReading {
my $self = shift;
my $name = $self->{name};
my $hash = $defs{$name};
::readingsSingleUpdate(
$hash,
$FHEM::Automation::ShuttersControl::shutters->getShuttersDev
. '_lastDelayPosValue',
$FHEM::Automation::ShuttersControl::shutters->getDelayCmd,
1
);
return;
}
sub setStateReading {
my $self = shift;
my $value = shift;
my $name = $self->{name};
my $hash = $defs{$name};
::readingsSingleUpdate(
$hash, 'state',
(
defined($value)
? $value
: $FHEM::Automation::ShuttersControl::shutters->getLastDrive
),
1
);
return;
}
sub setPosReading {
my $self = shift;
my $name = $self->{name};
my $hash = $defs{$name};
::readingsSingleUpdate(
$hash,
$FHEM::Automation::ShuttersControl::shutters->getShuttersDev
. '_PosValue',
$FHEM::Automation::ShuttersControl::shutters->getStatus,
1
);
return;
}
sub setLastPosReading {
my $self = shift;
my $name = $self->{name};
my $hash = $defs{$name};
::readingsSingleUpdate(
$hash,
$FHEM::Automation::ShuttersControl::shutters->getShuttersDev
. '_lastPosValue',
$FHEM::Automation::ShuttersControl::shutters->getLastPos,
1
);
return;
}
sub getPartyMode {
my $self = shift;
my $name = $self->{name};
return ::ReadingsVal( $name, 'partyMode', 'off' );
}
sub getHardLockOut {
my $self = shift;
my $name = $self->{name};
return ::ReadingsVal( $name, 'hardLockOut', 'none' );
}
sub getSunriseTimeWeHoliday {
my $self = shift;
my $name = $self->{name};
return ::ReadingsVal( $name, 'sunriseTimeWeHoliday', 'none' );
}
sub getMonitoredDevs {
my $self = shift;
my $name = $self->{name};
$self->{monitoredDevs} = ::ReadingsVal( $name, '.monitoredDevs', 'none' );
return $self->{monitoredDevs};
}
sub getOutTemp {
my $self = shift;
return ::ReadingsVal(
$FHEM::Automation::ShuttersControl::ascDev->_getTempSensor,
$FHEM::Automation::ShuttersControl::ascDev->getTempSensorReading,
-100 );
}
sub getResidentsStatus {
my $self = shift;
my $val =
::ReadingsVal(
$FHEM::Automation::ShuttersControl::ascDev->_getResidentsDev,
$FHEM::Automation::ShuttersControl::ascDev->getResidentsReading,
'none' );
if ( $val =~ m{^(?:(.+)_)?(.+)$}xms ) {
return ( $1, $2 ) if (wantarray);
return $1 && $1 eq 'pet' ? 'absent' : $2;
}
elsif (
::ReadingsVal(
$FHEM::Automation::ShuttersControl::ascDev->_getResidentsDev,
'homealoneType', '-' ) eq 'PET'
)
{
return ( 'pet', 'absent' ) if (wantarray);
return 'absent';
}
else {
return ( undef, $val ) if (wantarray);
return $val;
}
}
sub getResidentsLastStatus {
my $self = shift;
my $val =
::ReadingsVal(
$FHEM::Automation::ShuttersControl::ascDev->_getResidentsDev,
'lastState', 'none' );
if ( $val =~ m{^(?:(.+)_)?(.+)$}xms ) {
return ( $1, $2 ) if (wantarray);
return $1 && $1 eq 'pet' ? 'absent' : $2;
}
elsif (
::ReadingsVal(
$FHEM::Automation::ShuttersControl::ascDev->_getResidentsDev,
'lastHomealoneType', '-' ) eq 'PET'
)
{
return ( 'pet', 'absent' ) if (wantarray);
return 'absent';
}
else {
return ( undef, $val ) if (wantarray);
return $val;
}
}
sub getAutoShuttersControlShading {
my $self = shift;
my $name = $self->{name};
return ::ReadingsVal( $name, 'controlShading', 'none' );
}
sub getSelfDefense {
my $self = shift;
my $name = $self->{name};
return ::ReadingsVal( $name, 'selfDefense', 'none' );
}
sub getAzimuth {
my $self = shift;
my $azimuth;
$azimuth = ::ReadingsVal(
$FHEM::Automation::ShuttersControl::ascDev->_getTwilightDevice,
'azimuth', -1 )
if (
$defs{ $FHEM::Automation::ShuttersControl::ascDev->_getTwilightDevice }
->{TYPE} eq 'Twilight' );
$azimuth = ::ReadingsVal(
$FHEM::Automation::ShuttersControl::ascDev->_getTwilightDevice,
'SunAz', -1 )
if (
$defs{ $FHEM::Automation::ShuttersControl::ascDev->_getTwilightDevice }
->{TYPE} eq 'Astro' );
return $azimuth;
}
sub getElevation {
my $self = shift;
my $elevation;
$elevation = ::ReadingsVal(
$FHEM::Automation::ShuttersControl::ascDev->_getTwilightDevice,
'elevation', -1 )
if (
$defs{ $FHEM::Automation::ShuttersControl::ascDev->_getTwilightDevice }
->{TYPE} eq 'Twilight' );
$elevation = ::ReadingsVal(
$FHEM::Automation::ShuttersControl::ascDev->_getTwilightDevice,
'SunAlt', -1 )
if (
$defs{ $FHEM::Automation::ShuttersControl::ascDev->_getTwilightDevice }
->{TYPE} eq 'Astro' );
return $elevation;
}
sub getASCenable {
my $self = shift;
my $name = $self->{name};
return ::ReadingsVal( $name, 'ascEnable', 'none' );
}
1;

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,206 @@
###############################################################################
#
# Developed with VSCodium and richterger perl plugin
#
# (c) 2018-2023 Copyright: Marko Oldenburg (fhemdevelopment at cooltux dot net)
# All rights reserved
#
# Special thanks goes to:
# - Bernd (Cluni) this module is based on the logic of his script "Rollladensteuerung für HM/ROLLO inkl. Abschattung und Komfortfunktionen in Perl" (https://forum.fhem.de/index.php/topic,73964.0.html)
# - Beta-User for many tests, many suggestions and good discussions
# - pc1246 write english commandref
# - FunkOdyssey commandref style
# - sledge fix many typo in commandref
# - many User that use with modul and report bugs
# - Christoph (christoph.kaiser.in) Patch that expand RegEx for Window Events
# - Julian (Loredo) expand Residents Events for new Residents functions
# - Christoph (Christoph Morrison) for fix Commandref, many suggestions and good discussions
#
#
# This script is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License,or
# any later version.
#
# The GNU General Public License can be found at
# http://www.gnu.org/copyleft/gpl.html.
# A copy is found in the textfile GPL.txt and important notices to the license
# from the author is found in LICENSE.txt distributed with these scripts.
#
# This script is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
#
# $Id$
#
###############################################################################
## unserer packagename
package FHEM::Automation::ShuttersControl::Rainprotection;
use strict;
use warnings;
use utf8;
use FHEM::Automation::ShuttersControl::Helper qw (:ALL);
require Exporter;
use base qw(Exporter);
# our @ISA = qw(Exporter);
our @EXPORT_OK = qw(
RainProcessing
);
our %EXPORT_TAGS = (
ALL => [
qw(
RainProcessing
)
],
);
sub RainProcessing {
my ( $hash, $val, $triggerMax, $triggerMin ) = @_;
my $rainClosedPos = $FHEM::Automation::ShuttersControl::ascDev
->getRainSensorShuttersClosedPos;
for my $shuttersDev ( @{ $hash->{helper}{shuttersList} } ) {
$FHEM::Automation::ShuttersControl::shutters->setShuttersDev(
$shuttersDev);
next
if (
$FHEM::Automation::ShuttersControl::shutters->getRainProtection eq
'off' );
if (
$val > $triggerMax
&& $FHEM::Automation::ShuttersControl::shutters->getStatus !=
$rainClosedPos
&& $FHEM::Automation::ShuttersControl::shutters
->getRainProtectionStatus eq 'unprotected'
|| ( $FHEM::Automation::ShuttersControl::shutters
->getRainProtectionStatus eq 'unprotected'
&& $FHEM::Automation::ShuttersControl::shutters
->getRainUnprotectionDelayObj ne 'none' )
)
{
_RainProtected();
}
elsif ( ( $val == 0 || $val < $triggerMin )
&& $FHEM::Automation::ShuttersControl::shutters->getStatus ==
$rainClosedPos
&& IsAfterShuttersManualBlocking($shuttersDev)
&& $FHEM::Automation::ShuttersControl::shutters
->getRainProtectionStatus eq 'protected' )
{
my %funcHash = ( shuttersdevice => $shuttersDev, );
$FHEM::Automation::ShuttersControl::shutters
->setRainUnprotectionDelayObj( \%funcHash );
::InternalTimer(
::gettimeofday() +
$FHEM::Automation::ShuttersControl::ascDev
->getRainWaitingTime,
\&_RainUnprotected, \%funcHash
);
$FHEM::Automation::ShuttersControl::shutters
->setRainProtectionStatus('unprotected');
}
else {
if ( $FHEM::Automation::ShuttersControl::shutters->getStatus !=
$rainClosedPos
&& ( $val == 0 || $val < $triggerMin ) )
{
$FHEM::Automation::ShuttersControl::shutters
->setRainProtectionStatus('unprotected');
}
elsif ( $val > $triggerMax ) {
$FHEM::Automation::ShuttersControl::shutters
->setRainProtectionStatus('protected');
}
}
}
return;
}
### es muss noch beobachtet werden ob die Auswahl des Rollos welches bearbeitet werden soll bestehen bleibt oder mit in die neuen Funktionen übergeben werden muss
sub _RainProtected {
::RemoveInternalTimer( $FHEM::Automation::ShuttersControl::shutters
->getRainUnprotectionDelayObj )
if ( $FHEM::Automation::ShuttersControl::shutters
->getRainUnprotectionDelayObj ne 'none' );
$FHEM::Automation::ShuttersControl::shutters->setRainUnprotectionDelayObj(
'none');
$FHEM::Automation::ShuttersControl::shutters->setLastDrive(
'rain protected');
$FHEM::Automation::ShuttersControl::shutters->setDriveCmd(
$FHEM::Automation::ShuttersControl::ascDev
->getRainSensorShuttersClosedPos );
$FHEM::Automation::ShuttersControl::shutters->setRainProtectionStatus(
'protected');
return;
}
sub _RainUnprotected {
my $h = shift;
my $targetPos = $FHEM::Automation::ShuttersControl::shutters->getLastPos;
my $shuttersDev = $h->{shuttersdevice};
$FHEM::Automation::ShuttersControl::shutters->setShuttersDev($shuttersDev);
$FHEM::Automation::ShuttersControl::shutters->setLastDrive(
'rain un-protected');
if ( $FHEM::Automation::ShuttersControl::shutters
->getRainUnprotectionDelayObj ne 'none' )
{
::RemoveInternalTimer( $FHEM::Automation::ShuttersControl::shutters
->getRainUnprotectionDelayObj );
$FHEM::Automation::ShuttersControl::shutters
->setRainUnprotectionDelayObj('none');
}
if ( $FHEM::Automation::ShuttersControl::shutters->getIsDay
&& !$FHEM::Automation::ShuttersControl::shutters->getIfInShading
&& $FHEM::Automation::ShuttersControl::shutters->getLastPos ==
$FHEM::Automation::ShuttersControl::shutters->getShadingPos )
{
$targetPos = $FHEM::Automation::ShuttersControl::shutters->getOpenPos;
}
else {
$targetPos = $FHEM::Automation::ShuttersControl::shutters->getLastPos;
}
if ( !$FHEM::Automation::ShuttersControl::shutters->getIsDay
&& $FHEM::Automation::ShuttersControl::shutters->getShuttersPlace ne
'awning' )
{
$targetPos = (
$FHEM::Automation::ShuttersControl::shutters->getPrivacyDownStatus
== 2
? $FHEM::Automation::ShuttersControl::shutters->getPrivacyDownPos
: $FHEM::Automation::ShuttersControl::shutters->getClosedPos
);
}
$FHEM::Automation::ShuttersControl::shutters->setRainProtectionStatus(
'unprotected');
$FHEM::Automation::ShuttersControl::shutters->setDriveCmd($targetPos)
if ( IsAfterShuttersTimeBlocking($shuttersDev) );
return;
}
1;

View File

@ -0,0 +1,84 @@
###############################################################################
#
# Developed with VSCodium and richterger perl plugin
#
# (c) 2018-2023 Copyright: Marko Oldenburg (fhemdevelopment at cooltux dot net)
# All rights reserved
#
# Special thanks goes to:
# - Bernd (Cluni) this module is based on the logic of his script "Rollladensteuerung für HM/ROLLO inkl. Abschattung und Komfortfunktionen in Perl" (https://forum.fhem.de/index.php/topic,73964.0.html)
# - Beta-User for many tests, many suggestions and good discussions
# - pc1246 write english commandref
# - FunkOdyssey commandref style
# - sledge fix many typo in commandref
# - many User that use with modul and report bugs
# - Christoph (christoph.kaiser.in) Patch that expand RegEx for Window Events
# - Julian (Loredo) expand Residents Events for new Residents functions
# - Christoph (Christoph Morrison) for fix Commandref, many suggestions and good discussions
#
#
# This script is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License,or
# any later version.
#
# The GNU General Public License can be found at
# http://www.gnu.org/copyleft/gpl.html.
# A copy is found in the textfile GPL.txt and important notices to the license
# from the author is found in LICENSE.txt distributed with these scripts.
#
# This script is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
#
# $Id$
#
###############################################################################
## Klasse ASC_Roommate ##
package FHEM::Automation::ShuttersControl::Roommate;
use strict;
use warnings;
use utf8;
require Exporter;
use base qw(Exporter);
# our @ISA = qw(Exporter);
our @EXPORT_OK = qw(
getRoommateStatus
getRoommateLastStatus
);
our %EXPORT_TAGS = (
ALL => [
qw(
getRoommateStatus
getRoommateLastStatus
)
],
);
sub getRoommateStatus {
my $self = shift;
my $roommate = $self->{roommate};
return ::ReadingsVal( $roommate,
$FHEM::Automation::ShuttersControl::shutters->getRoommatesReading,
'none' );
}
sub getRoommateLastStatus {
my $self = shift;
my $roommate = $self->{roommate};
my $default = $self->{defaultarg};
$default = 'none' if ( !defined($default) );
return ::ReadingsVal( $roommate, 'lastState', $default );
}
1;

View File

@ -0,0 +1,672 @@
###############################################################################
#
# Developed with VSCodium and richterger perl plugin
#
# (c) 2018-2023 Copyright: Marko Oldenburg (fhemdevelopment at cooltux dot net)
# All rights reserved
#
# Special thanks goes to:
# - Bernd (Cluni) this module is based on the logic of his script "Rollladensteuerung für HM/ROLLO inkl. Abschattung und Komfortfunktionen in Perl" (https://forum.fhem.de/index.php/topic,73964.0.html)
# - Beta-User for many tests, many suggestions and good discussions
# - pc1246 write english commandref
# - FunkOdyssey commandref style
# - sledge fix many typo in commandref
# - many User that use with modul and report bugs
# - Christoph (christoph.kaiser.in) Patch that expand RegEx for Window Events
# - Julian (Loredo) expand Residents Events for new Residents functions
# - Christoph (Christoph Morrison) for fix Commandref, many suggestions and good discussions
#
#
# This script is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License,or
# any later version.
#
# The GNU General Public License can be found at
# http://www.gnu.org/copyleft/gpl.html.
# A copy is found in the textfile GPL.txt and important notices to the license
# from the author is found in LICENSE.txt distributed with these scripts.
#
# This script is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
#
# $Id$
#
###############################################################################
## unserer packagename
package FHEM::Automation::ShuttersControl::Shading;
use strict;
use warnings;
use POSIX qw(strftime);
use utf8;
use FHEM::Automation::ShuttersControl::Helper qw (IsInTime);
require Exporter;
use base qw(Exporter);
# our @ISA = qw(Exporter);
our @EXPORT_OK = qw(
CheckASC_ConditionsForShadingFn
ShadingProcessing
ShadingProcessingDriveCommand
);
our %EXPORT_TAGS = (
ALL => [
qw(
CheckASC_ConditionsForShadingFn
ShadingProcessing
ShadingProcessingDriveCommand
)
],
);
sub CheckASC_ConditionsForShadingFn {
my $hash = shift;
my $value = shift;
my $error;
$error .=
' no valid data from the ASC temperature sensor, is ASC_tempSensor attribut set?'
if ( $FHEM::Automation::ShuttersControl::ascDev->getOutTemp == -100 );
$error .= ' no twilight device found'
if ( $FHEM::Automation::ShuttersControl::ascDev->_getTwilightDevice eq
'none' );
my $count = 1;
for my $shuttersDev ( @{ $hash->{helper}{shuttersList} } ) {
my %funcHash = (
hash => $hash,
shuttersdevice => $shuttersDev,
value => $value,
attrEvent => 0,
);
::InternalTimer(
::gettimeofday() + $count,
'FHEM::Automation::ShuttersControl::Shading::_CheckShuttersConditionsForShadingFn',
\%funcHash
);
$count++;
}
return (
defined($error)
? $error
: 'none'
);
}
sub _CheckShuttersConditionsForShadingFn {
my $funcHash = shift;
my $hash = $funcHash->{hash};
my $shuttersDev = $funcHash->{shuttersdevice};
my $value = $funcHash->{value};
$FHEM::Automation::ShuttersControl::shutters->setShuttersDev($shuttersDev);
my $shuttersDevHash = $::defs{$shuttersDev};
my $message = '';
my $errorMessage;
my $warnMessage;
my $infoMessage;
if ( $value eq 'off' ) {
$FHEM::Automation::ShuttersControl::shutters->setShadingStatus('out');
$infoMessage .= ' shading was deactivated '
. ( $funcHash->{attrEvent} ? 'in the device' : 'globally' );
$errorMessage .= '';
ShadingProcessingDriveCommand( $hash, $shuttersDev );
}
else {
$infoMessage .= (
$FHEM::Automation::ShuttersControl::shutters->getShadingMode ne
'off'
&& $FHEM::Automation::ShuttersControl::ascDev
->getAutoShuttersControlShading eq 'on'
&& $FHEM::Automation::ShuttersControl::shutters->getOutTemp ==
-100
? ' shading active, global temp sensor is set, but shutters temperature sensor is not set'
: ''
);
$warnMessage .= (
$FHEM::Automation::ShuttersControl::shutters->getShadingMode eq
'off'
&& $FHEM::Automation::ShuttersControl::ascDev
->getAutoShuttersControlShading eq 'on'
? ' global shading active but ASC_Shading_Mode attribut is not set or off'
: ''
);
$errorMessage .= (
$FHEM::Automation::ShuttersControl::shutters->getShadingMode ne
'off'
&& $FHEM::Automation::ShuttersControl::ascDev
->getAutoShuttersControlShading ne 'on'
&& $FHEM::Automation::ShuttersControl::ascDev
->getAutoShuttersControlShading ne 'off'
? ' ASC_Shading_Mode attribut is set but global shading has errors, look at ASC device '
. '<a href="'
. '/fhem?detail='
. ::ReadingsVal( $shuttersDev, 'associatedWith', 'ASC device' )
. $::FW_CSRF . '">'
. ::ReadingsVal( $shuttersDev, 'associatedWith', 'ASC device' )
. '</a>'
: ''
);
$errorMessage .= (
$FHEM::Automation::ShuttersControl::shutters->getBrightness == -1
&& $FHEM::Automation::ShuttersControl::shutters->getShadingMode
ne 'off'
? ' no brightness sensor found, please set ASC_BrightnessSensor attribut'
: ''
);
}
$message .= ' ERROR: ' . $errorMessage
if ( defined($errorMessage)
&& $errorMessage ne '' );
$message .= ' WARN: ' . $warnMessage
if ( defined($warnMessage)
&& $warnMessage ne ''
&& $errorMessage eq '' );
$message .= ' INFO: ' . $infoMessage
if ( defined($infoMessage)
&& $infoMessage ne ''
&& $errorMessage eq '' );
::readingsBeginUpdate($shuttersDevHash);
::readingsBulkUpdateIfChanged( $shuttersDevHash, 'ASC_ShadingMessage',
'<html>' . $message . ' </html>' );
::readingsEndUpdate( $shuttersDevHash, 1 );
return;
}
sub ShadingProcessing {
### angleMinus ist $FHEM::Automation::ShuttersControl::shutters->getShadingAzimuthLeft
### anglePlus ist $FHEM::Automation::ShuttersControl::shutters->getShadingAzimuthRight
### winPos ist die Fensterposition $FHEM::Automation::ShuttersControl::shutters->getDirection
my ( $hash, $shuttersDev, $azimuth, $elevation, $outTemp,
$azimuthLeft, $azimuthRight )
= @_;
my $name = $hash->{NAME};
$FHEM::Automation::ShuttersControl::shutters->setShuttersDev($shuttersDev);
my $brightness =
$FHEM::Automation::ShuttersControl::shutters->getBrightnessAverage;
$FHEM::Automation::ShuttersControl::shutters
->setShadingBetweenTheTimeSuspend(
(
IsInTime(
$FHEM::Automation::ShuttersControl::shutters
->getShadingBetweenTheTime
)
? 0
: 1
)
);
FHEM::Automation::ShuttersControl::ASC_Debug(
'ShadingProcessing: '
. $FHEM::Automation::ShuttersControl::shutters->getShuttersDev
. ' - Übergebende Werte - Azimuth:'
. $azimuth
. ', Elevation: '
. $elevation
. ', Brightness: '
. $brightness
. ', OutTemp: '
. $outTemp
. ', Azimut Beschattung: '
. $azimuthLeft
. ', Azimut Endschattung: '
. $azimuthRight
. ', Ist es nach der Zeitblockadezeit: '
. (
FHEM::Automation::ShuttersControl::Helper::IsAfterShuttersTimeBlocking(
$shuttersDev) ? 'JA' : 'NEIN'
)
. ', Das Rollo ist in der Beschattung und wurde manuell gefahren: '
. (
$FHEM::Automation::ShuttersControl::shutters
->getShadingManualDriveStatus ? 'JA' : 'NEIN'
)
. ', Ist es nach der Hälfte der Beschattungswartezeit: '
. (
(
int( ::gettimeofday() ) -
$FHEM::Automation::ShuttersControl::shutters
->getShadingStatusTimestamp
) < (
$FHEM::Automation::ShuttersControl::shutters
->getShadingWaitingPeriod / 2
) ? 'NEIN' : 'JA'
)
);
::Log3( $name, 4,
"AutoShuttersControl ($name) - Shading Processing, Rollladen: "
. $shuttersDev
. " Azimuth: "
. $azimuth
. " Elevation: "
. $elevation
. " Brightness: "
. $brightness
. " OutTemp: "
. $outTemp );
return
if (
$azimuth == -1
|| $elevation == -1
|| $brightness == -1
|| $outTemp == -100
|| (
int( ::gettimeofday() ) -
$FHEM::Automation::ShuttersControl::shutters
->getShadingStatusTimestamp ) < (
$FHEM::Automation::ShuttersControl::shutters
->getShadingWaitingPeriod / 2
)
|| $FHEM::Automation::ShuttersControl::shutters
->getExternalTriggerStatus
|| $FHEM::Automation::ShuttersControl::shutters->getShadingMode eq 'off'
|| $FHEM::Automation::ShuttersControl::ascDev
->getAutoShuttersControlShading eq 'off'
|| $FHEM::Automation::ShuttersControl::shutters
->getExternalTriggerStatus
);
::Log3( $name, 4,
"AutoShuttersControl ($name) - Shading Processing, Rollladen: "
. $shuttersDev
. " Nach dem return" );
my $getShadingPos =
$FHEM::Automation::ShuttersControl::shutters->getShadingPos;
my $getStatus = $FHEM::Automation::ShuttersControl::shutters->getStatus;
my $oldShadingStatus =
$FHEM::Automation::ShuttersControl::shutters->getShadingStatus;
my $shuttersDevHash = $::defs{$shuttersDev};
my $getModeUp = $FHEM::Automation::ShuttersControl::shutters->getModeUp;
my $homemode = $FHEM::Automation::ShuttersControl::shutters->getHomemode;
FHEM::Automation::ShuttersControl::ASC_Debug( 'ShadingProcessing: '
. $FHEM::Automation::ShuttersControl::shutters->getShuttersDev
. ' - Alle Werte für die weitere Verarbeitung sind korrekt vorhanden und es wird nun mit der Beschattungsverarbeitung begonnen'
);
if (
(
$outTemp < $FHEM::Automation::ShuttersControl::shutters
->getShadingMinOutsideTemperature - 4
|| $azimuth < $azimuthLeft
|| $azimuth > $azimuthRight
|| ( !$FHEM::Automation::ShuttersControl::shutters->getIsDay
&& $FHEM::Automation::ShuttersControl::shutters
->getSunriseUnixTime - ( int( ::gettimeofday() ) ) > 7200 )
)
&& $FHEM::Automation::ShuttersControl::shutters->getShadingStatus ne
'out'
)
{
$FHEM::Automation::ShuttersControl::shutters->setShadingStatus('out');
FHEM::Automation::ShuttersControl::ASC_Debug( 'ShadingProcessing: '
. $FHEM::Automation::ShuttersControl::shutters->getShuttersDev
. ' - Es ist Nacht oder die Aussentemperatur unterhalb der Shading Temperatur. Die Beschattung wird Zwangsbeendet'
);
::Log3( $name, 4,
"AutoShuttersControl ($name) - Shading Processing - Der Sonnenstand ist ausserhalb der Winkelangaben oder die Aussentemperatur unterhalb der Shading Temperatur "
);
}
elsif ($azimuth < $azimuthLeft
|| $azimuth > $azimuthRight
|| $elevation <
$FHEM::Automation::ShuttersControl::shutters->getShadingMinElevation
|| $elevation >
$FHEM::Automation::ShuttersControl::shutters->getShadingMaxElevation
|| $brightness < $FHEM::Automation::ShuttersControl::shutters
->getShadingStateChangeCloudy
|| $outTemp < $FHEM::Automation::ShuttersControl::shutters
->getShadingMinOutsideTemperature - 1 )
{
$FHEM::Automation::ShuttersControl::shutters->setShadingStatus(
'out reserved')
if ( $FHEM::Automation::ShuttersControl::shutters->getShadingStatus eq
'in'
|| $FHEM::Automation::ShuttersControl::shutters->getShadingStatus
eq 'in reserved' );
if (
(
$FHEM::Automation::ShuttersControl::shutters->getShadingStatus
eq 'out reserved'
and (
int( ::gettimeofday() ) -
$FHEM::Automation::ShuttersControl::shutters
->getShadingStatusTimestamp )
) > $FHEM::Automation::ShuttersControl::shutters
->getShadingWaitingPeriod
)
{
$FHEM::Automation::ShuttersControl::shutters->setShadingStatus(
'out');
}
::Log3( $name, 4,
"AutoShuttersControl ($name) - Shading Processing, Rollladen: "
. $shuttersDev
. " In der Out Abfrage, Shadingwert: "
. $FHEM::Automation::ShuttersControl::shutters->getShadingStatus
. ", Zeitstempel: "
. $FHEM::Automation::ShuttersControl::shutters
->getShadingStatusTimestamp );
FHEM::Automation::ShuttersControl::ASC_Debug( 'ShadingProcessing: '
. $FHEM::Automation::ShuttersControl::shutters->getShuttersDev
. ' - Einer der Beschattungsbedingungen wird nicht mehr erfüllt und somit wird der Beschattungsstatus um eine Stufe reduziert. Alter Status: '
. $oldShadingStatus
. ' Neuer Status: '
. $FHEM::Automation::ShuttersControl::shutters->getShadingStatus
);
}
elsif ($azimuth > $azimuthLeft
&& $azimuth < $azimuthRight
&& $elevation >
$FHEM::Automation::ShuttersControl::shutters->getShadingMinElevation
&& $elevation <
$FHEM::Automation::ShuttersControl::shutters->getShadingMaxElevation
&& $brightness >
$FHEM::Automation::ShuttersControl::shutters->getShadingStateChangeSunny
&& $outTemp > $FHEM::Automation::ShuttersControl::shutters
->getShadingMinOutsideTemperature )
{
if ( $FHEM::Automation::ShuttersControl::shutters->getShadingStatus eq
'out'
|| $FHEM::Automation::ShuttersControl::shutters->getShadingStatus
eq 'out reserved' )
{
$FHEM::Automation::ShuttersControl::shutters->setShadingStatus(
'in reserved');
}
if (
$FHEM::Automation::ShuttersControl::shutters->getShadingStatus eq
'in reserved'
and (
int( ::gettimeofday() ) -
$FHEM::Automation::ShuttersControl::shutters
->getShadingStatusTimestamp ) > (
$FHEM::Automation::ShuttersControl::shutters
->getShadingWaitingPeriod / 2
)
)
{
$FHEM::Automation::ShuttersControl::shutters->setShadingStatus(
'in');
}
::Log3( $name, 4,
"AutoShuttersControl ($name) - Shading Processing, Rollladen: "
. $shuttersDev
. " In der In Abfrage, Shadingwert: "
. $FHEM::Automation::ShuttersControl::shutters->getShadingStatus
. ", Zeitstempel: "
. $FHEM::Automation::ShuttersControl::shutters
->getShadingStatusTimestamp );
FHEM::Automation::ShuttersControl::ASC_Debug( 'ShadingProcessing: '
. $FHEM::Automation::ShuttersControl::shutters->getShuttersDev
. ' - Alle Beschattungsbedingungen wurden erfüllt und somit wird der Beschattungsstatus um eine Stufe angehoben. Alter Status: '
. $oldShadingStatus
. ' Neuer Status: '
. $FHEM::Automation::ShuttersControl::shutters->getShadingStatus
);
}
ShadingProcessingDriveCommand( $hash, $shuttersDev )
if (
FHEM::Automation::ShuttersControl::Helper::IsAfterShuttersTimeBlocking(
$shuttersDev)
&& !$FHEM::Automation::ShuttersControl::shutters
->getShadingManualDriveStatus
&& $FHEM::Automation::ShuttersControl::shutters->getRoommatesStatus ne
'gotosleep'
&& $FHEM::Automation::ShuttersControl::shutters->getRoommatesStatus ne
'asleep'
&& (
(
$FHEM::Automation::ShuttersControl::shutters->getShadingStatus
eq 'out'
&& $FHEM::Automation::ShuttersControl::shutters
->getShadingLastStatus eq 'in'
)
|| ( $FHEM::Automation::ShuttersControl::shutters->getShadingStatus
eq 'in'
&& $FHEM::Automation::ShuttersControl::shutters
->getShadingLastStatus eq 'out' )
)
&& ( $FHEM::Automation::ShuttersControl::shutters->getShadingMode eq
'always'
|| $FHEM::Automation::ShuttersControl::shutters->getShadingMode eq
$homemode )
&& (
$getModeUp eq 'always'
|| $getModeUp eq $homemode
|| $getModeUp eq 'off'
|| $getModeUp eq 'absent'
|| $getModeUp eq 'gone'
|| ( $getModeUp eq 'home'
&& $homemode ne 'asleep' )
)
&& (
(
(
int( ::gettimeofday() ) -
$FHEM::Automation::ShuttersControl::shutters
->getShadingStatusTimestamp
) < 2
&& $FHEM::Automation::ShuttersControl::shutters->getStatus !=
$FHEM::Automation::ShuttersControl::shutters->getClosedPos
)
|| (
!$FHEM::Automation::ShuttersControl::shutters
->getQueryShuttersPos(
$FHEM::Automation::ShuttersControl::shutters->getShadingPos
)
&& $FHEM::Automation::ShuttersControl::shutters->getIfInShading
)
|| ( !$FHEM::Automation::ShuttersControl::shutters->getIfInShading
&& $FHEM::Automation::ShuttersControl::shutters->getStatus ==
$FHEM::Automation::ShuttersControl::shutters->getShadingPos )
|| ( !$FHEM::Automation::ShuttersControl::shutters
->getShadingBetweenTheTimeSuspend
&& $FHEM::Automation::ShuttersControl::shutters->getStatus !=
$FHEM::Automation::ShuttersControl::shutters->getShadingPos )
)
);
::readingsBeginUpdate($shuttersDevHash);
::readingsBulkUpdate(
$shuttersDevHash,
'ASC_ShadingMessage',
'INFO: current shading status is \''
. $FHEM::Automation::ShuttersControl::shutters->getShadingStatus
. '\''
. ' - next check in '
. (
(
(
$FHEM::Automation::ShuttersControl::shutters
->getShadingLastStatus eq 'out reserved'
|| $FHEM::Automation::ShuttersControl::shutters
->getShadingLastStatus eq 'out'
)
? $FHEM::Automation::ShuttersControl::shutters
->getShadingWaitingPeriod
: $FHEM::Automation::ShuttersControl::shutters
->getShadingWaitingPeriod / 2
)
) / 60
. 'm'
);
::readingsEndUpdate( $shuttersDevHash, 1 );
return;
}
sub ShadingProcessingDriveCommand {
my $hash = shift;
my $shuttersDev = shift;
my $marker = shift // 0;
my $name = $hash->{NAME};
$FHEM::Automation::ShuttersControl::shutters->setShuttersDev($shuttersDev);
my $getShadingPos =
$FHEM::Automation::ShuttersControl::shutters->getShadingPos;
my $getStatus = $FHEM::Automation::ShuttersControl::shutters->getStatus;
$FHEM::Automation::ShuttersControl::shutters->setShadingStatus(
$FHEM::Automation::ShuttersControl::shutters->getShadingStatus );
if (
IsInTime(
$FHEM::Automation::ShuttersControl::shutters
->getShadingBetweenTheTime
)
&& $FHEM::Automation::ShuttersControl::shutters->getShadingStatus eq
'in'
&& $getShadingPos != $getStatus
&& (
$getStatus !=
$FHEM::Automation::ShuttersControl::shutters->getClosedPos
|| ( $getStatus ==
$FHEM::Automation::ShuttersControl::shutters->getClosedPos
&& $marker )
)
&& (
$getStatus !=
$FHEM::Automation::ShuttersControl::shutters->getSleepPos
|| ( $getStatus ==
$FHEM::Automation::ShuttersControl::shutters->getSleepPos
&& $marker )
)
&& (
FHEM::Automation::ShuttersControl::CheckIfShuttersWindowRecOpen(
$shuttersDev) != 2
|| $FHEM::Automation::ShuttersControl::shutters->getShuttersPlace
ne 'terrace'
)
)
{
$FHEM::Automation::ShuttersControl::shutters->setLastDrive(
'shading in');
FHEM::Automation::ShuttersControl::ShuttersCommandSet( $hash,
$shuttersDev, $getShadingPos );
FHEM::Automation::ShuttersControl::ASC_Debug(
'ShadingProcessingDriveCommand: '
. $FHEM::Automation::ShuttersControl::shutters->getShuttersDev
. ' - Der aktuelle Beschattungsstatus ist: '
. $FHEM::Automation::ShuttersControl::shutters->getShadingStatus
. ' und somit wird nun in die Position: '
. $getShadingPos
. ' zum Beschatten gefahren' );
$FHEM::Automation::ShuttersControl::shutters->setShadingLastPos(
$getShadingPos);
}
elsif (
$FHEM::Automation::ShuttersControl::shutters->getShadingStatus eq 'out'
&& $getShadingPos == $getStatus )
{
$FHEM::Automation::ShuttersControl::shutters->setLastDrive(
'shading out');
FHEM::Automation::ShuttersControl::ShuttersCommandSet(
$hash,
$shuttersDev,
(
(
$getShadingPos ==
$FHEM::Automation::ShuttersControl::shutters->getLastPos
|| $getShadingPos ==
$FHEM::Automation::ShuttersControl::shutters
->getShadingLastPos
)
? $FHEM::Automation::ShuttersControl::shutters->getOpenPos
: (
$FHEM::Automation::ShuttersControl::shutters
->getQueryShuttersPos(
$FHEM::Automation::ShuttersControl::shutters->getLastPos
)
? (
$FHEM::Automation::ShuttersControl::shutters
->getLastPos ==
$FHEM::Automation::ShuttersControl::shutters
->getSleepPos
? $FHEM::Automation::ShuttersControl::shutters
->getOpenPos
: $FHEM::Automation::ShuttersControl::shutters
->getLastPos
)
: $FHEM::Automation::ShuttersControl::shutters->getOpenPos
)
)
)
if ( $FHEM::Automation::ShuttersControl::shutters->getIsDay
|| $FHEM::Automation::ShuttersControl::shutters->getShuttersPlace
eq 'awning' );
FHEM::Automation::ShuttersControl::ASC_Debug(
'ShadingProcessingDriveCommand: '
. $FHEM::Automation::ShuttersControl::shutters->getShuttersDev
. ' - Der aktuelle Beschattungsstatus ist: '
. $FHEM::Automation::ShuttersControl::shutters->getShadingStatus
. ' und somit wird nun in die Position: '
. $getShadingPos
. ' zum beenden der Beschattung gefahren' );
}
::Log3( $name, 4,
"AutoShuttersControl ($name) - Shading Processing - In der Routine zum fahren der Rollläden, Shading Wert: "
. $FHEM::Automation::ShuttersControl::shutters->getShadingStatus );
FHEM::Automation::ShuttersControl::ASC_Debug(
'ShadingProcessingDriveCommand: '
. $FHEM::Automation::ShuttersControl::shutters->getShuttersDev
. ' - Der aktuelle Beschattungsstatus ist: '
. $FHEM::Automation::ShuttersControl::shutters->getShadingStatus
. ', Beschattungsstatus Zeitstempel: '
. strftime(
"%Y.%m.%d %T",
localtime(
$FHEM::Automation::ShuttersControl::shutters
->getShadingStatusTimestamp
)
)
);
return;
}
1;

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,83 @@
###############################################################################
#
# Developed with VSCodium and richterger perl plugin
#
# (c) 2018-2023 Copyright: Marko Oldenburg (fhemdevelopment at cooltux dot net)
# All rights reserved
#
# Special thanks goes to:
# - Bernd (Cluni) this module is based on the logic of his script "Rollladensteuerung für HM/ROLLO inkl. Abschattung und Komfortfunktionen in Perl" (https://forum.fhem.de/index.php/topic,73964.0.html)
# - Beta-User for many tests, many suggestions and good discussions
# - pc1246 write english commandref
# - FunkOdyssey commandref style
# - sledge fix many typo in commandref
# - many User that use with modul and report bugs
# - Christoph (christoph.kaiser.in) Patch that expand RegEx for Window Events
# - Julian (Loredo) expand Residents Events for new Residents functions
# - Christoph (Christoph Morrison) for fix Commandref, many suggestions and good discussions
#
#
# This script is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License,or
# any later version.
#
# The GNU General Public License can be found at
# http://www.gnu.org/copyleft/gpl.html.
# A copy is found in the textfile GPL.txt and important notices to the license
# from the author is found in LICENSE.txt distributed with these scripts.
#
# This script is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
#
# $Id$
#
###############################################################################
## Subklasse Readings von ASC_Shutters ##
package FHEM::Automation::ShuttersControl::Shutters::Readings;
use strict;
use warnings;
use utf8;
sub getBrightness {
my $self = shift;
return ::ReadingsNum(
$FHEM::Automation::ShuttersControl::shutters->_getBrightnessSensor,
$FHEM::Automation::ShuttersControl::shutters->getBrightnessReading,
-1 );
}
sub getWindStatus {
my $self = shift;
return ::ReadingsVal(
$FHEM::Automation::ShuttersControl::ascDev->_getWindSensor,
$FHEM::Automation::ShuttersControl::ascDev->getWindSensorReading, -1 );
}
sub getStatus {
my $self = shift;
return ::ReadingsNum( $self->{shuttersDev},
$FHEM::Automation::ShuttersControl::shutters->getPosCmd, 0 );
}
sub getDelayCmd {
my $self = shift;
return $self->{ $self->{shuttersDev} }{delayCmd};
}
sub getASCenable {
my $self = shift;
return ::ReadingsVal( $self->{shuttersDev}, 'ASC_Enable', 'on' );
}
1;

View File

@ -0,0 +1,53 @@
###############################################################################
#
# Developed with VSCodium and richterger perl plugin
#
# (c) 2018-2023 Copyright: Marko Oldenburg (fhemdevelopment at cooltux dot net)
# All rights reserved
#
# Special thanks goes to:
# - Bernd (Cluni) this module is based on the logic of his script "Rollladensteuerung für HM/ROLLO inkl. Abschattung und Komfortfunktionen in Perl" (https://forum.fhem.de/index.php/topic,73964.0.html)
# - Beta-User for many tests, many suggestions and good discussions
# - pc1246 write english commandref
# - FunkOdyssey commandref style
# - sledge fix many typo in commandref
# - many User that use with modul and report bugs
# - Christoph (christoph.kaiser.in) Patch that expand RegEx for Window Events
# - Julian (Loredo) expand Residents Events for new Residents functions
# - Christoph (Christoph Morrison) for fix Commandref, many suggestions and good discussions
#
#
# This script is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License,or
# any later version.
#
# The GNU General Public License can be found at
# http://www.gnu.org/copyleft/gpl.html.
# A copy is found in the textfile GPL.txt and important notices to the license
# from the author is found in LICENSE.txt distributed with these scripts.
#
# This script is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
#
# $Id$
#
###############################################################################
## Klasse Fenster (Window) und die Subklassen Attr und Readings ##
package FHEM::Automation::ShuttersControl::Window;
use strict;
use warnings;
use utf8;
use FHEM::Automation::ShuttersControl::Window::Attr;
use FHEM::Automation::ShuttersControl::Window::Readings;
use base
qw(FHEM::Automation::ShuttersControl::Window::Attr FHEM::Automation::ShuttersControl::Window::Readings);
1;

View File

@ -0,0 +1,118 @@
###############################################################################
#
# Developed with VSCodium and richterger perl plugin
#
# (c) 2018-2023 Copyright: Marko Oldenburg (fhemdevelopment at cooltux dot net)
# All rights reserved
#
# Special thanks goes to:
# - Bernd (Cluni) this module is based on the logic of his script "Rollladensteuerung für HM/ROLLO inkl. Abschattung und Komfortfunktionen in Perl" (https://forum.fhem.de/index.php/topic,73964.0.html)
# - Beta-User for many tests, many suggestions and good discussions
# - pc1246 write english commandref
# - FunkOdyssey commandref style
# - sledge fix many typo in commandref
# - many User that use with modul and report bugs
# - Christoph (christoph.kaiser.in) Patch that expand RegEx for Window Events
# - Julian (Loredo) expand Residents Events for new Residents functions
# - Christoph (Christoph Morrison) for fix Commandref, many suggestions and good discussions
#
#
# This script is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License,or
# any later version.
#
# The GNU General Public License can be found at
# http://www.gnu.org/copyleft/gpl.html.
# A copy is found in the textfile GPL.txt and important notices to the license
# from the author is found in LICENSE.txt distributed with these scripts.
#
# This script is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
#
# $Id$
#
###############################################################################
## Subklasse Attr von Klasse ASC_Window ##
package FHEM::Automation::ShuttersControl::Window::Attr;
use strict;
use warnings;
use utf8;
sub setSubTyp {
my $self = shift;
my $attrVal = shift;
_setAttributs( $self->{shuttersDev}, 'ASC_WindowRec_subType', $attrVal );
return;
}
sub getSubTyp {
my $self = shift;
return ::AttrVal( $self->{shuttersDev}, 'ASC_WindowRec_subType',
'twostate' );
}
sub setWinDev {
my $self = shift;
my $attrVal = shift;
_setAttributs( $self->{shuttersDev}, 'ASC_WindowRec', $attrVal );
return;
}
sub _getWinDev {
my $self = shift;
return $self->{ $self->{shuttersDev} }->{ASC_WindowRec}->{device}
if (
exists(
$self->{ $self->{shuttersDev} }->{ASC_WindowRec}->{LASTGETTIME}
)
&& ( ::gettimeofday() -
$self->{ $self->{shuttersDev} }->{ASC_WindowRec}->{LASTGETTIME} ) <
2
);
$self->{ $self->{shuttersDev} }->{ASC_WindowRec}->{LASTGETTIME} =
int( ::gettimeofday() );
my ( $device, $reading ) =
FHEM::Automation::ShuttersControl::Helper::GetAttrValues(
$self->{shuttersDev}, 'ASC_WindowRec', 'none' );
### erwartetes Ergebnis
# DEVICE:READING VALUEACTIVE:VALUEINACTIVE POSACTIVE:POSINACTIVE
$self->{ $self->{shuttersDev} }->{ASC_WindowRec}->{device} =
$device;
$self->{ $self->{shuttersDev} }->{ASC_WindowRec}->{reading} =
( $reading ne 'none' ? $reading : 'state' );
return $self->{ $self->{shuttersDev} }->{ASC_WindowRec}->{device};
}
sub getWinDevReading {
my $self = shift;
return $self->{ $self->{shuttersDev} }->{ASC_WindowRec}->{reading}
if (
exists(
$self->{ $self->{shuttersDev} }->{ASC_WindowRec}->{LASTGETTIME}
)
&& ( ::gettimeofday() -
$self->{ $self->{shuttersDev} }->{ASC_WindowRec}->{LASTGETTIME} ) <
2
);
$FHEM::Automation::ShuttersControl::shutters->_getWinDev;
return $self->{ $self->{shuttersDev} }->{ASC_WindowRec}->{reading};
}
1;

View File

@ -0,0 +1,56 @@
###############################################################################
#
# Developed with VSCodium and richterger perl plugin
#
# (c) 2018-2023 Copyright: Marko Oldenburg (fhemdevelopment at cooltux dot net)
# All rights reserved
#
# Special thanks goes to:
# - Bernd (Cluni) this module is based on the logic of his script "Rollladensteuerung für HM/ROLLO inkl. Abschattung und Komfortfunktionen in Perl" (https://forum.fhem.de/index.php/topic,73964.0.html)
# - Beta-User for many tests, many suggestions and good discussions
# - pc1246 write english commandref
# - FunkOdyssey commandref style
# - sledge fix many typo in commandref
# - many User that use with modul and report bugs
# - Christoph (christoph.kaiser.in) Patch that expand RegEx for Window Events
# - Julian (Loredo) expand Residents Events for new Residents functions
# - Christoph (Christoph Morrison) for fix Commandref, many suggestions and good discussions
#
#
# This script is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License,or
# any later version.
#
# The GNU General Public License can be found at
# http://www.gnu.org/copyleft/gpl.html.
# A copy is found in the textfile GPL.txt and important notices to the license
# from the author is found in LICENSE.txt distributed with these scripts.
#
# This script is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
#
# $Id$
#
###############################################################################
## Subklasse Readings von Klasse ASC_Window ##
package FHEM::Automation::ShuttersControl::Window::Readings;
use strict;
use warnings;
use utf8;
sub getWinStatus {
my $self = shift;
return ::ReadingsVal(
$FHEM::Automation::ShuttersControl::shutters->_getWinDev,
$FHEM::Automation::ShuttersControl::shutters->getWinDevReading,
'closed' );
}
1;