eq3 firmware check funkioniert nicht mehr

Begonnen von slor, 25 Oktober 2017, 23:34:14

Vorheriges Thema - Nächstes Thema

Otto123

Zitat von: Nobby1805 am 03 September 2019, 17:20:34
Tja, ich habe mich auch gewundert ... er zeigte entweder 6 (mit kleinem v) oder 1 (mit großen V) Updates an ... erst mit [vV] waren es dann 7
mit /i
| HM_30D124               | HM-LC-BL1PBU-FM         |    2.8 | 2.11.1 | 12.12.2016 |
| HM_test                 | HM-ES-TX-WM             |    1.0 |    2.2 | 19.06.2019 |
| HM_test                 | HM-ES-TX-WM             |    1.0 |    1.2 | 28.06.2016 |
Kannst Du das nochmal als list zeigen? Wegen beschlagener Monitorscheiben oder so :)
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

Beta-User

Mei, hier ist echt was los... Jetzt wollte ich das jedenfalls auch mal wissen (nachdem ich eigentlich angenommen hatte, dass sowieso alles aktuell ist, war ich überrascht, dass v.a. meine ganzen Rollladenaktoren NICHT auf der 2.11.1 zu sein scheinen ??? ...)

Wie dem auch sei, mit folgendem RAW-Code (ohne myUtils-Code) bekomme ich eine Ausgabe und hoffe, allen input einigermaßen (evtl. bis auf das vV-Thema, das eigentlich mit dem "i" erledigt sein sollte) verarbeitet zu haben:
defmod eq3 HTTPMOD https://www.eq-3.de/ajax/downloads/downloads_eq3.php 604800
attr eq3 userattr enableControlSet event-on-change-reading event-on-update-reading reading01AutoNumLen reading01Format reading01Name reading01RegOpt reading01RegOpt:s,i,g reading01Regex readingMaxAge readingMaxAgeReplacementMode readingMaxAgeReplacementMode:text,expression,delete readingMaxAgeReplacementMode:text,reading,internal,expression,delete requestData.* showError showMatched stateFormat userReadings webCmd
attr eq3 enableControlSet 1
attr eq3 event-on-change-reading .*
attr eq3 event-on-update-reading LAST_ERROR,MATCHED_READINGS
attr eq3 httpVersion 1.1
attr eq3 reading01AutoNumLen 2
attr eq3 reading01Format http://www.eq-3.de%s
attr eq3 reading01Name fw_link
attr eq3 reading01RegOpt gi
attr eq3 reading01Regex <a.href="(\/downloads\/software\/firmware\/[hH][mM][^"]+)
attr eq3 readingMaxAge 10
attr eq3 readingMaxAgeReplacementMode delete
attr eq3 requestData.* suchbegriff=&quelle=29&suchkategorie=3&themenbereich=1
attr eq3 room Steuerung->Z_CUL_HM_intern
attr eq3 showError 1
attr eq3 showMatched 1
attr eq3 stateFormat {    my $ret ="";;     \
    my $lastCheck = ReadingsTimestamp($name,"MATCHED_READINGS","");;     \
    $ret .= '<div style="text-align:left">last <a title="eq3-downloads" href="http://www.eq-3.de/service/downloads.html">homematic</a>-fw-check => '.$lastCheck;;     \
    $ret .= '<br><br><pre>';;     \
    $ret .= "| device                  | model                   | cur_fw | new_fw | release    |<br>";;     \
    $ret .= "------------------------------------------------------------------------------------<br>";;     \
    my $check = ReadingsVal($name,"newFwForDevices","error => no or wrong data from eq3-server!");;     \
    if($check eq "no fw-updates needed!") {\
        $ret .= '| ';;\
        $ret .= '<b style="color:green">';;\
        $ret .= sprintf("%-80s",$check);;\
        $ret .= '</b>';;\
        $ret .= ' |';;\
    } elsif($check eq "error => no or wrong data from eq3-server!") {\
        $ret .= '| <b style="color:red">';;\
        $ret .= sprintf("%-80s",$check);;\
        $ret .= '</b> |';;\
    } else {         \
        my @devices = split(',',$check);;         \
        foreach my $devStr (@devices) {             \
            my ($dev,$md,$ofw,$idx,$nfw,$date) = $devStr =~ m/^([^\s]+)\s\(([^\s]+)\s\|\sfw_(\d+\.\d+)\s=>\sfw(\d\d)_([\d\.]+)\s\|\s([^\)]+)\)$/;;             \
            my $link = ReadingsVal($name,"fw_link-".$idx,"");;             \
            $ret .= '| <a href="/fhem?detail='.$dev.'">';;              \
            $ret .= sprintf("%-23s",$dev);;             \
            $ret .= '</a> | <b';;              \
            $ret .= (($md eq "?")?' title="missing attribute model => set device in teach mode to receive missing data" style="color:yellow"':' style="color:lightgray"').'>';;              \
            $ret .= sprintf("%-23s",$md);;             \
            $ret .= '</b> | <b'.(($ofw eq "0.0")?' title="missing attribute firmware => set device in teach mode to receive missing data" style="color:yellow"':' style="color:lightgray"').'>';;              \
            $ret .= sprintf("%6s",$ofw);;             \
            $ret .= '</b> | <a title="eq3-firmware.tgz" href="'.$link.'"><b style="color:red">';;              \
            $ret .= sprintf("%6s",$nfw);;             \
            $ret .= '</b></a> | ';;              \
            $ret .= sprintf("%-10s",$date);;             \
            $ret .= " |<br>";;          \
        }     \
    }     \
    $ret .= '</pre></div>';;     \
    return $ret;;\
}
attr eq3 userReadings newFwForDevices:MATCHED_READINGS.* {\
    my $ret = "";;\
    my @data;;\
    if (ReadingsVal($name,"UNMATCHED_READINGS","?") eq "") {\
        my @eq3FwList = map{@data = ReadingsVal($name,"fw_link-".$_,"?") =~ m/firmware\/(.*?)_update_[vV]([\d_]+)_(\d\d)(\d\d)(\d\d)/;;\
                            $data[0] =~ s/_/-/g;;\
                            sprintf("%s:%s:%s.%s.%s:%s",$data[0],$data[1],$data[4],$data[3],"20".$data[2],$_);;\
                            } ReadingsVal($name,"MATCHED_READINGS","?") =~ m/fw_link-(\d\d)/g;;\
\
        foreach my $dev (devspec2array("TYPE=CUL_HM:FILTER=DEF=......:FILTER=subType!=(virtual|)")) {\
            my $md = AttrVal($dev,"model","?");;\
            my $v = AttrVal($dev,"firmware","0.0");;\
            my ($h,$l) = split('\.',$v);;\
            foreach my $newFw (grep m/^${md}:/i,@eq3FwList) {\
                my ($nh,$nl,$no,$date,$idx) = $newFw =~ m/^[^:]+:(\d+)_(\d+)_?(\d*)[^:]+)\d\d)$/;;\
                if(($nh > $h) || (($nh == $h) && ($nl > $l))) {\
                    $ret .= "," if($ret ne "");;\
                    $ret .= $dev." (".$md." | fw_".$v." => fw".$idx."_".$nh.".".$nl.($no?sprintf(".%d",$no):"")." | ".$date.")";;\
                }\
            }\
        }\
    } else {\
        $ret = "error => no or wrong data from eq3-server!";;\
    }\
    return ($ret eq "")?"no fw-updates needed!":$ret;;\
}
attr eq3 webCmd reread


Kleine Anmerkung von meiner Seite (weniger an die betroffenen User..)
Zitat von: slor am 27 Oktober 2017, 16:40:55
das war es.
in eq3 umbenannt und es läuft wieder. Danke!
"Wenn man schon" myUtils-Code verwendet, warum dann nicht den Namen des aufrufenden Devices übergeben? Dann erübrigen sich solche Probleme, bevor sie entstanden sind...

Könnte dann so aussehen (könnte man noch aufhübschen):
defmod HM_firmwarecheck HTTPMOD https://www.eq-3.de/ajax/downloads/downloads_eq3.php 604800
attr HM_firmwarecheck userattr enableControlSet event-on-change-reading event-on-update-reading reading01AutoNumLen reading01Format reading01Name reading01RegOpt reading01RegOpt:s,i,g reading01Regex readingMaxAge readingMaxAgeReplacementMode readingMaxAgeReplacementMode:text,expression,delete readingMaxAgeReplacementMode:text,reading,internal,expression,delete requestData.* showError showMatched stateFormat userReadings webCmd
attr HM_firmwarecheck enableControlSet 1
attr HM_firmwarecheck event-on-change-reading .*
attr HM_firmwarecheck event-on-update-reading LAST_ERROR,MATCHED_READINGS
attr HM_firmwarecheck httpVersion 1.1
attr HM_firmwarecheck reading01AutoNumLen 2
attr HM_firmwarecheck reading01Format http://www.eq-3.de%s
attr HM_firmwarecheck reading01Name fw_link
attr HM_firmwarecheck reading01RegOpt gi
attr HM_firmwarecheck reading01Regex <a.href="(\/downloads\/software\/firmware\/[hH][mM][^"]+)
attr HM_firmwarecheck readingMaxAge 10
attr HM_firmwarecheck readingMaxAgeReplacementMode delete
attr HM_firmwarecheck requestData.* suchbegriff=&quelle=29&suchkategorie=3&themenbereich=1
attr HM_firmwarecheck room Steuerung->Z_CUL_HM_intern
attr HM_firmwarecheck showError 1
attr HM_firmwarecheck showMatched 1
attr HM_firmwarecheck stateFormat {hm_firmware_update_httpmod_stateFormat($name)}
attr HM_firmwarecheck userReadings newFwForDevices:MATCHED_READINGS.* {hm_firmware_update_httpmod_newFwForDevices($name)}
attr HM_firmwarecheck webCmd reread

sub hm_firmware_update_httpmod_stateFormat ($) {   
  my $name = shift @_;
  my $lastCheck = ReadingsTimestamp($name,"MATCHED_READINGS","");     
  my $ret .= '<div style="text-align:left">last <a title="eq3-downloads" href="http://www.eq-3.de/service/downloads.html">homematic</a>-fw-check => '.$lastCheck;     
  $ret .= '<br><br><pre>';     
  $ret .= "| device                  | model                   | cur_fw | new_fw | release    |<br>";     
  $ret .= "------------------------------------------------------------------------------------<br>";     
  my $check = ReadingsVal($name,"newFwForDevices","error => no or wrong data from eq3-server!");     
  if($check eq "no fw-updates needed!") {
    $ret .= '| ';
    $ret .= '<b style="color:green">';
    $ret .= sprintf("%-80s",$check);
    $ret .= '</b> |';
  } elsif($check eq "error => no or wrong data from eq3-server!") {
    $ret .= '| <b style="color:red">';
    $ret .= sprintf("%-80s",$check);
    $ret .= '</b> |';
  } else {         
    my @devices = split(',',$check);         
    foreach my $devStr (@devices) {             
      my ($dev,$md,$ofw,$idx,$nfw,$date) = $devStr =~ m/^([^\s]+)\s\(([^\s]+)\s\|\sfw_(\d+\.\d+)\s=>\sfw(\d\d)_([\d\.]+)\s\|\s([^\)]+)\)$/;             
      my $link = ReadingsVal($name,"fw_link-".$idx,"");             
      $ret .= '| <a href="/fhem?detail='.$dev.'">';             
      $ret .= sprintf("%-23s",$dev);             
      $ret .= '</a> | <b';             
      $ret .= (($md eq "?")?' title="missing attribute model => set device in teach mode to receive missing data" style="color:yellow"':' style="color:lightgray"').'>';             
      $ret .= sprintf("%-23s",$md);             
      $ret .= '</b> | <b'.(($ofw eq "0.0")?' title="missing attribute firmware => set device in teach mode to receive missing data" style="color:yellow"':' style="color:lightgray"').'>';             
      $ret .= sprintf("%6s",$ofw);             
      $ret .= '</b> | <a title="eq3-firmware.tgz" href="'.$link.'"><b style="color:red">';             
      $ret .= sprintf("%6s",$nfw);             
      $ret .= '</b></a> | ';             
      $ret .= sprintf("%-10s",$date);             
      $ret .= " |<br>";     
    }     
  }     
  $ret .= '</pre></div>';     
  return $ret;
}

sub hm_firmware_update_httpmod_newFwForDevices ($) {   
  my $name = shift @_;
    my $ret = "";
    my @data;
    if (ReadingsVal($name,"UNMATCHED_READINGS","?") eq "") {
        my @eq3FwList = map{@data = ReadingsVal($name,"fw_link-".$_,"?") =~ m/firmware\/(.*?)_update_[vV]([\d_]+)_(\d\d)(\d\d)(\d\d)/;
                            $data[0] =~ s/_/-/g;
                            sprintf("%s:%s:%s.%s.%s:%s",$data[0],$data[1],$data[4],$data[3],"20".$data[2],$_);
                            } ReadingsVal($name,"MATCHED_READINGS","?") =~ m/fw_link-(\d\d)/g;

        foreach my $dev (devspec2array("TYPE=CUL_HM:FILTER=DEF=......:FILTER=subType!=(virtual|)")) {
            my $md = AttrVal($dev,"model","?");
            my $v = AttrVal($dev,"firmware","0.0");
            my ($h,$l) = split('\.',$v);
            foreach my $newFw (grep m/^${md}:/i,@eq3FwList) {
                my ($nh,$nl,$no,$date,$idx) = $newFw =~ m/^[^:]+:(\d+)_(\d+)_?(\d*)[^:]+)\d\d)$/;
                if(($nh > $h) || (($nh == $h) && ($nl > $l))) {
                    $ret .= "," if($ret ne "");
                    $ret .= $dev." (".$md." | fw_".$v." => fw".$idx."_".$nh.".".$nl.($no?sprintf(".%d",$no):"")." | ".$date.")";
                }
            }
        }
    } else {
        $ret = "error => no or wrong data from eq3-server!";
    }
    return ($ret eq "")?"no fw-updates needed!":$ret;
}


Ich könnte den HTTPMOD ohne externes Coding in die attrTemplate-File zu HTTPMOD aufnehmen. Macht das aus eurer Sicht Sinn (dann könnte man Tippfelher minimieren und ggf. updates einfacher ausliefern...)?
Aber finden wird das sowieso nur der, der nach sowas sucht, nehme ich an (oder die file einfach interessehalber mal durchflözt).
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: MiLight@ESP-GW, BT@OpenMQTTGw | MySensors: seriell, v.a. 2.3.1@RS485 | ZWave | ZigBee@deCONZ | SIGNALduino | MapleCUN | RHASSPY
svn: u.a MySensors, Weekday-&RandomTimer, Twilight,  div. attrTemplate-files

ms_steini


Otto123

Und was hast Du da für ein svg? Ich versuche es zu verstehen  :o
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

ms_steini

das SVG heißt "eq3.svg" UND eq3 heißt der HTTPMOD.
Wenn ich das eq3.svg in eq_3.svg rename habe ich eine normale Anzeige
oder ich rename den HTTMOD in einen anderen namen, das geht auch, dürfen nur nicht gleich sein.

Kannst du ja mal testen, rename mal ein svg file in den gleiche namen wie dein HTTPMOD, dann solltest du es sehen

P.S. shutdown restart erforderlich

Nobby1805

Zitat von: Otto123 am 03 September 2019, 17:33:05
mit /i
| HM_30D124               | HM-LC-BL1PBU-FM         |    2.8 | 2.11.1 | 12.12.2016 |
| HM_test                 | HM-ES-TX-WM             |    1.0 |    2.2 | 19.06.2019 |
| HM_test                 | HM-ES-TX-WM             |    1.0 |    1.2 | 28.06.2016 |
Kannst Du das nochmal als list zeigen? Wegen beschlagener Monitorscheiben oder so :)
Du meinst ein list von eq3? Bitte sehr
Internals:
   BUSY       0
   DEF        https://www.eq-3.de/ajax/downloads/downloads_eq3.php 604800
   FUUID      5d6e28a3-f33f-092f-d33a-bf75520d17d0bad3
   Interval   604800
   LASTSEND   1567523086.87303
   MainURL    https://www.eq-3.de/ajax/downloads/downloads_eq3.php
   MaxAgeEnabled 1
   ModuleVersion 3.5.9 - 13.2.2019
   NAME       eq3
   NOTIFYDEV  global
   NR         482
   NTFY_ORDER 50-eq3
   STATE      <div style="text-align:left">last <a title="eq3-downloads" href="http://www.eq-3.de/service/downloads.html">homematic</a>-fw-check => 2019-09-03 17:04:47<br><br><pre>| device                  | model                   | old_fw | new_fw | release    |<br>------------------------------------------------------------------------------------<br>| <a href="/fhem?detail=HM_4D106F">HM_4D106F              </a> | <b style="color:lightgray">HM-ES-TX-WM            </b> | <b style="color:lightgray">   1.0</b> | <a title="eq3-firmware.tgz" href="http://www.eq-3.de/downloads/software/firmware/HM-ES-TX-WM_update_V2_2_190619_1.tgz"><b style="color:red">   2.2</b></a> | 19.06.2019 |<br>| <a href="/fhem?detail=HM_4D106F">HM_4D106F              </a> | <b style="color:lightgray">HM-ES-TX-WM            </b> | <b style="color:lightgray">   1.0</b> | <a title="eq3-firmware.tgz" href="http://www.eq-3.de/downloads/software/firmware/hm-es-tx-wm_update_v1_2_160628.tgz"><b style="color:red">   1.2</b></a> | 28.06.2016 |<br>| <a href="/fhem?detail=Innen">Innen                  </a> | <b style="color:lightgray">HM-TC-IT-WM-W-EU       </b> | <b style="color:lightgray">   1.1</b> | <a title="eq3-firmware.tgz" href="http://www.eq-3.de/downloads/software/firmware/hm_tc_it_wm_w_eu_update_v1_3_002_150827.tgz"><b style="color:red"> 1.3.2</b></a> | 27.08.2015 |<br>| <a href="/fhem?detail=Innen2">Innen2                 </a> | <b style="color:lightgray">HM-TC-IT-WM-W-EU       </b> | <b style="color:lightgray">   1.2</b> | <a title="eq3-firmware.tgz" href="http://www.eq-3.de/downloads/software/firmware/hm_tc_it_wm_w_eu_update_v1_3_002_150827.tgz"><b style="color:red"> 1.3.2</b></a> | 27.08.2015 |<br>| <a href="/fhem?detail=Innen3">Innen3                 </a> | <b style="color:lightgray">HM-TC-IT-WM-W-EU       </b> | <b style="color:lightgray">   1.2</b> | <a title="eq3-firmware.tgz" href="http://www.eq-3.de/downloads/software/firmware/hm_tc_it_wm_w_eu_update_v1_3_002_150827.tgz"><b style="color:red"> 1.3.2</b></a> | 27.08.2015 |<br>| <a href="/fhem?detail=Innen4">Innen4                 </a> | <b style="color:lightgray">HM-TC-IT-WM-W-EU       </b> | <b style="color:lightgray">   1.1</b> | <a title="eq3-firmware.tgz" href="http://www.eq-3.de/downloads/software/firmware/hm_tc_it_wm_w_eu_update_v1_3_002_150827.tgz"><b style="color:red"> 1.3.2</b></a> | 27.08.2015 |<br>| <a href="/fhem?detail=Innen5">Innen5                 </a> | <b style="color:lightgray">HM-TC-IT-WM-W-EU       </b> | <b style="color:lightgray">   1.2</b> | <a title="eq3-firmware.tgz" href="http://www.eq-3.de/downloads/software/firmware/hm_tc_it_wm_w_eu_update_v1_3_002_150827.tgz"><b style="color:red"> 1.3.2</b></a> | 27.08.2015 |<br></pre></div>
   TRIGGERTIME 1568112371.91473
   TRIGGERTIME_FMT 2019-09-10 12:46:11
   TYPE       HTTPMOD
   addr       https://www.eq-3.de:443
   auth       0
   code       200
   compress   1
   conn       
   data       suchbegriff=&quelle=29&suchkategorie=3&themenbereich=1
   displayurl https://www.eq-3.de/ajax/downloads/downloads_eq3.php
   header     
   host       www.eq-3.de
   httpheader HTTP/1.1 200 OK
Date: Tue, 03 Sep 2019 15:04:47 GMT
Server: Apache/2.4.6 (Red Hat Enterprise Linux) OpenSSL/1.0.2k-fips mod_fcgid/2.3.9
X-Powered-By: PHP/7.1.15
Strict-Transport-Security: max-age=15768000
Connection: close
Content-Type: text/html; charset=UTF-8
   httpversion 1.0
   hu_blocking 0
   hu_filecount 14
   hu_port    443
   hu_portSfx
   ignoreredirects 0
   loglevel   4
   path       /ajax/downloads/downloads_eq3.php
   protocol   https
   redirects  0
   timeout    2
   url        https://www.eq-3.de/ajax/downloads/downloads_eq3.php
   value      0
   QUEUE:
   READINGS:
     2019-09-03 17:04:47   LAST_REQUEST    update
     2019-09-03 17:04:47   MATCHED_READINGS fw_link-01 fw_link-02 fw_link-03 fw_link-04 fw_link-05 fw_link-06 fw_link-07 fw_link-08 fw_link-09 fw_link-10 fw_link-11 fw_link-12 fw_link-13 fw_link-14 fw_link-15 fw_link-16 fw_link-17 fw_link-18 fw_link-19 fw_link-20
     2019-09-03 17:04:47   UNMATCHED_READINGS
     2019-09-03 17:04:47   fw_link-01      http://www.eq-3.de/downloads/software/firmware/HM-ES-TX-WM_update_V2_2_190619_1.tgz
     2019-09-03 17:04:47   fw_link-02      http://www.eq-3.de/downloads/software/firmware/hm-mod-re-8_update_v1_2_150911.tgz
     2019-09-03 17:04:47   fw_link-03      http://www.eq-3.de/downloads/software/firmware/hm-lc-bl1pbu-fm_update_v2_11_1_161212.tgz
     2019-09-03 17:04:47   fw_link-04      http://www.eq-3.de/downloads/software/firmware/hm_dis_ep_wm55_update_v1_2_170129.tgz
     2019-09-03 17:04:47   fw_link-05      http://www.eq-3.de/downloads/software/firmware/hm-es-pmsw1-pl-dn-r1_update_v2_5_0009_150217.tgz
     2019-09-03 17:04:47   fw_link-06      http://www.eq-3.de/downloads/software/firmware/hm-sen-mdir-wm55_update_v1_2_0_160825.tgz
     2019-09-03 17:04:47   fw_link-07      http://www.eq-3.de/downloads/software/firmware/hm-es-tx-wm_update_v1_2_160628.tgz
     2019-09-03 17:04:47   fw_link-08      http://www.eq-3.de/downloads/software/firmware/hm-ou-cfm-tw_update_v1_3_160620.tgz
     2019-09-03 17:04:47   fw_link-09      http://www.eq-3.de/downloads/software/firmware/hm-lc-dim1pwm-cv_update_v2_9_0005_150730.tar.gz
     2019-09-03 17:04:47   fw_link-10      http://www.eq-3.de/downloads/software/firmware/hm-lc-dim1tpbu-fm_update_v2_9_0005_150730.tar.gz
     2019-09-03 17:04:47   fw_link-11      http://www.eq-3.de/downloads/software/firmware/hm-lc-dim1l-pl-3_update_v2_9_0007_150803.tar.gz
     2019-09-03 17:04:47   fw_link-12      http://www.eq-3.de/downloads/software/firmware/hm-lc-dim1t-pl-3_update_v2_9_0005_150730.tar.gz
     2019-09-03 17:04:47   fw_link-13      http://www.eq-3.de/downloads/software/firmware/hm-mod-re-8_update_v1_2_150911.tgz
     2019-09-03 17:04:47   fw_link-14      http://www.eq-3.de/downloads/software/firmware/hm_tc_it_wm_w_eu_update_v1_3_002_150827.tgz
     2019-09-03 17:04:47   fw_link-15      http://www.eq-3.de/downloads/software/firmware/hm-lc-sw1pbu-fm_update_v2_8_2_150713.tgz
     2019-09-03 17:04:47   fw_link-16      http://www.eq-3.de/downloads/software/firmware/hm-sen-mdir-wm55_update_v1_1_2_150413.tgz
     2019-09-03 17:04:47   fw_link-17      http://www.eq-3.de/downloads/software/firmware/hm-es-pmsw1-pl_update_v2_5_0009_150217.tgz
     2019-09-03 17:04:47   fw_link-18      http://www.eq-3.de/downloads/software/firmware/hm_cc_rt_dn_update_v1_4_001_141020.tgz
     2019-09-03 17:04:47   fw_link-19      http://www.eq-3.de/downloads/software/firmware/hm-sen-rd-o_update_v1_4_003_130930.tgz
     2019-09-03 17:04:47   fw_link-20      http://www.eq-3.de/downloads/software/firmware/hm-lc-bl1pbu-fm_update_v2_3_0002_131204.tgz
     2019-09-03 17:04:47   newFwForDevices HM_4D106F (HM-ES-TX-WM | fw_1.0 => fw01_2.2 | 19.06.2019),HM_4D106F (HM-ES-TX-WM | fw_1.0 => fw07_1.2 | 28.06.2016),Innen (HM-TC-IT-WM-W-EU | fw_1.1 => fw14_1.3.2 | 27.08.2015),Innen2 (HM-TC-IT-WM-W-EU | fw_1.2 => fw14_1.3.2 | 27.08.2015),Innen3 (HM-TC-IT-WM-W-EU | fw_1.2 => fw14_1.3.2 | 27.08.2015),Innen4 (HM-TC-IT-WM-W-EU | fw_1.1 => fw14_1.3.2 | 27.08.2015),Innen5 (HM-TC-IT-WM-W-EU | fw_1.2 => fw14_1.3.2 | 27.08.2015)
   REQUEST:
     data       suchbegriff=&quelle=29&suchkategorie=3&themenbereich=1
     header     
     ignoreredirects 0
     retryCount 0
     type       update
     url        https://www.eq-3.de/ajax/downloads/downloads_eq3.php
     value      0
   defptr:
     readingBase:
       fw_link-01 reading
       fw_link-02 reading
       fw_link-03 reading
       fw_link-04 reading
       fw_link-05 reading
       fw_link-06 reading
       fw_link-07 reading
       fw_link-08 reading
       fw_link-09 reading
       fw_link-10 reading
       fw_link-11 reading
       fw_link-12 reading
       fw_link-13 reading
       fw_link-14 reading
       fw_link-15 reading
       fw_link-16 reading
       fw_link-17 reading
       fw_link-18 reading
       fw_link-19 reading
       fw_link-20 reading
     readingNum:
       fw_link-01 01
       fw_link-02 01
       fw_link-03 01
       fw_link-04 01
       fw_link-05 01
       fw_link-06 01
       fw_link-07 01
       fw_link-08 01
       fw_link-09 01
       fw_link-10 01
       fw_link-11 01
       fw_link-12 01
       fw_link-13 01
       fw_link-14 01
       fw_link-15 01
       fw_link-16 01
       fw_link-17 01
       fw_link-18 01
       fw_link-19 01
       fw_link-20 01
     readingOutdated:
     readingSubNum:
       fw_link-01 -1
       fw_link-02 -2
       fw_link-03 -3
       fw_link-04 -4
       fw_link-05 -5
       fw_link-06 -6
       fw_link-07 -7
       fw_link-08 -8
       fw_link-09 -9
       fw_link-10 -10
       fw_link-11 -11
       fw_link-12 -12
       fw_link-13 -13
       fw_link-14 -14
       fw_link-15 -15
       fw_link-16 -16
       fw_link-17 -17
       fw_link-18 -18
       fw_link-19 -19
       fw_link-20 -20
     requestReadings:
       update:
         fw_link-01 reading 01-1
         fw_link-02 reading 01-2
         fw_link-03 reading 01-3
         fw_link-04 reading 01-4
         fw_link-05 reading 01-5
         fw_link-06 reading 01-6
         fw_link-07 reading 01-7
         fw_link-08 reading 01-8
         fw_link-09 reading 01-9
         fw_link-10 reading 01-10
         fw_link-11 reading 01-11
         fw_link-12 reading 01-12
         fw_link-13 reading 01-13
         fw_link-14 reading 01-14
         fw_link-15 reading 01-15
         fw_link-16 reading 01-16
         fw_link-17 reading 01-17
         fw_link-18 reading 01-18
         fw_link-19 reading 01-19
         fw_link-20 reading 01-20
   sslargs:
Attributes:
   enableControlSet 1
   event-on-change-reading .*
   event-on-update-reading LAST_ERROR,MATCHED_READINGS
   reading01AutoNumLen 2
   reading01Format http://www.eq-3.de%s
   reading01Name fw_link
   reading01RegOpt gi
   reading01Regex <a.href="(\/downloads\/software\/firmware\/[hH][mM][^"]+)
   readingMaxAge 10
   readingMaxAgeReplacementMode delete
   requestData.* suchbegriff=&quelle=29&suchkategorie=3&themenbereich=1
   room       eq3
   showError  1
   showMatched 1
   stateFormat {eq3StateFormat}
   userReadings newFwForDevices:MATCHED_READINGS:.* {
  my $ret = "";
  my @data;
  my @eq3FwList = map{@data = ReadingsVal("eq3","fw_link-".$_,"?") =~ m/firmware\/(.*?)_update_[Vv]([\d_]+)_(\d\d)(\d\d)(\d\d)/;
            $data[0] =~ s/_/-/g;
            sprintf("%s:%s:%s.%s.%s:%s",$data[0],$data[1],$data[4],$data[3],"20".$data[2],$_);
            } ReadingsVal("eq3","MATCHED_READINGS","?") =~ m/fw_link-(\d\d)/g;
           
  foreach my $dev (devspec2array("TYPE=CUL_HM:FILTER=DEF=......:FILTER=subType!=(virtual|)")) {
    my $md = AttrVal($dev,"model","?");
    my $v = AttrVal($dev,"firmware","0.0");
    my ($h,$l) = split('\.',$v);
    foreach my $newFw (grep m/^${md}:/i,@eq3FwList) {
      my ($nh,$nl,$no,$date,$idx) = $newFw =~ m/^[^:]+:(\d+)_(\d+)_?(\d*):([^:]+):(\d\d)$/;
      if(($nh > $h) || (($nh == $h) && ($nl > $l))) {
        $ret .= "," if($ret ne "");
        $ret .= $dev." (".$md." | fw_".$v." => fw".$idx."_".$nh.".".$nl.($no?sprintf(".%d",$no):"")." | ".$date.")";
      }
    }
  }
  return ($ret eq "")?"no fw-updates needed!":$ret;
}
   userattr   enableControlSet event-on-change-reading event-on-update-reading reading01AutoNumLen reading01Format reading01Name reading01RegOpt reading01RegOpt:s,i,g reading01Regex readingMaxAge readingMaxAgeReplacementMode readingMaxAgeReplacementMode:text,expression,delete readingMaxAgeReplacementMode:text,reading,internal,expression,delete requestData.* showError showMatched stateFormat userReadings webCmd
   webCmd     reread
FHEM-Featurelevel: 6.2   (fhem.pl:28227/2023-11-29) auf Windows 10 Pro mit Strawberry Perl 5.32.1.1-32bit
TabletUI: 2.7.15
IO: 2xHMLAN(0.965)|HMUSB2(0.967)

Otto123

Zitat von: Nobby1805 am 03 September 2019, 18:34:20
Du meinst ein list von eq3? Bitte sehr
Naja ich meinte eher von der Variante mit /i die "nicht geht" :)

@ms_steini Da wird wohl was in der eq3StateFormat Routine aus irgendeinem Grund auf den Namen matchen. Das ist nicht schön - mal sehen ob man das findet.
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

ms_steini

@Otto123,

das ist, wenn du ein Device anlegst und mit dessen namen schon ein SVG existiert, bekommt das Device automatisch ein devStateIcon zugewiesen, allerdings ohne das attr devStateIcon zu verwenden.

erstell mal ein Dummy, "define hc_wht_regler dummy" der bekommt automatisch als icon das hc_wht_regler.svg zugewiesen

Nobby1805

Zitat von: Otto123 am 03 September 2019, 19:02:18
Naja ich meinte eher von der Variante mit /i die "nicht geht" :)
kleines vInternals:
   BUSY       0
   DEF        https://www.eq-3.de/ajax/downloads/downloads_eq3.php 604800
   FUUID      5d6e28a3-f33f-092f-d33a-bf75520d17d0bad3
   Interval   604800
   LASTSEND   1567531018.3329
   MainURL    https://www.eq-3.de/ajax/downloads/downloads_eq3.php
   MaxAgeEnabled 1
   ModuleVersion 3.5.9 - 13.2.2019
   NAME       eq3
   NOTIFYDEV  global
   NR         482
   NTFY_ORDER 50-eq3
   STATE      <div style="text-align:left">last <a title="eq3-downloads" href="http://www.eq-3.de/service/downloads.html">homematic</a>-fw-check => 2019-09-03 19:17:02<br><br><pre>| device                  | model                   | old_fw | new_fw | release    |<br>------------------------------------------------------------------------------------<br>| <a href="/fhem?detail=HM_4D106F">HM_4D106F              </a> | <b style="color:lightgray">HM-ES-TX-WM            </b> | <b style="color:lightgray">   1.0</b> | <a title="eq3-firmware.tgz" href="http://www.eq-3.de/downloads/software/firmware/hm-es-tx-wm_update_v1_2_160628.tgz"><b style="color:red">   1.2</b></a> | 28.06.2016 |<br>| <a href="/fhem?detail=Innen">Innen                  </a> | <b style="color:lightgray">HM-TC-IT-WM-W-EU       </b> | <b style="color:lightgray">   1.1</b> | <a title="eq3-firmware.tgz" href="http://www.eq-3.de/downloads/software/firmware/hm_tc_it_wm_w_eu_update_v1_3_002_150827.tgz"><b style="color:red"> 1.3.2</b></a> | 27.08.2015 |<br>| <a href="/fhem?detail=Innen2">Innen2                 </a> | <b style="color:lightgray">HM-TC-IT-WM-W-EU       </b> | <b style="color:lightgray">   1.2</b> | <a title="eq3-firmware.tgz" href="http://www.eq-3.de/downloads/software/firmware/hm_tc_it_wm_w_eu_update_v1_3_002_150827.tgz"><b style="color:red"> 1.3.2</b></a> | 27.08.2015 |<br>| <a href="/fhem?detail=Innen3">Innen3                 </a> | <b style="color:lightgray">HM-TC-IT-WM-W-EU       </b> | <b style="color:lightgray">   1.2</b> | <a title="eq3-firmware.tgz" href="http://www.eq-3.de/downloads/software/firmware/hm_tc_it_wm_w_eu_update_v1_3_002_150827.tgz"><b style="color:red"> 1.3.2</b></a> | 27.08.2015 |<br>| <a href="/fhem?detail=Innen4">Innen4                 </a> | <b style="color:lightgray">HM-TC-IT-WM-W-EU       </b> | <b style="color:lightgray">   1.1</b> | <a title="eq3-firmware.tgz" href="http://www.eq-3.de/downloads/software/firmware/hm_tc_it_wm_w_eu_update_v1_3_002_150827.tgz"><b style="color:red"> 1.3.2</b></a> | 27.08.2015 |<br>| <a href="/fhem?detail=Innen5">Innen5                 </a> | <b style="color:lightgray">HM-TC-IT-WM-W-EU       </b> | <b style="color:lightgray">   1.2</b> | <a title="eq3-firmware.tgz" href="http://www.eq-3.de/downloads/software/firmware/hm_tc_it_wm_w_eu_update_v1_3_002_150827.tgz"><b style="color:red"> 1.3.2</b></a> | 27.08.2015 |<br></pre></div>
   TRIGGERTIME 1568112371.91473
   TRIGGERTIME_FMT 2019-09-10 12:46:11
   TYPE       HTTPMOD
   addr       https://www.eq-3.de:443
   auth       0
   code       200
   compress   1
   conn       
   data       suchbegriff=&quelle=29&suchkategorie=3&themenbereich=1
   displayurl https://www.eq-3.de/ajax/downloads/downloads_eq3.php
   header     
   host       www.eq-3.de
   httpheader HTTP/1.1 200 OK
Date: Tue, 03 Sep 2019 17:17:01 GMT
Server: Apache/2.4.6 (Red Hat Enterprise Linux) OpenSSL/1.0.2k-fips mod_fcgid/2.3.9
X-Powered-By: PHP/7.1.15
Strict-Transport-Security: max-age=15768000
Connection: close
Content-Type: text/html; charset=UTF-8
   httpversion 1.0
   hu_blocking 0
   hu_filecount 15
   hu_port    443
   hu_portSfx
   ignoreredirects 0
   loglevel   4
   path       /ajax/downloads/downloads_eq3.php
   protocol   https
   redirects  0
   timeout    2
   url        https://www.eq-3.de/ajax/downloads/downloads_eq3.php
   value      0
   QUEUE:
   READINGS:
     2019-09-03 19:17:02   LAST_REQUEST    update
     2019-09-03 19:17:02   MATCHED_READINGS fw_link-01 fw_link-02 fw_link-03 fw_link-04 fw_link-05 fw_link-06 fw_link-07 fw_link-08 fw_link-09 fw_link-10 fw_link-11 fw_link-12 fw_link-13 fw_link-14 fw_link-15 fw_link-16 fw_link-17 fw_link-18 fw_link-19 fw_link-20
     2019-09-03 19:17:02   UNMATCHED_READINGS
     2019-09-03 19:17:02   fw_link-01      http://www.eq-3.de/downloads/software/firmware/HM-ES-TX-WM_update_V2_2_190619_1.tgz
     2019-09-03 19:17:02   fw_link-02      http://www.eq-3.de/downloads/software/firmware/hm-mod-re-8_update_v1_2_150911.tgz
     2019-09-03 19:17:02   fw_link-03      http://www.eq-3.de/downloads/software/firmware/hm-lc-bl1pbu-fm_update_v2_11_1_161212.tgz
     2019-09-03 19:17:02   fw_link-04      http://www.eq-3.de/downloads/software/firmware/hm_dis_ep_wm55_update_v1_2_170129.tgz
     2019-09-03 19:17:02   fw_link-05      http://www.eq-3.de/downloads/software/firmware/hm-es-pmsw1-pl-dn-r1_update_v2_5_0009_150217.tgz
     2019-09-03 19:17:02   fw_link-06      http://www.eq-3.de/downloads/software/firmware/hm-sen-mdir-wm55_update_v1_2_0_160825.tgz
     2019-09-03 19:17:02   fw_link-07      http://www.eq-3.de/downloads/software/firmware/hm-es-tx-wm_update_v1_2_160628.tgz
     2019-09-03 19:17:02   fw_link-08      http://www.eq-3.de/downloads/software/firmware/hm-ou-cfm-tw_update_v1_3_160620.tgz
     2019-09-03 19:17:02   fw_link-09      http://www.eq-3.de/downloads/software/firmware/hm-lc-dim1pwm-cv_update_v2_9_0005_150730.tar.gz
     2019-09-03 19:17:02   fw_link-10      http://www.eq-3.de/downloads/software/firmware/hm-lc-dim1tpbu-fm_update_v2_9_0005_150730.tar.gz
     2019-09-03 19:17:02   fw_link-11      http://www.eq-3.de/downloads/software/firmware/hm-lc-dim1l-pl-3_update_v2_9_0007_150803.tar.gz
     2019-09-03 19:17:02   fw_link-12      http://www.eq-3.de/downloads/software/firmware/hm-lc-dim1t-pl-3_update_v2_9_0005_150730.tar.gz
     2019-09-03 19:17:02   fw_link-13      http://www.eq-3.de/downloads/software/firmware/hm-mod-re-8_update_v1_2_150911.tgz
     2019-09-03 19:17:02   fw_link-14      http://www.eq-3.de/downloads/software/firmware/hm_tc_it_wm_w_eu_update_v1_3_002_150827.tgz
     2019-09-03 19:17:02   fw_link-15      http://www.eq-3.de/downloads/software/firmware/hm-lc-sw1pbu-fm_update_v2_8_2_150713.tgz
     2019-09-03 19:17:02   fw_link-16      http://www.eq-3.de/downloads/software/firmware/hm-sen-mdir-wm55_update_v1_1_2_150413.tgz
     2019-09-03 19:17:02   fw_link-17      http://www.eq-3.de/downloads/software/firmware/hm-es-pmsw1-pl_update_v2_5_0009_150217.tgz
     2019-09-03 19:17:02   fw_link-18      http://www.eq-3.de/downloads/software/firmware/hm_cc_rt_dn_update_v1_4_001_141020.tgz
     2019-09-03 19:17:02   fw_link-19      http://www.eq-3.de/downloads/software/firmware/hm-sen-rd-o_update_v1_4_003_130930.tgz
     2019-09-03 19:17:02   fw_link-20      http://www.eq-3.de/downloads/software/firmware/hm-lc-bl1pbu-fm_update_v2_3_0002_131204.tgz
     2019-09-03 19:17:02   newFwForDevices HM_4D106F (HM-ES-TX-WM | fw_1.0 => fw07_1.2 | 28.06.2016),Innen (HM-TC-IT-WM-W-EU | fw_1.1 => fw14_1.3.2 | 27.08.2015),Innen2 (HM-TC-IT-WM-W-EU | fw_1.2 => fw14_1.3.2 | 27.08.2015),Innen3 (HM-TC-IT-WM-W-EU | fw_1.2 => fw14_1.3.2 | 27.08.2015),Innen4 (HM-TC-IT-WM-W-EU | fw_1.1 => fw14_1.3.2 | 27.08.2015),Innen5 (HM-TC-IT-WM-W-EU | fw_1.2 => fw14_1.3.2 | 27.08.2015)
   REQUEST:
     data       suchbegriff=&quelle=29&suchkategorie=3&themenbereich=1
     header     
     ignoreredirects 0
     retryCount 0
     type       update
     url        https://www.eq-3.de/ajax/downloads/downloads_eq3.php
     value      0
   defptr:
     readingBase:
       fw_link-01 reading
       fw_link-02 reading
       fw_link-03 reading
       fw_link-04 reading
       fw_link-05 reading
       fw_link-06 reading
       fw_link-07 reading
       fw_link-08 reading
       fw_link-09 reading
       fw_link-10 reading
       fw_link-11 reading
       fw_link-12 reading
       fw_link-13 reading
       fw_link-14 reading
       fw_link-15 reading
       fw_link-16 reading
       fw_link-17 reading
       fw_link-18 reading
       fw_link-19 reading
       fw_link-20 reading
     readingNum:
       fw_link-01 01
       fw_link-02 01
       fw_link-03 01
       fw_link-04 01
       fw_link-05 01
       fw_link-06 01
       fw_link-07 01
       fw_link-08 01
       fw_link-09 01
       fw_link-10 01
       fw_link-11 01
       fw_link-12 01
       fw_link-13 01
       fw_link-14 01
       fw_link-15 01
       fw_link-16 01
       fw_link-17 01
       fw_link-18 01
       fw_link-19 01
       fw_link-20 01
     readingOutdated:
     readingSubNum:
       fw_link-01 -1
       fw_link-02 -2
       fw_link-03 -3
       fw_link-04 -4
       fw_link-05 -5
       fw_link-06 -6
       fw_link-07 -7
       fw_link-08 -8
       fw_link-09 -9
       fw_link-10 -10
       fw_link-11 -11
       fw_link-12 -12
       fw_link-13 -13
       fw_link-14 -14
       fw_link-15 -15
       fw_link-16 -16
       fw_link-17 -17
       fw_link-18 -18
       fw_link-19 -19
       fw_link-20 -20
     requestReadings:
       update:
         fw_link-01 reading 01-1
         fw_link-02 reading 01-2
         fw_link-03 reading 01-3
         fw_link-04 reading 01-4
         fw_link-05 reading 01-5
         fw_link-06 reading 01-6
         fw_link-07 reading 01-7
         fw_link-08 reading 01-8
         fw_link-09 reading 01-9
         fw_link-10 reading 01-10
         fw_link-11 reading 01-11
         fw_link-12 reading 01-12
         fw_link-13 reading 01-13
         fw_link-14 reading 01-14
         fw_link-15 reading 01-15
         fw_link-16 reading 01-16
         fw_link-17 reading 01-17
         fw_link-18 reading 01-18
         fw_link-19 reading 01-19
         fw_link-20 reading 01-20
   sslargs:
Attributes:
   enableControlSet 1
   event-on-change-reading .*
   event-on-update-reading LAST_ERROR,MATCHED_READINGS
   reading01AutoNumLen 2
   reading01Format http://www.eq-3.de%s
   reading01Name fw_link
   reading01RegOpt gi
   reading01Regex <a.href="(\/downloads\/software\/firmware\/[hH][mM][^"]+)
   readingMaxAge 10
   readingMaxAgeReplacementMode delete
   requestData.* suchbegriff=&quelle=29&suchkategorie=3&themenbereich=1
   room       eq3
   showError  1
   showMatched 1
   stateFormat {eq3StateFormat}
   userReadings newFwForDevices:MATCHED_READINGS:.* {
  my $ret = "";
  my @data;
  my @eq3FwList = map{@data = ReadingsVal("eq3","fw_link-".$_,"?") =~ m/firmware\/(.*?)_update_v([\d_]+)_(\d\d)(\d\d)(\d\d)/;
            $data[0] =~ s/_/-/g;
            sprintf("%s:%s:%s.%s.%s:%s",$data[0],$data[1],$data[4],$data[3],"20".$data[2],$_);
            } ReadingsVal("eq3","MATCHED_READINGS","?") =~ m/fw_link-(\d\d)/g;
           
  foreach my $dev (devspec2array("TYPE=CUL_HM:FILTER=DEF=......:FILTER=subType!=(virtual|)")) {
    my $md = AttrVal($dev,"model","?");
    my $v = AttrVal($dev,"firmware","0.0");
    my ($h,$l) = split('\.',$v);
    foreach my $newFw (grep m/^${md}:/i,@eq3FwList) {
      my ($nh,$nl,$no,$date,$idx) = $newFw =~ m/^[^:]+:(\d+)_(\d+)_?(\d*):([^:]+):(\d\d)$/;
      if(($nh > $h) || (($nh == $h) && ($nl > $l))) {
        $ret .= "," if($ret ne "");
        $ret .= $dev." (".$md." | fw_".$v." => fw".$idx."_".$nh.".".$nl.($no?sprintf(".%d",$no):"")." | ".$date.")";
      }
    }
  }
  return ($ret eq "")?"no fw-updates needed!":$ret;
}
   userattr   enableControlSet event-on-change-reading event-on-update-reading reading01AutoNumLen reading01Format reading01Name reading01RegOpt reading01RegOpt:s,i,g reading01Regex readingMaxAge readingMaxAgeReplacementMode readingMaxAgeReplacementMode:text,expression,delete readingMaxAgeReplacementMode:text,reading,internal,expression,delete requestData.* showError showMatched stateFormat userReadings webCmd
   webCmd     reread

großes V
Internals:
   BUSY       0
   DEF        https://www.eq-3.de/ajax/downloads/downloads_eq3.php 604800
   FUUID      5d6e28a3-f33f-092f-d33a-bf75520d17d0bad3
   Interval   604800
   LASTSEND   1567531135.17392
   MainURL    https://www.eq-3.de/ajax/downloads/downloads_eq3.php
   MaxAgeEnabled 1
   ModuleVersion 3.5.9 - 13.2.2019
   NAME       eq3
   NOTIFYDEV  global
   NR         482
   NTFY_ORDER 50-eq3
   STATE      <div style="text-align:left">last <a title="eq3-downloads" href="http://www.eq-3.de/service/downloads.html">homematic</a>-fw-check => 2019-09-03 19:18:55<br><br><pre>| device                  | model                   | old_fw | new_fw | release    |<br>------------------------------------------------------------------------------------<br>| <a href="/fhem?detail=HM_4D106F">HM_4D106F              </a> | <b style="color:lightgray">HM-ES-TX-WM            </b> | <b style="color:lightgray">   1.0</b> | <a title="eq3-firmware.tgz" href="http://www.eq-3.de/downloads/software/firmware/HM-ES-TX-WM_update_V2_2_190619_1.tgz"><b style="color:red">   2.2</b></a> | 19.06.2019 |<br></pre></div>
   TRIGGERTIME 1568112371.91473
   TRIGGERTIME_FMT 2019-09-10 12:46:11
   TYPE       HTTPMOD
   addr       https://www.eq-3.de:443
   auth       0
   code       200
   compress   1
   conn       
   data       suchbegriff=&quelle=29&suchkategorie=3&themenbereich=1
   displayurl https://www.eq-3.de/ajax/downloads/downloads_eq3.php
   header     
   host       www.eq-3.de
   httpheader HTTP/1.1 200 OK
Date: Tue, 03 Sep 2019 17:18:55 GMT
Server: Apache/2.4.6 (Red Hat Enterprise Linux) OpenSSL/1.0.2k-fips mod_fcgid/2.3.9
X-Powered-By: PHP/7.1.15
Strict-Transport-Security: max-age=15768000
Connection: close
Content-Type: text/html; charset=UTF-8
   httpversion 1.0
   hu_blocking 0
   hu_filecount 16
   hu_port    443
   hu_portSfx
   ignoreredirects 0
   loglevel   4
   path       /ajax/downloads/downloads_eq3.php
   protocol   https
   redirects  0
   timeout    2
   url        https://www.eq-3.de/ajax/downloads/downloads_eq3.php
   value      0
   QUEUE:
   READINGS:
     2019-09-03 19:18:55   LAST_REQUEST    update
     2019-09-03 19:18:55   MATCHED_READINGS fw_link-01 fw_link-02 fw_link-03 fw_link-04 fw_link-05 fw_link-06 fw_link-07 fw_link-08 fw_link-09 fw_link-10 fw_link-11 fw_link-12 fw_link-13 fw_link-14 fw_link-15 fw_link-16 fw_link-17 fw_link-18 fw_link-19 fw_link-20
     2019-09-03 19:18:55   UNMATCHED_READINGS
     2019-09-03 19:18:55   fw_link-01      http://www.eq-3.de/downloads/software/firmware/HM-ES-TX-WM_update_V2_2_190619_1.tgz
     2019-09-03 19:18:55   fw_link-02      http://www.eq-3.de/downloads/software/firmware/hm-mod-re-8_update_v1_2_150911.tgz
     2019-09-03 19:18:55   fw_link-03      http://www.eq-3.de/downloads/software/firmware/hm-lc-bl1pbu-fm_update_v2_11_1_161212.tgz
     2019-09-03 19:18:55   fw_link-04      http://www.eq-3.de/downloads/software/firmware/hm_dis_ep_wm55_update_v1_2_170129.tgz
     2019-09-03 19:18:55   fw_link-05      http://www.eq-3.de/downloads/software/firmware/hm-es-pmsw1-pl-dn-r1_update_v2_5_0009_150217.tgz
     2019-09-03 19:18:55   fw_link-06      http://www.eq-3.de/downloads/software/firmware/hm-sen-mdir-wm55_update_v1_2_0_160825.tgz
     2019-09-03 19:18:55   fw_link-07      http://www.eq-3.de/downloads/software/firmware/hm-es-tx-wm_update_v1_2_160628.tgz
     2019-09-03 19:18:55   fw_link-08      http://www.eq-3.de/downloads/software/firmware/hm-ou-cfm-tw_update_v1_3_160620.tgz
     2019-09-03 19:18:55   fw_link-09      http://www.eq-3.de/downloads/software/firmware/hm-lc-dim1pwm-cv_update_v2_9_0005_150730.tar.gz
     2019-09-03 19:18:55   fw_link-10      http://www.eq-3.de/downloads/software/firmware/hm-lc-dim1tpbu-fm_update_v2_9_0005_150730.tar.gz
     2019-09-03 19:18:55   fw_link-11      http://www.eq-3.de/downloads/software/firmware/hm-lc-dim1l-pl-3_update_v2_9_0007_150803.tar.gz
     2019-09-03 19:18:55   fw_link-12      http://www.eq-3.de/downloads/software/firmware/hm-lc-dim1t-pl-3_update_v2_9_0005_150730.tar.gz
     2019-09-03 19:18:55   fw_link-13      http://www.eq-3.de/downloads/software/firmware/hm-mod-re-8_update_v1_2_150911.tgz
     2019-09-03 19:18:55   fw_link-14      http://www.eq-3.de/downloads/software/firmware/hm_tc_it_wm_w_eu_update_v1_3_002_150827.tgz
     2019-09-03 19:18:55   fw_link-15      http://www.eq-3.de/downloads/software/firmware/hm-lc-sw1pbu-fm_update_v2_8_2_150713.tgz
     2019-09-03 19:18:55   fw_link-16      http://www.eq-3.de/downloads/software/firmware/hm-sen-mdir-wm55_update_v1_1_2_150413.tgz
     2019-09-03 19:18:55   fw_link-17      http://www.eq-3.de/downloads/software/firmware/hm-es-pmsw1-pl_update_v2_5_0009_150217.tgz
     2019-09-03 19:18:55   fw_link-18      http://www.eq-3.de/downloads/software/firmware/hm_cc_rt_dn_update_v1_4_001_141020.tgz
     2019-09-03 19:18:55   fw_link-19      http://www.eq-3.de/downloads/software/firmware/hm-sen-rd-o_update_v1_4_003_130930.tgz
     2019-09-03 19:18:55   fw_link-20      http://www.eq-3.de/downloads/software/firmware/hm-lc-bl1pbu-fm_update_v2_3_0002_131204.tgz
     2019-09-03 19:18:55   newFwForDevices HM_4D106F (HM-ES-TX-WM | fw_1.0 => fw01_2.2 | 19.06.2019)
   REQUEST:
     data       suchbegriff=&quelle=29&suchkategorie=3&themenbereich=1
     header     
     ignoreredirects 0
     retryCount 0
     type       update
     url        https://www.eq-3.de/ajax/downloads/downloads_eq3.php
     value      0
   defptr:
     readingBase:
       fw_link-01 reading
       fw_link-02 reading
       fw_link-03 reading
       fw_link-04 reading
       fw_link-05 reading
       fw_link-06 reading
       fw_link-07 reading
       fw_link-08 reading
       fw_link-09 reading
       fw_link-10 reading
       fw_link-11 reading
       fw_link-12 reading
       fw_link-13 reading
       fw_link-14 reading
       fw_link-15 reading
       fw_link-16 reading
       fw_link-17 reading
       fw_link-18 reading
       fw_link-19 reading
       fw_link-20 reading
     readingNum:
       fw_link-01 01
       fw_link-02 01
       fw_link-03 01
       fw_link-04 01
       fw_link-05 01
       fw_link-06 01
       fw_link-07 01
       fw_link-08 01
       fw_link-09 01
       fw_link-10 01
       fw_link-11 01
       fw_link-12 01
       fw_link-13 01
       fw_link-14 01
       fw_link-15 01
       fw_link-16 01
       fw_link-17 01
       fw_link-18 01
       fw_link-19 01
       fw_link-20 01
     readingOutdated:
     readingSubNum:
       fw_link-01 -1
       fw_link-02 -2
       fw_link-03 -3
       fw_link-04 -4
       fw_link-05 -5
       fw_link-06 -6
       fw_link-07 -7
       fw_link-08 -8
       fw_link-09 -9
       fw_link-10 -10
       fw_link-11 -11
       fw_link-12 -12
       fw_link-13 -13
       fw_link-14 -14
       fw_link-15 -15
       fw_link-16 -16
       fw_link-17 -17
       fw_link-18 -18
       fw_link-19 -19
       fw_link-20 -20
     requestReadings:
       update:
         fw_link-01 reading 01-1
         fw_link-02 reading 01-2
         fw_link-03 reading 01-3
         fw_link-04 reading 01-4
         fw_link-05 reading 01-5
         fw_link-06 reading 01-6
         fw_link-07 reading 01-7
         fw_link-08 reading 01-8
         fw_link-09 reading 01-9
         fw_link-10 reading 01-10
         fw_link-11 reading 01-11
         fw_link-12 reading 01-12
         fw_link-13 reading 01-13
         fw_link-14 reading 01-14
         fw_link-15 reading 01-15
         fw_link-16 reading 01-16
         fw_link-17 reading 01-17
         fw_link-18 reading 01-18
         fw_link-19 reading 01-19
         fw_link-20 reading 01-20
   sslargs:
Attributes:
   enableControlSet 1
   event-on-change-reading .*
   event-on-update-reading LAST_ERROR,MATCHED_READINGS
   reading01AutoNumLen 2
   reading01Format http://www.eq-3.de%s
   reading01Name fw_link
   reading01RegOpt gi
   reading01Regex <a.href="(\/downloads\/software\/firmware\/[hH][mM][^"]+)
   readingMaxAge 10
   readingMaxAgeReplacementMode delete
   requestData.* suchbegriff=&quelle=29&suchkategorie=3&themenbereich=1
   room       eq3
   showError  1
   showMatched 1
   stateFormat {eq3StateFormat}
   userReadings newFwForDevices:MATCHED_READINGS:.* {
  my $ret = "";
  my @data;
  my @eq3FwList = map{@data = ReadingsVal("eq3","fw_link-".$_,"?") =~ m/firmware\/(.*?)_update_V([\d_]+)_(\d\d)(\d\d)(\d\d)/;
            $data[0] =~ s/_/-/g;
            sprintf("%s:%s:%s.%s.%s:%s",$data[0],$data[1],$data[4],$data[3],"20".$data[2],$_);
            } ReadingsVal("eq3","MATCHED_READINGS","?") =~ m/fw_link-(\d\d)/g;
           
  foreach my $dev (devspec2array("TYPE=CUL_HM:FILTER=DEF=......:FILTER=subType!=(virtual|)")) {
    my $md = AttrVal($dev,"model","?");
    my $v = AttrVal($dev,"firmware","0.0");
    my ($h,$l) = split('\.',$v);
    foreach my $newFw (grep m/^${md}:/i,@eq3FwList) {
      my ($nh,$nl,$no,$date,$idx) = $newFw =~ m/^[^:]+:(\d+)_(\d+)_?(\d*):([^:]+):(\d\d)$/;
      if(($nh > $h) || (($nh == $h) && ($nl > $l))) {
        $ret .= "," if($ret ne "");
        $ret .= $dev." (".$md." | fw_".$v." => fw".$idx."_".$nh.".".$nl.($no?sprintf(".%d",$no):"")." | ".$date.")";
      }
    }
  }
  return ($ret eq "")?"no fw-updates needed!":$ret;
}
   userattr   enableControlSet event-on-change-reading event-on-update-reading reading01AutoNumLen reading01Format reading01Name reading01RegOpt reading01RegOpt:s,i,g reading01Regex readingMaxAge readingMaxAgeReplacementMode readingMaxAgeReplacementMode:text,expression,delete readingMaxAgeReplacementMode:text,reading,internal,expression,delete requestData.* showError showMatched stateFormat userReadings webCmd
   webCmd     reread


hth Nobby
FHEM-Featurelevel: 6.2   (fhem.pl:28227/2023-11-29) auf Windows 10 Pro mit Strawberry Perl 5.32.1.1-32bit
TabletUI: 2.7.15
IO: 2xHMLAN(0.965)|HMUSB2(0.967)

Otto123

und mit dieser Zeile ?  my @eq3FwList = map{@data = ReadingsVal("eq3","fw_link-".$_,"?") =~ m/firmware\/(.*?)_update_v([\d_]+)_(\d\d)(\d\d)(\d\d)/i;
statt Deiner in beiden Fällen ohne /i ?
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

Otto123

Zitat von: ms_steini am 03 September 2019, 19:14:09
@Otto123,

das ist, wenn du ein Device anlegst und mit dessen namen schon ein SVG existiert, bekommt das Device automatisch ein devStateIcon zugewiesen, allerdings ohne das attr devStateIcon zu verwenden.

erstell mal ein Dummy, "define hc_wht_regler dummy" der bekommt automatisch als icon das hc_wht_regler.svg zugewiesen
Oh da hat der Groschen bei mir jetzt lange gebraucht. Du redest vom Icon!  :o
Ich war bei SVG auf dem Plot Trip!

Ok dann ist das ne andere Schiene auf der man suchen muss. Dann wird also der Code für Stateformat irgendwie mit dem Icon gemischt? Ich habe keine Idee wo man da suchen sollte ....
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

Nobby1805

Zitat von: Otto123 am 03 September 2019, 19:30:47
und mit dieser Zeile ?  my @eq3FwList = map{@data = ReadingsVal("eq3","fw_link-".$_,"?") =~ m/firmware\/(.*?)_update_v([\d_]+)_(\d\d)(\d\d)(\d\d)/i;
statt Deiner in beiden Fällen ohne /i ?
dann klappt es  :)
FHEM-Featurelevel: 6.2   (fhem.pl:28227/2023-11-29) auf Windows 10 Pro mit Strawberry Perl 5.32.1.1-32bit
TabletUI: 2.7.15
IO: 2xHMLAN(0.965)|HMUSB2(0.967)

Beta-User

Zitat von: Otto123 am 03 September 2019, 19:39:38
Ok dann ist das ne andere Schiene auf der man suchen muss. Dann wird also der Code für Stateformat irgendwie mit dem Icon gemischt? Ich habe keine Idee wo man da suchen sollte ....
Meine Vermutung dazu: Das kommt aus FHEMWEB, genauer gesagt aus der Multiline-Variante der devStateIcon-Auswertung von STATE. Da scheint es eine Prio für Icons zu geben, also jede Zeile (?), die genau den Text enthält wie ein Iconname, wird umgewandelt. Da hier das SVG vorhanden ist, aber die HTML-Auswertung per <pre>(?)-Tag untersagt, kommt hier eben der Text... Nur dürfte der Anzeigebereich zu klein sein, um alles unterzubringen ;) .

Kurzum: wir sollten dem user mehr Gestaltungsmöglichkeiten bei der Namenswahl geben ;) .
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: MiLight@ESP-GW, BT@OpenMQTTGw | MySensors: seriell, v.a. 2.3.1@RS485 | ZWave | ZigBee@deCONZ | SIGNALduino | MapleCUN | RHASSPY
svn: u.a MySensors, Weekday-&RandomTimer, Twilight,  div. attrTemplate-files

gloob

Zitat von: Beta-User am 03 September 2019, 17:46:13
Mei, hier ist echt was los... Jetzt wollte ich das jedenfalls auch mal wissen (nachdem ich eigentlich angenommen hatte, dass sowieso alles aktuell ist, war ich überrascht, dass v.a. meine ganzen Rollladenaktoren NICHT auf der 2.11.1 zu sein scheinen ??? ...)

Wie dem auch sei, mit folgendem RAW-Code (ohne myUtils-Code) bekomme ich eine Ausgabe und hoffe, allen input einigermaßen (evtl. bis auf das vV-Thema, das eigentlich mit dem "i" erledigt sein sollte) verarbeitet zu haben:
defmod eq3 HTTPMOD https://www.eq-3.de/ajax/downloads/downloads_eq3.php 604800
attr eq3 userattr enableControlSet event-on-change-reading event-on-update-reading reading01AutoNumLen reading01Format reading01Name reading01RegOpt reading01RegOpt:s,i,g reading01Regex readingMaxAge readingMaxAgeReplacementMode readingMaxAgeReplacementMode:text,expression,delete readingMaxAgeReplacementMode:text,reading,internal,expression,delete requestData.* showError showMatched stateFormat userReadings webCmd
attr eq3 enableControlSet 1
attr eq3 event-on-change-reading .*
attr eq3 event-on-update-reading LAST_ERROR,MATCHED_READINGS
attr eq3 httpVersion 1.1
attr eq3 reading01AutoNumLen 2
attr eq3 reading01Format http://www.eq-3.de%s
attr eq3 reading01Name fw_link
attr eq3 reading01RegOpt gi
attr eq3 reading01Regex <a.href="(\/downloads\/software\/firmware\/[hH][mM][^"]+)
attr eq3 readingMaxAge 10
attr eq3 readingMaxAgeReplacementMode delete
attr eq3 requestData.* suchbegriff=&quelle=29&suchkategorie=3&themenbereich=1
attr eq3 room Steuerung->Z_CUL_HM_intern
attr eq3 showError 1
attr eq3 showMatched 1
attr eq3 stateFormat {    my $ret ="";;     \
    my $lastCheck = ReadingsTimestamp($name,"MATCHED_READINGS","");;     \
    $ret .= '<div style="text-align:left">last <a title="eq3-downloads" href="http://www.eq-3.de/service/downloads.html">homematic</a>-fw-check => '.$lastCheck;;     \
    $ret .= '<br><br><pre>';;     \
    $ret .= "| device                  | model                   | cur_fw | new_fw | release    |<br>";;     \
    $ret .= "------------------------------------------------------------------------------------<br>";;     \
    my $check = ReadingsVal($name,"newFwForDevices","error => no or wrong data from eq3-server!");;     \
    if($check eq "no fw-updates needed!") {\
        $ret .= '| ';;\
        $ret .= '<b style="color:green">';;\
        $ret .= sprintf("%-80s",$check);;\
        $ret .= '</b>';;\
        $ret .= ' |';;\
    } elsif($check eq "error => no or wrong data from eq3-server!") {\
        $ret .= '| <b style="color:red">';;\
        $ret .= sprintf("%-80s",$check);;\
        $ret .= '</b> |';;\
    } else {         \
        my @devices = split(',',$check);;         \
        foreach my $devStr (@devices) {             \
            my ($dev,$md,$ofw,$idx,$nfw,$date) = $devStr =~ m/^([^\s]+)\s\(([^\s]+)\s\|\sfw_(\d+\.\d+)\s=>\sfw(\d\d)_([\d\.]+)\s\|\s([^\)]+)\)$/;;             \
            my $link = ReadingsVal($name,"fw_link-".$idx,"");;             \
            $ret .= '| <a href="/fhem?detail='.$dev.'">';;              \
            $ret .= sprintf("%-23s",$dev);;             \
            $ret .= '</a> | <b';;              \
            $ret .= (($md eq "?")?' title="missing attribute model => set device in teach mode to receive missing data" style="color:yellow"':' style="color:lightgray"').'>';;              \
            $ret .= sprintf("%-23s",$md);;             \
            $ret .= '</b> | <b'.(($ofw eq "0.0")?' title="missing attribute firmware => set device in teach mode to receive missing data" style="color:yellow"':' style="color:lightgray"').'>';;              \
            $ret .= sprintf("%6s",$ofw);;             \
            $ret .= '</b> | <a title="eq3-firmware.tgz" href="'.$link.'"><b style="color:red">';;              \
            $ret .= sprintf("%6s",$nfw);;             \
            $ret .= '</b></a> | ';;              \
            $ret .= sprintf("%-10s",$date);;             \
            $ret .= " |<br>";;          \
        }     \
    }     \
    $ret .= '</pre></div>';;     \
    return $ret;;\
}
attr eq3 userReadings newFwForDevices:MATCHED_READINGS.* {\
    my $ret = "";;\
    my @data;;\
    if (ReadingsVal($name,"UNMATCHED_READINGS","?") eq "") {\
        my @eq3FwList = map{@data = ReadingsVal($name,"fw_link-".$_,"?") =~ m/firmware\/(.*?)_update_[vV]([\d_]+)_(\d\d)(\d\d)(\d\d)/;;\
                            $data[0] =~ s/_/-/g;;\
                            sprintf("%s:%s:%s.%s.%s:%s",$data[0],$data[1],$data[4],$data[3],"20".$data[2],$_);;\
                            } ReadingsVal($name,"MATCHED_READINGS","?") =~ m/fw_link-(\d\d)/g;;\
\
        foreach my $dev (devspec2array("TYPE=CUL_HM:FILTER=DEF=......:FILTER=subType!=(virtual|)")) {\
            my $md = AttrVal($dev,"model","?");;\
            my $v = AttrVal($dev,"firmware","0.0");;\
            my ($h,$l) = split('\.',$v);;\
            foreach my $newFw (grep m/^${md}:/i,@eq3FwList) {\
                my ($nh,$nl,$no,$date,$idx) = $newFw =~ m/^[^:]+:(\d+)_(\d+)_?(\d*)[^:]+)\d\d)$/;;\
                if(($nh > $h) || (($nh == $h) && ($nl > $l))) {\
                    $ret .= "," if($ret ne "");;\
                    $ret .= $dev." (".$md." | fw_".$v." => fw".$idx."_".$nh.".".$nl.($no?sprintf(".%d",$no):"")." | ".$date.")";;\
                }\
            }\
        }\
    } else {\
        $ret = "error => no or wrong data from eq3-server!";;\
    }\
    return ($ret eq "")?"no fw-updates needed!":$ret;;\
}
attr eq3 webCmd reread



Leider wirft das HTTPMOD bei mir nur einen Fehlen:


setstate eq3 2019-09-04 15:15:16 newFwForDevices Error evaluating eq3 userReading newFwForDevices: Unmatched ) in regex;; marked by <-- HERE in m/^[^:]+:(\d+)_(\d+)_?(\d*)[^:]+) <-- HERE \d\d)$/ at (eval 2359436) line 15.\
Raspberry Pi 3 | miniCUL 433MHz | nanoCUL 868 MHz | nanoCUL 433 MHz | MySensors WLAN Gateway | LaCrosse WLAN Gateway | SignalESP 433 MHz | SignalESP 868 MHz | HM-MOD-UART WLAN Gateway | IR - 360 Grad WLAN Gateway

Beta-User

Zitat von: gloob am 04 September 2019, 15:20:50
Leider wirft das HTTPMOD bei mir nur einen Fehlen:


setstate eq3 2019-09-04 15:15:16 newFwForDevices Error evaluating eq3 userReading newFwForDevices: Unmatched ) in regex;; marked by <-- HERE in m/^[^:]+:(\d+)_(\d+)_?(\d*)[^:]+) <-- HERE \d\d)$/ at (eval 2359436) line 15.\

??? :o :(
Verflixte Axt, da hatte ich an dem bestehenden HTTPMOD rumgebastelt, den Code auf "Device only" umgestellt und nicht gemerkt, dass es danach nicht mehr funktionierte (sah' auf den ersten Blick ok aus)... Was ein Mist. (Vielleicht kann mir das irgendwann mal jemand erklären, warum das mit derselben Regex in myUtils funktioniert, aber nicht, wenn man denselben Code direkt in die Konfiguration packt?!?). Na jedenfalls habe ich derzeit keine Idee, wie man das direkt funktional bekäme :'( .

Wenn man sowieso myUtils-Code braucht, sollte man dennoch besser zum einen $name übergeben (in dem stateFormat-Aufruf) und zum anderen dann auch den anderen Teil auslagern; die aktuelle Mischform ist - na ja - unschön.

Den 2. HTTPMOD mit den beiden myUtils-Funktionen stand am Ende der gestrigen Mühen, und den habe ich übrigens derzeit auch im Einsatz, _der_ funktioniert  ::) ...

Btw.: es wäre eigentlich noch schicker, wenn da statt des href-links ein system-wget-Aufruf stünde, der einem die eq3-Datei  gleich ausgepackt mit den richtigen Rechten in den firmware-Ordner packt. Ist mir aber im Moment zu hoch, vielleicht hat jemand eine Idee...?
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: MiLight@ESP-GW, BT@OpenMQTTGw | MySensors: seriell, v.a. 2.3.1@RS485 | ZWave | ZigBee@deCONZ | SIGNALduino | MapleCUN | RHASSPY
svn: u.a MySensors, Weekday-&RandomTimer, Twilight,  div. attrTemplate-files