diff --git a/CHANGELOG.md b/CHANGELOG.md new file mode 100644 index 0000000..80b9f53 --- /dev/null +++ b/CHANGELOG.md @@ -0,0 +1,3972 @@ +### docs: change verson numbers (HEAD -> patch-changeVersion) +>Tue, 10 Jan 2023 09:50:36 +0100 + +>Author: Marko Oldenburg (fhemdevelopment@cooltux.net) + +>Commiter: Marko Oldenburg (fhemdevelopment@cooltux.net) + +change modul versions + + + +### test: add hooks (origin/patch-changeVersion) +>Tue, 10 Jan 2023 09:48:39 +0100 + +>Author: Marko Oldenburg (fhemdevelopment@cooltux.net) + +>Commiter: Marko Oldenburg (fhemdevelopment@cooltux.net) + +hooks for commit test and create changelog + + + +### [translaten] - add commandref translation +>Sun, 18 Sep 2022 08:52:43 +0200 + +>Author: Sebastian (em@ail.tld) + +>Commiter: Sebastian (em@ail.tld) + + + + +### spellcheck + corrections +>Tue, 6 Sep 2022 14:34:38 +0200 + +>Author: Sebastian (em@ail.tld) + +>Commiter: Sebastian (em@ail.tld) + + + + +### [enhancement] - commandref +>Tue, 6 Sep 2022 12:32:40 +0200 + +>Author: Sebastian (em@ail.tld) + +>Commiter: Sebastian (em@ail.tld) + + + + +### [enhancement] - commandref +>Tue, 30 Aug 2022 16:23:00 +0200 + +>Author: Sebastian (em@ail.tld) + +>Commiter: Sebastian (em@ail.tld) + + + + +### [test] commandref +>Sun, 28 Aug 2022 20:11:11 +0200 + +>Author: Sebastian (em@ail.tld) + +>Commiter: Sebastian (em@ail.tld) + + + + +### [try] - to setup cmdref to set webui +>Tue, 23 Aug 2022 15:04:06 +0200 + +>Author: Sebastian (em@ail.tld) + +>Commiter: Sebastian (em@ail.tld) + + + + +### [add] - wc reset valve, commandref +>Tue, 23 Aug 2022 11:24:21 +0200 + +>Author: Sebastian (em@ail.tld) + +>Commiter: Sebastian (em@ail.tld) + + + + +### [fix] - upper/lower case +>Thu, 11 Aug 2022 14:25:19 +0200 + +>Author: Sebastian (em@ail.tld) + +>Commiter: Sebastian (em@ail.tld) + + + + +### [enhancement] - add resetvalveerrors ic24 +>Thu, 11 Aug 2022 12:40:13 +0200 + +>Author: Sebastian (em@ail.tld) + +>Commiter: Sebastian (em@ail.tld) + + + + +### [final 2] - removed debug dumper code +>Tue, 9 Aug 2022 15:03:38 +0200 + +>Author: Sebastian (em@ail.tld) + +>Commiter: Sebastian (em@ail.tld) + + + + +### [final] - removed debug print lines, cleanup code +>Tue, 9 Aug 2022 14:52:34 +0200 + +>Author: Sebastian (em@ail.tld) + +>Commiter: Sebastian (em@ail.tld) + + + + +### [fix] - schedules + debug +>Tue, 9 Aug 2022 10:34:04 +0200 + +>Author: Sebastian (em@ail.tld) + +>Commiter: Sebastian (em@ail.tld) + + + + +### [fix] - debug output +>Tue, 9 Aug 2022 10:13:57 +0200 + +>Author: Sebastian (em@ail.tld) + +>Commiter: Sebastian (em@ail.tld) + + + + +### [fix] - corret debug output +>Tue, 9 Aug 2022 10:04:43 +0200 + +>Author: Sebastian (em@ail.tld) + +>Commiter: Sebastian (em@ail.tld) + + + + +### [fix] - commandref +>Mon, 8 Aug 2022 21:03:29 +0200 + +>Author: Sebastian (em@ail.tld) + +>Commiter: Sebastian (em@ail.tld) + + + + +### [fix] - checkmethode delete reading if ist = soll +>Mon, 8 Aug 2022 20:59:57 +0200 + +>Author: Sebastian (em@ail.tld) + +>Commiter: Sebastian (em@ail.tld) + + + + +### [fix] - removed "valveid" from reading +>Mon, 8 Aug 2022 20:47:19 +0200 + +>Author: Sebastian (em@ail.tld) + +>Commiter: Sebastian (em@ail.tld) + + + + +### [fix] - cast all propertie as string - fixed bulkupdateifchanged +>Sun, 7 Aug 2022 20:20:17 +0200 + +>Author: Sebastian (em@ail.tld) + +>Commiter: Sebastian (em@ail.tld) + + + + +### [fix] - delete unused schedules +>Sat, 6 Aug 2022 20:20:04 +0200 + +>Author: Sebastian (em@ail.tld) + +>Commiter: Sebastian (em@ail.tld) + + + + +### [enhancement] - delete unused scheuldes from readings +>Sat, 6 Aug 2022 13:13:43 +0200 + +>Author: Sebastian (em@ail.tld) + +>Commiter: Sebastian (em@ail.tld) + + + + +### [enhancement] - commandref +>Thu, 4 Aug 2022 15:47:10 +0200 + +>Author: Sebastian (em@ail.tld) + +>Commiter: Sebastian (em@ail.tld) + + + + +### [fix] - translation +>Thu, 4 Aug 2022 14:54:44 +0200 + +>Author: Sebastian (em@ail.tld) + +>Commiter: Sebastian (em@ail.tld) + + + + +### [fix] - fix +>Thu, 4 Aug 2022 14:44:35 +0200 + +>Author: Sebastian (em@ail.tld) + +>Commiter: Sebastian (em@ail.tld) + + + + +### [enhancemend] - commandref +>Thu, 4 Aug 2022 14:39:44 +0200 + +>Author: Sebastian (em@ail.tld) + +>Commiter: Sebastian (em@ail.tld) + + + + +### [fix] - schedules_event incrementation +>Thu, 4 Aug 2022 10:34:48 +0200 + +>Author: Sebastian (em@ail.tld) + +>Commiter: Sebastian (em@ail.tld) + + + + +### [fix] - eventhandler ic24 +>Thu, 4 Aug 2022 10:31:11 +0200 + +>Author: Sebastian (em@ail.tld) + +>Commiter: Sebastian (em@ail.tld) + + + + +### [fix] - update event handled +>Tue, 2 Aug 2022 14:58:59 +0200 + +>Author: Sebastian (em@ail.tld) + +>Commiter: Sebastian (em@ail.tld) + + + + +### [fix] - show schedules_events_count fot non sensor devices [fix] - remove _valve_ in non valve devices fpr schedules +>Tue, 2 Aug 2022 14:52:52 +0200 + +>Author: Sebastian (em@ail.tld) + +>Commiter: Sebastian (em@ail.tld) + + + + +### [log] - removed valve_names log line +>Sat, 30 Jul 2022 20:31:59 +0200 + +>Author: Sebastian (em@ail.tld) + +>Commiter: Sebastian (em@ail.tld) + + + + +### add translation +>Fri, 29 Jul 2022 12:49:27 +0200 + +>Author: Sebastian (em@ail.tld) + +>Commiter: Sebastian (em@ail.tld) + + + + +### [add] - translations/commandref +>Wed, 27 Jul 2022 22:31:53 +0200 + +>Author: Sebastian (em@ail.tld) + +>Commiter: Sebastian (em@ail.tld) + + + + +### [add] - translation pumpe filter +>Sun, 24 Jul 2022 20:29:15 +0200 + +>Author: Sebastian (em@ail.tld) + +>Commiter: Sebastian (em@ail.tld) + + + + +### [fix] - uninitialized 727 +>Sun, 24 Jul 2022 20:25:21 +0200 + +>Author: Sebastian (em@ail.tld) + +>Commiter: Sebastian (em@ail.tld) + + + + +### [fix] - exists gegen defined +>Fri, 22 Jul 2022 21:08:02 +0200 + +>Author: Sebastian (em@ail.tld) + +>Commiter: Sebastian (em@ail.tld) + + + + +### cleanup +>Wed, 20 Jul 2022 12:15:53 +0200 + +>Author: Sebastian (em@ail.tld) + +>Commiter: Sebastian (em@ail.tld) + + + + +### cleanup code, fix start up defined string +>Tue, 19 Jul 2022 20:20:20 +0200 + +>Author: Sebastian (em@ail.tld) + +>Commiter: Sebastian (em@ail.tld) + + + + +### readd lost setter webinterface +>Wed, 13 Jul 2022 20:56:47 +0200 + +>Author: Sebastian (em@ail.tld) + +>Commiter: Sebastian (em@ail.tld) + + + + +### change version number +>Wed, 13 Jul 2022 07:58:43 +0200 + +>Author: Marko Oldenburg (fhemdevelopment@cooltux.net) + +>Commiter: Marko Oldenburg (fhemdevelopment@cooltux.net) + +[Ticket: no] + + + +### „FHEM/74_GardenaSmartDevice.pm“ ändern +>Tue, 12 Jul 2022 20:09:33 +0200 + +>Author: Sebastian Schwaz (sebastianschwarz@noreply@cooltux.net) + +>Commiter: Sebastian Schwaz (sebastianschwarz@noreply@cooltux.net) + + + + +### [add] - cancleValve for conencted valvs only +>Mon, 11 Jul 2022 20:22:27 +0200 + +>Author: Sebastian (em@ail.tld) + +>Commiter: Sebastian (em@ail.tld) + + + + +### [enhancement] - change stopSchedule and resumeSchedule setter to connected valves +>Mon, 11 Jul 2022 20:03:12 +0200 + +>Author: Sebastian (em@ail.tld) + +>Commiter: Sebastian (em@ail.tld) + + + + +### [fix] state , initial nearst fallback, paused untel readded - paused_until is UTC no bug -> calc for state in localtim +>Sun, 10 Jul 2022 20:16:07 +0200 + +>Author: Sebastian (em@ail.tld) + +>Commiter: Sebastian (em@ail.tld) + + + + +### [fix] Garbage at end of string in strptime +>Fri, 8 Jul 2022 15:38:30 +0200 + +>Author: Sebastian (em@ail.tld) + +>Commiter: Sebastian (em@ail.tld) + + + + +### [enhancement] - scheudiles handling wc,ic24,pump, next schedule, permanenlty cloesd +>Fri, 8 Jul 2022 15:23:36 +0200 + +>Author: Sebastian (em@ail.tld) + +>Commiter: Sebastian (em@ail.tld) + + + + +### [fix] - schedules events +>Fri, 8 Jul 2022 15:11:18 +0200 + +>Author: Sebastian (em@ail.tld) + +>Commiter: Sebastian (em@ail.tld) + + + + +### [fix] scheduled count +>Fri, 8 Jul 2022 12:58:49 +0200 + +>Author: Sebastian (em@ail.tld) + +>Commiter: Sebastian (em@ail.tld) + + + + +### [fix] - readings schedules_event +>Fri, 8 Jul 2022 12:51:51 +0200 + +>Author: Sebastian (em@ail.tld) + +>Commiter: Sebastian (em@ail.tld) + + + + +### [fix] - scheduled +>Fri, 8 Jul 2022 12:48:51 +0200 + +>Author: Sebastian (em@ail.tld) + +>Commiter: Sebastian (em@ail.tld) + + + + +### [fix] - ifcondition schedules events +>Fri, 8 Jul 2022 12:47:49 +0200 + +>Author: Sebastian (em@ail.tld) + +>Commiter: Sebastian (em@ail.tld) + + + + +### fix +>Fri, 8 Jul 2022 12:46:20 +0200 + +>Author: Sebastian (em@ail.tld) + +>Commiter: Sebastian (em@ail.tld) + + + + +### fix +>Fri, 8 Jul 2022 12:43:14 +0200 + +>Author: Sebastian (em@ail.tld) + +>Commiter: Sebastian (em@ail.tld) + + + + +### fix +>Fri, 8 Jul 2022 12:42:32 +0200 + +>Author: Sebastian (em@ail.tld) + +>Commiter: Sebastian (em@ail.tld) + + + + +### [enhancment] - schedules +>Fri, 8 Jul 2022 12:39:38 +0200 + +>Author: Sebastian (em@ail.tld) + +>Commiter: Sebastian (em@ail.tld) + + + + +### [NEW] - implementation schedules infos +>Fri, 8 Jul 2022 12:29:27 +0200 + +>Author: Sebastian (em@ail.tld) + +>Commiter: Sebastian (em@ail.tld) + + + + +### [fix] - condition has_schedule +>Thu, 7 Jul 2022 20:05:16 +0200 + +>Author: Sebastian (em@ail.tld) + +>Commiter: Sebastian (em@ail.tld) + + + + +### [fix] - change condition has_schedule +>Thu, 7 Jul 2022 20:03:57 +0200 + +>Author: Sebastian (em@ail.tld) + +>Commiter: Sebastian (em@ail.tld) + + + + +### [fix] - try 2 fix nearst irrigateion > 1 year +>Thu, 7 Jul 2022 13:22:38 +0200 + +>Author: Sebastian (em@ail.tld) + +>Commiter: Sebastian (em@ail.tld) + + + + +### [fix] - tip fehler +>Thu, 30 Jun 2022 20:11:32 +0200 + +>Author: Sebastian (em@ail.tld) + +>Commiter: Sebastian (em@ail.tld) + + + + +### [fix] time piece +>Thu, 30 Jun 2022 13:09:32 +0200 + +>Author: Sebastian (em@ail.tld) + +>Commiter: Sebastian (em@ail.tld) + + + + +### [fix] - timer paused >1 jahr +>Thu, 30 Jun 2022 11:37:01 +0200 + +>Author: Sebastian (em@ail.tld) + +>Commiter: Sebastian (em@ail.tld) + + + + +### [fix] - setter procedure +>Wed, 29 Jun 2022 20:32:00 +0200 + +>Author: Sebastian (em@ail.tld) + +>Commiter: Sebastian (em@ail.tld) + + + + +### [fix] - state ohne plan , nicht listen +>Wed, 29 Jun 2022 13:38:08 +0200 + +>Author: Sebastian (em@ail.tld) + +>Commiter: Sebastian (em@ail.tld) + + + + +### [alpha] extendedState - fix empty reading + state ic24/wc +>Wed, 29 Jun 2022 12:26:39 +0200 + +>Author: Sebastian (em@ail.tld) + +>Commiter: Sebastian (em@ail.tld) + + + + +### [visual] - lowercase not available +>Wed, 29 Jun 2022 09:00:03 +0200 + +>Author: Sebastian (em@ail.tld) + +>Commiter: Sebastian (em@ail.tld) + + + + +### [fix] - rollback +>Tue, 28 Jun 2022 23:09:33 +0200 + +>Author: Sebastian (em@ail.tld) + +>Commiter: Sebastian (em@ail.tld) + + + + +### d +>Tue, 28 Jun 2022 23:08:35 +0200 + +>Author: Sebastian (em@ail.tld) + +>Commiter: Sebastian (em@ail.tld) + + + + +### [test] set empty +>Tue, 28 Jun 2022 23:07:34 +0200 + +>Author: Sebastian (em@ail.tld) + +>Commiter: Sebastian (em@ail.tld) + + + + +### [fix] - readings +>Tue, 28 Jun 2022 23:03:42 +0200 + +>Author: Sebastian (em@ail.tld) + +>Commiter: Sebastian (em@ail.tld) + + + + +### [fix] - debug stuff - cleanup +>Tue, 28 Jun 2022 13:11:28 +0200 + +>Author: Sebastian (em@ail.tld) + +>Commiter: Sebastian (em@ail.tld) + + + + +### [fix] - debug stuff +>Tue, 28 Jun 2022 13:10:10 +0200 + +>Author: Sebastian (em@ail.tld) + +>Commiter: Sebastian (em@ail.tld) + + + + +### [fix] - debug stuff +>Tue, 28 Jun 2022 13:08:47 +0200 + +>Author: Sebastian (em@ail.tld) + +>Commiter: Sebastian (em@ail.tld) + + + + +### [fix] - fixup debug code stuff +>Tue, 28 Jun 2022 13:06:32 +0200 + +>Author: Sebastian (em@ail.tld) + +>Commiter: Sebastian (em@ail.tld) + + + + +### [fix] - cleanup +>Sun, 26 Jun 2022 19:24:38 +0200 + +>Author: Sebastian (em@ail.tld) + +>Commiter: Sebastian (em@ail.tld) + + + + +### fix - clear next_start +>Sun, 26 Jun 2022 19:22:06 +0200 + +>Author: Sebastian (em@ail.tld) + +>Commiter: Sebastian (em@ail.tld) + + + + +### [fix] - watering_next_start +>Sat, 25 Jun 2022 16:17:28 +0200 + +>Author: Sebastian (em@ail.tld) + +>Commiter: Sebastian (em@ail.tld) + + + + +### patch lono. eventuell recrusive readings einbauen. waterpump rechtschreibfehler mit fixed +>Sat, 25 Jun 2022 12:58:59 +0200 + +>Author: Sebastian (em@ail.tld) + +>Commiter: Sebastian (em@ail.tld) + + + + +### [alpha] - extendedstate: state fix if empty or not exists +>Fri, 24 Jun 2022 18:40:46 +0200 + +>Author: Sebastian (em@ail.tld) + +>Commiter: Sebastian (em@ail.tld) + + + + +### [fix] - ix state +>Fri, 24 Jun 2022 13:57:07 +0200 + +>Author: Sebastian (em@ail.tld) + +>Commiter: Sebastian (em@ail.tld) + + + + +### [ALPHA] extendetState - permanentyl paused +>Fri, 24 Jun 2022 13:20:54 +0200 + +>Author: Sebastian (em@ail.tld) + +>Commiter: Sebastian (em@ail.tld) + + + + +### [alpha] extendetState : fix irrigation left zero value +>Thu, 23 Jun 2022 13:33:27 +0200 + +>Author: Sebastian (em@ail.tld) + +>Commiter: Sebastian (em@ail.tld) + + + + +### [alpha] excentedState - fix wc state, add irrigation duration +>Thu, 23 Jun 2022 12:55:03 +0200 + +>Author: Sebastian (em@ail.tld) + +>Commiter: Sebastian (em@ail.tld) + + + + +### [alpha] - extendetState - irrigation stuff +>Thu, 23 Jun 2022 12:45:31 +0200 + +>Author: Sebastian (em@ail.tld) + +>Commiter: Sebastian (em@ail.tld) + + + + +### debugg +>Thu, 23 Jun 2022 12:41:18 +0200 + +>Author: Sebastian (em@ail.tld) + +>Commiter: Sebastian (em@ail.tld) + + + + +### fix +>Thu, 23 Jun 2022 12:36:17 +0200 + +>Author: Sebastian (em@ail.tld) + +>Commiter: Sebastian (em@ail.tld) + + + + +### fix +>Thu, 23 Jun 2022 12:15:10 +0200 + +>Author: Sebastian (em@ail.tld) + +>Commiter: Sebastian (em@ail.tld) + + + + +### debug stuff +>Thu, 23 Jun 2022 12:14:29 +0200 + +>Author: Sebastian (em@ail.tld) + +>Commiter: Sebastian (em@ail.tld) + + + + +### dry run +>Thu, 23 Jun 2022 12:11:00 +0200 + +>Author: Sebastian (em@ail.tld) + +>Commiter: Sebastian (em@ail.tld) + + + + +### [alpha] - extendetState. fix state +>Thu, 23 Jun 2022 12:08:26 +0200 + +>Author: Sebastian (em@ail.tld) + +>Commiter: Sebastian (em@ail.tld) + + + + +### [alpha] extemdedState - fix state +>Thu, 23 Jun 2022 11:45:59 +0200 + +>Author: Sebastian (em@ail.tld) + +>Commiter: Sebastian (em@ail.tld) + + + + +### [alpa] extendetState: fix irrigatiopn time stuff +>Thu, 23 Jun 2022 11:37:04 +0200 + +>Author: Sebastian (em@ail.tld) + +>Commiter: Sebastian (em@ail.tld) + + + + +### [alpha] - extendedState - fix next irrigation and irregation left time +>Thu, 23 Jun 2022 11:31:22 +0200 + +>Author: Sebastian (em@ail.tld) + +>Commiter: Sebastian (em@ail.tld) + + + + +### scheduling if event != '' +>Thu, 16 Jun 2022 20:15:29 +0200 + +>Author: Sebastian (em@ail.tld) + +>Commiter: Sebastian (em@ail.tld) + + + + +### [extendetState] - fix up schedule +>Thu, 16 Jun 2022 16:04:05 +0200 + +>Author: Sebastian (em@ail.tld) + +>Commiter: Sebastian (em@ail.tld) + + + + +### - +>Tue, 14 Jun 2022 10:22:14 +0200 + +>Author: Sebastian (em@ail.tld) + +>Commiter: Sebastian (em@ail.tld) + + + + +### [alpha] - ExtendetState: debugzeilen added +>Tue, 14 Jun 2022 10:18:16 +0200 + +>Author: Sebastian (em@ail.tld) + +>Commiter: Sebastian (em@ail.tld) + + + + +### [alpha] - extendedState +>Mon, 13 Jun 2022 21:01:39 +0200 + +>Author: Sebastian (em@ail.tld) + +>Commiter: Sebastian (em@ail.tld) + + + + +### blank +>Mon, 13 Jun 2022 20:46:41 +0200 + +>Author: Sebastian (em@ail.tld) + +>Commiter: Sebastian (em@ail.tld) + + + + +### [alpha] - extendetState | legacy: will be irrigeated by longest_duration, has scheduling check +>Mon, 13 Jun 2022 20:44:02 +0200 + +>Author: Sebastian (em@ail.tld) + +>Commiter: Sebastian (em@ail.tld) + + + + +### [alpha] - extendetSate ic24 +>Sun, 12 Jun 2022 20:08:11 +0200 + +>Author: Sebastian (em@ail.tld) + +>Commiter: Sebastian (em@ail.tld) + + + + +### [alpha] - extendetState, legacy enabled +>Sun, 12 Jun 2022 11:13:57 +0200 + +>Author: Sebastian (em@ail.tld) + +>Commiter: Sebastian (em@ail.tld) + + + + +### [alpha] - extendetState +>Sat, 11 Jun 2022 15:35:29 +0200 + +>Author: Sebastian (em@ail.tld) + +>Commiter: Sebastian (em@ail.tld) + + + + +### [alpha] - extendedState +>Sat, 11 Jun 2022 15:24:44 +0200 + +>Author: Sebastian (em@ail.tld) + +>Commiter: Sebastian (em@ail.tld) + + + + +### [alpha] - extendedState +>Sat, 11 Jun 2022 15:23:15 +0200 + +>Author: Sebastian (em@ail.tld) + +>Commiter: Sebastian (em@ail.tld) + + + + +### fixing symikolon +>Sat, 11 Jun 2022 14:12:02 +0200 + +>Author: Sebastian (em@ail.tld) + +>Commiter: Sebastian (em@ail.tld) + + + + +### fix +>Sat, 11 Jun 2022 14:09:42 +0200 + +>Author: Sebastian (em@ail.tld) + +>Commiter: Sebastian (em@ail.tld) + + + + +### [alpha] - implementation extend state with one more thing... +>Sat, 11 Jun 2022 14:07:16 +0200 + +>Author: Sebastian (em@ail.tld) + +>Commiter: Sebastian (em@ail.tld) + + + + +### fix boolean +>Fri, 10 Jun 2022 20:27:09 +0200 + +>Author: Sebastian (em@ail.tld) + +>Commiter: Sebastian (em@ail.tld) + + + + +### cleanup code +>Fri, 10 Jun 2022 20:24:42 +0200 + +>Author: Sebastian (em@ail.tld) + +>Commiter: Sebastian (em@ail.tld) + + + + +### first step state +>Fri, 10 Jun 2022 20:21:29 +0200 + +>Author: Sebastian (em@ail.tld) + +>Commiter: Sebastian (em@ail.tld) + + + + +### add ventil check +>Tue, 31 May 2022 19:47:49 +0200 + +>Author: Sebastian (em@ail.tld) + +>Commiter: Sebastian (em@ail.tld) + + + + +### add state +>Tue, 31 May 2022 15:40:18 +0200 + +>Author: Sebastian (em@ail.tld) + +>Commiter: Sebastian (em@ail.tld) + + + + +### copy & past error +>Fri, 27 May 2022 20:04:39 +0200 + +>Author: Sebastian (em@ail.tld) + +>Commiter: Sebastian (em@ail.tld) + + + + +### add lona readings +>Fri, 27 May 2022 11:44:59 +0200 + +>Author: Sebastian (em@ail.tld) + +>Commiter: Sebastian (em@ail.tld) + + + + +### lona +>Tue, 17 May 2022 20:53:37 +0200 + +>Author: Sebastian (em@ail.tld) + +>Commiter: Sebastian (em@ail.tld) + + + + +### fix lona +>Tue, 17 May 2022 20:52:52 +0200 + +>Author: Sebastian (em@ail.tld) + +>Commiter: Sebastian (em@ail.tld) + + + + +### debug stuff +>Tue, 17 May 2022 20:13:45 +0200 + +>Author: Sebastian (em@ail.tld) + +>Commiter: Sebastian (em@ail.tld) + + + + +### fix IODEV +>Tue, 17 May 2022 11:05:59 +0200 + +>Author: Sebastian (em@ail.tld) + +>Commiter: Sebastian (em@ail.tld) + + + + +### revert back +>Tue, 17 May 2022 10:36:02 +0200 + +>Author: Sebastian (em@ail.tld) + +>Commiter: Sebastian (em@ail.tld) + + + + +### try 3 +>Tue, 17 May 2022 10:24:47 +0200 + +>Author: Sebastian (em@ail.tld) + +>Commiter: Sebastian (em@ail.tld) + + + + +### try 2 +>Tue, 17 May 2022 10:19:15 +0200 + +>Author: Sebastian (em@ail.tld) + +>Commiter: Sebastian (em@ail.tld) + + + + +### test +>Tue, 17 May 2022 10:04:33 +0200 + +>Author: Sebastian (em@ail.tld) + +>Commiter: Sebastian (em@ail.tld) + + + + +### test +>Tue, 17 May 2022 08:25:44 +0200 + +>Author: Sebastian (em@ail.tld) + +>Commiter: Sebastian (em@ail.tld) + + + + +### fixing +>Tue, 17 May 2022 08:23:47 +0200 + +>Author: Sebastian (em@ail.tld) + +>Commiter: Sebastian (em@ail.tld) + + + + +### test +>Tue, 17 May 2022 07:57:58 +0200 + +>Author: Sebastian (em@ail.tld) + +>Commiter: Sebastian (em@ail.tld) + + + + +### strgin format error +>Sat, 14 May 2022 23:02:12 +0200 + +>Author: Sebastian (em@ail.tld) + +>Commiter: Sebastian (em@ail.tld) + + + + +### state format +>Sat, 14 May 2022 22:59:41 +0200 + +>Author: Sebastian (em@ail.tld) + +>Commiter: Sebastian (em@ail.tld) + + + + +### fix state +>Sun, 8 May 2022 12:41:04 +0200 + +>Author: Sebastian (em@ail.tld) + +>Commiter: Sebastian (em@ail.tld) + + + + +### add resetcall + state +>Sun, 8 May 2022 12:39:10 +0200 + +>Author: Sebastian (em@ail.tld) + +>Commiter: Sebastian (em@ail.tld) + + + + +### long state +>Sat, 7 May 2022 20:29:16 +0200 + +>Author: Sebastian (em@ail.tld) + +>Commiter: Sebastian (em@ail.tld) + + + + +### fux payload +>Sat, 7 May 2022 19:04:29 +0200 + +>Author: Sebastian (em@ail.tld) + +>Commiter: Sebastian (em@ail.tld) + + + + +### fix payload +>Sat, 7 May 2022 18:08:47 +0200 + +>Author: Sebastian (em@ail.tld) + +>Commiter: Sebastian (em@ail.tld) + + + + +### change debug +>Sat, 7 May 2022 17:58:48 +0200 + +>Author: Sebastian (em@ail.tld) + +>Commiter: Sebastian (em@ail.tld) + + + + +### vers push +>Sat, 7 May 2022 13:08:26 +0200 + +>Author: Sebastian (em@ail.tld) + +>Commiter: Sebastian (em@ail.tld) + + + + +### add readingss and fix payload +>Sat, 7 May 2022 12:58:03 +0200 + +>Author: Sebastian (em@ail.tld) + +>Commiter: Sebastian (em@ail.tld) + + + + +### more debug +>Fri, 6 May 2022 18:58:45 +0200 + +>Author: Sebastian (em@ail.tld) + +>Commiter: Sebastian (em@ail.tld) + + + + +### Log Debug +>Fri, 6 May 2022 12:19:15 +0200 + +>Author: Sebastian (em@ail.tld) + +>Commiter: Sebastian (em@ail.tld) + + + + +### add log +>Fri, 6 May 2022 12:10:46 +0200 + +>Author: Sebastian (em@ail.tld) + +>Commiter: Sebastian (em@ail.tld) + + + + +### operatingmode, leakagedetection and turnonpressure fix - ins blaue gerate +>Thu, 5 May 2022 12:27:21 +0200 + +>Author: Sebastian (em@ail.tld) + +>Commiter: Sebastian (em@ail.tld) + + + + +### debug ausgabe +>Thu, 5 May 2022 09:20:56 +0200 + +>Author: Sebastian (em@ail.tld) + +>Commiter: Sebastian (em@ail.tld) + + + + +### add setter +>Tue, 3 May 2022 22:23:00 +0200 + +>Author: Sebastian (em@ail.tld) + +>Commiter: Sebastian (em@ail.tld) + + + + +### erste teste +>Tue, 3 May 2022 22:18:54 +0200 + +>Author: Sebastian (em@ail.tld) + +>Commiter: Sebastian (em@ail.tld) + + + + +### fix log line +>Tue, 3 May 2022 21:37:41 +0200 + +>Author: Sebastian (em@ail.tld) + +>Commiter: Sebastian (em@ail.tld) + + + + +### initial +>Sun, 1 May 2022 20:54:44 +0200 + +>Author: Sebastian (em@ail.tld) + +>Commiter: Sebastian (em@ail.tld) + + + + +### change debug stuff +>Sun, 1 May 2022 09:37:52 +0200 + +>Author: Sebastian (em@ail.tld) + +>Commiter: Sebastian (em@ail.tld) + + + + +### add second debug line for state +>Thu, 28 Apr 2022 20:21:44 +0200 + +>Author: Sebastian (em@ail.tld) + +>Commiter: Sebastian (em@ail.tld) + + + + +### fix debug +>Thu, 28 Apr 2022 20:17:22 +0200 + +>Author: Sebastian (em@ail.tld) + +>Commiter: Sebastian (em@ail.tld) + + + + +### fix +>Mon, 18 Apr 2022 19:16:20 +0200 + +>Author: Sebastian (em@ail.tld) + +>Commiter: Sebastian (em@ail.tld) + + + + +### fix code +>Mon, 18 Apr 2022 19:08:28 +0200 + +>Author: Sebastian (em@ail.tld) + +>Commiter: Sebastian (em@ail.tld) + + + + +### simple quick code +>Mon, 18 Apr 2022 19:01:33 +0200 + +>Author: Sebastian (em@ail.tld) + +>Commiter: Sebastian (em@ail.tld) + + + + +### simple quick try +>Mon, 18 Apr 2022 18:52:58 +0200 + +>Author: Sebastian (em@ail.tld) + +>Commiter: Sebastian (em@ail.tld) + + + + +### debug lines +>Sun, 17 Apr 2022 15:44:05 +0200 + +>Author: Sebastian (em@ail.tld) + +>Commiter: Sebastian (em@ail.tld) + + + + +### add valve_name and paused_untel for schedule +>Thu, 14 Apr 2022 16:42:18 +0200 + +>Author: Sebastian (em@ail.tld) + +>Commiter: Sebastian (em@ail.tld) + + + + +### round minutes in irregation +>Tue, 12 Apr 2022 08:40:40 +0200 + +>Author: Sebastian (em@ail.tld) + +>Commiter: Sebastian (em@ail.tld) + + + + +### cleanup code +>Sun, 10 Apr 2022 13:07:59 +0200 + +>Author: Sebastian (em@ail.tld) + +>Commiter: Sebastian (em@ail.tld) + + + + +### fix locales, todo change view of remaining time +>Thu, 7 Apr 2022 19:49:40 +0200 + +>Author: Sebastian (em@ail.tld) + +>Commiter: Sebastian (em@ail.tld) + + + + +### fix open + paused +>Thu, 7 Apr 2022 14:49:23 +0200 + +>Author: Sebastian (em@ail.tld) + +>Commiter: Sebastian (em@ail.tld) + + + + +### fix locales +>Thu, 7 Apr 2022 14:31:00 +0200 + +>Author: Sebastian (em@ail.tld) + +>Commiter: Sebastian (em@ail.tld) + + + + +### some locales +>Thu, 7 Apr 2022 12:38:11 +0200 + +>Author: Sebastian (em@ail.tld) + +>Commiter: Sebastian (em@ail.tld) + + + + +### add awake translation +>Thu, 7 Apr 2022 12:23:53 +0200 + +>Author: Sebastian (em@ail.tld) + +>Commiter: Sebastian (em@ail.tld) + + + + +### fix +>Thu, 7 Apr 2022 12:10:15 +0200 + +>Author: Sebastian (em@ail.tld) + +>Commiter: Sebastian (em@ail.tld) + + + + +### tz offset in state +>Thu, 7 Apr 2022 11:44:19 +0200 + +>Author: Sebastian (em@ail.tld) + +>Commiter: Sebastian (em@ail.tld) + + + + +### cleanup +>Thu, 7 Apr 2022 11:30:51 +0200 + +>Author: Sebastian (em@ail.tld) + +>Commiter: Sebastian (em@ail.tld) + + + + +### stateformat +>Thu, 7 Apr 2022 11:10:02 +0200 + +>Author: Sebastian (em@ail.tld) + +>Commiter: Sebastian (em@ail.tld) + + + + +### fix +>Tue, 5 Apr 2022 11:42:07 +0200 + +>Author: Sebastian (em@ail.tld) + +>Commiter: Sebastian (em@ail.tld) + + + + +### fix state_string variable +>Tue, 5 Apr 2022 11:40:24 +0200 + +>Author: Sebastian (em@ail.tld) + +>Commiter: Sebastian (em@ail.tld) + + + + +### wc state +>Tue, 5 Apr 2022 11:36:29 +0200 + +>Author: Sebastian (em@ail.tld) + +>Commiter: Sebastian (em@ail.tld) + + + + +### fix state +>Tue, 5 Apr 2022 09:23:34 +0200 + +>Author: Sebastian (em@ail.tld) + +>Commiter: Sebastian (em@ail.tld) + + + + +### fix regex +>Tue, 5 Apr 2022 09:17:27 +0200 + +>Author: Sebastian (em@ail.tld) + +>Commiter: Sebastian (em@ail.tld) + + + + +### add sensor2 +>Tue, 5 Apr 2022 08:18:06 +0200 + +>Author: Sebastian (em@ail.tld) + +>Commiter: Sebastian (em@ail.tld) + + + + +### fix ic24 +>Tue, 29 Mar 2022 16:35:58 +0200 + +>Author: Sebastian (em@ail.tld) + +>Commiter: Sebastian (em@ail.tld) + + + + +### Subject line (try to keep under 50 characters) +>Wed, 9 Feb 2022 13:51:13 +0100 + +>Author: Marko Oldenburg (fhemdevelopment@cooltux.net) + +>Commiter: Marko Oldenburg (fhemdevelopment@cooltux.net) + +Multi-line description of commit, +feel free to be detailed. + +[Ticket: X] + + + +### change condition to grep wintermode +>Wed, 9 Feb 2022 10:29:40 +0100 + +>Author: Marko Oldenburg (fhemdevelopment@cooltux.net) + +>Commiter: Marko Oldenburg (fhemdevelopment@cooltux.net) + +[Ticket: no] + + + +### chage state to hibernate +>Tue, 8 Feb 2022 11:56:46 +0100 + +>Author: Marko Oldenburg (fhemdevelopment@cooltux.net) + +>Commiter: Marko Oldenburg (fhemdevelopment@cooltux.net) + +[Ticket: no] + + + +### change version number, ready for testing +>Tue, 1 Feb 2022 18:42:33 +0100 + +>Author: Marko Oldenburg (fhemdevelopment@cooltux.net) + +>Commiter: Marko Oldenburg (fhemdevelopment@cooltux.net) + +[Ticket: no] + + + +### code clean up +>Tue, 1 Feb 2022 17:01:49 +0100 + +>Author: Marko Oldenburg (fhemdevelopment@cooltux.net) + +>Commiter: Marko Oldenburg (fhemdevelopment@cooltux.net) + +after add run parseJSON function ansynchron + +[Ticket: no] + + + +### Subject line (try to keep under 50 characters) +>Tue, 1 Feb 2022 13:05:53 +0100 + +>Author: Marko Oldenburg (fhemdevelopment@cooltux.net) + +>Commiter: Marko Oldenburg (fhemdevelopment@cooltux.net) + +Multi-line description of commit, +feel free to be detailed. + +[Ticket: X] + + + +### Subject line (try to keep under 50 characters) +>Tue, 1 Feb 2022 12:53:37 +0100 + +>Author: Marko Oldenburg (fhemdevelopment@cooltux.net) + +>Commiter: Marko Oldenburg (fhemdevelopment@cooltux.net) + +Multi-line description of commit, +feel free to be detailed. + +[Ticket: X] + + + +### Subject line (try to keep under 50 characters) +>Tue, 1 Feb 2022 12:42:32 +0100 + +>Author: Marko Oldenburg (fhemdevelopment@cooltux.net) + +>Commiter: Marko Oldenburg (fhemdevelopment@cooltux.net) + +Multi-line description of commit, +feel free to be detailed. + +[Ticket: X] + + + +### Subject line (try to keep under 50 characters) +>Tue, 1 Feb 2022 11:53:08 +0100 + +>Author: Marko Oldenburg (fhemdevelopment@cooltux.net) + +>Commiter: Marko Oldenburg (fhemdevelopment@cooltux.net) + +Multi-line description of commit, +feel free to be detailed. + +[Ticket: X] + + + +### Subject line (try to keep under 50 characters) +>Tue, 1 Feb 2022 10:59:08 +0100 + +>Author: Marko Oldenburg (fhemdevelopment@cooltux.net) + +>Commiter: Marko Oldenburg (fhemdevelopment@cooltux.net) + +Multi-line description of commit, +feel free to be detailed. + +[Ticket: X] + + + +### no array reference found. will be check +>Tue, 1 Feb 2022 09:54:42 +0100 + +>Author: Marko Oldenburg (fhemdevelopment@cooltux.net) + +>Commiter: Marko Oldenburg (fhemdevelopment@cooltux.net) + +[Ticket: no] + + + +### Subject line (try to keep under 50 characters) +>Tue, 1 Feb 2022 09:26:31 +0100 + +>Author: Marko Oldenburg (fhemdevelopment@cooltux.net) + +>Commiter: Marko Oldenburg (fhemdevelopment@cooltux.net) + +Undefined subroutine &FHEM::GardenaSmartBridge::CleanSubprocess called + +[Ticket: none] + + + +### make parseJSON function to run asynchron +>Mon, 31 Jan 2022 19:43:20 +0100 + +>Author: Marko Oldenburg (development@cooltux.net) + +>Commiter: Marko Oldenburg (development@cooltux.net) + +in installations wirh many of Gardena devices, + the parseJSON function run long time. + This patch make the parseJSON function asybchron + +[Ticket: #47] + + + +### change controlfile +>Mon, 27 Sep 2021 11:21:17 +0200 + +>Author: Marko Oldenburg (leongaultier@gmail.com) + +>Commiter: Marko Oldenburg (leongaultier@gmail.com) + + + + +### enable hook on new system +>Sat, 7 Aug 2021 23:54:37 +0200 + +>Author: Sebastian (em@ail.tld) + +>Commiter: Sebastian (em@ail.tld) + + + + +### debug, token fix +>Sat, 7 Aug 2021 23:52:29 +0200 + +>Author: Sebastian (em@ail.tld) + +>Commiter: Sebastian (em@ail.tld) + + + + +### check also location_id so we have token and user id ... +>Wed, 28 Jul 2021 21:51:36 +0200 + +>Author: Sebastian (gitlab@sebastianschwarz.eu) + +>Commiter: Sebastian (gitlab@sebastianschwarz.eu) + + + + +### pump version +>Wed, 28 Jul 2021 21:45:10 +0200 + +>Author: Sebastian (gitlab@sebastianschwarz.eu) + +>Commiter: Sebastian (gitlab@sebastianschwarz.eu) + + + + +### fix helper debug device for post +>Wed, 28 Jul 2021 21:42:34 +0200 + +>Author: Sebastian (gitlab@sebastianschwarz.eu) + +>Commiter: Sebastian (gitlab@sebastianschwarz.eu) + + + + +### increase slider to 720 +>Fri, 16 Jul 2021 20:26:16 +0200 + +>Author: Sebastian (gitlab@sebastianschwarz.eu) + +>Commiter: Sebastian (gitlab@sebastianschwarz.eu) + + + + +### fix empty arg array condition +>Tue, 13 Jul 2021 17:22:03 +0200 + +>Author: Sebastian (gitlab@sebastianschwarz.eu) + +>Commiter: Sebastian (gitlab@sebastianschwarz.eu) + + + + +### add payload propertie +>Mon, 12 Jul 2021 12:01:02 +0200 + +>Author: Sebastian (gitlab@sebastianschwarz.eu) + +>Commiter: Sebastian (gitlab@sebastianschwarz.eu) + + + + +### change to unixtimestamp +>Mon, 28 Jun 2021 20:11:18 +0200 + +>Author: Sebastian (gitlab@sebastianschwarz.eu) + +>Commiter: Sebastian (gitlab@sebastianschwarz.eu) + + + + +### missed ); +>Mon, 28 Jun 2021 16:16:10 +0200 + +>Author: Sebastian (gitlab@sebastianschwarz.eu) + +>Commiter: Sebastian (gitlab@sebastianschwarz.eu) + + + + +### add mower timestamp to readings +>Mon, 28 Jun 2021 16:11:39 +0200 + +>Author: Sebastian (gitlab@sebastianschwarz.eu) + +>Commiter: Sebastian (gitlab@sebastianschwarz.eu) + + + + +### fixup +>Mon, 28 Jun 2021 10:47:51 +0200 + +>Author: Sebastian (gitlab@sebastianschwarz.eu) + +>Commiter: Sebastian (gitlab@sebastianschwarz.eu) + + + + +### cleanup code +>Mon, 28 Jun 2021 10:27:23 +0200 + +>Author: Sebastian (gitlab@sebastianschwarz.eu) + +>Commiter: Sebastian (gitlab@sebastianschwarz.eu) + + + + +### remove debug stuff +>Mon, 28 Jun 2021 10:24:43 +0200 + +>Author: Sebastian (gitlab@sebastianschwarz.eu) + +>Commiter: Sebastian (gitlab@sebastianschwarz.eu) + + + + +### initdone +>Mon, 21 Jun 2021 22:44:38 +0200 + +>Author: Sebastian (gitlab@sebastianschwarz.eu) + +>Commiter: Sebastian (gitlab@sebastianschwarz.eu) + + + + +### fix2 +>Mon, 21 Jun 2021 21:18:34 +0200 + +>Author: Sebastian (gitlab@sebastianschwarz.eu) + +>Commiter: Sebastian (gitlab@sebastianschwarz.eu) + + + + +### hard post +>Mon, 21 Jun 2021 20:46:23 +0200 + +>Author: Sebastian (gitlab@sebastianschwarz.eu) + +>Commiter: Sebastian (gitlab@sebastianschwarz.eu) + + + + +### test +>Mon, 21 Jun 2021 20:44:39 +0200 + +>Author: Sebastian (gitlab@sebastianschwarz.eu) + +>Commiter: Sebastian (gitlab@sebastianschwarz.eu) + + + + +### fix +>Mon, 21 Jun 2021 19:36:18 +0200 + +>Author: Sebastian (gitlab@sebastianschwarz.eu) + +>Commiter: Sebastian (gitlab@sebastianschwarz.eu) + + + + +### payload +>Mon, 21 Jun 2021 19:31:51 +0200 + +>Author: Sebastian (gitlab@sebastianschwarz.eu) + +>Commiter: Sebastian (gitlab@sebastianschwarz.eu) + + + + +### add some function +>Mon, 21 Jun 2021 19:24:41 +0200 + +>Author: Sebastian (gitlab@sebastianschwarz.eu) + +>Commiter: Sebastian (gitlab@sebastianschwarz.eu) + + + + +### debug +>Sat, 19 Jun 2021 10:46:28 +0200 + +>Author: Sebastian (gitlab@sebastianschwarz.eu) + +>Commiter: Sebastian (gitlab@sebastianschwarz.eu) + + + + +### pump version +>Fri, 18 Jun 2021 12:35:39 +0200 + +>Author: Sebastian (gitlab@sebastianschwarz.eu) + +>Commiter: Sebastian (gitlab@sebastianschwarz.eu) + + + + +### add init +>Thu, 17 Jun 2021 19:17:27 +0200 + +>Author: Sebastian (gitlab@sebastianschwarz.eu) + +>Commiter: Sebastian (gitlab@sebastianschwarz.eu) + + + + +### removed debug stuff +>Wed, 16 Jun 2021 20:05:53 +0200 + +>Author: Sebastian (gitlab@sebastianschwarz.eu) + +>Commiter: Sebastian (gitlab@sebastianschwarz.eu) + + + + +### comment Dumper +>Wed, 16 Jun 2021 10:11:52 +0200 + +>Author: Sebastian (gitlab@sebastianschwarz.eu) + +>Commiter: Sebastian (gitlab@sebastianschwarz.eu) + + + + +### fix token 404 +>Wed, 16 Jun 2021 10:11:12 +0200 + +>Author: Sebastian (gitlab@sebastianschwarz.eu) + +>Commiter: Sebastian (gitlab@sebastianschwarz.eu) + + + + +### fix json error by empty response, add test log level 1 for notify +>Fri, 11 Jun 2021 19:05:54 +0200 + +>Author: Sebastian (gitlab@sebastianschwarz.eu) + +>Commiter: Sebastian (gitlab@sebastianschwarz.eu) + + + + +### fixing connection / interval / 404 error +>Wed, 9 Jun 2021 13:23:28 +0200 + +>Author: Sebastian (gitlab@sebastianschwarz.eu) + +>Commiter: Sebastian (gitlab@sebastianschwarz.eu) + + + + +### missed 2 of them( notify ) +>Sat, 5 Jun 2021 18:47:43 +0200 + +>Author: Sebastian (gitlab@sebastianschwarz.eu) + +>Commiter: Sebastian (gitlab@sebastianschwarz.eu) + + + + +### undo notify regexp +>Sat, 5 Jun 2021 18:42:27 +0200 + +>Author: Sebastian (gitlab@sebastianschwarz.eu) + +>Commiter: Sebastian (gitlab@sebastianschwarz.eu) + + + + +### comment dumper +>Sat, 5 Jun 2021 09:30:31 +0200 + +>Author: Sebastian (gitlab@sebastianschwarz.eu) + +>Commiter: Sebastian (gitlab@sebastianschwarz.eu) + + + + +### change timestamp for schedule stop +>Sat, 5 Jun 2021 09:24:29 +0200 + +>Author: Sebastian (gitlab@sebastianschwarz.eu) + +>Commiter: Sebastian (gitlab@sebastianschwarz.eu) + + + + +### fix notifys, +>Fri, 4 Jun 2021 15:31:05 +0200 + +>Author: Sebastian (gitlab@sebastianschwarz.eu) + +>Commiter: Sebastian (gitlab@sebastianschwarz.eu) + + + + +### variable fix +>Sat, 29 May 2021 22:08:35 +0200 + +>Author: Sebastian (gitlab@sebastianschwarz.eu) + +>Commiter: Sebastian (gitlab@sebastianschwarz.eu) + + + + +### wintermode +>Fri, 28 May 2021 20:56:19 +0200 + +>Author: Sebastian (gitlab@sebastianschwarz.eu) + +>Commiter: Sebastian (gitlab@sebastianschwarz.eu) + + + + +### versionsbump +>Fri, 28 May 2021 20:35:57 +0200 + +>Author: Sebastian (gitlab@sebastianschwarz.eu) + +>Commiter: Sebastian (gitlab@sebastianschwarz.eu) + + + + +### cmdref +>Fri, 28 May 2021 20:28:07 +0200 + +>Author: Sebastian (gitlab@sebastianschwarz.eu) + +>Commiter: Sebastian (gitlab@sebastianschwarz.eu) + + + + +### buttonconfing + cmdref +>Fri, 28 May 2021 20:25:44 +0200 + +>Author: Sebastian (gitlab@sebastianschwarz.eu) + +>Commiter: Sebastian (gitlab@sebastianschwarz.eu) + + + + +### add stop/resume schedule +>Wed, 26 May 2021 20:37:39 +0200 + +>Author: Sebastian (gitlab@sebastianschwarz.eu) + +>Commiter: Sebastian (gitlab@sebastianschwarz.eu) + + + + +### change version +>Sat, 22 May 2021 04:54:42 +0200 + +>Author: Marko Oldenburg (marko.oldenburg@cooltux.net) + +>Commiter: Marko Oldenburg (marko.oldenburg@cooltux.net) + + + + +### fix timezone offset +>Thu, 20 May 2021 19:59:46 +0200 + +>Author: Sebastian (gitlab@sebastianschwarz.eu) + +>Commiter: Sebastian (gitlab@sebastianschwarz.eu) + + + + +### fix cmdref +>Tue, 18 May 2021 21:34:38 +0200 + +>Author: Sebastian (gitlab@sebastianschwarz.eu) + +>Commiter: Sebastian (gitlab@sebastianschwarz.eu) + + + + +### add custom schedule breake ic24 + add commandref +>Tue, 18 May 2021 21:29:09 +0200 + +>Author: Sebastian (gitlab@sebastianschwarz.eu) + +>Commiter: Sebastian (gitlab@sebastianschwarz.eu) + + + + +### fix +>Mon, 17 May 2021 18:30:29 +0200 + +>Author: Sebastian (gitlab@sebastianschwarz.eu) + +>Commiter: Sebastian (gitlab@sebastianschwarz.eu) + + + + +### changed max valve to 90min. +>Mon, 17 May 2021 18:22:30 +0200 + +>Author: Sebastian (gitlab@sebastianschwarz.eu) + +>Commiter: Sebastian (gitlab@sebastianschwarz.eu) + + + + +### fix cloase all valces changed max duration in manual override +>Sun, 16 May 2021 19:38:43 +0200 + +>Author: Sebastian (gitlab@sebastianschwarz.eu) + +>Commiter: Sebastian (gitlab@sebastianschwarz.eu) + + + + +### fix watering close all in abilitie for watering +>Sun, 16 May 2021 15:16:03 +0200 + +>Author: Sebastian (gitlab@sebastianschwarz.eu) + +>Commiter: Sebastian (gitlab@sebastianschwarz.eu) + + + + +### fix scheduleValve +>Sun, 16 May 2021 12:22:26 +0200 + +>Author: Sebastian (gitlab@sebastianschwarz.eu) + +>Commiter: Sebastian (gitlab@sebastianschwarz.eu) + + + + +### fix regex +>Sun, 16 May 2021 12:07:28 +0200 + +>Author: Sebastian (gitlab@sebastianschwarz.eu) + +>Commiter: Sebastian (gitlab@sebastianschwarz.eu) + + + + +### version push +>Fri, 14 May 2021 15:55:51 +0200 + +>Author: Sebastian (gitlab@sebastianschwarz.eu) + +>Commiter: Sebastian (gitlab@sebastianschwarz.eu) + + + + +### fix carriage return +>Fri, 14 May 2021 13:18:59 +0200 + +>Author: Sebastian (gitlab@sebastianschwarz.eu) + +>Commiter: Sebastian (gitlab@sebastianschwarz.eu) + + + + +### test coommt +>Fri, 14 May 2021 13:16:53 +0200 + +>Author: Sebastian (gitlab@sebastianschwarz.eu) + +>Commiter: Sebastian (gitlab@sebastianschwarz.eu) + + + + +### check pre-commit hook +>Fri, 14 May 2021 12:55:18 +0200 + +>Author: Marko Oldenburg (marko.oldenburg@cooltux.net) + +>Commiter: Marko Oldenburg (marko.oldenburg@cooltux.net) + + + + +### test commit +>Fri, 14 May 2021 12:51:41 +0200 + +>Author: Sebastian (gitlab@sebastianschwarz.eu) + +>Commiter: Sebastian (gitlab@sebastianschwarz.eu) + + + + +### checksum commit +>Fri, 14 May 2021 12:36:48 +0200 + +>Author: Sebastian (gitlab@sebastianschwarz.eu) + +>Commiter: Sebastian (gitlab@sebastianschwarz.eu) + + + + +### commit hook test +>Fri, 14 May 2021 12:34:03 +0200 + +>Author: Sebastian (gitlab@sebastianschwarz.eu) + +>Commiter: Sebastian (gitlab@sebastianschwarz.eu) + + + + +### add IrrigationControl Stuff some code moved/ckeanup +>Fri, 14 May 2021 12:10:44 +0200 + +>Author: Sebastian (gitlab@sebastianschwarz.eu) + +>Commiter: Sebastian (gitlab@sebastianschwarz.eu) + + + + +### chane helptext to 60 sec +>Fri, 14 May 2021 10:17:44 +0200 + +>Author: Sebastian (gitlab@sebastianschwarz.eu) + +>Commiter: Sebastian (gitlab@sebastianschwarz.eu) + + + + +### change version number +>Mon, 26 Apr 2021 21:37:53 +0200 + +>Author: Marko Oldenburg (marko.oldenburg@cooltux.net) + +>Commiter: Sebastian (gitlab@sebastianschwarz.eu) + + + + +### D'OH +>Tue, 11 May 2021 20:29:49 +0200 + +>Author: Sebastian (gitlab@sebastianschwarz.eu) + +>Commiter: Sebastian (gitlab@sebastianschwarz.eu) + + + + +### fix missing "T:" in State +>Tue, 11 May 2021 20:29:15 +0200 + +>Author: Sebastian (gitlab@sebastianschwarz.eu) + +>Commiter: Sebastian (gitlab@sebastianschwarz.eu) + + + + +### add Soil-Temperatur to state for sensor2 +>Tue, 11 May 2021 20:21:45 +0200 + +>Author: Sebastian (gitlab@sebastianschwarz.eu) + +>Commiter: Sebastian (gitlab@sebastianschwarz.eu) + + + + +### fix state for sensor 2, cleanup code vor offline state, removed -1 values if offline +>Tue, 11 May 2021 20:11:22 +0200 + +>Author: Sebastian (gitlab@sebastianschwarz.eu) + +>Commiter: Sebastian (gitlab@sebastianschwarz.eu) + + + + +### add Sensor2 +>Mon, 10 May 2021 19:15:34 +0200 + +>Author: Sebastian (gitlab@sebastianschwarz.eu) + +>Commiter: Sebastian (gitlab@sebastianschwarz.eu) + + + + +### add Sensor2 +>Sun, 9 May 2021 16:42:36 +0200 + +>Author: Sebastian (gitlab@sebastianschwarz.eu) + +>Commiter: Sebastian (gitlab@sebastianschwarz.eu) + + + + +### change state to 'offline' if device is offline. Sensor changed values to -1 +>Tue, 4 May 2021 18:18:14 +0200 + +>Author: Sebastian (gitlab@sebastianschwarz.eu) + +>Commiter: Sebastian (gitlab@sebastianschwarz.eu) + + + + +### change version number +>Mon, 26 Apr 2021 21:37:53 +0200 + +>Author: Marko Oldenburg (marko.oldenburg@cooltux.net) + +>Commiter: Marko Oldenburg (marko.oldenburg@cooltux.net) + + + + +### fix it now +>Mon, 26 Apr 2021 20:09:18 +0200 + +>Author: Marko Oldenburg (marko.oldenburg@cooltux.net) + +>Commiter: Marko Oldenburg (marko.oldenburg@cooltux.net) + + + + +### test +>Mon, 26 Apr 2021 14:39:55 +0200 + +>Author: Marko Oldenburg (marko.oldenburg@cooltux.net) + +>Commiter: Marko Oldenburg (marko.oldenburg@cooltux.net) + + + + +### fixing +>Mon, 26 Apr 2021 09:39:47 +0200 + +>Author: Marko Oldenburg (marko.oldenburg@cooltux.net) + +>Commiter: Marko Oldenburg (marko.oldenburg@cooltux.net) + + + + +### change condition for error handling +>Sat, 24 Apr 2021 15:39:29 +0200 + +>Author: Marko Oldenburg (marko.oldenburg@cooltux.net) + +>Commiter: Marko Oldenburg (marko.oldenburg@cooltux.net) + + + + +### change condition syntax +>Fri, 23 Apr 2021 10:57:03 +0200 + +>Author: Marko Oldenburg (marko.oldenburg@cooltux.net) + +>Commiter: Marko Oldenburg (marko.oldenburg@cooltux.net) + + + + +### fix Use of uninitialized value in concatenation #14 +>Thu, 22 Apr 2021 19:10:00 +0200 + +>Author: Marko Oldenburg (marko.oldenburg@cooltux.net) + +>Commiter: Marko Oldenburg (marko.oldenburg@cooltux.net) + + + + +### change head of module files +>Thu, 22 Apr 2021 18:19:46 +0200 + +>Author: Marko Oldenburg (marko.oldenburg@cooltux.net) + +>Commiter: Marko Oldenburg (marko.oldenburg@cooltux.net) + + + + +### clean up code +>Fri, 16 Apr 2021 11:10:38 +0200 + +>Author: Sebastian (gitlab@sebastianschwarz.eu) + +>Commiter: Sebastian (gitlab@sebastianschwarz.eu) + + + + +### remove wrong control file +>Fri, 16 Apr 2021 08:17:34 +0200 + +>Author: Marko Oldenburg (marko.oldenburg@cooltux.net) + +>Commiter: Marko Oldenburg (marko.oldenburg@cooltux.net) + + + + +### add some debug funktion +>Thu, 15 Apr 2021 13:01:30 +0200 + +>Author: Sebastian (gitlab@sebastianschwarz.eu) + +>Commiter: Sebastian (gitlab@sebastianschwarz.eu) + + + + +### add sebastian to special thanks goes to comitters +>Thu, 8 Apr 2021 07:56:24 +0200 + +>Author: Marko Oldenburg (marko.oldenburg@cooltux.net) + +>Commiter: Marko Oldenburg (marko.oldenburg@cooltux.net) + + + + +### little fixes +>Wed, 7 Apr 2021 20:08:09 +0200 + +>Author: Marko Oldenburg (marko.oldenburg@cooltux.net) + +>Commiter: Marko Oldenburg (marko.oldenburg@cooltux.net) + + + + +### fix Syntax error +>Wed, 7 Apr 2021 19:57:46 +0200 + +>Author: Marko Oldenburg (marko.oldenburg@cooltux.net) + +>Commiter: Marko Oldenburg (marko.oldenburg@cooltux.net) + + + + +### change version change mower_type-mainboard_version code in setter fn +>Wed, 7 Apr 2021 18:23:00 +0200 + +>Author: Marko Oldenburg (marko.oldenburg@cooltux.net) + +>Commiter: Marko Oldenburg (marko.oldenburg@cooltux.net) + + + + +### fix comments +>Wed, 7 Apr 2021 17:51:27 +0200 + +>Author: Sebastian (gitlab@sebastianschwarz.eu) + +>Commiter: Sebastian (gitlab@sebastianschwarz.eu) + + + + +### header secret enabled +>Wed, 7 Apr 2021 17:49:12 +0200 + +>Author: Sebastian (gitlab@sebastianschwarz.eu) + +>Commiter: Sebastian (gitlab@sebastianschwarz.eu) + + + + +### add new mower firmeware cmds +>Wed, 7 Apr 2021 17:41:05 +0200 + +>Author: Sebastian (gitlab@sebastianschwarz.eu) + +>Commiter: Sebastian (gitlab@sebastianschwarz.eu) + + + + +### cleanup ... +>Tue, 6 Apr 2021 21:03:46 +0200 + +>Author: Sebastian (gitlab@sebastianschwarz.eu) + +>Commiter: Sebastian (gitlab@sebastianschwarz.eu) + + + + +### change little code parts +>Sat, 3 Apr 2021 22:16:32 +0200 + +>Author: Marko Oldenburg (leongaultier@gmail.com) + +>Commiter: Marko Oldenburg (leongaultier@gmail.com) + + + + +### fix url +>Fri, 2 Apr 2021 14:43:44 +0200 + +>Author: Sebastian (gitlab@sebastianschwarz.eu) + +>Commiter: Sebastian (gitlab@sebastianschwarz.eu) + + + + +### remove wrong control file +>Tue, 30 Mar 2021 18:20:58 +0200 + +>Author: Marko Oldenburg (marko.oldenburg@cooltux.net) + +>Commiter: Marko Oldenburg (marko.oldenburg@cooltux.net) + + + + +### change version +>Tue, 30 Mar 2021 13:03:56 +0200 + +>Author: Marko Oldenburg (marko.oldenburg@cooltux.net) + +>Commiter: Marko Oldenburg (marko.oldenburg@cooltux.net) + + + + +### zones removed - not in response +>Tue, 30 Mar 2021 11:37:31 +0200 + +>Author: Sebastian (prisus@sebastianschwarz.eu) + +>Commiter: Sebastian (prisus@sebastianschwarz.eu) + + + + +### fix HASH +>Tue, 30 Mar 2021 11:15:32 +0200 + +>Author: Sebastian Schwaz (sebastianschwarz@noreply@cooltux.net) + +>Commiter: Sebastian Schwaz (sebastianschwarz@noreply@cooltux.net) + + + + +### change version +>Sun, 28 Mar 2021 15:08:09 +0200 + +>Author: Marko Oldenburg (leongaultier@gmail.com) + +>Commiter: Marko Oldenburg (leongaultier@gmail.com) + + + + +### fix little bugs +>Sat, 27 Mar 2021 00:00:50 +0100 + +>Author: Marko Oldenburg (marko.oldenburg@cooltux.net) + +>Commiter: Marko Oldenburg (marko.oldenburg@cooltux.net) + + + + +### fix api +>Fri, 26 Mar 2021 17:00:44 +0100 + +>Author: Sebastian Schwaz (sebastianschwarz@noreply@cooltux.net) + +>Commiter: Sebastian Schwaz (sebastianschwarz@noreply@cooltux.net) + + + + +### add new API URL +>Wed, 10 Mar 2021 18:43:14 +0100 + +>Author: Marko Oldenburg (marko.oldenburg@cooltux.net) + +>Commiter: Marko Oldenburg (marko.oldenburg@cooltux.net) + + + + +### fix little bug +>Wed, 10 Mar 2021 18:38:30 +0100 + +>Author: Marko Oldenburg (marko.oldenburg@cooltux.net) + +>Commiter: Marko Oldenburg (marko.oldenburg@cooltux.net) + + + + +### add message key and output to state +>Wed, 10 Mar 2021 18:32:28 +0100 + +>Author: Marko Oldenburg (marko.oldenburg@cooltux.net) + +>Commiter: Marko Oldenburg (marko.oldenburg@cooltux.net) + + + + +### fix syntax error +>Wed, 10 Mar 2021 17:50:28 +0100 + +>Author: Marko Oldenburg (marko.oldenburg@cooltux.net) + +>Commiter: Marko Oldenburg (marko.oldenburg@cooltux.net) + + + + +### add debug logging +>Wed, 10 Mar 2021 16:13:39 +0100 + +>Author: Marko Oldenburg (marko.oldenburg@cooltux.net) + +>Commiter: Marko Oldenburg (marko.oldenburg@cooltux.net) + + + + +### change git structure +>Tue, 9 Mar 2021 08:50:59 +0100 + +>Author: Marko Oldenburg (marko.oldenburg@cooltux.net) + +>Commiter: Marko Oldenburg (marko.oldenburg@cooltux.net) + + + + +### fix undefined value as an ARRAY reference +>Tue, 9 Mar 2021 08:46:11 +0100 + +>Author: Marko Oldenburg (marko.oldenburg@cooltux.net) + +>Commiter: Marko Oldenburg (marko.oldenburg@cooltux.net) + + + + +### change isconnected key in hash to isConnected +>Wed, 7 Oct 2020 10:11:08 +0200 + +>Author: Marko Oldenburg (marko.oldenburg@cooltux.net) + +>Commiter: Marko Oldenburg (marko.oldenburg@cooltux.net) + + + + +### code style +>Fri, 1 May 2020 21:38:18 +0200 + +>Author: Marko Oldenburg (leongaultier@gmail.com) + +>Commiter: Marko Oldenburg (leongaultier@gmail.com) + + + + +### fix Cant use string (enable) as an ARRAY ref while strict refs in use bug +>Fri, 1 May 2020 21:37:14 +0200 + +>Author: Marko Oldenburg (leongaultier@gmail.com) + +>Commiter: Marko Oldenburg (leongaultier@gmail.com) + + + + +### Debugging only +>Fri, 1 May 2020 20:17:16 +0200 + +>Author: Marko Oldenburg (leongaultier@gmail.com) + +>Commiter: Marko Oldenburg (leongaultier@gmail.com) + + + + +### fix Cant use string (enable) as an ARRAY ref while strict refs in use bug +>Fri, 1 May 2020 18:30:28 +0200 + +>Author: Marko Oldenburg (leongaultier@gmail.com) + +>Commiter: Marko Oldenburg (leongaultier@gmail.com) + + + + +### change part of code +>Fri, 1 May 2020 15:50:07 +0200 + +>Author: Marko Oldenburg (leongaultier@gmail.com) + +>Commiter: Marko Oldenburg (leongaultier@gmail.com) + + + + +### fix password bug +>Thu, 30 Apr 2020 17:47:44 +0200 + +>Author: Marko Oldenburg (leongaultier@gmail.com) + +>Commiter: Marko Oldenburg (leongaultier@gmail.com) + + + + +### fix state water_controler +>Thu, 30 Apr 2020 12:26:45 +0200 + +>Author: Marko Oldenburg (leongaultier@gmail.com) + +>Commiter: Marko Oldenburg (leongaultier@gmail.com) + + + + +### fix setter for mower not visible +>Thu, 30 Apr 2020 08:37:41 +0200 + +>Author: Marko Oldenburg (leongaultier@gmail.com) + +>Commiter: Marko Oldenburg (leongaultier@gmail.com) + + + + +### change watering_computer state +>Wed, 29 Apr 2020 14:00:35 +0200 + +>Author: Marko Oldenburg (leongaultier@gmail.com) + +>Commiter: Marko Oldenburg (leongaultier@gmail.com) + + + + +### little bugfix, thanks Christoph +>Tue, 28 Apr 2020 15:18:54 +0200 + +>Author: Marko Oldenburg (leongaultier@gmail.com) + +>Commiter: Marko Oldenburg (leongaultier@gmail.com) + + + + +### change Code PBP conform +>Tue, 28 Apr 2020 11:16:22 +0200 + +>Author: Marko Oldenburg (leongaultier@gmail.com) + +>Commiter: Marko Oldenburg (leongaultier@gmail.com) + + + + +### Code refactoring and code style +>Mon, 27 Apr 2020 11:01:49 +0200 + +>Author: Marko Oldenburg (leongaultier@gmail.com) + +>Commiter: Marko Oldenburg (leongaultier@gmail.com) + + + + +### fix cancel watering_computer +>Sun, 26 Apr 2020 18:18:57 +0200 + +>Author: Marko Oldenburg (leongaultier@gmail.com) + +>Commiter: Marko Oldenburg (leongaultier@gmail.com) + + + + +### change state code +>Sun, 26 Apr 2020 17:33:41 +0200 + +>Author: Marko Oldenburg (leongaultier@gmail.com) + +>Commiter: Marko Oldenburg (leongaultier@gmail.com) + + + + +### add cancel timer vor i24c model +>Sun, 26 Apr 2020 16:06:41 +0200 + +>Author: Marko Oldenburg (leongaultier@gmail.com) + +>Commiter: Marko Oldenburg (leongaultier@gmail.com) + + + + +### change list +>Sun, 26 Apr 2020 11:34:15 +0200 + +>Author: Marko Oldenburg (leongaultier@gmail.com) + +>Commiter: Marko Oldenburg (leongaultier@gmail.com) + + + + +### change canceloverride +>Sun, 26 Apr 2020 11:31:42 +0200 + +>Author: Marko Oldenburg (leongaultier@gmail.com) + +>Commiter: Marko Oldenburg (leongaultier@gmail.com) + + + + +### change watering computer abilitie +>Sun, 26 Apr 2020 11:18:58 +0200 + +>Author: Marko Oldenburg (leongaultier@gmail.com) + +>Commiter: Marko Oldenburg (leongaultier@gmail.com) + + + + +### change state reading to value Connected +>Thu, 23 Apr 2020 07:20:24 +0200 + +>Author: Marko Oldenburg (leongaultier@gmail.com) + +>Commiter: Marko Oldenburg (leongaultier@gmail.com) + + + + +### fix unused value +>Mon, 13 Apr 2020 11:34:13 +0200 + +>Author: Marko Oldenburg (leongaultier@gmail.com) + +>Commiter: Marko Oldenburg (leongaultier@gmail.com) + + + + +### bugfix seconds +>Sun, 12 Apr 2020 21:49:05 +0200 + +>Author: Marko Oldenburg (leongaultier@gmail.com) + +>Commiter: Marko Oldenburg (leongaultier@gmail.com) + + + + +### fix rename bug with passwort store +>Thu, 27 Feb 2020 13:26:29 +0100 + +>Author: Marko Oldenburg (leongaultier@gmail.com) + +>Commiter: Marko Oldenburg (leongaultier@gmail.com) + + + + +### fix write outlet-valve_open code +>Thu, 27 Feb 2020 12:30:07 +0100 + +>Author: Marko Oldenburg (leongaultier@gmail.com) + +>Commiter: Marko Oldenburg (leongaultier@gmail.com) + + + + +### code style +>Tue, 18 Jun 2019 16:44:41 +0200 + +>Author: Marko Oldenburg (leongaultier@gmail.com) + +>Commiter: Marko Oldenburg (leongaultier@gmail.com) + + + + +### change package code +>Tue, 18 Jun 2019 16:43:40 +0200 + +>Author: Marko Oldenburg (leongaultier@gmail.com) + +>Commiter: Marko Oldenburg (leongaultier@gmail.com) + + + + +### change fileversion's +>Sat, 15 Jun 2019 09:51:36 +0200 + +>Author: Marko Oldenburg (leongaultier@gmail.com) + +>Commiter: Marko Oldenburg (leongaultier@gmail.com) + + + + +### try to use JSON::MaybeXS wrapper for chance of better performance + open code +>Sat, 15 Jun 2019 08:58:14 +0200 + +>Author: Marko Oldenburg (leongaultier@gmail.com) + +>Commiter: Marko Oldenburg (leongaultier@gmail.com) + + + + +### add LICENSE +>Sat, 15 Jun 2019 08:53:31 +0200 + +>Author: Marko Oldenburg (leongaultier@gmail.com) + +>Commiter: Marko Oldenburg (leongaultier@gmail.com) + + + + +### fix undefined value as an ARRAY reference bug +>Sat, 15 Jun 2019 08:50:19 +0200 + +>Author: Marko Oldenburg (leongaultier@gmail.com) + +>Commiter: Marko Oldenburg (leongaultier@gmail.com) + + + + +### fix README.md +>Thu, 6 Jun 2019 07:59:28 +0200 + +>Author: Marko Oldenburg (leongaultier@gmail.com) + +>Commiter: Marko Oldenburg (leongaultier@gmail.com) + + + + +### add README-md file +>Tue, 4 Jun 2019 22:18:49 +0200 + +>Author: Marko Oldenburg (leongaultier@gmail.com) + +>Commiter: Marko Oldenburg (leongaultier@gmail.com) + + + + +### code style +>Tue, 4 Jun 2019 12:46:40 +0200 + +>Author: Marko Oldenburg (leongaultier@gmail.com) + +>Commiter: Marko Oldenburg (leongaultier@gmail.com) + + + + +### feature request add changeable baseURL #3 +>Tue, 4 Jun 2019 11:42:50 +0200 + +>Author: Marko Oldenburg (leongaultier@gmail.com) + +>Commiter: Marko Oldenburg (leongaultier@gmail.com) + + + + +### fix crash then call ARRAY +>Mon, 27 May 2019 09:55:45 +0200 + +>Author: Marko Oldenburg (leongaultier@gmail.com) + +>Commiter: Marko Oldenburg (leongaultier@gmail.com) + + + + +### change loglevel +>Thu, 23 May 2019 19:05:44 +0200 + +>Author: Marko Oldenburg (leongaultier@gmail.com) + +>Commiter: Marko Oldenburg (leongaultier@gmail.com) + + + + +### bugfixes, expand Bridge readings +>Tue, 21 May 2019 15:41:26 +0200 + +>Author: Marko Oldenburg (leongaultier@gmail.com) + +>Commiter: Marko Oldenburg (leongaultier@gmail.com) + + + + +### fix bug +>Tue, 7 May 2019 10:56:21 +0200 + +>Author: Marko Oldenburg (leongaultier@gmail.com) + +>Commiter: Marko Oldenburg (leongaultier@gmail.com) + + + + +### add check if defined +>Tue, 7 May 2019 04:39:44 +0200 + +>Author: Marko Oldenburg (leongaultier@gmail.com) + +>Commiter: Marko Oldenburg (leongaultier@gmail.com) + + + + +### add check if defined +>Mon, 6 May 2019 16:27:40 +0200 + +>Author: Marko Oldenburg (leongaultier@gmail.com) + +>Commiter: Marko Oldenburg (leongaultier@gmail.com) + + + + +### fix undefined_value Error +>Wed, 1 May 2019 18:18:15 +0200 + +>Author: Marko Oldenburg (leongaultier@gmail.com) + +>Commiter: Marko Oldenburg (leongaultier@gmail.com) + + + + +### add first code for pressure pump +>Wed, 1 May 2019 18:00:24 +0200 + +>Author: Marko Oldenburg (leongaultier@gmail.com) + +>Commiter: Marko Oldenburg (leongaultier@gmail.com) + + + + +### 74_GardenaSmartDevice: change output for illigal year +>Tue, 23 Apr 2019 12:47:22 +0200 + +>Author: Marko Oldenburg (leongaultier@gmail.com) + +>Commiter: Marko Oldenburg (leongaultier@gmail.com) + + + + +### change on-for-timer time format +>Tue, 26 Mar 2019 19:03:07 +0100 + +>Author: Marko Oldenburg (leongaultier@gmail.com) + +>Commiter: Marko Oldenburg (leongaultier@gmail.com) + + + + +### fix FHEM crash then use META Part2 +>Tue, 26 Mar 2019 14:00:34 +0100 + +>Author: Marko Oldenburg (leongaultier@gmail.com) + +>Commiter: Marko Oldenburg (leongaultier@gmail.com) + + + + +### fix FHEM crash then use META +>Tue, 26 Mar 2019 13:57:37 +0100 + +>Author: Marko Oldenburg (leongaultier@gmail.com) + +>Commiter: Marko Oldenburg (leongaultier@gmail.com) + + + + +### add support for META and Installer +>Tue, 26 Mar 2019 12:14:37 +0100 + +>Author: Marko Oldenburg (leongaultier@gmail.com) + +>Commiter: Marko Oldenburg (leongaultier@gmail.com) + + + + +### change default interval +>Tue, 26 Mar 2019 11:19:32 +0100 + +>Author: Marko Oldenburg (leongaultier@gmail.com) + +>Commiter: Marko Oldenburg (leongaultier@gmail.com) + + + + +### fix FHEM crash +>Tue, 26 Mar 2019 11:14:52 +0100 + +>Author: Marko Oldenburg (leongaultier@gmail.com) + +>Commiter: Marko Oldenburg (leongaultier@gmail.com) + + + + +### add power plugin support +>Mon, 25 Mar 2019 21:55:01 +0100 + +>Author: Marko Oldenburg (leongaultier@gmail.com) + +>Commiter: Marko Oldenburg (leongaultier@gmail.com) + + + + +### change state then no sheduled timer in i2c +>Mon, 25 Mar 2019 13:40:35 +0100 + +>Author: Marko Oldenburg (leongaultier@gmail.com) + +>Commiter: Marko Oldenburg (leongaultier@gmail.com) + + + + +### fix crash +>Mon, 25 Mar 2019 13:09:45 +0100 + +>Author: Marko Oldenburg (leongaultier@gmail.com) + +>Commiter: Marko Oldenburg (leongaultier@gmail.com) + + + + +### change package name +>Mon, 25 Mar 2019 12:55:40 +0100 + +>Author: Marko Oldenburg (leongaultier@gmail.com) + +>Commiter: Marko Oldenburg (leongaultier@gmail.com) + + + + +### add power plug +>Mon, 25 Mar 2019 12:48:09 +0100 + +>Author: Marko Oldenburg (leongaultier@gmail.com) + +>Commiter: Marko Oldenburg (leongaultier@gmail.com) + + + + +### fix Undefined subroutine &GardenaSmartDevice +>Wed, 17 Oct 2018 21:58:50 +0200 + +>Author: Marko Oldenburg (leongaultier@gmail.com) + +>Commiter: Marko Oldenburg (leongaultier@gmail.com) + + + + +### fix typo, change to package +>Mon, 15 Oct 2018 14:14:28 +0200 + +>Author: Marko Oldenburg (leongaultier@gmail.com) + +>Commiter: Marko Oldenburg (leongaultier@gmail.com) + + + + +### fix get humidity bug, add rename Fn +>Thu, 23 Aug 2018 22:12:59 +0200 + +>Author: Marko Oldenburg (leongaultier@gmail.com) + +>Commiter: Marko Oldenburg (leongaultier@gmail.com) + + + + +### fix one bug +>Sun, 15 Jul 2018 14:13:02 +0200 + +>Author: Marko Oldenburg (leongaultier@gmail.com) + +>Commiter: Marko Oldenburg (leongaultier@gmail.com) + + + + +### add support for Irrigation Control +>Sat, 14 Jul 2018 13:51:31 +0200 + +>Author: Marko Oldenburg (leongaultier@gmail.com) + +>Commiter: Marko Oldenburg (leongaultier@gmail.com) + + + + +### bugfix watering_timer_valve_1 +>Thu, 28 Jun 2018 08:05:00 +0200 + +>Author: Marko Oldenburg (leongaultier@gmail.com) + +>Commiter: Marko Oldenburg (leongaultier@gmail.com) + + + + +### add set command for ic24 +>Wed, 27 Jun 2018 14:39:53 +0200 + +>Author: Marko Oldenburg (leongaultier@gmail.com) + +>Commiter: Marko Oldenburg (leongaultier@gmail.com) + + + + +### reading support for model ic24 +>Fri, 1 Jun 2018 09:28:19 +0200 + +>Author: Marko Oldenburg (leongaultier@gmail.com) + +>Commiter: Marko Oldenburg (leongaultier@gmail.com) + + + + +### add refresh humidity +>Thu, 10 May 2018 12:00:53 +0200 + +>Author: Marko Oldenburg (leongaultier@gmail.com) + +>Commiter: Marko Oldenburg (leongaultier@gmail.com) + + + + +### fix uninitialized value +>Wed, 9 May 2018 08:04:42 +0200 + +>Author: Marko Oldenburg (leongaultier@gmail.com) + +>Commiter: Marko Oldenburg (leongaultier@gmail.com) + + + + +### rerun getToken then rereadcfg +>Fri, 27 Apr 2018 18:08:50 +0200 + +>Author: Marko Oldenburg (leongaultier@gmail.com) + +>Commiter: Marko Oldenburg (leongaultier@gmail.com) + + + + +### fix password delete then rereadcfg is running +>Wed, 25 Apr 2018 08:24:52 +0200 + +>Author: Marko Oldenburg (leongaultier@gmail.com) + +>Commiter: Marko Oldenburg (leongaultier@gmail.com) + + + + +### add deletePassword set command +>Wed, 18 Apr 2018 09:57:30 +0200 + +>Author: Marko Oldenburg (leongaultier@gmail.com) + +>Commiter: Marko Oldenburg (leongaultier@gmail.com) + + + + +### add error trigger for notify +>Sun, 15 Apr 2018 19:44:44 +0200 + +>Author: Marko Oldenburg (leongaultier@gmail.com) + +>Commiter: Marko Oldenburg (leongaultier@gmail.com) + + + + +### change commandref +>Mon, 9 Apr 2018 08:51:50 +0200 + +>Author: Marko Oldenburg (leongaultier@gmail.com) + +>Commiter: Marko Oldenburg (leongaultier@gmail.com) + + + + +### change commandref +>Mon, 9 Apr 2018 08:50:39 +0200 + +>Author: Marko Oldenburg (leongaultier@gmail.com) + +>Commiter: Marko Oldenburg (leongaultier@gmail.com) + + + + +### rewrite parts of Bridge Modul and add Support for predefined start points +>Tue, 3 Apr 2018 14:15:16 +0200 + +>Author: Marko Oldenburg (leongaultier@gmail.com) + +>Commiter: Marko Oldenburg (leongaultier@gmail.com) + + + + +### change logoutput for password and username logging +>Tue, 20 Mar 2018 09:21:26 +0100 + +>Author: Marko Oldenburg (leongaultier@gmail.com) + +>Commiter: Marko Oldenburg (leongaultier@gmail.com) + + + + +### add NotifyFn and change interval method to NotifyFn +>Sat, 23 Dec 2017 09:02:08 +0100 + +>Author: Marko Oldenburg (leongaultier@gmail.com) + +>Commiter: Marko Oldenburg (leongaultier@gmail.com) + + + + +### remove IODev in Define and add IODev Attribut +>Tue, 19 Dec 2017 11:40:04 +0100 + +>Author: Marko Oldenburg (leongaultier@gmail.com) + +>Commiter: Marko Oldenburg (leongaultier@gmail.com) + + + + +### change state to connected +>Tue, 21 Nov 2017 08:28:14 +0100 + +>Author: Marko Oldenburg (leongaultier@gmail.com) + +>Commiter: Marko Oldenburg (leongaultier@gmail.com) + + + + +### fix part of code +>Mon, 2 Oct 2017 16:05:10 +0200 + +>Author: Marko Oldenburg (leongaultier@gmail.com) + +>Commiter: Marko Oldenburg (leongaultier@gmail.com) + + + + +### bugfix +>Thu, 28 Sep 2017 08:39:27 +0200 + +>Author: Marko Oldenburg (leongaultier@gmail.com) + +>Commiter: Marko Oldenburg (leongaultier@gmail.com) + + + + +### add disabledForInterval syntax check and Interval Value greater than 0 +>Thu, 28 Sep 2017 07:52:28 +0200 + +>Author: Marko Oldenburg (leongaultier@gmail.com) + +>Commiter: Marko Oldenburg (leongaultier@gmail.com) + + + + +### add Attribut disabledForInterval +>Fri, 15 Sep 2017 11:50:24 +0200 + +>Author: Marko Oldenburg (leongaultier@gmail.com) + +>Commiter: Marko Oldenburg (leongaultier@gmail.com) + + + + +### code cleaning +>Tue, 12 Sep 2017 15:54:57 +0200 + +>Author: Marko Oldenburg (leongaultier@gmail.com) + +>Commiter: Marko Oldenburg (leongaultier@gmail.com) + + + + +### german translation adapted, add new sub +>Wed, 6 Sep 2017 10:33:25 +0200 + +>Author: Marko Oldenburg (leongaultier@gmail.com) + +>Commiter: Marko Oldenburg (leongaultier@gmail.com) + + + + +### add makeDeviceName fhem.pl function to create new devices +>Tue, 5 Sep 2017 21:11:05 +0200 + +>Author: Marko Oldenburg (leongaultier@gmail.com) + +>Commiter: Marko Oldenburg (leongaultier@gmail.com) + + + + +### fix bugs in commandref +>Mon, 4 Sep 2017 09:38:16 +0200 + +>Author: Marko Oldenburg (leongaultier@gmail.com) + +>Commiter: Marko Oldenburg (leongaultier@gmail.com) + + + + +### ready for stable +>Mon, 4 Sep 2017 09:02:39 +0200 + +>Author: Marko Oldenburg (leongaultier@gmail.com) + +>Commiter: Marko Oldenburg (leongaultier@gmail.com) + + + + +### fix date value with none second character, fix display date less than 2000 +>Thu, 24 Aug 2017 21:38:38 +0200 + +>Author: Marko Oldenburg (leongaultier@gmail.com) + +>Commiter: Marko Oldenburg (leongaultier@gmail.com) + + + + +### add commandref, more language setup options +>Wed, 23 Aug 2017 21:56:43 +0200 + +>Author: Marko Oldenburg (leongaultier@gmail.com) + +>Commiter: Marko Oldenburg (leongaultier@gmail.com) + + + + +### add helper subs for convert zulu time in local time +>Tue, 22 Aug 2017 20:28:03 +0200 + +>Author: Marko Oldenburg (leongaultier@gmail.com) + +>Commiter: Marko Oldenburg (leongaultier@gmail.com) + + + + +### more german translate +>Mon, 21 Aug 2017 13:47:02 +0200 + +>Author: Marko Oldenburg (leongaultier@gmail.com) + +>Commiter: Marko Oldenburg (leongaultier@gmail.com) + + + + +### fix readingsbulkupdate +>Mon, 21 Aug 2017 13:23:59 +0200 + +>Author: Marko Oldenburg (leongaultier@gmail.com) + +>Commiter: Marko Oldenburg (leongaultier@gmail.com) + + + + +### support for german language readingvalues +>Mon, 21 Aug 2017 13:19:44 +0200 + +>Author: Marko Oldenburg (leongaultier@gmail.com) + +>Commiter: Marko Oldenburg (leongaultier@gmail.com) + + + + +### delayed getDevice sub after set Command +>Mon, 21 Aug 2017 10:32:58 +0200 + +>Author: Marko Oldenburg (leongaultier@gmail.com) + +>Commiter: Marko Oldenburg (leongaultier@gmail.com) + + + + +### fix sensor state value light, generatet events on updates +>Fri, 11 Aug 2017 21:35:46 +0200 + +>Author: Marko Oldenburg (leongaultier@gmail.com) + +>Commiter: Marko Oldenburg (leongaultier@gmail.com) + + + + +### fix error +>Thu, 10 Aug 2017 22:57:15 +0200 + +>Author: Marko Oldenburg (leongaultier@gmail.com) + +>Commiter: Marko Oldenburg (leongaultier@gmail.com) + + + + +### add new Device state Reading +>Thu, 10 Aug 2017 21:54:34 +0200 + +>Author: Marko Oldenburg (leongaultier@gmail.com) + +>Commiter: Marko Oldenburg (leongaultier@gmail.com) + + + + +### better error handling supported +>Thu, 10 Aug 2017 15:00:29 +0200 + +>Author: Marko Oldenburg (leongaultier@gmail.com) + +>Commiter: Marko Oldenburg (leongaultier@gmail.com) + + + + +### add error handling +>Thu, 10 Aug 2017 13:04:46 +0200 + +>Author: Marko Oldenburg (leongaultier@gmail.com) + +>Commiter: Marko Oldenburg (leongaultier@gmail.com) + + + + +### fix max duration for watering_computer +>Mon, 7 Aug 2017 20:26:56 +0200 + +>Author: Marko Oldenburg (leongaultier@gmail.com) + +>Commiter: Marko Oldenburg (leongaultier@gmail.com) + + + + +### new version number +>Mon, 7 Aug 2017 20:05:14 +0200 + +>Author: Marko Oldenburg (leongaultier@gmail.com) + +>Commiter: Marko Oldenburg (leongaultier@gmail.com) + + + + +### change state of watering_computer +>Mon, 7 Aug 2017 20:02:15 +0200 + +>Author: Marko Oldenburg (leongaultier@gmail.com) + +>Commiter: Marko Oldenburg (leongaultier@gmail.com) + + + + +### add check missing perl modul SSL +>Mon, 7 Aug 2017 18:15:05 +0200 + +>Author: Marko Oldenburg (leongaultier@gmail.com) + +>Commiter: Marko Oldenburg (leongaultier@gmail.com) + + + + +### fix blank character in name +>Mon, 7 Aug 2017 17:40:11 +0200 + +>Author: Marko Oldenburg (leongaultier@gmail.com) + +>Commiter: Marko Oldenburg (leongaultier@gmail.com) + + + + +### add fetch new sensor values, fix blank character in device names +>Mon, 7 Aug 2017 13:50:26 +0200 + +>Author: Marko Oldenburg (leongaultier@gmail.com) + +>Commiter: Marko Oldenburg (leongaultier@gmail.com) + + + + +### state Readings hinzugefügt, Token Reading in der Bridge +>Sun, 6 Aug 2017 21:33:09 +0200 + +>Author: Marko Oldenburg (leongaultier@gmail.com) + +>Commiter: Marko Oldenburg (leongaultier@gmail.com) + + + + +### add Readings support, add set commands +>Sun, 6 Aug 2017 09:11:04 +0200 + +>Author: Marko Oldenburg (leongaultier@gmail.com) + +>Commiter: Marko Oldenburg (leongaultier@gmail.com) + + + + +### first commit +>Sat, 5 Aug 2017 22:58:40 +0200 + +>Author: Marko Oldenburg (leongaultier@gmail.com) + +>Commiter: Marko Oldenburg (leongaultier@gmail.com) + + + + diff --git a/FHEM/73_GardenaSmartBridge.pm b/FHEM/73_GardenaSmartBridge.pm index 934335c..1797313 100644 --- a/FHEM/73_GardenaSmartBridge.pm +++ b/FHEM/73_GardenaSmartBridge.pm @@ -166,7 +166,7 @@ BEGIN { GP_Export( qw( Initialize - ) + ) ); sub Initialize { @@ -437,12 +437,14 @@ sub Set { DeletePassword($hash); } - elsif ( lc $cmd eq 'debughelper') { - return "usage: $cmd" if ( scalar( @{$aArg} ) != 2 ); - my $new_helper = $aArg->[0]; - my $new_helper_value = $aArg->[1]; - Log3( $name, 5, "[DEBUG] - GardenaSmartBridge ($name) - override helper $new_helper with $new_helper_value"); - $hash->{helper}{$new_helper} = $new_helper_value; + elsif ( lc $cmd eq 'debughelper' ) { + return "usage: $cmd" if ( scalar( @{$aArg} ) != 2 ); + my $new_helper = $aArg->[0]; + my $new_helper_value = $aArg->[1]; + Log3( $name, 5, +"[DEBUG] - GardenaSmartBridge ($name) - override helper $new_helper with $new_helper_value" + ); + $hash->{helper}{$new_helper} = $new_helper_value; } else { @@ -488,8 +490,8 @@ sub Write { "GardenaSmartBridge ($name) - Send with URL: $hash->{URL}$uri, HEADER: secret!, DATA: secret!, METHOD: $method" ); - # Log3($name, 3, - # "GardenaSmartBridge ($name) - Send with URL: $hash->{URL}$uri, HEADER: $header, DATA: $payload, METHOD: $method"); +# Log3($name, 3, +# "GardenaSmartBridge ($name) - Send with URL: $hash->{URL}$uri, HEADER: $header, DATA: $payload, METHOD: $method"); return; } @@ -611,8 +613,7 @@ sub ErrorHandling { } if ( - $data =~ /Error/ - && $data !~ /lastLonaErrorCode/ + $data =~ /Error/ && $data !~ /lastLonaErrorCode/ || ( defined($decode_json) && ref($decode_json) eq 'HASH' && defined( $decode_json->{errors} ) ) @@ -1574,7 +1575,7 @@ sub DeletePassword { ], "release_status": "stable", "license": "GPL_2", - "version": "v2.5.2", + "version": "v2.6.0", "author": [ "Marko Oldenburg " ], diff --git a/FHEM/74_GardenaSmartDevice.pm b/FHEM/74_GardenaSmartDevice.pm index 20da94d..3cb021f 100644 --- a/FHEM/74_GardenaSmartDevice.pm +++ b/FHEM/74_GardenaSmartDevice.pm @@ -150,7 +150,7 @@ BEGIN { GP_Export( qw( Initialize - ) + ) ); sub Initialize { @@ -197,21 +197,21 @@ sub Define { $hash->{helper}{eco_mode_id} = ''; $hash->{helper}{button_config_time_id} = ''; $hash->{helper}{winter_mode_id} = ''; - # Electroni Pressure Pump - $hash->{helper}{operating_mode_id} = ''; - $hash->{helper}{leakage_detection_id} = ''; - $hash->{helper}{turn_on_pressure_id} = ''; + # Electroni Pressure Pump + $hash->{helper}{operating_mode_id} = ''; + $hash->{helper}{leakage_detection_id} = ''; + $hash->{helper}{turn_on_pressure_id} = ''; $hash->{helper}{_id} = ''; # IrrigationControl valve control max 6 - $hash->{helper}{schedules_paused_until_1_id} = ''; - $hash->{helper}{schedules_paused_until_2_id} = ''; - $hash->{helper}{schedules_paused_until_3_id} = ''; - $hash->{helper}{schedules_paused_until_4_id} = ''; - $hash->{helper}{schedules_paused_until_5_id} = ''; - $hash->{helper}{schedules_paused_until_6_id} = ''; + $hash->{helper}{schedules_paused_until_1_id} = ''; + $hash->{helper}{schedules_paused_until_2_id} = ''; + $hash->{helper}{schedules_paused_until_3_id} = ''; + $hash->{helper}{schedules_paused_until_4_id} = ''; + $hash->{helper}{schedules_paused_until_5_id} = ''; + $hash->{helper}{schedules_paused_until_6_id} = ''; CommandAttr( undef, "$name IODev $modules{GardenaSmartBridge}{defptr}{BRIDGE}->{NAME}" ) @@ -287,9 +287,11 @@ sub Set { my $service_id; my $mainboard_version = ReadingsVal( $name, 'mower_type-mainboard_version', 0.0 ); - - my ($Sekunden, $Minuten, $Stunden, $Monatstag, $Monat, - $Jahr, $Wochentag, $Jahrestag, $Sommerzeit) = localtime(time); + + my ( + $Sekunden, $Minuten, $Stunden, $Monatstag, $Monat, + $Jahr, $Wochentag, $Jahrestag, $Sommerzeit + ) = localtime(time); my $timezone_offset = $Sommerzeit ? 0 : ( Time::Piece->new )->tzoffset; @@ -485,40 +487,45 @@ sub Set { . $hash->{DEVICEID} . '"}'; } ### Watering_pressure_pump - elsif ( lc $cmd eq 'operating_mode') { - my $op_mode = $aArg->[0]; - $payload = '"settings":{"name":"operating_mode",' - .'"value":"'.$op_mode.'",' - .'"device":"' - . $hash->{DEVICEID}.'"}'; - $abilities = 'watering_pressure_pump_settings'; - $service_id = $hash->{helper}->{ 'operating_mode_id' }; + elsif ( lc $cmd eq 'operating_mode' ) { + my $op_mode = $aArg->[0]; + $payload = + '"settings":{"name":"operating_mode",' + . '"value":"' + . $op_mode . '",' + . '"device":"' + . $hash->{DEVICEID} . '"}'; + $abilities = 'watering_pressure_pump_settings'; + $service_id = $hash->{helper}->{'operating_mode_id'}; } - elsif ( lc $cmd eq 'leakage_detection') { - my $leakdetection_mode = $aArg->[0]; - $payload = '"settings":{"name":"leakage_detection",' - .'"value":"'.$leakdetection_mode.'",' - .'"device":"' - . $hash->{DEVICEID}.'"}'; - $abilities = 'watering_pressure_pump_settings'; - $service_id = $hash->{helper}->{ 'leakage_detection_id' }; + elsif ( lc $cmd eq 'leakage_detection' ) { + my $leakdetection_mode = $aArg->[0]; + $payload = + '"settings":{"name":"leakage_detection",' + . '"value":"' + . $leakdetection_mode . '",' + . '"device":"' + . $hash->{DEVICEID} . '"}'; + $abilities = 'watering_pressure_pump_settings'; + $service_id = $hash->{helper}->{'leakage_detection_id'}; } - elsif ( lc $cmd eq 'turn_on_pressure') { - my $turnonpressure = $aArg->[0]; - $payload = '"settings":{"name":"turn_on_pressure",' - .'"value":"'.$turnonpressure.'",' - .'"device":"' - . $hash->{DEVICEID}.'"}'; - $abilities = 'watering_pressure_pump_settings'; - $service_id = $hash->{helper}->{ 'turn_on_pressure_id' }; + elsif ( lc $cmd eq 'turn_on_pressure' ) { + my $turnonpressure = $aArg->[0]; + $payload = + '"settings":{"name":"turn_on_pressure",' + . '"value":"' + . $turnonpressure . '",' + . '"device":"' + . $hash->{DEVICEID} . '"}'; + $abilities = 'watering_pressure_pump_settings'; + $service_id = $hash->{helper}->{'turn_on_pressure_id'}; } - elsif ( lc $cmd eq 'resetvalveerrors') { - $payload = '"name":"reset_valve_errors",' - .' "parameters": {}'; - $abilities = 'error'; + elsif ( lc $cmd eq 'resetvalveerrors' ) { + $payload = '"name":"reset_valve_errors",' . ' "parameters": {}'; + $abilities = 'error'; } - ### Sensors + ### Sensors elsif ( lc $cmd eq 'refresh' ) { my $sensname = $aArg->[0]; @@ -566,24 +573,32 @@ sub Set { 'manualOverride:slider,1,1,59 cancelOverride:noArg resumeSchedule:noArg stopSchedule manualButtonTime:slider,0,2,100 resetValveErrors:noArg' if ( AttrVal( $name, 'model', 'unknown' ) eq 'watering_computer' ); - - $list .= 'manualOverride:slider,1,1,90 cancelOverride:noArg operating_mode:automatic,scheduled leakage_detection:watering,washing_machine,domestic_water_supply,off turn_on_pressure:slider,2,0.2,3.0,1 resetValveErrors:noArg' - if ( AttrVal( $name, 'model', 'unknown' ) eq 'electronic_pressure_pump' ); + $list .= +'manualOverride:slider,1,1,90 cancelOverride:noArg operating_mode:automatic,scheduled leakage_detection:watering,washing_machine,domestic_water_supply,off turn_on_pressure:slider,2,0.2,3.0,1 resetValveErrors:noArg' + if ( AttrVal( $name, 'model', 'unknown' ) eq + 'electronic_pressure_pump' ); $list .= -'closeAllValves:noArg resetValveErrors:noArg stopScheduleValve:select,'.ReadingsVal( $name, 'ic24-valves_connected', '1' ).' resumeScheduleValve:select,'.ReadingsVal( $name, 'ic24-valves_connected', '1' ) +'closeAllValves:noArg resetValveErrors:noArg stopScheduleValve:select,' + . ReadingsVal( $name, 'ic24-valves_connected', '1' ) + . ' resumeScheduleValve:select,' + . ReadingsVal( $name, 'ic24-valves_connected', '1' ) if ( AttrVal( $name, 'model', 'unknown' ) eq 'ic24' ); - - foreach my $valve (split(',', ReadingsVal( $name, 'ic24-valves_connected', '1'))) { - $list .= ' manualDurationValve'.$valve.':slider,1,1,90 ' - if ( AttrVal( $name, 'model', 'unknown' ) eq 'ic24' ); + + foreach my $valve ( + split( ',', ReadingsVal( $name, 'ic24-valves_connected', '1' ) ) ) + { + $list .= ' manualDurationValve' . $valve . ':slider,1,1,90 ' + if ( AttrVal( $name, 'model', 'unknown' ) eq 'ic24' ); } - - foreach my $valve (split(',', ReadingsVal( $name, 'ic24-valves_connected', '1'))) { - $list .= ' cancelOverrideValve'.$valve.':noArg ' - if ( AttrVal( $name, 'model', 'unknown' ) eq 'ic24' ); + + foreach my $valve ( + split( ',', ReadingsVal( $name, 'ic24-valves_connected', '1' ) ) ) + { + $list .= ' cancelOverrideValve' . $valve . ':noArg ' + if ( AttrVal( $name, 'model', 'unknown' ) eq 'ic24' ); } - + $list .= 'refresh:temperature,humidity' if ( AttrVal( $name, 'model', 'unknown' ) =~ /sensor.?/ ); @@ -660,10 +675,10 @@ sub WriteReadings { my $hash = shift; my $decode_json = shift; - my $name = $hash->{NAME}; - my $abilities = scalar( @{ $decode_json->{abilities} } ); - my $settings = scalar( @{ $decode_json->{settings} } ); - my $scheduled_events = scalar( @{ $decode_json->{scheduled_events} } ); + my $name = $hash->{NAME}; + my $abilities = scalar( @{ $decode_json->{abilities} } ); + my $settings = scalar( @{ $decode_json->{settings} } ); + my $scheduled_events = scalar( @{ $decode_json->{scheduled_events} } ); readingsBeginUpdate($hash); @@ -708,9 +723,13 @@ sub WriteReadings { $hash, $decode_json->{abilities}[$abilities]{name} . '-' . $propertie->{name}, - (defined ($propertie->{value} ) eq '') ? RigReadingsValue( $hash, 'n/a') : "".RigReadingsValue( $hash, $propertie->{value} ) # cast all data to string with "" + ( defined( $propertie->{value} ) eq '' ) + ? RigReadingsValue( $hash, 'n/a' ) + : "" + . RigReadingsValue( $hash, + $propertie->{value} ) # cast all data to string with "" ) - if ( exists( $propertie->{value} ) + if ( exists( $propertie->{value} ) && $decode_json->{abilities}[$abilities]{name} . '-' . $propertie->{name} ne 'radio-quality' && $decode_json->{abilities}[$abilities]{name} . '-' @@ -735,7 +754,9 @@ sub WriteReadings { $hash, $decode_json->{abilities}[$abilities]{name} . '-' . $propertie->{name}, - "".RigReadingsValue( $hash, $propertie->{value} ) # cast all data to string with "" + "" + . RigReadingsValue( $hash, + $propertie->{value} ) # cast all data to string with "" ) if ( defined( $propertie->{value} ) @@ -762,7 +783,8 @@ sub WriteReadings { $decode_json->{abilities}[$abilities]{name} . '-' . $propertie->{name} . '_timestamp', - "".Time::Piece->strptime( + "" + . Time::Piece->strptime( RigReadingsValue( $hash, $propertie->{timestamp} ), "%Y-%m-%d %H:%M:%S" )->strftime('%s') @@ -794,131 +816,176 @@ sub WriteReadings { . $propertie->{name} eq 'ic24-valves_master_config' ); if ( ref( $propertie->{value} ) eq "HASH" ) { - my $sub_state = 0; my $sub_value = 0; + my $sub_state = 0; + my $sub_value = 0; while ( my ( $r, $v ) = each %{ $propertie->{value} } ) { - if ( ref( $v ) ne "HASH" ) { + if ( ref($v) ne "HASH" ) { readingsBulkUpdateIfChanged( - $hash, - $decode_json->{abilities}[$abilities]{name} . '-' - . $propertie->{name} . '_' - . $r, + $hash, + $decode_json->{abilities}[$abilities]{name} + . '-' + . $propertie->{name} . '_' + . $r, RigReadingsValue( $hash, $v ) ); - } else { - while ( my ( $i_r, $i_v ) = each %{ $v } ) { - readingsBulkUpdateIfChanged( - $hash, - $decode_json->{abilities}[$abilities]{name} . '-' - . $propertie->{name} . '_' - . $r . '_' . $i_r, - RigReadingsValue( $hash, $i_v ) - ); - } + } + else { + while ( my ( $i_r, $i_v ) = each %{$v} ) { + readingsBulkUpdateIfChanged( + $hash, + $decode_json->{abilities}[$abilities]{name} + . '-' + . $propertie->{name} . '_' + . $r . '_' + . $i_r, + RigReadingsValue( $hash, $i_v ) + ); + } } } } - # ic24 and other watering devices calc irrigation left in sec - readingsBulkUpdateIfChanged( + + # ic24 and other watering devices calc irrigation left in sec + readingsBulkUpdateIfChanged( $hash, $decode_json->{abilities}[$abilities]{name} . '-' - . $propertie->{name} - . '_irrigation_left', - ( $propertie->{value}{duration} > 0 ) ? (Time::Piece::localtime->strptime( - RigReadingsValue($hash, $propertie->{timestamp}), "%Y-%m-%d %H:%M:%S") - + ($propertie->{value}{duration} + 3 ) - Time::Piece::localtime->new) : 0 + . $propertie->{name} + . '_irrigation_left', + ( $propertie->{value}{duration} > 0 ) + ? ( + Time::Piece::localtime->strptime( + RigReadingsValue( $hash, $propertie->{timestamp} ), + "%Y-%m-%d %H:%M:%S" + ) + + ( $propertie->{value}{duration} + 3 ) - + Time::Piece::localtime->new + ) + : 0 ) if ( defined( $propertie->{value} ) - && $decode_json->{abilities}[$abilities]{name} eq 'watering' - ); + && $decode_json->{abilities}[$abilities]{name} eq + 'watering' ); } } $abilities--; } while ( $abilities >= 0 ); - - if ( + if ( exists( $decode_json->{scheduled_events} ) - # && scalar ($decode_json->{scheduled_events} ) > 0 - && ref ($decode_json->{scheduled_events}) eq 'ARRAY' - && AttrVal( $name, 'model', 'unknown' ) !~ /sensor.?/ ) { - readingsBulkUpdateIfChanged( $hash, 'scheduling-schedules_events_count', - scalar( @{$decode_json->{scheduled_events} } ) ); - my $valve_id =1; my $event_id = 0; # ic24 [1..6] | wc, pump [1] + + # && scalar ($decode_json->{scheduled_events} ) > 0 + && ref( $decode_json->{scheduled_events} ) eq 'ARRAY' + && AttrVal( $name, 'model', 'unknown' ) !~ /sensor.?/ + ) + { + readingsBulkUpdateIfChanged( + $hash, + 'scheduling-schedules_events_count', + scalar( @{ $decode_json->{scheduled_events} } ) + ); + my $valve_id = 1; + my $event_id = 0; # ic24 [1..6] | wc, pump [1] ## # validiere schedules - my @soll = ();my @ist=(); my @tmp_ist=(); + my @soll = (); + my @ist = (); + my @tmp_ist = (); for my $cloud_schedules ( @{ $decode_json->{scheduled_events} } ) { - while ( my ( $r, $v ) = each %{ $cloud_schedules } ) { - push @soll, $v if $r eq 'id'; # cloud hat SOLL - } + while ( my ( $r, $v ) = each %{$cloud_schedules} ) { + push @soll, $v if $r eq 'id'; # cloud hat SOLL + } } foreach my $dev_schedules ( sort keys %{ $hash->{READINGS} } ) { - my $dev_reading = ReadingsVal( $name, $dev_schedules, "error" ); - push @ist, $dev_reading if $dev_schedules =~ /schedule.*\d_id/; # push reading _id - push @ist, $1 if $dev_schedules =~ /schedule.*_(\d)_id/; # push readigs d from x_id - - Log3 $name, 5, "[DEBUG] $name - Schedule - Key ist : $dev_schedules "; - Log3 $name, 5, "[DEBUG] $name - Schedule - ID FOUND $dev_reading" if $dev_schedules =~ /schedule.*_\d_id/; # cloud hat SOLL - } - #Log3 $name, 5, "[DEBUG] Cloud:".Dumper(@soll) . "- Internal:". Dumper(@ist); + my $dev_reading = ReadingsVal( $name, $dev_schedules, "error" ); + push @ist, $dev_reading + if $dev_schedules =~ /schedule.*\d_id/; # push reading _id + push @ist, $1 + if $dev_schedules =~ + /schedule.*_(\d)_id/; # push readigs d from x_id + + Log3 $name, 5, + "[DEBUG] $name - Schedule - Key ist : $dev_schedules "; + Log3 $name, 5, "[DEBUG] $name - Schedule - ID FOUND $dev_reading" + if $dev_schedules =~ /schedule.*_\d_id/; # cloud hat SOLL + } + + #Log3 $name, 5, "[DEBUG] Cloud:".Dumper(@soll) . "- Internal:". Dumper(@ist); ## delete only if cloud != (ist/2) - if ((scalar(@soll) != scalar(@ist/2) - && scalar(@soll) > 0 - && scalar(@ist) > 0) - || (scalar(@ist) eq 2 && scalar(@soll) eq 1 )){ - @tmp_ist = @ist; - while(my $element = shift(@soll)) { - my $schedule_step_int = 0; + if ( + ( + scalar(@soll) != scalar( @ist / 2 ) + && scalar(@soll) > 0 + && scalar(@ist) > 0 + ) + || ( scalar(@ist) eq 2 && scalar(@soll) eq 1 ) + ) + { + @tmp_ist = @ist; + while ( my $element = shift(@soll) ) { + my $schedule_step_int = 0; - foreach my $sist (@tmp_ist) { - my $step = scalar(@tmp_ist) > 1 ? 2:1; - if ($element eq $sist){ - splice(@ist, $schedule_step_int, $step); # more than 2 items del them, otherwise 1 - } - $schedule_step_int += $step; - } - } - } - #Log3 $name, 5, "[DEBUG] $name - Schedule - Rest ". Dumper(@ist); - # delete only if count soll != count ist. cos the will be overwritten - if (scalar(@ist) > 0 - && scalar(@soll) != scalar(@ist/2) ){ - while (my $old_schedule_id = shift(@ist)) { - if (length($old_schedule_id) == 1) { - foreach (keys %{$hash->{READINGS}}) { - delete $hash->{READINGS}->{$_} if($_ =~ /scheduling-schedules_event_$old_schedule_id.*/); + foreach my $sist (@tmp_ist) { + my $step = scalar(@tmp_ist) > 1 ? 2 : 1; + if ( $element eq $sist ) { + splice( @ist, $schedule_step_int, $step ) + ; # more than 2 items del them, otherwise 1 + } + $schedule_step_int += $step; } - }# fi - Log3 $name, 5, "[DEBUG] - $name : deletereading scheduling-schedules_event_$old_schedule_id.*" if length($old_schedule_id) == 1; - } + } + } + + #Log3 $name, 5, "[DEBUG] $name - Schedule - Rest ". Dumper(@ist); + # delete only if count soll != count ist. cos the will be overwritten + if ( scalar(@ist) > 0 + && scalar(@soll) != scalar( @ist / 2 ) ) + { + while ( my $old_schedule_id = shift(@ist) ) { + if ( length($old_schedule_id) == 1 ) { + foreach ( keys %{ $hash->{READINGS} } ) { + delete $hash->{READINGS}->{$_} + if ( $_ =~ + /scheduling-schedules_event_$old_schedule_id.*/ ); + } + } # fi + Log3 $name, 5, +"[DEBUG] - $name : deletereading scheduling-schedules_event_$old_schedule_id.*" + if length($old_schedule_id) == 1; + } } #### /validiere schedules for my $event_schedules ( @{ $decode_json->{scheduled_events} } ) { - $valve_id = $event_schedules->{valve_id} if ( exists($event_schedules->{valve_id} ) ); #ic24 - $event_id++; # event id - - while ( my ( $r, $v ) = each %{ $event_schedules } ) { - readingsBulkUpdateIfChanged( $hash, 'scheduling-schedules_event_' - . $event_id - #. ( ReadingsVal($name,'error-valve_error_1_valve_id','') ne '' ? "_valve_$valve_id" : '') - . '_' - . $r, - $v) if (ref($v) ne 'HASH' ); - readingsBulkUpdateIfChanged( $hash, 'scheduling-schedules_event_' - . $event_id - #. ( ReadingsVal($name,'error-valve_error_1_valve_id','') ne '' ? "_valve_$valve_id" : '') - . '_' - . $v->{type}, - join(',', @ { $v->{weekdays}}) ) if (ref($v) eq 'HASH' ); - }; - }; - - }; # fi scheduled_events + $valve_id = $event_schedules->{valve_id} + if ( exists( $event_schedules->{valve_id} ) ); #ic24 + $event_id++; # event id + + while ( my ( $r, $v ) = each %{$event_schedules} ) { + readingsBulkUpdateIfChanged( + $hash, 'scheduling-schedules_event_' . $event_id + +#. ( ReadingsVal($name,'error-valve_error_1_valve_id','') ne '' ? "_valve_$valve_id" : '') + . '_' + . $r, + $v + ) if ( ref($v) ne 'HASH' ); + readingsBulkUpdateIfChanged( + $hash, 'scheduling-schedules_event_' . $event_id + +#. ( ReadingsVal($name,'error-valve_error_1_valve_id','') ne '' ? "_valve_$valve_id" : '') + . '_' + . $v->{type}, + join( ',', @{ $v->{weekdays} } ) + ) if ( ref($v) eq 'HASH' ); + } + } + + } + ; # fi scheduled_events my $winter_mode; @@ -932,10 +999,12 @@ sub WriteReadings { && ( $decode_json->{settings}[$settings]{name} =~ /schedules_paused_until_?\d?$/ || $decode_json->{settings}[$settings]{name} eq 'eco_mode' - || $decode_json->{settings}[$settings]{name} eq 'winter_mode' - || $decode_json->{settings}[$settings]{name} eq 'operating_mode' - || $decode_json->{settings}[$settings]{name} eq 'leakage_detection' - || $decode_json->{settings}[$settings]{name} eq 'turn_on_pressure' ) + || $decode_json->{settings}[$settings]{name} eq 'winter_mode' + || $decode_json->{settings}[$settings]{name} eq 'operating_mode' + || $decode_json->{settings}[$settings]{name} eq + 'leakage_detection' + || $decode_json->{settings}[$settings]{name} eq + 'turn_on_pressure' ) ) { if ( $hash->{helper} @@ -946,29 +1015,49 @@ sub WriteReadings { { $decode_json->{settings}[$settings]{name} . '_id' } = $decode_json->{settings}[$settings]{id}; } + # check watering controler single schedules pause until - if ( $decode_json->{settings}[$settings]{name} eq 'schedules_paused_until' ) { - readingsBulkUpdateIfChanged( $hash, 'scheduling-schedules_paused_until', - $decode_json->{settings}[$settings]{value} ); + if ( $decode_json->{settings}[$settings]{name} eq + 'schedules_paused_until' ) + { + readingsBulkUpdateIfChanged( + $hash, + 'scheduling-schedules_paused_until', + $decode_json->{settings}[$settings]{value} + ); } ##### #ic24 schedules pause until - if ($decode_json->{settings}[$settings]{name} =~ /schedules_paused_until_?(\d)?$/) { - #my $ventil = substr($decode_json->{settings}[$settings]{name}, -1); # => 1 - 6 - # check if empty, clear scheduling-scheduled_watering_next_start_x - readingsBulkUpdateIfChanged( $hash, 'scheduling-'.$decode_json->{settings}[$settings]{name}, - $decode_json->{settings}[$settings]{value} ); - # CommandAttr( undef, $name . " scheduling-scheduled_watering_next_start_") if ($decode_json->{settings}[$settings]{value} eq '' ) + if ( $decode_json->{settings}[$settings]{name} =~ + /schedules_paused_until_?(\d)?$/ ) + { + #my $ventil = substr($decode_json->{settings}[$settings]{name}, -1); # => 1 - 6 + # check if empty, clear scheduling-scheduled_watering_next_start_x + readingsBulkUpdateIfChanged( + $hash, + 'scheduling-' . $decode_json->{settings}[$settings]{name}, + $decode_json->{settings}[$settings]{value} + ); + +# CommandAttr( undef, $name . " scheduling-scheduled_watering_next_start_") if ($decode_json->{settings}[$settings]{value} eq '' ) } -#TODO: Readings und Setter ?! + + #TODO: Readings und Setter ?! # save electronid pressure pump settings as readings - if ( $decode_json->{settings}[$settings]{name} eq 'operating_mode' - || $decode_json->{settings}[$settings]{name} eq 'leakage_detection' - || $decode_json->{settings}[$settings]{name} eq 'turn_on_pressure' ) { - readingsBulkUpdateIfChanged( $hash, $decode_json->{settings}[$settings]{name}, - $decode_json->{settings}[$settings]{value} ); + if ( $decode_json->{settings}[$settings]{name} eq 'operating_mode' + || $decode_json->{settings}[$settings]{name} eq + 'leakage_detection' + || $decode_json->{settings}[$settings]{name} eq + 'turn_on_pressure' ) + { + readingsBulkUpdateIfChanged( + $hash, + $decode_json->{settings}[$settings]{name}, + $decode_json->{settings}[$settings]{value} + ); } + # save winter mode as reading if ( $decode_json->{settings}[$settings]{name} eq 'winter_mode' ) { readingsBulkUpdateIfChanged( $hash, 'winter_mode', @@ -977,15 +1066,18 @@ sub WriteReadings { $winter_mode = $decode_json->{settings}[$settings]{value}; } } - - if ( defined( $decode_json->{settings}[$settings]{name} ) - && $decode_json->{settings}[$settings]{name} eq 'valve_names' - && ref( $decode_json->{settings}[$settings]{value} ) eq "ARRAY" ) { # or HASH ? - my @valves = @{$decode_json->{settings}[$settings]{value}}; - foreach my $valve( @valves ) { - #Log3 $name, 4, "GardenaSmartDevice ($name) valve_name $valve->{'name'}"; - readingsBulkUpdateIfChanged( $hash, 'valve-valve_name_'.$valve->{"id"}, - $valve->{"name"} ); + + if ( defined( $decode_json->{settings}[$settings]{name} ) + && $decode_json->{settings}[$settings]{name} eq 'valve_names' + && ref( $decode_json->{settings}[$settings]{value} ) eq "ARRAY" ) + { # or HASH ? + my @valves = @{ $decode_json->{settings}[$settings]{value} }; + foreach my $valve (@valves) { + + #Log3 $name, 4, "GardenaSmartDevice ($name) valve_name $valve->{'name'}"; + readingsBulkUpdateIfChanged( $hash, + 'valve-valve_name_' . $valve->{"id"}, + $valve->{"name"} ); } } @@ -1051,98 +1143,221 @@ sub setState { # ic24 / wc / electronic pump - if ( AttrVal( $name, 'model', 'unknown' ) eq 'ic24' - || AttrVal( $name, 'model', 'unknown' ) eq 'watering_computer' - || AttrVal( $name, 'model', 'unknown' ) eq 'electronic_pressure_pump' ){ - my @opened_valves; - my $state_string = ''; my $nearst_irrigation = '2999-12-12 12:00'; - my $has_schedule = 0; my $longest_duration = 0; my $processed_item = ''; - my $error_type = 'ok'; - my @valves_connected = AttrVal( $name, 'model', 'unknown' ) eq 'ic24' ? split(',', ReadingsVal( $name, 'ic24-valves_connected', '')) : '1'; + if ( AttrVal( $name, 'model', 'unknown' ) eq 'ic24' + || AttrVal( $name, 'model', 'unknown' ) eq 'watering_computer' + || AttrVal( $name, 'model', 'unknown' ) eq 'electronic_pressure_pump' ) + { + my @opened_valves; + my $state_string = ''; + my $nearst_irrigation = '2999-12-12 12:00'; + my $has_schedule = 0; + my $longest_duration = 0; + my $processed_item = ''; + my $error_type = 'ok'; + my @valves_connected = + AttrVal( $name, 'model', 'unknown' ) eq 'ic24' + ? split( ',', ReadingsVal( $name, 'ic24-valves_connected', '' ) ) + : '1'; - $has_schedule = 1 if ( ReadingsVal($name, 'scheduling-schedules_events_count', '') ne '' ); - for (@valves_connected){ # valves 1 or 1..6 - ## add to opened ventils, if watering active - push @opened_valves, $_ if ( ( ( ReadingsVal( $name, "watering-watering_timer_".$_."_duration", 0 ) =~ m{\A[1-9]([0-9]+)?\z}xms ) ? $_ : 0 ) > 0 ); - ## set error type (pumpe required) - $error_type = ReadingsVal( $name, 'error-valve_error_'.$_.'_type', 'error' ) if (ReadingsVal( $name, 'error-valve_error_'.$_.'_type', 'error' ) ne 'ok'); - ## find longest irrigation duration - $longest_duration = ReadingsVal( $name, "watering-watering_timer_".$_."_irrigation_left", 0 ) if ( - ( ReadingsVal( $name, "watering-watering_timer_".$_."_duration", 0 ) =~ m{\A[1-9]([0-9]+)?\z}xms - && ReadingsVal( $name, "watering-watering_timer_".$_."_duration", 0 ) > 0 - && ReadingsVal( $name, "watering-watering_timer_".$_."_duration", 0 ) > $longest_duration ) ); + $has_schedule = 1 + if ( ReadingsVal( $name, 'scheduling-schedules_events_count', '' ) ne + '' ); + for (@valves_connected) { # valves 1 or 1..6 + ## add to opened ventils, if watering active + push @opened_valves, + $_ + if ( + ( + ( + ReadingsVal( $name, + "watering-watering_timer_" . $_ . "_duration", 0 ) + =~ m{\A[1-9]([0-9]+)?\z}xms + ) ? $_ : 0 + ) > 0 + ); + ## set error type (pumpe required) + $error_type = + ReadingsVal( $name, 'error-valve_error_' . $_ . '_type', 'error' ) + if ( + ReadingsVal( $name, 'error-valve_error_' . $_ . '_type', + 'error' ) ne 'ok' + ); + ## find longest irrigation duration + $longest_duration = + ReadingsVal( $name, + "watering-watering_timer_" . $_ . "_irrigation_left", 0 ) + if ( + ( + ReadingsVal( $name, + "watering-watering_timer_" . $_ . "_duration", 0 ) =~ + m{\A[1-9]([0-9]+)?\z}xms + && ReadingsVal( $name, + "watering-watering_timer_" . $_ . "_duration", 0 ) > 0 + && ReadingsVal( $name, + "watering-watering_timer_" . $_ . "_duration", 0 ) > + $longest_duration + ) + ); - # y-m-d h:m - $processed_item = AttrVal( $name, 'model', 'unknown' ) eq 'ic24' - ? RigReadingsValue($hash, ReadingsVal($name, 'scheduling-schedules_paused_until_'.$_, '')) - : RigReadingsValue($hash, ReadingsVal($name, 'scheduling-schedules_paused_until', '')); + # y-m-d h:m + $processed_item = + AttrVal( $name, 'model', 'unknown' ) eq 'ic24' + ? RigReadingsValue( + $hash, + ReadingsVal( + $name, 'scheduling-schedules_paused_until_' . $_, '' + ) + ) + : RigReadingsValue( $hash, + ReadingsVal( $name, 'scheduling-schedules_paused_until', '' ) ); - Log3 $name, 5, "[DEBUG] - process: $processed_item"; - Log3 $name, 5, "[DEBUG] - next_start: ". ReadingsVal($name, 'scheduling-scheduled_watering_next_start', ''); # n/a RigReadingsValue( $hash, 'n/a') - # $nearst_irrigation = RigReadingsValue($hash, ReadingsVal($name, 'scheduling-schedules_paused_until_'.$_, '')) - if ( ReadingsVal($name, 'scheduling-scheduled_watering_next_start', '') eq RigReadingsValue( $hash, 'n/a') ) { # non next start, schedules paused permanently or next schedule > 1 year; get nearst paused_until - Log3 $name, 5, "[DEBUG] - next_start: empty "; - Log3 $name, 5, "[DEBUG] - empty pro item ".Time::Piece->strptime( $processed_item, "%Y-%m-%d %H:%M:%S"); - Log3 $name, 5, "[DEBUG] - empty nearst ".Time::Piece->strptime( $nearst_irrigation, "%Y-%m-%d %H:%M:%S"); - $nearst_irrigation = $processed_item - if ( Time::Piece->strptime( $processed_item, "%Y-%m-%d %H:%M:%S") - < Time::Piece->strptime( $nearst_irrigation, "%Y-%m-%d %H:%M:%S") - && $has_schedule - && Time::Piece->strptime( $processed_item, "%Y-%m-%d %H:%M:%S") - > Time::Piece->new - ) - } else { - $nearst_irrigation = ReadingsVal($name, 'scheduling-scheduled_watering_next_start', ''); - } - Log3 $name, 5, "[DEBUG] - choosed nearst: $nearst_irrigation"; + Log3 $name, 5, "[DEBUG] - process: $processed_item"; + Log3 $name, 5, + "[DEBUG] - next_start: " + . ReadingsVal( $name, 'scheduling-scheduled_watering_next_start', + '' ); # n/a RigReadingsValue( $hash, 'n/a') + # $nearst_irrigation = RigReadingsValue($hash, ReadingsVal($name, 'scheduling-schedules_paused_until_'.$_, '')) + if ( + ReadingsVal( $name, 'scheduling-scheduled_watering_next_start', + '' ) eq RigReadingsValue( $hash, 'n/a' ) + ) + { # non next start, schedules paused permanently or next schedule > 1 year; get nearst paused_until + Log3 $name, 5, "[DEBUG] - next_start: empty "; + Log3 $name, 5, + "[DEBUG] - empty pro item " + . Time::Piece->strptime( $processed_item, + "%Y-%m-%d %H:%M:%S" ); + Log3 $name, 5, + "[DEBUG] - empty nearst " + . Time::Piece->strptime( $nearst_irrigation, + "%Y-%m-%d %H:%M:%S" ); + $nearst_irrigation = $processed_item + if ( + Time::Piece->strptime( $processed_item, + "%Y-%m-%d %H:%M:%S" ) < + Time::Piece->strptime( $nearst_irrigation, + "%Y-%m-%d %H:%M:%S" ) + && $has_schedule + && Time::Piece->strptime( $processed_item, + "%Y-%m-%d %H:%M:%S" ) > Time::Piece->new + ); + } + else { + $nearst_irrigation = ReadingsVal( $name, + 'scheduling-scheduled_watering_next_start', '' ); + } + Log3 $name, 5, "[DEBUG] - choosed nearst: $nearst_irrigation"; - } # for - # override state 4 extendedstates - if ( AttrVal( $name, "extendedState", 0 ) == 1) { - if (scalar(@opened_valves) > 0){ - ## valve 1 will be ir.. 23 minutes remaining - for (@valves_connected){ - $state_string .= sprintf(RigReadingsValue($hash,'valve').' '.$_.' '.(RigReadingsValue($hash, 'watering. %.f minutes left') .'
'), (ReadingsVal( $name, 'watering-watering_timer_'.$_.'_duration', 0 )/60)); - } # /for - } else { - $state_string .= RigReadingsValue($hash, 'closed'); - } - $state_string .= ($has_schedule) ? sprintf( RigReadingsValue($hash, 'next watering: %s'), RigReadingsValue($hash, ReadingsVal($name, 'scheduling-scheduled_watering_next_start', ''))) : sprintf( RigReadingsValue($hash, 'paused until %s') , $nearst_irrigation); - #TODO: Write state format for ventil 1-@valces_connected -> map ? - CommandAttr( undef, $name . ' stateFormat + } # for + # override state 4 extendedstates + if ( AttrVal( $name, "extendedState", 0 ) == 1 ) { + if ( scalar(@opened_valves) > 0 ) { + ## valve 1 will be ir.. 23 minutes remaining + for (@valves_connected) { + $state_string .= sprintf( + RigReadingsValue( $hash, 'valve' ) . ' ' + . $_ . ' ' + . ( + RigReadingsValue( $hash, + 'watering. %.f minutes left' ) + . '
' + ), + ( + ReadingsVal( $name, + 'watering-watering_timer_' . $_ . '_duration', + 0 ) / 60 + ) + ); + } # /for + } + else { + $state_string .= RigReadingsValue( $hash, 'closed' ); + } + $state_string .= + ($has_schedule) + ? sprintf( + RigReadingsValue( $hash, 'next watering: %s' ), + RigReadingsValue( + $hash, + ReadingsVal( + $name, 'scheduling-scheduled_watering_next_start', '' + ) + ) + ) + : sprintf( + RigReadingsValue( $hash, 'paused until %s' ), + $nearst_irrigation + ); + + #TODO: Write state format for ventil 1-@valces_connected -> map ? + CommandAttr( + undef, $name . ' stateFormat { } - ' ) - if ( AttrVal( $name, 'stateFormat', 'none' ) eq 'none' ); - } else { - Log3 $name, 5, "[DEBUG] - Offene Ventile :".scalar(@opened_valves)." laengste bewaesserung: $longest_duration . hat Zeitplan: $has_schedule Naechster Zeitplan: $nearst_irrigation"; - $state_string = scalar(@opened_valves) > 0 - # offen - ? sprintf( (RigReadingsValue($hash, 'watering. %.f minutes left')), $longest_duration/60) - # zu - : - ( $has_schedule - && $nearst_irrigation ne '2999-12-12 12:00') - # zeitplan aktiv - # ? ( $nearst_irrigation eq '2038-01-18 00:00') sprintf( RigReadingsValue($hash, 'paused until %s') , $nearst_irrigation) - ? ( $nearst_irrigation eq RigReadingsValue( $hash, 'n/a') || $nearst_irrigation =~ '2038-01-18.*') - # dauerhaft pausiert - ? sprintf( (RigReadingsValue($hash, 'closed') .'. '.RigReadingsValue($hash , 'schedule permanently paused')) ) - # naechster zeutplan - : (ReadingsVal($name, 'scheduling-scheduled_watering_next_start', '') eq RigReadingsValue($hash, 'n/a')) - ? sprintf( RigReadingsValue($hash, 'paused until %s') , $nearst_irrigation) - : sprintf( (RigReadingsValue($hash, 'closed') .'. '.RigReadingsValue($hash, 'next watering: %s')), $nearst_irrigation ) - # zeitplan pausiert - : RigReadingsValue($hash, 'closed') - ; - # state offline | override - $state_string = 'offline' if ($online_state eq 'offline'); - $state_string = ( $error_type ne 'ok' ) ? $error_type : $state_string; + ' + ) if ( AttrVal( $name, 'stateFormat', 'none' ) eq 'none' ); + } + else { + Log3 $name, 5, + "[DEBUG] - Offene Ventile :" + . scalar(@opened_valves) + . " laengste bewaesserung: $longest_duration . hat Zeitplan: $has_schedule Naechster Zeitplan: $nearst_irrigation"; + $state_string = scalar(@opened_valves) > 0 - } - readingsBulkUpdate( - $hash, 'state', RigReadingsValue( $hash, $state_string ) ); + # offen + ? sprintf( + ( RigReadingsValue( $hash, 'watering. %.f minutes left' ) ), + $longest_duration / 60 + ) + + # zu + : ( $has_schedule + && $nearst_irrigation ne '2999-12-12 12:00' ) + +# zeitplan aktiv +# ? ( $nearst_irrigation eq '2038-01-18 00:00') sprintf( RigReadingsValue($hash, 'paused until %s') , $nearst_irrigation) + ? ( $nearst_irrigation eq RigReadingsValue( $hash, 'n/a' ) + || $nearst_irrigation =~ '2038-01-18.*' ) + + # dauerhaft pausiert + ? sprintf( + ( + RigReadingsValue( $hash, 'closed' ) . '. ' + . RigReadingsValue( + $hash, 'schedule permanently paused' + ) + ) + ) + + # naechster zeutplan + : ( + ReadingsVal( $name, + 'scheduling-scheduled_watering_next_start', '' ) eq + RigReadingsValue( $hash, 'n/a' ) + ) ? sprintf( + RigReadingsValue( $hash, 'paused until %s' ), + $nearst_irrigation + ) + : sprintf( + ( + RigReadingsValue( $hash, 'closed' ) . '. ' + . RigReadingsValue( $hash, 'next watering: %s' ) + ), + $nearst_irrigation + ) + + # zeitplan pausiert + : RigReadingsValue( $hash, 'closed' ); + + # state offline | override + $state_string = 'offline' if ( $online_state eq 'offline' ); + $state_string = + ( $error_type ne 'ok' ) ? $error_type : $state_string; + + } + readingsBulkUpdate( $hash, 'state', + RigReadingsValue( $hash, $state_string ) ); } # Sensor / Sensor 2 @@ -1167,7 +1382,9 @@ sub setState { #online state sensor I II readingsBulkUpdate( $hash, 'state', - $online_state eq 'online' ? RigReadingsValue( $hash, $state_string) : RigReadingsValue( $hash, 'offline') ); + $online_state eq 'online' + ? RigReadingsValue( $hash, $state_string ) + : RigReadingsValue( $hash, 'offline' ) ); } readingsBulkUpdate( $hash, 'state', @@ -1187,21 +1404,22 @@ sub ReadingLangGerman { my $name = $hash->{NAME}; my %langGermanMapp = ( - 'ok_cutting' => 'mähen', - 'paused' => 'pausiert', - 'ok_searching' => 'suche Ladestation', - 'ok_charging' => 'lädt', - 'ok_leaving' => 'unterwegs zum Startpunkt', - 'wait_updating' => 'wird aktualisiert ...', - 'wait_power_up' => 'wird eingeschaltet ...', - 'parked_timer' => 'geparkt nach Zeitplan', - 'parked_park_selected' => 'geparkt', - 'off_disabled' => 'der Mäher ist ausgeschaltet', - 'off_hatch_open' => 'deaktiviert. Abdeckung ist offen oder PIN-Code erforderlich', - 'unknown' => 'unbekannter Status', - 'error' => 'Fehler', - 'error_at_power_up' => 'Neustart ...', - 'off_hatch_closed' => 'Deaktiviert. Manueller Start erforderlich', + 'ok_cutting' => 'mähen', + 'paused' => 'pausiert', + 'ok_searching' => 'suche Ladestation', + 'ok_charging' => 'lädt', + 'ok_leaving' => 'unterwegs zum Startpunkt', + 'wait_updating' => 'wird aktualisiert ...', + 'wait_power_up' => 'wird eingeschaltet ...', + 'parked_timer' => 'geparkt nach Zeitplan', + 'parked_park_selected' => 'geparkt', + 'off_disabled' => 'der Mäher ist ausgeschaltet', + 'off_hatch_open' => + 'deaktiviert. Abdeckung ist offen oder PIN-Code erforderlich', + 'unknown' => 'unbekannter Status', + 'error' => 'Fehler', + 'error_at_power_up' => 'Neustart ...', + 'off_hatch_closed' => 'Deaktiviert. Manueller Start erforderlich', 'ok_cutting_timer_overridden' => 'manuelles mähen', 'parked_autotimer' => 'geparkt durch SensorControl', 'parked_daily_limit_reached' => 'abgeschlossen', @@ -1239,59 +1457,64 @@ sub ReadingLangGerman { 'guide_2_not_found' => 'SK 2 nicht gefunden', 'guide_3_not_found' => 'SK 3 nicht gefunden', 'difficult_finding_home' => 'Problem die Ladestation zu finden', - 'guide_calibration_accomplished' => 'Kalibrierung des Suchkabels beendet', - 'guide_calibration_failed' => 'Kalibrierung des Suchkabels fehlgeschlagen', - 'temporary_battery_problem' => 'kurzzeitiges Batterieproblem', - 'battery_problem' => 'Batterieproblem', - 'alarm_mower_switched_off' => 'Alarm! Mäher ausgeschalten', - 'alarm_mower_stopped' => 'Alarm! Mäher gestoppt', - 'alarm_mower_lifted' => 'Alarm! Mäher angehoben', - 'alarm_mower_tilted' => 'Alarm! Mäher gekippt', - 'connection_changed' => 'Verbindung geändert', - 'connection_not_changed' => 'Verbindung nicht geändert', - 'com_board_not_available' => 'COM Board nicht verfügbar', - 'slipped' => 'rutscht', - 'out_of_operation' => 'ausser Betrieb', - 'replace_now' => 'kritischer Batteriestand, wechseln Sie jetzt', - 'low' => 'niedrig', - 'ok' => 'ok', - 'no_source' => 'ok', - 'mower_charging' => 'Mäher wurde geladen', - 'completed_cutting_autotimer' => 'Sensor Control erreicht', - 'week_timer' => 'Wochentimer erreicht', - 'countdown_timer' => 'Stoppuhr Timer', - 'undefined' => 'unklar', - 'unknown' => 'unklar', - 'status_device_unreachable' => 'Gerät ist nicht in Reichweite', - 'status_device_alive' => 'Gerät ist in Reichweite', - 'bad' => 'schlecht', - 'poor' => 'schwach', - 'good' => 'gut', - 'undefined' => 'unklar', - 'idle' => 'nichts zu tun', - 'firmware_cancel' => 'Firmwareupload unterbrochen', - 'firmware_upload' => 'Firmwareupload', - 'unsupported' => 'nicht unterstützt', - 'up_to_date' => 'auf dem neusten Stand', - 'mower' => 'Mäher', - 'watering_computer' => 'Bewässerungscomputer', - 'no_frost' => 'kein Frost', - 'open' => 'offen', - 'closed' => 'geschlossen', - 'included' => 'inbegriffen', - 'active' => 'aktiv', - 'inactive' => 'nicht aktiv', - 'hibernate' => 'Winterschlaf', - 'awake' => 'Aufgewacht', - 'schedule permanently paused' => 'Zeitplan dauerhaft pausiert', - 'paused until %s' => 'pausiert bis %s', - 'watering. %.f minutes left' => 'Wird bewässert. %.f Minuten verbleibend.', - 'next watering: %s' => 'Nächste Bewässerung: %s', - 'n/a' => 'nicht verfügbar', - 'pump_not_filled' => 'Pumpe nicht gefüllt', - 'clean_fine_filter' => 'Filter reinigen', - 'concurrent_limit_reached' => 'Grenze gleichzeitig geöffneter Ventile erreicht', - 'low_battery_prevents_starting' => 'Niedrieger Batteriestand verhindert Bewässerung', + 'guide_calibration_accomplished' => + 'Kalibrierung des Suchkabels beendet', + 'guide_calibration_failed' => + 'Kalibrierung des Suchkabels fehlgeschlagen', + 'temporary_battery_problem' => 'kurzzeitiges Batterieproblem', + 'battery_problem' => 'Batterieproblem', + 'alarm_mower_switched_off' => 'Alarm! Mäher ausgeschalten', + 'alarm_mower_stopped' => 'Alarm! Mäher gestoppt', + 'alarm_mower_lifted' => 'Alarm! Mäher angehoben', + 'alarm_mower_tilted' => 'Alarm! Mäher gekippt', + 'connection_changed' => 'Verbindung geändert', + 'connection_not_changed' => 'Verbindung nicht geändert', + 'com_board_not_available' => 'COM Board nicht verfügbar', + 'slipped' => 'rutscht', + 'out_of_operation' => 'ausser Betrieb', + 'replace_now' => 'kritischer Batteriestand, wechseln Sie jetzt', + 'low' => 'niedrig', + 'ok' => 'ok', + 'no_source' => 'ok', + 'mower_charging' => 'Mäher wurde geladen', + 'completed_cutting_autotimer' => 'Sensor Control erreicht', + 'week_timer' => 'Wochentimer erreicht', + 'countdown_timer' => 'Stoppuhr Timer', + 'undefined' => 'unklar', + 'unknown' => 'unklar', + 'status_device_unreachable' => 'Gerät ist nicht in Reichweite', + 'status_device_alive' => 'Gerät ist in Reichweite', + 'bad' => 'schlecht', + 'poor' => 'schwach', + 'good' => 'gut', + 'undefined' => 'unklar', + 'idle' => 'nichts zu tun', + 'firmware_cancel' => 'Firmwareupload unterbrochen', + 'firmware_upload' => 'Firmwareupload', + 'unsupported' => 'nicht unterstützt', + 'up_to_date' => 'auf dem neusten Stand', + 'mower' => 'Mäher', + 'watering_computer' => 'Bewässerungscomputer', + 'no_frost' => 'kein Frost', + 'open' => 'offen', + 'closed' => 'geschlossen', + 'included' => 'inbegriffen', + 'active' => 'aktiv', + 'inactive' => 'nicht aktiv', + 'hibernate' => 'Winterschlaf', + 'awake' => 'Aufgewacht', + 'schedule permanently paused' => 'Zeitplan dauerhaft pausiert', + 'paused until %s' => 'pausiert bis %s', + 'watering. %.f minutes left' => + 'Wird bewässert. %.f Minuten verbleibend.', + 'next watering: %s' => 'Nächste Bewässerung: %s', + 'n/a' => 'nicht verfügbar', + 'pump_not_filled' => 'Pumpe nicht gefüllt', + 'clean_fine_filter' => 'Filter reinigen', + 'concurrent_limit_reached' => + 'Grenze gleichzeitig geöffneter Ventile erreicht', + 'low_battery_prevents_starting' => + 'Niedrieger Batteriestand verhindert Bewässerung', ); if ( @@ -2455,7 +2678,7 @@ sub SetPredefinedStartPoints { ], "release_status": "stable", "license": "GPL_2", - "version": "v2.5.7", + "version": "v2.6.0", "author": [ "Marko Oldenburg " ], diff --git a/controls_GardenaSmartDevice.txt b/controls_GardenaSmartDevice.txt index 249f831..7e270a2 100644 --- a/controls_GardenaSmartDevice.txt +++ b/controls_GardenaSmartDevice.txt @@ -1,2 +1,2 @@ -UPD 2022-07-21_19:43:48 49634 FHEM/73_GardenaSmartBridge.pm -UPD 2022-09-18_08:52:23 122934 FHEM/74_GardenaSmartDevice.pm +UPD 2023-01-10_09:49:28 49646 FHEM/73_GardenaSmartBridge.pm +UPD 2023-01-10_09:49:45 126305 FHEM/74_GardenaSmartDevice.pm diff --git a/hooks/commit-msg b/hooks/commit-msg new file mode 100755 index 0000000..ae9eb2c --- /dev/null +++ b/hooks/commit-msg @@ -0,0 +1,36 @@ +#!/bin/sh +# +# An example hook script to check the commit log message. +# Called by "git commit" with one argument, the name of the file +# that has the commit message. The hook should exit with non-zero +# status after issuing an appropriate message if it wants to stop the +# commit. The hook is allowed to edit the commit message file. +# +# To enable this hook, rename this file to "commit-msg". + +# Uncomment the below to add a Signed-off-by line to the message. +# Doing this in a hook is a bad idea in general, but the prepare-commit-msg +# hook is more suited to it. +# +# SOB=$(git var GIT_AUTHOR_IDENT | sed -n 's/^\(.*>\).*$/Signed-off-by: \1/p') +# grep -qs "^$SOB" "$1" || echo "$SOB" >> "$1" + +# This example catches duplicate Signed-off-by lines. + +commit_msg=$(cat "${1:?Missing commit message file}") + +test "" = "$(grep '^Signed-off-by: ' "$1" | + sort | uniq -c | sed -e '/^[ ]*1[ ]/d')" || { + echo >&2 Duplicate Signed-off-by lines. + exit 1 +} + +if ! echo "$commit_msg" | grep -Eq "^(build|chore|ci|docs|feat|feat!|fix|perf|refactor|revert|style|test)(\(.+\))?: .*$" ; then + + echo "Invalid commit message" + + exit 1 + +fi + +echo "Commit message is valid!" diff --git a/hooks/post-commit b/hooks/post-commit new file mode 100755 index 0000000..bf571f5 --- /dev/null +++ b/hooks/post-commit @@ -0,0 +1,18 @@ +#!/bin/bash +set -eu + +# destination of the final changelog file +OUTPUT_FILE=CHANGELOG.md + +# generate the changelog +git --no-pager log --no-merges --format="### %s%d%n>%aD%n%n>Author: %aN (%aE)%n%n>Commiter: %cN (%cE)%n%n%b%n%N%n" > $OUTPUT_FILE + +# prevent recursion! +# since a 'commit --amend' will trigger the post-commit script again +# we have to check if the changelog file has changed or not +res=$(git status --porcelain | grep -c ".\$OUTPUT_FILE$") +if [ "$res" -gt 0 ]; then + git add $OUTPUT_FILE + git commit --amend + echo "Populated Changelog in $OUTPUT_FILE" +fi