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

57_SSCal: contrib 1.12.0

git-svn-id: https://svn.fhem.de/fhem/trunk@21216 2b470e98-0d58-463d-a4d8-8e2adae1ed80
This commit is contained in:
nasseeder1 2020-02-17 19:03:52 +00:00
parent 7604036dfb
commit f33c5d8878

View File

@ -2190,10 +2190,10 @@ sub SSCal_doCompositeEvents ($$$) {
my ($name,$abnr,$evref) = @_; my ($name,$abnr,$evref) = @_;
my $hash = $defs{$name}; my $hash = $defs{$name};
my ($summary,$begin,$status,$isrepeat,$id,$event); my ($desc,$begin,$status,$isrepeat,$id,$event);
foreach my $bnr (@{$abnr}) { foreach my $bnr (@{$abnr}) {
$summary = ReadingsVal($name, $bnr."_01_Summary", ""); $desc = ReadingsVal($name, $bnr."_03_Description", "");
$begin = ReadingsVal($name, $bnr."_05_Begin", ""); $begin = ReadingsVal($name, $bnr."_05_Begin", "");
$status = ReadingsVal($name, $bnr."_17_Status", ""); $status = ReadingsVal($name, $bnr."_17_Status", "");
$isrepeat = ReadingsVal($name, $bnr."_55_isRepeatEvt", 0); $isrepeat = ReadingsVal($name, $bnr."_55_isRepeatEvt", 0);
@ -2202,7 +2202,7 @@ sub SSCal_doCompositeEvents ($$$) {
$begin =~ s/\s/T/; # Formatierung nach ISO8601 (YYYY-MM-DDTHH:MM:SS) für at-Devices $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 if($begin) { # einen Composite-Event erstellen wenn Beginnzeit gesetzt ist
$event = "composite: $id $isrepeat $begin $status $summary"; $event = "composite: $id $isrepeat $begin $status $desc";
CommandTrigger(undef, "$name $event"); CommandTrigger(undef, "$name $event");
} }
} }
@ -2212,7 +2212,7 @@ return;
############################################################################################# #############################################################################################
# erstellt automatisch AT-Devices aus Kalendereinträgen die FHEM-Befehle oder # erstellt automatisch AT-Devices aus Kalendereinträgen die FHEM-Befehle oder
# Perl-Routinen in "Summary" enthalten. # Perl-Routinen in "Description" enthalten.
# FHEM-Befehle sind in { } und Perl-Routinen in {{ }} einzufassen. # FHEM-Befehle sind in { } und Perl-Routinen in {{ }} einzufassen.
# #
# $abnr - Referenz zum Array aller vorhandener Blocknummern # $abnr - Referenz zum Array aller vorhandener Blocknummern
@ -2223,33 +2223,41 @@ sub SSCal_createATdevices ($$$) {
my ($name,$abnr,$evref) = @_; my ($name,$abnr,$evref) = @_;
my $hash = $defs{$name}; my $hash = $defs{$name};
my ($summary,$begin,$status,$isrepeat,$id,@devs,$event); my ($desc,$begin,$status,$isrepeat,$id,@devs,$err,$summary,$location);
foreach my $bnr (@{$abnr}) { my $room = AttrVal($name, "room", "");
$id = ReadingsVal($name, $bnr."_98_EventId", "");
@devs = devspec2array("TYPE=at:FILTER=NAME=SSCal.$id.*"); # foreach my $bnr (@{$abnr}) {
# $id = ReadingsVal($name, $bnr."_98_EventId", "");
@devs = devspec2array("TYPE=at:FILTER=NAME=SSCal.$name.*");
foreach (@devs) { foreach (@devs) {
next if(!$defs{$_}); next if(!$defs{$_});
Log3($name, 4, "$name - delete device: $_"); Log3($name, 4, "$name - delete device: $_");
CommandDelete(undef,$_); CommandDelete(undef,$_);
} }
} # }
foreach my $bnr (@{$abnr}) { foreach my $bnr (@{$abnr}) {
$summary = ReadingsVal($name, $bnr."_01_Summary", ""); $summary = ReadingsVal($name, $bnr."_01_Summary", "");
$desc = ReadingsVal($name, $bnr."_03_Description", "");
$begin = ReadingsVal($name, $bnr."_05_Begin", ""); $begin = ReadingsVal($name, $bnr."_05_Begin", "");
$status = ReadingsVal($name, $bnr."_17_Status", ""); $status = ReadingsVal($name, $bnr."_17_Status", "");
$isrepeat = ReadingsVal($name, $bnr."_55_isRepeatEvt", 0); $location = ReadingsVal($name, $bnr."_35_Location", $room); # Location wird als room gesetzt
$id = ReadingsVal($name, $bnr."_98_EventId", ""); $id = ReadingsVal($name, $bnr."_98_EventId", "");
$begin =~ s/\s/T/; # Formatierung nach ISO8601 (YYYY-MM-DDTHH:MM:SS) für at-Devices if($begin && $status =~ /upcoming|alarmed/ && $desc =~ /^\s*\{(.*)\}\s*$/) { # ein at-Device erstellen wenn Voraussetzungen erfüllt
if($begin && $status =~ /upcoming|alarmed/ && $summary =~ /^\s*\{(.*)\}\s*$/) { # ein at-Device erstellen wenn Voraussetzungen erfüllt
my $cmd = $1; my $cmd = $1;
$begin =~ s/\s/T/; # Formatierung nach ISO8601 (YYYY-MM-DDTHH:MM:SS) für at-Devices
my $ao = $begin; my $ao = $begin;
$ao =~ s/[-:]//g; $ao =~ s/[-:]//g;
Log3($name, 3, "$name - Command detected. Create \"SSCal.$id.$ao\", Command: $cmd"); Log3($name, 4, "$name - Command detected. Create device \"SSCal.$id.$ao\" with type \"at\".");
CommandDefMod(undef, "-temporary SSCal.$id.$ao at $begin $cmd"); $err = CommandDefine(undef, "SSCal.$name.$id.$ao at $begin $cmd");
if ($err) {
Log3($name, 1, "$name - Error during create \"at\": $err");
} else {
CommandAttr(undef,"SSCal.$name.$id.$ao room $location");
CommandAttr(undef,"SSCal.$name.$id.$ao comment $summary - created automatic by SSCal \"$name\" ");
}
} }
} }