2
0
mirror of https://github.com/fhem/fhem-mirror.git synced 2025-02-07 16:59:18 +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 $hash = $defs{$name};
my ($summary,$begin,$status,$isrepeat,$id,$event);
my ($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", "");
$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
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");
}
}
@ -2212,7 +2212,7 @@ return;
#############################################################################################
# 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.
#
# $abnr - Referenz zum Array aller vorhandener Blocknummern
@ -2223,33 +2223,41 @@ sub SSCal_createATdevices ($$$) {
my ($name,$abnr,$evref) = @_;
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}) {
$id = ReadingsVal($name, $bnr."_98_EventId", "");
@devs = devspec2array("TYPE=at:FILTER=NAME=SSCal.$id.*");
my $room = AttrVal($name, "room", "");
# foreach my $bnr (@{$abnr}) {
# $id = ReadingsVal($name, $bnr."_98_EventId", "");
@devs = devspec2array("TYPE=at:FILTER=NAME=SSCal.$name.*");
foreach (@devs) {
next if(!$defs{$_});
Log3($name, 4, "$name - delete device: $_");
CommandDelete(undef,$_);
}
}
# }
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", "");
$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", "");
$begin =~ s/\s/T/; # Formatierung nach ISO8601 (YYYY-MM-DDTHH:MM:SS) für at-Devices
if($begin && $status =~ /upcoming|alarmed/ && $summary =~ /^\s*\{(.*)\}\s*$/) { # ein at-Device erstellen wenn Voraussetzungen erfüllt
if($begin && $status =~ /upcoming|alarmed/ && $desc =~ /^\s*\{(.*)\}\s*$/) { # ein at-Device erstellen wenn Voraussetzungen erfüllt
my $cmd = $1;
$begin =~ s/\s/T/; # Formatierung nach ISO8601 (YYYY-MM-DDTHH:MM:SS) für at-Devices
my $ao = $begin;
$ao =~ s/[-:]//g;
Log3($name, 3, "$name - Command detected. Create \"SSCal.$id.$ao\", Command: $cmd");
CommandDefMod(undef, "-temporary SSCal.$id.$ao at $begin $cmd");
Log3($name, 4, "$name - Command detected. Create device \"SSCal.$id.$ao\" with type \"at\".");
$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\" ");
}
}
}