diff --git a/fhem/FHEM/00_CUL.pm b/fhem/FHEM/00_CUL.pm index c484d4213..d4cd97ef2 100755 --- a/fhem/FHEM/00_CUL.pm +++ b/fhem/FHEM/00_CUL.pm @@ -917,7 +917,7 @@ CUL_Parse($$$$@) } $hash->{"${name}_MSGCNT"}++; - $hash->{"${name}_TIME"} = + $hash->{"${name}_TIME"} = TimeNow(); # showtime attribute readingsSingleUpdate($hash, "state", $hash->{READINGS}{state}{VAL}, 0); $hash->{RAWMSG} = $rmsg; diff --git a/fhem/FHEM/01_FHEMWEB.pm b/fhem/FHEM/01_FHEMWEB.pm index 8db6ab767..853b64a9d 100755 --- a/fhem/FHEM/01_FHEMWEB.pm +++ b/fhem/FHEM/01_FHEMWEB.pm @@ -338,6 +338,7 @@ FW_Read($$) @FW_httpheader = split(/[\r\n]+/, $hash->{HDR}); %FW_httpheader = map { my ($k,$v) = split(/: */, $_, 2); + $k =~ s/(\w+)/\u$1/g; # Forum #39203 $k=>(defined($v) ? $v : 1); } @FW_httpheader; delete($hash->{HDR}); @@ -345,7 +346,7 @@ FW_Read($$) $FW_userAgent = $FW_httpheader{"User-Agent"}; my @origin = grep /Origin/, @FW_httpheader; $FW_headercors = (AttrVal($FW_wname, "CORS", 0) ? - "Access-Control-Allow-".$origin[0]."\r\n". + (($#origin<0) ? "": "Access-Control-Allow-".$origin[0]."\r\n"). "Access-Control-Allow-Methods: GET OPTIONS\r\n". "Access-Control-Allow-Headers: Origin, Authorization, Accept\r\n". "Access-Control-Allow-Credentials: true\r\n". @@ -358,7 +359,7 @@ FW_Read($$) my $basicAuth = AttrVal($FW_wname, "basicAuth", undef); if($basicAuth) { my $secret = $FW_httpheader{Authorization}; - $secret =~ s/^Basic // if($secret); + $secret =~ s/^Basic //i if($secret); my $pwok = ($secret && $secret eq $basicAuth); if($secret && $basicAuth =~ m/^{.*}$/ || $headerOptions[0]) { eval "use MIME::Base64"; @@ -721,10 +722,8 @@ FW_answerCall($) } # meta refresh in rooms only - if ($FW_room) { - my $rf = AttrVal($FW_wname, "refresh", ""); - FW_pO "" if($rf); - } + my $rf = AttrVal($FW_wname, "refresh", ""); + FW_pO "" if($rf); ######################## # CSS diff --git a/fhem/FHEM/93_FHEM2FHEM.pm b/fhem/FHEM/93_FHEM2FHEM.pm index 8ffefad60..473d67fd2 100755 --- a/fhem/FHEM/93_FHEM2FHEM.pm +++ b/fhem/FHEM/93_FHEM2FHEM.pm @@ -230,6 +230,8 @@ FHEM2FHEM_OpenDev($$) return; } + return if(IsDisabled($name)); + my $conn; if($hash->{SSL}) { eval "use IO::Socket::SSL"; diff --git a/fhem/FHEM/98_XmlList.pm b/fhem/FHEM/98_XmlList.pm index 71b84a730..055068f46 100644 --- a/fhem/FHEM/98_XmlList.pm +++ b/fhem/FHEM/98_XmlList.pm @@ -80,7 +80,7 @@ CommandXmlList($$) XmlEscape($c), XmlEscape($p->{$c})); } $str .= sprintf("\t\t\t\n", - $p->{IODev}{NAME}) if($p->{IODev}); + $p->{IODev}{NAME}) if($p->{IODev} && $p->{IODev}{NAME}); foreach my $c (sort keys %{$attr{$d}}) { next if(!$si && $c =~ m/^\./); diff --git a/fhem/docs/commandref_frame.html b/fhem/docs/commandref_frame.html index 98860d2f4..046a70840 100644 --- a/fhem/docs/commandref_frame.html +++ b/fhem/docs/commandref_frame.html @@ -407,6 +407,13 @@ Device specific attributes are documented in the corresponding device section. rooms for certain FHEMWEB instances. + +
  • genericDisplayType
    + used by some frontends (but not FHEMWEB) to offer a default image or + appropriate commands for this device. Currently the following values + are supported: switch,outlet,light,blind,speaker,thermostat +
  • +
  • group
    Group devices. Recognized by web-pgm2 (module FHEMWEB), it makes @@ -1215,23 +1222,25 @@ The following local attributes are used by a wider range of devices: diff --git a/fhem/docs/commandref_frame_DE.html b/fhem/docs/commandref_frame_DE.html index 706672594..d834aba7d 100644 --- a/fhem/docs/commandref_frame_DE.html +++ b/fhem/docs/commandref_frame_DE.html @@ -423,6 +423,14 @@ Gerät dokumentiert. Geräte, die dem Raum mit der Bezeichnung "hidden" zugeordnet werden, erscheinen nicht auf der Webseite. + +
  • genericDisplayType
    + Wird von bestimmten Frontends (aber nicht FHEMWEB) verwendet, um + für das Gerät passende Voreinstellungen (Bild/Befehle/etc) + anzubieten. Z.Zt werden folgende Werte unterstützt: + switch,outlet,light,blind,speaker,thermostat +
  • +
  • group
    Gerätegruppen. FHEMWEB zeigt Geräte die in die gleiche Gruppe @@ -1290,8 +1298,12 @@ Die folgenden lokalen Attribute werden von mehreren Geräten verwendet:
    - Bemerkung: sleep gefolgt von weiteren Befehlen blockiert die Abarbeitung von - FHEM nicht, und ist vergleichbar mit einem namenlosen at Kommando.
    + Bemerkung: falls sleep von keinem Befehl gefolgt wird, dann wird FHEM + blockiert. Das ist unerwünscht, und im FHEM-Log wird eine Warnung + protokolliert. diff --git a/fhem/docs/fhem.html b/fhem/docs/fhem.html index 00cf83576..3428b71c9 100644 --- a/fhem/docs/fhem.html +++ b/fhem/docs/fhem.html @@ -228,6 +228,10 @@ don't be afraid to ask something in english.
    +
    + meintechblog.de: Blog with guides focused on FHEM +
    +
    Frequently Asked Questions: faq.html
    diff --git a/fhem/docs/fhem_DE.html b/fhem/docs/fhem_DE.html index 531adb945..af6be00c2 100644 --- a/fhem/docs/fhem_DE.html +++ b/fhem/docs/fhem_DE.html @@ -248,6 +248,10 @@
    HOWTO_DE.html für eine kurze Installation/Konfiguration.
    +
    + meintechblog.de: Blog mit HOWTOs über FHEM-Themen +
    +
    Das F.A.Q. faq.html (englisch)
    diff --git a/fhem/fhem.pl b/fhem/fhem.pl index 281504ac6..45c294e86 100755 --- a/fhem/fhem.pl +++ b/fhem/fhem.pl @@ -263,6 +263,7 @@ my @globalAttrList = qw( dupTimeout exclude_from_update featurelevel + genericDisplayType:switch,outlet,light,blind,speaker,thermostat holiday2we language:EN,DE lastinclude @@ -2603,6 +2604,8 @@ CommandSleep($$) @cmdList=(); } else { + Log 1, + "WARNING: sleep without additional commands is deprecated and blocks FHEM"; select(undef, undef, undef, $sec); }