From 76de4ef21faa86b9b64f70cc1b741ac57ab567bc Mon Sep 17 00:00:00 2001 From: phenning Date: Wed, 24 Jan 2018 16:51:19 +0000 Subject: [PATCH] =?UTF-8?q?95=5FAlarm.pm:=20Neue=20Version,=20Bugfix=20dis?= =?UTF-8?q?arm=20w=C3=A4hrend=20armwait=2095=5FBabble.pm:=20Neue=20Version?= =?UTF-8?q?,=20R=C3=A4ume=20k=C3=B6nnen=20ausgeschlossen=20werden=2095=5FY?= =?UTF-8?q?AAHM.pm:=20Neue=20Version,=20ein=20paar=20kleinere=20Fixes?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: https://svn.fhem.de/fhem/trunk@15981 2b470e98-0d58-463d-a4d8-8e2adae1ed80 --- fhem/FHEM/95_Alarm.pm | 11 +++++++---- fhem/FHEM/95_Babble.pm | 17 +++++++++++++---- fhem/FHEM/95_YAAHM.pm | 2 +- fhem/www/pgm2/alarm.js | 5 ++++- fhem/www/pgm2/babble.js | 8 ++++---- fhem/www/pgm2/yaahm.js | 34 +++++++++++++++++++++++++--------- 6 files changed, 54 insertions(+), 23 deletions(-) diff --git a/fhem/FHEM/95_Alarm.pm b/fhem/FHEM/95_Alarm.pm index f203f03be..c115deefc 100644 --- a/fhem/FHEM/95_Alarm.pm +++ b/fhem/FHEM/95_Alarm.pm @@ -43,7 +43,7 @@ my $alarmlinkname = "Alarms"; # link text my $alarmhiddenroom = "AlarmRoom"; # hidden room my $alarmpublicroom = "Alarm"; # public room my $alarmno = 8; -my $alarmversion = "4.0"; +my $alarmversion = "4.01"; my %alarm_transtable_EN = ( "ok" => "OK", @@ -805,10 +805,13 @@ sub Alarm_Arm($$$$$){ #-- disarming implies canceling as well }elsif( ($act eq "disarm") && ($xec ne "disarmed")) { #-- delete stale delayed arm - fhem('delete alarm'.$level.'.arm.dly' ) - if( defined $defs{'alarm'.$level.'.arm.dly'}); + if( defined $defs{'alarm'.$level.'.arm.dly'}){ + fhem('delete alarm'.$level.'.arm.dly' ) + #-- really kill active alarm + }else{ + Alarm_Exec($name,$level,"program","disarm","cancel"); + } $hash->{DATA}{"armstate"}{"level".$level} = "disarmed"; - Alarm_Exec($name,$level,"program","disarm","cancel"); #-- update state display readingsSingleUpdate( $hash, "level".$level,"disarmed",1 ); readingsSingleUpdate( $hash, "state", Alarm_getstate($hash)." ".$hash->{READINGS}{"short"}{VAL}, 1 ); diff --git a/fhem/FHEM/95_Babble.pm b/fhem/FHEM/95_Babble.pm index 363c8ade7..97a57eb3b 100644 --- a/fhem/FHEM/95_Babble.pm +++ b/fhem/FHEM/95_Babble.pm @@ -42,7 +42,7 @@ use JSON; # imports encode_json, decode_json, to_json and from_json. my $babblelinkname = "babbles"; # link text my $babblehiddenroom = "babbleRoom"; # hidden room my $babblepublicroom = "babble"; # public room -my $babbleversion = "1.01"; +my $babbleversion = "1.06"; my %babble_transtable_EN = ( "ok" => "OK", @@ -166,7 +166,7 @@ sub Babble_Initialize ($) { #$hash->{AttrFn} = "Babble_Attr"; my $attst = "lockstate:locked,unlocked helpFunc testParm0 testParm1 testParm2 testParm3 ". "remoteFHEM0 remoteFHEM1 remoteFHEM2 remoteFHEM3 remoteFunc0 remoteFunc1 remoteFunc2 remoteFunc3 remoteToken0 remoteToken1 remoteToken2 remoteToken3 ". - "babbleDevices babblePlaces babbleVerbs babbleVerbParts babblePrepos babbleQuests babbleArticles babbleStatus babbleWrites babbleTimes"; + "babbleDevices babblePlaces babbleNotPlaces babbleVerbs babbleVerbParts babblePrepos babbleQuests babbleArticles babbleStatus babbleWrites babbleTimes"; $hash->{AttrList} = $attst; if( !defined($babble_tt) ){ @@ -790,7 +790,7 @@ sub Babble_Normalize($$){ if( $word[0] =~ /^gut.*/){ $subcat = 1; $device="zeit"; - $reading="zeit"; + $reading="status"; $value=$word[1]; $reserve=$word[2] if( $word[2] ); @@ -1065,7 +1065,7 @@ sub Babble_TestIt{ } } } - }else{ + }elsif( $exflag==1 ){ my $func = AttrVal($name,"helpFunc",undef); if( $func && $func ne "" ){ my $help = defined($hash->{DATA}{"help"}{$device}) ? $hash->{DATA}{"help"}{$device} : ""; @@ -1081,7 +1081,11 @@ sub Babble_TestIt{ } $func =~ s/\$HELP/$help/g; $res = eval($func); + }else{ + $str .= "==> command not found and help function undefined"; } + }else{ + $str .= "==> command not found"; } return $str; } @@ -1532,6 +1536,8 @@ sub Babble_getplaces($$$) { my %rooms; # intermediate hash of all rooms my @special; # intermediate array of all special places for Babble my @places; # intermediate array of rooms/all babble places + + my $nop = AttrVal($name,"babbleNotPlaces",""); #--generate a new list if( $type eq "new" ){ @@ -1543,6 +1549,7 @@ sub Babble_getplaces($$$) { foreach my $r (split(",", AttrVal($d, "room", "Unsorted"))) { next if($hre && $r =~ m/$hre/); next if($r eq "Unsorted" || $r eq "hidden" || $r eq $babblehiddenroom || $r eq $babblepublicroom ); + next if (index($nop, $r) != -1); $rooms{$r}{$d} = 1; } } @@ -2025,6 +2032,8 @@ sub Babble_Html($)
csrfToken for addressing a certain remote FHEM device
  • attr <name> babblePlaces ...
    space separated list of special places to be identified in speech
  • +
  • attr <name> babbleNoPlaces ... +
    space separated list of rooms (in the local FHEM device) that should not appear in the list of place
  • attr <name> babbleStatus ...
    space separated list of status identifiers to be identified in speech. Example: Status Value Weather Time
  • attr <name> babblePrepos ... diff --git a/fhem/FHEM/95_YAAHM.pm b/fhem/FHEM/95_YAAHM.pm index ee596e76d..96fa2621c 100644 --- a/fhem/FHEM/95_YAAHM.pm +++ b/fhem/FHEM/95_YAAHM.pm @@ -47,7 +47,7 @@ my $yaahmname; my $yaahmlinkname = "Profile"; # link text my $yaahmhiddenroom = "ProfileRoom"; # hidden room my $yaahmpublicroom = "Unsorted"; # public room -my $yaahmversion = "1.43"; +my $yaahmversion = "1.45"; my $firstcall = 1; my %yaahm_transtable_EN = ( diff --git a/fhem/www/pgm2/alarm.js b/fhem/www/pgm2/alarm.js index 35cf225c1..47cdca2f4 100644 --- a/fhem/www/pgm2/alarm.js +++ b/fhem/www/pgm2/alarm.js @@ -1,6 +1,6 @@ //######################################################################################## // alarm.js -// Version 4.0 +// Version 4.01 // See 95_Alarm for licensing //######################################################################################## //# Prof. Dr. Peter A. Henning @@ -13,6 +13,9 @@ var req = new XMLHttpRequest(); req.open('GET', document.location, false); req.send(null); var csrfToken = req.getResponseHeader('X-FHEM-csrfToken'); +if( csrfToken == null ){ + csrfToken = "null"; +} //------------------------------------------------------------------------------------------------------ // encode Parameters for URL diff --git a/fhem/www/pgm2/babble.js b/fhem/www/pgm2/babble.js index f577338f2..4158b838e 100644 --- a/fhem/www/pgm2/babble.js +++ b/fhem/www/pgm2/babble.js @@ -1,6 +1,6 @@ //######################################################################################## // babble.js -// Version 1.04 +// Version 1.06 // See 95_Babble for licensing //######################################################################################## //# Prof. Dr. Peter A. Henning @@ -13,6 +13,9 @@ var req = new XMLHttpRequest(); req.open('GET', document.location, false); req.send(null); var csrfToken = req.getResponseHeader('X-FHEM-csrfToken'); +if( csrfToken == null ){ + csrfToken = "null"; +} //------------------------------------------------------------------------------------------------------ // encode Parameters for URL @@ -37,9 +40,6 @@ function encodeParm(oldval) { // Add and remove places and verbs //------------------------------------------------------------------------------------------------------ -function reload() { - //location.reload() -} function dialog1(message) { $('
    ').appendTo('body').html('
    ' + message + '
    ').dialog({ diff --git a/fhem/www/pgm2/yaahm.js b/fhem/www/pgm2/yaahm.js index 5b3f08830..bdc5527f6 100644 --- a/fhem/www/pgm2/yaahm.js +++ b/fhem/www/pgm2/yaahm.js @@ -1,10 +1,26 @@ //######################################################################################## // yaahm.js -// Version 1.4 +// Version 1.45 // See 95_YAAHM for licensing //######################################################################################## //# Prof. Dr. Peter A. Henning +//------------------------------------------------------------------------------------------------------ +// Determine csrfToken +//------------------------------------------------------------------------------------------------------ + +var req = new XMLHttpRequest(); +req.open('GET', document.location, false); +req.send(null); +var csrfToken = req.getResponseHeader('X-FHEM-csrfToken'); +if( csrfToken == null ){ + csrfToken = "null"; +} + +//------------------------------------------------------------------------------------------------------ +// encode Parameters for URL +//------------------------------------------------------------------------------------------------------ + function encodeParm(oldval) { var newval; newval = oldval.replace(/"/g, '%27'); @@ -56,7 +72,7 @@ function yaahm_setAttribute(name, attr, val) { location = location.substr(0, location.length -1); } var url = document.location.protocol + "//" + document.location.host + location; - FW_cmd(url + '?XHR=1&cmd.' + name + '=attr ' + name + ' ' + encodeParm(attr) + ' ' + encodeParm(val)); + FW_cmd(url + '?XHR=1&fwcsrf=' + csrfToken + '&cmd.' + name + '=attr ' + name + ' ' + encodeParm(attr) + ' ' + encodeParm(val)); } //------------------------------------------------------------------------------------------------------ @@ -73,7 +89,7 @@ function yaahm_mode(name, targetmode) { } var url = document.location.protocol + "//" + document.location.host + location; - FW_cmd(url + '?XHR=1&cmd.' + name + '={main::YAAHM_mode("' + name + '","' + targetmode + '")}'); + FW_cmd(url + '?XHR=1&fwcsrf=' + csrfToken + '&cmd.' + name + '={main::YAAHM_mode("' + name + '","' + targetmode + '")}'); } function yaahm_state(name, targetstate) { @@ -83,7 +99,7 @@ function yaahm_state(name, targetstate) { } var url = document.location.protocol + "//" + document.location.host + location; - FW_cmd(url + '?XHR=1&cmd.' + name + '={main::YAAHM_state("' + name + '","' + targetstate + '")}'); + FW_cmd(url + '?XHR=1&fwcsrf=' + csrfToken + '&cmd.' + name + '={main::YAAHM_state("' + name + '","' + targetstate + '")}'); } function yaahm_setnext(name, i) { @@ -100,7 +116,7 @@ function yaahm_setnext(name, i) { nval = "undef"; } - FW_cmd(url + '?XHR=1&cmd.' + name + '={main::YAAHM_nextWeeklyTime("' + name + '","next_' + i + '","' + nval + '")}'); + FW_cmd(url + '?XHR=1&fwcsrf=' + csrfToken + '&cmd.' + name + '={main::YAAHM_nextWeeklyTime("' + name + '","next_' + i + '","' + nval + '")}'); } //------------------------------------------------------------------------------------------------------ @@ -287,11 +303,11 @@ function yaahm_startDayTimer(name) { aval2 = $("input[name='actid" + dailykeys[i] + "']:checked").map(function () { return $(this).val(); }).get(); - FW_cmd(url + '?XHR=1&cmd.' + name + '={main::YAAHM_setParm("' + name + '","dt","' + dailykeys[i] + '",' + '"' + sval + '","' + eval + '","' + xval + '","' + aval1 + ';' + aval2 + '")}'); + FW_cmd(url + '?XHR=1&fwcsrf=' + csrfToken + '&cmd.' + name + '={main::YAAHM_setParm("' + name + '","dt","' + dailykeys[i] + '",' + '"' + sval + '","' + eval + '","' + xval + '","' + aval1 + ';' + aval2 + '")}'); } } // really start it now - FW_cmd(url + '?XHR=1&cmd.' + name + ' ={main::YAAHM_startDayTimer("' + name + '")}'); + FW_cmd(url + '?XHR=1&fwcsrf=' + csrfToken + '&cmd.' + name + ' ={main::YAAHM_startDayTimer("' + name + '")}'); // change link $('#dtlink').html('' + name + '.dtimer.IF'); @@ -346,10 +362,10 @@ function yaahm_startWeeklyTimer(name) { } } - FW_cmd(url + '?XHR=1&cmd.' + name + '={main::YAAHM_setParm("' + name + '","wt","' + i + '","' + xval + '","' + nval + '","' + aval1 + '","' + aval2 + '","' + sval.join('","') + '")}'); + FW_cmd(url + '?XHR=1&fwcsrf=' + csrfToken + '&cmd.' + name + '={main::YAAHM_setParm("' + name + '","wt","' + i + '","' + xval + '","' + nval + '","' + aval1 + '","' + aval2 + '","' + sval.join('","') + '")}'); } // really start it now - FW_cmd(url + '?XHR=1&cmd.' + name + ' ={main::YAAHM_startWeeklyTimer("' + name + '")}'); + FW_cmd(url + '?XHR=1&fwcsrf=' + csrfToken + '&cmd.' + name + ' ={main::YAAHM_startWeeklyTimer("' + name + '")}'); // change links for (var i = 0; i < weeklyno; i++) {