mirror of
https://github.com/fhem/fhem-mirror.git
synced 2025-03-09 20:57:11 +00:00
57_SSCal: expand composite Event, fix API behavior if entry with 'is_all_day' is at first position
git-svn-id: https://svn.fhem.de/fhem/trunk@21341 2b470e98-0d58-463d-a4d8-8e2adae1ed80
This commit is contained in:
parent
524d795888
commit
18119d2151
@ -1,5 +1,7 @@
|
||||
# Add changes at the top of the list. Keep it in ASCII, and 80-char wide.
|
||||
# Do not insert empty lines here, update check depends on it.
|
||||
- change: 57_SSCal: expand composite Event, fix API behavior if entry with
|
||||
'is_all_day' is at first position
|
||||
- change: 70_DENON_AVR: soundmode related improvements (thx Shasow3561)
|
||||
- change: 93_DbRep: fix PERL WARNING again
|
||||
- bugfix: 73_WaterCalculator: NotifyDev trigger fixed: notifyRegexpChanged
|
||||
|
@ -48,6 +48,7 @@ eval "use FHEM::Meta;1" or my $modMetaAbsent = 1;
|
||||
|
||||
# Versions History intern
|
||||
my %SSCal_vNotesIntern = (
|
||||
"2.1.0" => "01.03.2020 expand composite Event, bugfix API if entry with 'is_all_day' and at first position in 'data' ",
|
||||
"2.0.0" => "28.02.2020 check in release ",
|
||||
"1.15.0" => "27.02.2020 fix recurrence WEEKLY by DAY, MONTHLY by MONTHDAY and BYDAY, create commandref ",
|
||||
"1.14.0" => "23.02.2020 new setter \"calUpdate\" consistent for both models, calEventList and calToDoList are obsolete ",
|
||||
@ -1511,7 +1512,7 @@ sub SSCal_extractEventlist ($) {
|
||||
my $data = delete $hash->{eventlist}; # zentrales Eventhash löschen !
|
||||
my $am = AttrVal($name, "asyncMode", 0);
|
||||
|
||||
my ($tz,$bdate,$btime,$bts,$edate,$etime,$ets,$ci,$bi,$ei,$startEndDiff,$excl);
|
||||
my ($tz,$bdate,$btime,$bts,$edate,$etime,$ets,$ci,$bi,$ei,$startEndDiff,$excl,$es,$em,$eh);
|
||||
my ($bmday,$bmonth,$emday,$emonth,$byear,$eyear,$nbdate,$nbtime,$nbts,$nedate,$netime,$nets);
|
||||
my @row_array;
|
||||
|
||||
@ -1549,11 +1550,12 @@ sub SSCal_extractEventlist ($) {
|
||||
|
||||
# Bugfix API - wenn is_all_day und an erster Stelle im 'data' Ergebnis des API-Calls ist Endedate/time nicht korrekt !
|
||||
if($isallday && ($bdate ne $edate) && $netime =~ /^00:59:59$/) {
|
||||
$eyear = $byear;
|
||||
$emonth = $bmonth;
|
||||
$emday = $bmday;
|
||||
($es, $em, $eh, $emday, $emonth, $eyear, undef, undef, undef) = localtime($ets-=3600);
|
||||
$eyear = sprintf("%02d", $eyear+=1900);
|
||||
$emonth = sprintf("%02d", $emonth+=1);
|
||||
$emday = sprintf("%02d", $emday);
|
||||
$netime = $eh.$em.$es;
|
||||
$nbtime =~ s/://g;
|
||||
$netime = "235959";
|
||||
|
||||
($bi,undef,$bdate,$btime,$bts,$excl) = SSCal_explodeDateTime ($hash, $byear.$bmonth.$bmday."T".$nbtime, 0, 0, 0);
|
||||
($ei,undef,$edate,$etime,$ets,undef) = SSCal_explodeDateTime ($hash, $eyear.$emonth.$emday."T".$netime, 0, 0, 0);
|
||||
@ -2195,9 +2197,10 @@ sub SSCal_doCompositeEvents ($$$) {
|
||||
my ($name,$abnr,$evref) = @_;
|
||||
my $hash = $defs{$name};
|
||||
|
||||
my ($desc,$begin,$status,$isrepeat,$id,$event);
|
||||
my ($summary,$desc,$begin,$status,$isrepeat,$id,$event);
|
||||
|
||||
foreach my $bnr (@{$abnr}) {
|
||||
$summary = ReadingsVal($name, $bnr."_01_Summary", "");
|
||||
$desc = ReadingsVal($name, $bnr."_03_Description", "");
|
||||
$begin = ReadingsVal($name, $bnr."_05_Begin", "");
|
||||
$status = ReadingsVal($name, $bnr."_17_Status", "");
|
||||
@ -2207,7 +2210,7 @@ sub SSCal_doCompositeEvents ($$$) {
|
||||
$begin =~ s/\s/T/; # Formatierung nach ISO8601 (YYYY-MM-DDTHH:MM:SS) für at-Devices
|
||||
|
||||
if($begin) { # einen Composite-Event erstellen wenn Beginnzeit gesetzt ist
|
||||
$event = "composite: $id $isrepeat $begin $status $desc";
|
||||
$event = "composite: $bnr $id $isrepeat $begin $status ".($desc?$desc:$summary);
|
||||
CommandTrigger(undef, "$name $event");
|
||||
}
|
||||
}
|
||||
@ -2762,7 +2765,7 @@ sub SSCal_login ($$) {
|
||||
}
|
||||
|
||||
my $timeout = AttrVal($name,"timeout",60);
|
||||
$timeout = 60 if($timeout < 60);
|
||||
$timeout = 120 if($timeout < 120);
|
||||
Log3($name, 4, "$name - HTTP-Call login will be done with http timeout value: $timeout s");
|
||||
|
||||
my $urlwopw; # nur zur Anzeige bei verbose >= 4 und "showPassInLog" == 0
|
||||
@ -3419,7 +3422,7 @@ return;
|
||||
# Rückgabe: invalid, Zeitzone, Date(YYYY-MM-DD), Time (HH:MM:SS), UnixTimestamp
|
||||
# (invalid =1 wenn Datum ungültig, ist nach RFC 5545 diese Wiederholung
|
||||
# zu ignorieren und auch nicht zu zählen !)
|
||||
# $dtstart: man benötigt originales DTSTART für den Vergleich bei Recuuring Terminen
|
||||
# $dtstart: man benötigt originales DTSTART für den Vergleich bei Recurring Terminen
|
||||
#############################################################################################
|
||||
sub SSCal_explodeDateTime ($$$$$) {
|
||||
my ($hash,$dt,$isallday,$uid,$dtstart) = @_;
|
||||
|
@ -1,5 +1,5 @@
|
||||
########################################################################################################################
|
||||
# $Id: 57_SSCal.pm 21307 2020-02-28 15:09:57Z DS_Starter $
|
||||
# $Id: 57_SSCal.pm 21312 2020-02-29 09:34:20Z DS_Starter $
|
||||
#########################################################################################################################
|
||||
# 57_SSCal.pm
|
||||
#
|
||||
@ -48,6 +48,7 @@ eval "use FHEM::Meta;1" or my $modMetaAbsent = 1;
|
||||
|
||||
# Versions History intern
|
||||
my %SSCal_vNotesIntern = (
|
||||
"2.1.0" => "01.03.2020 expand composite Event, bugfix API if entry with 'is_all_day' and at first position in 'data' ",
|
||||
"2.0.0" => "28.02.2020 check in release ",
|
||||
"1.15.0" => "27.02.2020 fix recurrence WEEKLY by DAY, MONTHLY by MONTHDAY and BYDAY, create commandref ",
|
||||
"1.14.0" => "23.02.2020 new setter \"calUpdate\" consistent for both models, calEventList and calToDoList are obsolete ",
|
||||
@ -1511,7 +1512,7 @@ sub SSCal_extractEventlist ($) {
|
||||
my $data = delete $hash->{eventlist}; # zentrales Eventhash löschen !
|
||||
my $am = AttrVal($name, "asyncMode", 0);
|
||||
|
||||
my ($tz,$bdate,$btime,$bts,$edate,$etime,$ets,$ci,$bi,$ei,$startEndDiff,$excl);
|
||||
my ($tz,$bdate,$btime,$bts,$edate,$etime,$ets,$ci,$bi,$ei,$startEndDiff,$excl,$es,$em,$eh);
|
||||
my ($bmday,$bmonth,$emday,$emonth,$byear,$eyear,$nbdate,$nbtime,$nbts,$nedate,$netime,$nets);
|
||||
my @row_array;
|
||||
|
||||
@ -1549,11 +1550,12 @@ sub SSCal_extractEventlist ($) {
|
||||
|
||||
# Bugfix API - wenn is_all_day und an erster Stelle im 'data' Ergebnis des API-Calls ist Endedate/time nicht korrekt !
|
||||
if($isallday && ($bdate ne $edate) && $netime =~ /^00:59:59$/) {
|
||||
$eyear = $byear;
|
||||
$emonth = $bmonth;
|
||||
$emday = $bmday;
|
||||
($es, $em, $eh, $emday, $emonth, $eyear, undef, undef, undef) = localtime($ets-=3600);
|
||||
$eyear = sprintf("%02d", $eyear+=1900);
|
||||
$emonth = sprintf("%02d", $emonth+=1);
|
||||
$emday = sprintf("%02d", $emday);
|
||||
$netime = $eh.$em.$es;
|
||||
$nbtime =~ s/://g;
|
||||
$netime = "235959";
|
||||
|
||||
($bi,undef,$bdate,$btime,$bts,$excl) = SSCal_explodeDateTime ($hash, $byear.$bmonth.$bmday."T".$nbtime, 0, 0, 0);
|
||||
($ei,undef,$edate,$etime,$ets,undef) = SSCal_explodeDateTime ($hash, $eyear.$emonth.$emday."T".$netime, 0, 0, 0);
|
||||
@ -2195,9 +2197,10 @@ sub SSCal_doCompositeEvents ($$$) {
|
||||
my ($name,$abnr,$evref) = @_;
|
||||
my $hash = $defs{$name};
|
||||
|
||||
my ($desc,$begin,$status,$isrepeat,$id,$event);
|
||||
my ($summary,$desc,$begin,$status,$isrepeat,$id,$event);
|
||||
|
||||
foreach my $bnr (@{$abnr}) {
|
||||
$summary = ReadingsVal($name, $bnr."_01_Summary", "");
|
||||
$desc = ReadingsVal($name, $bnr."_03_Description", "");
|
||||
$begin = ReadingsVal($name, $bnr."_05_Begin", "");
|
||||
$status = ReadingsVal($name, $bnr."_17_Status", "");
|
||||
@ -2207,7 +2210,7 @@ sub SSCal_doCompositeEvents ($$$) {
|
||||
$begin =~ s/\s/T/; # Formatierung nach ISO8601 (YYYY-MM-DDTHH:MM:SS) für at-Devices
|
||||
|
||||
if($begin) { # einen Composite-Event erstellen wenn Beginnzeit gesetzt ist
|
||||
$event = "composite: $id $isrepeat $begin $status $desc";
|
||||
$event = "composite: $bnr $id $isrepeat $begin $status ".($desc?$desc:$summary);
|
||||
CommandTrigger(undef, "$name $event");
|
||||
}
|
||||
}
|
||||
@ -2762,7 +2765,7 @@ sub SSCal_login ($$) {
|
||||
}
|
||||
|
||||
my $timeout = AttrVal($name,"timeout",60);
|
||||
$timeout = 60 if($timeout < 60);
|
||||
$timeout = 120 if($timeout < 120);
|
||||
Log3($name, 4, "$name - HTTP-Call login will be done with http timeout value: $timeout s");
|
||||
|
||||
my $urlwopw; # nur zur Anzeige bei verbose >= 4 und "showPassInLog" == 0
|
||||
@ -3419,7 +3422,7 @@ return;
|
||||
# Rückgabe: invalid, Zeitzone, Date(YYYY-MM-DD), Time (HH:MM:SS), UnixTimestamp
|
||||
# (invalid =1 wenn Datum ungültig, ist nach RFC 5545 diese Wiederholung
|
||||
# zu ignorieren und auch nicht zu zählen !)
|
||||
# $dtstart: man benötigt originales DTSTART für den Vergleich bei Recuuring Terminen
|
||||
# $dtstart: man benötigt originales DTSTART für den Vergleich bei Recurring Terminen
|
||||
#############################################################################################
|
||||
sub SSCal_explodeDateTime ($$$$$) {
|
||||
my ($hash,$dt,$isallday,$uid,$dtstart) = @_;
|
||||
@ -3549,12 +3552,12 @@ sub SSCal_setVersionInfo($) {
|
||||
if($modules{$type}{META}{x_prereqs_src} && !$hash->{HELPER}{MODMETAABSENT}) {
|
||||
# META-Daten sind vorhanden
|
||||
$modules{$type}{META}{version} = "v".$v; # Version aus META.json überschreiben, Anzeige mit {Dumper $modules{SSCal}{META}}
|
||||
if($modules{$type}{META}{x_version}) { # {x_version} ( nur gesetzt wenn $Id: 57_SSCal.pm 21307 2020-02-28 15:09:57Z DS_Starter $ im Kopf komplett! vorhanden )
|
||||
$modules{$type}{META}{x_version} =~ s/1.1.1/$v/g if($modules{$type}{META}{x_version} =~ /1.1.1/);
|
||||
if($modules{$type}{META}{x_version}) { # {x_version} ( nur gesetzt wenn $Id: 57_SSCal.pm 21312 2020-02-29 09:34:20Z DS_Starter $ im Kopf komplett! vorhanden )
|
||||
$modules{$type}{META}{x_version} =~ s/1\.1\.1/$v/g;
|
||||
} else {
|
||||
$modules{$type}{META}{x_version} = $v;
|
||||
}
|
||||
return $@ unless (FHEM::Meta::SetInternals($hash)); # FVERSION wird gesetzt ( nur gesetzt wenn $Id: 57_SSCal.pm 21307 2020-02-28 15:09:57Z DS_Starter $ im Kopf komplett! vorhanden )
|
||||
return $@ unless (FHEM::Meta::SetInternals($hash)); # FVERSION wird gesetzt ( nur gesetzt wenn $Id: 57_SSCal.pm 21312 2020-02-29 09:34:20Z DS_Starter $ im Kopf komplett! vorhanden )
|
||||
if(__PACKAGE__ eq "FHEM::$type" || __PACKAGE__ eq $type) {
|
||||
# es wird mit Packages gearbeitet -> Perl übliche Modulversion setzen
|
||||
# mit {<Modul>->VERSION()} im FHEMWEB kann Modulversion abgefragt werden
|
||||
|
Loading…
x
Reference in New Issue
Block a user