FHEM Forum

FHEM - Hausautomations-Systeme => Homematic => Thema gestartet von: slor am 25 Oktober 2017, 23:34:14

Titel: eq3 firmware check funkioniert nicht mehr
Beitrag von: slor am 25 Oktober 2017, 23:34:14
Hallo zusammen,

irgendwie zeigt der Firmwarecheck nichts mehr an. (siehe angehänger screenshot)
Hab dem mit dem Wiki abgeglichen und sieht gleich aus. Es werden auch Readings aktualisiert.

Hier ein List des Geräts.  Ohne den riesen HTML Block. Der hat nicht in den Beitrag gepasst.

Internals:
   BUSY       0
   DEF        http://www.eq-3.de/service/downloads.html 86400
   Interval   86400
   LASTSEND   1508965913.82958
   MainURL    http://www.eq-3.de/service/downloads.html
   MaxAgeEnabled 1
   ModuleVersion 3.4.0 - 9.9.2017
   NAME       HM_Firmwarecheck
   NR         398
   STATE      <div style="text-align:left">last <a title="eq3-downloads" href="http://www.eq-3.de/downloads.html">homematic</a>-fw-check => ???<br><br><pre>| device                  | model                   | old_fw | new_fw | release    |
------------------------------------------------------------------------------------
| <a href="/fhem?detail=">                       </a> | <b style="color:lightgray">                       </b> | <b style="color:lightgray">      </b> | <a title="eq3-firmware.tgz" href="???"><b style="color:red">      </b></a> |            |
</pre></div>
   TRIGGERTIME 1509051576.8372
   TRIGGERTIME_FMT 2017-10-26 22:59:36
   TYPE       HTTPMOD
   addr       http://www.eq-3.de:80
   buf        HTTP/1.1 200 OK

Date: Wed, 25 Oct 2017 21:11:53 GMT

Server: Apache/2.4.6 (Red Hat Enterprise Linux) OpenSSL/1.0.1e-fips mod_fcgid/2.3.9

X-Powered-By: PHP/5.6.5

Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0

Pragma: no-cache

Expires: Fri, 06 Jun 1975 15:10:00 GMT

Vary: User-Agent

Set-Cookie: PHPSESSID=9g3v2cqpn5fc4tql9lhgov8ed6; path=/; HttpOnly

Set-Cookie: BE_USER_AUTH=8ad9b796f6aeacba7ac2ab52acdf7577bd5e02c6; expires=Tue, 24-Oct-2017 21:11:53 GMT; Max-Age=-86400; path=/; httponly

Set-Cookie: FE_USER_AUTH=8ac0cf168eeb0bb45e0cdfac9e5409010c47b81e; expires=Tue, 24-Oct-2017 21:11:53 GMT; Max-Age=-86400; path=/; httponly

Last-Modified: Wed, 25 Oct 2017 21:11:54 GMT

   QUEUE:
   READINGS:
     2017-10-24 21:41:33   LAST_ERROR      read from http://www.eq-3.de:80 timed out
     2017-10-25 23:11:54   LAST_REQUEST    update
     2017-10-25 23:11:54   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
     2017-10-25 23:11:54   UNMATCHED_READINGS
     2017-10-25 23:11:54   fw_link-01      http://www.eq-3.de/Downloads/Software/Firmware/hm-mod-re-8_update_V1_2_150911.tgz
     2017-10-25 23:11:54   fw_link-02      http://www.eq-3.de/Downloads/Software/Firmware/HM-LC-Bl1PBU-FM_update_V2_11_1_161212.tgz
     2017-10-25 23:11:54   fw_link-03      http://www.eq-3.de/Downloads/Software/Firmware/hm_dis_ep_wm55_update_V1_2_170129.tgz
     2017-10-25 23:11:54   fw_link-04      http://www.eq-3.de/Downloads/Software/Firmware/HM-ES-PMSw1-Pl-DN-R1_update_V2_5_0009_150217.tgz
     2017-10-25 23:11:54   fw_link-05      http://www.eq-3.de/Downloads/Software/Firmware/HM-Sen-MDIR-WM55_update_V1_2_0_160825.tgz
     2017-10-25 23:11:54   fw_link-06      http://www.eq-3.de/Downloads/Software/Firmware/HM-ES-TX-WM_update_V1_2_160628.tgz
     2017-10-25 23:11:54   fw_link-07      http://www.eq-3.de/Downloads/Software/Firmware/hm-ou-cfm-tw_update_V1_3_160620.tgz
     2017-10-25 23:11:54   fw_link-08      http://www.eq-3.de/Downloads/Software/Firmware/HM-ES-TX-WM_update_V1_1_160318.tgz
     2017-10-25 23:11:54   fw_link-09      http://www.eq-3.de/Downloads/Software/Firmware/HM-LC-Dim1PWM-CV_update_V2_9_0005_150730.tar.gz
     2017-10-25 23:11:54   fw_link-10      http://www.eq-3.de/Downloads/Software/Firmware/HM-LC-Dim1L-Pl-3_update_V2_9_0007_150803.tar.gz
     2017-10-25 23:11:54   fw_link-11      http://www.eq-3.de/Downloads/Software/Firmware/HM-LC-Dim1TPBU-FM_update_V2_9_0005_150730.tar.gz
     2017-10-25 23:11:54   fw_link-12      http://www.eq-3.de/Downloads/Software/Firmware/HM-LC-Dim1T-Pl-3_update_V2_9_0005_150730.tar.gz
     2017-10-25 23:11:54   fw_link-13      http://www.eq-3.de/Downloads/Software/Firmware/hm-mod-re-8_update_V1_2_150911.tgz
     2017-10-25 23:11:54   fw_link-14      http://www.eq-3.de/Downloads/Software/Firmware/hm_tc_it_wm_w_eu_update_V1_3_002_150827.tgz
     2017-10-25 23:11:54   fw_link-15      http://www.eq-3.de/Downloads/Software/Firmware/HM-LC-Sw1PBU-FM_update_V2_8_2_150713.tgz
     2017-10-25 23:11:54   fw_link-16      http://www.eq-3.de/Downloads/Software/Firmware/HM-Sen-MDIR-WM55_update_V1_1_2_150413.tgz
     2017-10-25 23:11:54   fw_link-17      http://www.eq-3.de/Downloads/Software/Firmware/HM-ES-PMSw1-Pl_update_V2_5_0009_150217.tgz
     2017-10-25 23:11:54   fw_link-18      http://www.eq-3.de/Downloads/Software/Firmware/hm_cc_rt_dn_update_V1_4_001_141020.tgz
     2017-10-25 23:11:54   fw_link-19      http://www.eq-3.de/Downloads/Software/Firmware/hm-sen-rd-o_update_V1_4_003_130930.tgz
     2017-10-25 23:11:54   fw_link-20      http://www.eq-3.de/Downloads/Software/Firmware/HM-LC-Bl1PBU-FM_update_V2_3_0002_131204.tgz
     2017-10-25 23:11:54   newFwForDevices no fw-updates needed!
   REQUEST:
     data       suchtext=&suche_in=2&downloadart=11
     header
     ignoreredirects 0
     retryCount 0
     type       update
     url        http://www.eq-3.de/service/downloads.html
     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 g
   reading01Regex <a.href="(Downloads\/Software\/Firmware\/[^"]+)
   readingMaxAge 10
   readingMaxAgeReplacementMode delete
   requestData.* suchtext=&suche_in=2&downloadart=11
   room       System
   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


Fheler im fhem Log:
2017.10.25 23:09:36 1: PERL WARNING: Subroutine eq3StateFormat redefined at ./FHEM/99_myUtilseq3StateFormat.pm line 20.
2017.10.25 23:09:52 1: PERL WARNING: Use of uninitialized value $idx in concatenation (.) or string at ./FHEM/99_myUtilseq3StateFormat.pm line 38.
2017.10.25 23:09:52 1: PERL WARNING: Use of uninitialized value $dev in concatenation (.) or string at ./FHEM/99_myUtilseq3StateFormat.pm line 40.
2017.10.25 23:09:52 1: PERL WARNING: Use of uninitialized value $dev in sprintf at ./FHEM/99_myUtilseq3StateFormat.pm line 41.
2017.10.25 23:09:52 1: PERL WARNING: Use of uninitialized value $md in string eq at ./FHEM/99_myUtilseq3StateFormat.pm line 44.
2017.10.25 23:09:52 1: PERL WARNING: Use of uninitialized value $md in sprintf at ./FHEM/99_myUtilseq3StateFormat.pm line 45.
2017.10.25 23:09:52 1: PERL WARNING: Use of uninitialized value $ofw in string eq at ./FHEM/99_myUtilseq3StateFormat.pm line 48.
2017.10.25 23:09:52 1: PERL WARNING: Use of uninitialized value $ofw in sprintf at ./FHEM/99_myUtilseq3StateFormat.pm line 49.
2017.10.25 23:09:52 1: PERL WARNING: Use of uninitialized value $nfw in sprintf at ./FHEM/99_myUtilseq3StateFormat.pm line 54.
2017.10.25 23:09:52 1: PERL WARNING: Use of uninitialized value $date in sprintf at ./FHEM/99_myUtilseq3StateFormat.pm line 58.


99_myUtilseq3StateFormat
##############################################
# $Id: myUtilsTemplate.pm 7570 2015-01-14 18:31:44Z rudolfkoenig $
#
# Save this file as 99_myUtils.pm, and create your own functions in the new
# file. They are then available in every Perl expression.

package main;

use strict;
use warnings;
use POSIX;

sub
myUtils_Initialize($$)
{
  my ($hash) = @_;
}

# Enter you functions below _this_ line.
sub eq3StateFormat() {
  my $name = "eq3";

  my $ret ="";
  my $lastCheck = ReadingsTimestamp($name,"MATCHED_READINGS","???");
  $ret .= '<div style="text-align:left">';   
  $ret .= 'last <a title="eq3-downloads" href="http://www.eq-3.de/downloads.html">homematic</a>-fw-check => '.$lastCheck;   
  $ret .= '<br><br>';   
  $ret .= '<pre>';   
  $ret .= "| device                  | model                   | old_fw | new_fw | release    |\n"; 
  $ret .= "------------------------------------------------------------------------------------\n"; 
  my $check = ReadingsVal($name,"newFwForDevices","???");   
  if($check eq "no fw-updates needed!") {       
    $ret .= '| '.$check.'                                                            |';     
  } 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 .= '| ';         
      $ret .= '<a href="/fhem?detail='.$dev.'">';           
      $ret .= sprintf("%-23s",$dev);             
      $ret .= '</a>';           
      $ret .= " | ";             
      $ret .= '<b'.(($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>';           
      $ret .= " | ";             
      $ret .= '<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>';           
      $ret .= " | ";             
      $ret .= '<a title="eq3-firmware.tgz" href="'.$link.'">';           
      $ret .= '<b style="color:red">';           
      $ret .= sprintf("%6s",$nfw);           
      $ret .= '</b>';           
      $ret .= '</a>';           
      $ret .= " | ";             
      $ret .= sprintf("%-10s",$date);           
      $ret .= " |\n";       
    }   
  } 
  $ret .= '</pre>'; 
  $ret .= '</div>'; 
  return $ret;
}
1;
Titel: Antw:eq3 firmware check funkioniert nicht mehr
Beitrag von: MadMax-FHEM am 26 Oktober 2017, 00:14:17
Hast du denn Geräte mit "alter" FW?

Bei mir wird (auch) nur angezeigt, wenn eine neue(re) FW für ein verwendetes Gerät da ist...

Dachte auch zunächst es wär "kaputt" aber ich hab für mich beschlossen, dass es so gedacht ist/war...

Gruß, Joachim
Titel: Antw:eq3 firmware check funkioniert nicht mehr
Beitrag von: zap am 26 Oktober 2017, 07:39:00
Der Firmware check ist abhängig von der Struktur der Download Seite bei eq3. Wenn sich die ändert, muss auch der Check angepasst werden. Das könnte nun der Fall sein (ohne das jetzt geprüft zu haben).
Titel: Antw:eq3 firmware check funkioniert nicht mehr
Beitrag von: MadMax-FHEM am 26 Oktober 2017, 07:41:56
Bei mir zeigt er noch Geräte an...

Grad getestet...

Aber nur welche für die es aktuellere FWs gibt...

Das genügt mir...

Gruß, Joachim
Titel: Antw:eq3 firmware check funkioniert nicht mehr
Beitrag von: CoolTux am 26 Oktober 2017, 08:37:50
@slor

Du solltest mal Dein Devicenamen anpassen.
Dein HTTPMOD Device heist HM_Firmwarecheck. Du gibst aber über all an des er Readings und Co aus dem Device eq3 lesen soll.

sub eq3StateFormat() {
  my $name = "eq3";


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)/;
Titel: Antw:eq3 firmware check funkioniert nicht mehr
Beitrag von: slor am 27 Oktober 2017, 16:40:55
das war es.
in eq3 umbenannt und es läuft wieder. Danke!
Titel: Antw:eq3 firmware check funkioniert nicht mehr
Beitrag von: ms_steini am 02 September 2019, 18:03:01
Hallo zusammen, darf ich diesen Beitrag mal aus der Versenkung holen ?

Ich habe genau das gleiche Problem, allerdings heißt mein HTTPMOD "eq3"
Und ich bin mir sicher das min. 1 Gerät "HM-SEN-MDIR-WM55" ein Firmwareupdate benötigt. Wurde auch bis vor kurzem angezeigt. Firmware alt = 1.1 / Firmware neu = 1.2

Ich habe insgesamt 4 von den "HM-SEN-MDIR-WM55", 3 hatte ich bereits mit Firmwareupdates versehen, den 4ten wollte ich irgendwann nachholen.

get hm param -d D-firmware:
    OG.Bewegungsmelder.Diele.1 : 1.2           
    OG.Bewegungsmelder.Diele.2 : 1.2           
    OG.Bewegungsmelder.Diele.3 : 1.2           
    OG.Bewegungsmelder.Treppe.1 : 1.1


hier mal ein paar listings.....
list OG.Bewegungsmelder.Treppe.1:


Internals:
   DEF        4A1DDC
   FUUID      5c5ecff4-f33f-c561-e609-d9c456f049db9601
   HM_LAN_TCP_MSGCNT 18
   HM_LAN_TCP_RAWMSG 050000339BA4414A1DDC460586039B9050
   HM_LAN_TCP_RSSI -51
   HM_LAN_TCP_TIME 2019-09-02 17:36:13
   IODev      HM_LAN_TCP
   LASTInputDev HM_LAN_TCP
   MSGCNT     18
   NAME       OG.Bewegungsmelder.Treppe.1
   NOTIFYDEV  global
   NR         210
   NTFY_ORDER 50-OG.Bewegungsmelder.Treppe.1
   STATE      CMDs_pending
   TYPE       CUL_HM
   channel_01 OG.Bewegungsmelder.Treppe.1_Btn_01
   channel_02 OG.Bewegungsmelder.Treppe.1_Btn_02
   channel_03 OG.Bewegungsmelder.Treppe.1_Motion
   lastMsg    No:9B - t:41 s:4A1DDC d:460586 039B9050
   protCmdPend 7 CMDs_pending
   protLastRcv 2019-09-02 17:36:13
   protRcv    18 last_at:2019-09-02 17:36:13
   protState  CMDs_pending
   rssi_at_HM_LAN_TCP cnt:18 min:-56 max:-50 avg:-52.44 lst:-51
   READINGS:
     2018-10-11 16:25:40   CommandAccepted yes
     2018-10-11 16:25:56   D-firmware      1.1
     2018-10-11 16:25:56   D-serialNr      MEQ1849962
     2018-10-11 16:17:19   PairedTo        0x071267
     2018-10-11 15:02:02   R-pairCentral   0x071267
     2019-09-02 17:36:13   battery         ok
     2018-10-11 17:13:15   brightness      120
     2018-10-11 17:13:15   cover           closed
     2019-09-02 12:39:34   motion          off
     2018-10-11 17:13:15   powerOn         2018-10-11 17:13:15
     2018-10-11 17:13:15   recentStateType info
     2019-09-02 17:35:29   state           CMDs_pending
   cmdStack:
     ++A0010712674A1DDC00040000000000
     ++A0010712674A1DDC01040000000001
     ++A0010712674A1DDC0103
     ++A0010712674A1DDC02040000000001
     ++A0010712674A1DDC0203
     ++A0010712674A1DDC03040000000001
     ++A0010712674A1DDC0303
   helper:
     HM_CMDNR   155
     mId        00DB
     peerFriend
     peerOpt    -:motionAndBtn
     regLst     0
     rxType     28
     supp_Pair_Rep 0
     ack:
     expert:
       def        1
       det        1
       raw        0
       tpl        0
     io:
       newChn     +4A1DDC,02,00,00
       nextSend   1567438573.33525
       rxt        2
       vccu       VCCU
       p:
         4A1DDC
         00
         00
         00
       prefIO:
         HM_LAN_TCP
     mRssi:
       mNo        9B
       io:
         HM_LAN_TCP:
           -45
           -45
     prt:
       bErr       0
       sProc      2
       sleeping   1
     q:
       qReqConf   
       qReqStat   
     role:
       dev        1
     rssi:
       at_HM_LAN_TCP:
         avg        -52.4444444444444
         cnt        18
         lst        -51
         max        -50
         min        -56
     tmpl:
Attributes:
   DbLogExclude .*
   IODev      HM_LAN_TCP
   IOgrp      VCCU:HM_LAN_TCP
   autoReadReg 4_reqStatus
   expert     1_allReg
   firmware   1.1
   group      Bewegungsmelder
   icon       hm-sen-mdir-wm55
   model      HM-SEN-MDIR-WM55
   room       Extras
   serialNr   MEQ1849962
   subType    motionAndBtn
   webCmd     getConfig:clear msgEvents


list eq3:
Internals:
   BUSY       0
   DEF        http://www.eq-3.de/service/downloads.html 86400
   FUUID      5c5ecff2-f33f-c561-6617-3f10011a61e8713b
   Interval   86400
   LASTSEND   1567439444.45883
   MainURL    http://www.eq-3.de/service/downloads.html
   MaxAgeEnabled 1
   ModuleVersion 3.5.9 - 13.2.2019
   NAME       eq3
   NOTIFYDEV  global
   NR         36
   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-02 17:50:44<br><br><pre>| device                  | model                   | old_fw | new_fw | release    |
------------------------------------------------------------------------------------
| no fw-updates needed!                                                            |</pre></div>
   TRIGGERTIME 1567525812.1355
   TRIGGERTIME_FMT 2019-09-03 17:50:12
   TYPE       HTTPMOD
   addr       https://www.eq-3.de:443
   auth       0
   code       500
   compress   1
   conn       
   data       suchtext=&suche_in=2&downloadart=11
   displayurl https://www.eq-3.de/service/downloads.html
   header     
   host       www.eq-3.de
   httpheader HTTP/1.1 500 Internal Server Error
Date: Mon, 02 Sep 2019 15:50:44 GMT
Server: Apache/2.4.6 (Red Hat Enterprise Linux) OpenSSL/1.0.2k-fips mod_fcgid/2.3.9
Cache-Control: private, must-revalidate
x-powered-by: PHP/7.1.15
X-Content-Type-Options: nosniff
Referrer-Policy: no-referrer-when-downgrade, strict-origin-when-cross-origin
pragma: no-cache
expires: -1
X-Frame-Options: SAMEORIGIN
X-XSS-Protection: 1; mode=block
Set-Cookie: PHPSESSID=lf623isplhsemst4t52v51vkbo; path=/; HttpOnly
Strict-Transport-Security: max-age=15768000
Connection: close
Content-Type: text/html; charset=UTF-8
   httpversion 1.0
   hu_blocking 0
   hu_filecount 8
   hu_port    443
   hu_portSfx
   ignoreredirects 0
   loglevel   4
   path       /service/downloads.html
   protocol   https
   redirects  1
   timeout    2
   url        https://www.eq-3.de/service/downloads.html
   value      0
   QUEUE:
   READINGS:
     2019-06-29 11:17:24   LAST_ERROR      read from https://www.eq-3.de:443 timed out
     2019-09-02 17:50:44   LAST_REQUEST    update
     2019-09-02 17:50:44   MATCHED_READINGS
     2019-09-02 17:50:44   UNMATCHED_READINGS fw_link
     2019-09-02 17:50:44   newFwForDevices no fw-updates needed!
   REQUEST:
     data       suchtext=&suche_in=2&downloadart=11
     header     
     ignoreredirects 0
     retryCount 0
     type       update
     url        http://www.eq-3.de/service/downloads.html
     value      0
   defptr:
     readingBase:
     readingOutdated:
   sslargs:
Attributes:
   DbLogExclude .*
   enableControlSet 1
   event-on-change-reading .*
   event-on-update-reading LAST_ERROR,MATCHED_READINGS
   icon       audio_repeat
   reading01AutoNumLen 2
   reading01Format http://www.eq-3.de/%s
   reading01Name fw_link
   reading01RegOpt g
   reading01Regex <a.href="(Downloads\/Software\/Firmware\/[^"]+)
   readingMaxAge 10
   readingMaxAgeReplacementMode delete
   requestData.* suchtext=&suche_in=2&downloadart=11
   room       System
   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



sub eq3StateFormat: (in 99_myUtils.pm)
sub eq3StateFormat() {
  my $name = "eq3";

  my $ret ="";
  my $lastCheck = ReadingsTimestamp($name,"MATCHED_READINGS","???");
  $ret .= '<div style="text-align:left">';   
  $ret .= 'last <a title="eq3-downloads" href="http://www.eq-3.de/service/downloads.html">homematic</a>-fw-check => '.$lastCheck;   
  $ret .= '<br><br>';   
  $ret .= '<pre>';   
  $ret .= "| device                  | model                   | old_fw | new_fw | release    |\n"; 
  $ret .= "------------------------------------------------------------------------------------\n"; 
  my $check = ReadingsVal($name,"newFwForDevices","???");   
  if($check eq "no fw-updates needed!") {       
    $ret .= '| '.$check.'                                                            |';     
  } 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 .= '| ';         
      $ret .= '<a href="/fhem?detail='.$dev.'">';           
      $ret .= sprintf("%-23s",$dev);             
      $ret .= '</a>';           
      $ret .= " | ";             
      $ret .= '<b'.(($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>';           
      $ret .= " | ";             
      $ret .= '<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>';           
      $ret .= " | ";             
      $ret .= '<a title="eq3-firmware.tgz" href="'.$link.'">';           
      $ret .= '<b style="color:red">';           
      $ret .= sprintf("%6s",$nfw);           
      $ret .= '</b>';           
      $ret .= '</a>';           
      $ret .= " | ";             
      $ret .= sprintf("%-10s",$date);           
      $ret .= " |\n";       
    }   
  } 
  $ret .= '</pre>'; 
  $ret .= '</div>'; 
  return $ret;
}


Könnt Ihr evtl. hier einen Fehler finden?

Besten Dank
Titel: Antw:eq3 firmware check funkioniert nicht mehr
Beitrag von: frank am 02 September 2019, 20:06:17
eq3 hat einiges umgebaut.
ich schau mir das mal an.
Titel: Antw:eq3 firmware check funkioniert nicht mehr
Beitrag von: frank am 02 September 2019, 20:36:54
probier mal folgende änderungen im httpmod device:

1. url in der DEF ändern:
https://www.eq-3.de/ajax/downloads/downloads_eq3.php

2. folgende 3 attribute ändern:
reading01Format http://www.eq-3.de%s
reading01Regex <a.href="(\/downloads\/software\/firmware\/hm[^"]+)
requestData.* suchbegriff=&quelle=29&suchkategorie=3&themenbereich=1
Titel: Antw:eq3 firmware check funkioniert nicht mehr
Beitrag von: Otto123 am 02 September 2019, 22:03:25
funktioniert bei mir
Soll ich das ins Wiki übernehmen?
https://wiki.fhem.de/wiki/HomeMatic_Firmware_Update#Basis-Definitionen_f.C3.BCr_Device_eq3

Gruß Otto
Titel: Antw:eq3 firmware check funkioniert nicht mehr
Beitrag von: frank am 02 September 2019, 22:43:21
Zitat von: Otto123 am 02 September 2019, 22:03:25
funktioniert bei mir
Soll ich das ins Wiki übernehmen?
https://wiki.fhem.de/wiki/HomeMatic_Firmware_Update#Basis-Definitionen_f.C3.BCr_Device_eq3

Gruß Otto
ja, das wäre gut.
das interval könntest du auch gleich auf zb eine woche (604800) verlängern. dann nerven wir eq3 deutlich weniger.

gruss frank
Titel: Antw:eq3 firmware check funkioniert nicht mehr
Beitrag von: Otto123 am 02 September 2019, 23:34:22
Hab ich gemacht. Ist aber jetzt schon ein bisschen Flickenteppich. Könnte man mal noch etwas polieren :)
Titel: Antw:eq3 firmware check funkioniert nicht mehr
Beitrag von: ms_steini am 03 September 2019, 07:53:40
Zitat von: frank am 02 September 2019, 20:36:54
probier mal folgende änderungen im httpmod device:

1. url in der DEF ändern:
https://www.eq-3.de/ajax/downloads/downloads_eq3.php

2. folgende 3 attribute ändern:
reading01Format http://www.eq-3.de%s
reading01Regex <a.href="(\/downloads\/software\/firmware\/hm[^"]+)
requestData.* suchbegriff=&quelle=29&suchkategorie=3&themenbereich=1


hab ich gemacht, aber leider nein, funktioniert nicht.
Titel: Antw:eq3 firmware check funkioniert nicht mehr
Beitrag von: frank am 03 September 2019, 08:42:41
zeig mal ein aktuelles list.
Titel: Antw:eq3 firmware check funkioniert nicht mehr
Beitrag von: ms_steini am 03 September 2019, 08:55:12
list eq3:
Internals:
   BUSY       0
   DEF        https://www.eq-3.de/ajax/downloads/downloads_eq3.php 86400
   FUUID      5c5ecff2-f33f-c561-6617-3f10011a61e8713b
   Interval   86400
   LASTSEND   1567492138.83758
   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         36
   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 08:28:59<br><br><pre>| device                  | model                   | old_fw | new_fw | release    |
-----------------------------------------------------------------------------------
| no fw-updates needed!                                                            |</pre></div>
   TRIGGERTIME 1567577634.35381
   TRIGGERTIME_FMT 2019-09-04 08:13:54
   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 06:28:58 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 13
   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-06-29 11:17:24   LAST_ERROR      read from https://www.eq-3.de:443 timed out
     2019-09-03 08:28:59   LAST_REQUEST    update
     2019-09-03 08:28:59   MATCHED_READINGS
     2019-09-03 08:28:59   UNMATCHED_READINGS fw_link
     2019-09-03 08:28:59   newFwForDevices no fw-updates needed!
   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:
     readingOutdated:
   sslargs:
Attributes:
   DbLogExclude .*
   enableControlSet 1
   event-on-change-reading .*
   event-on-update-reading LAST_ERROR,MATCHED_READINGS
   icon       audio_repeat
   reading01AutoNumLen 2
   reading01Format http://www.eq-3.de%s
   reading01Name fw_link
   reading01RegOpt g
   reading01Regex reading01Regex <a.href="(\/downloads\/software\/firmware\/hm[^"]+)
   readingMaxAge 10
   readingMaxAgeReplacementMode delete
   requestData.* suchbegriff=&quelle=29&suchkategorie=3&themenbereich=1
   room       System
   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
Titel: Antw:eq3 firmware check funkioniert nicht mehr
Beitrag von: Nobby1805 am 03 September 2019, 11:52:40
Hi,

bei mir funktioniert mit den aktuellen Einstellungen der Abruf ... es werden etliche fw_link Readings angelegt, aber als Ergebnis kommt | device                  | model                   | old_fw | new_fw | release    |
------------------------------------------------------------------------------------
| no fw-updates needed!                                                            |

obwohl es einen HM-TC-WM-W-EU mit Version 1.1 gibt und das Redaing Version 1.3 als aktuell ergibtfw_link-13
http://www.eq-3.de/downloads/software/firmware/hm_tc_it_wm_w_eu_update_v1_3_002_150827.tgz
2019-09-03 11:45:00


Gruss Nobby, der gerade einiges neu in Fhem einbaut ;)
Titel: Antw:eq3 firmware check funkioniert nicht mehr
Beitrag von: Knallkopp_02 am 03 September 2019, 12:03:42
Ich kann auch bestätigen, dass das Abrufen der Daten von EQ3 funtioniert mit den aktuellen Änderungen.

Bestünde die Möglichkeit generell alle Homematikkomponenten mit der dazugehörigen aktuellen Version und der neusten Version anzuzeigen.
Evtl. farblich gekennzeichnet wenn Version die neuste ist grün, wenn älter dann rot.

[[[EDIT]]]

Im Wiki fehlt noch die Änderung in der MyUtils99 vom Link nach http://www.eq-3.de/service/downloads.html


Gruß Knallkopp_02
Titel: Antw:eq3 firmware check funkioniert nicht mehr
Beitrag von: ms_steini am 03 September 2019, 12:16:36
mit "get hm param -d D-firmware" kann ich mir alle Homematic Geräte inkl. Firmware Version  anzeigen lassen

param done:
param list
    entity              : D-firmware            |
    Brightness_Sensor    : 1.1           
    EG.Heizung.Diele    : 1.4           
    EG.Heizung.Esszimmer : 1.4           
    EG.Heizung.WC        : 1.4           
    EG.Heizung.Wohnzimmer_1 : 1.4           
    EG.Heizung.Wohnzimmer_2 : 1.4           
    EG.Rollo.Buero.Fenster : 2.11           
    EG.Rollo.Diele_1.Fenster : 2.11           
    EG.Rollo.Diele_2.Fenster : 2.11           
    EG.Rollo.Esszimmer.Fenster : 2.11           
    EG.Rollo.Esszimmer.Tuer : 2.11           
    EG.Rollo.G_WC.Fenster : 2.11           
    EG.Rollo.Wohnzimmer.Fenster : 2.11           
    EG.Rollo.Wohnzimmer.Terrassenfenster : 2.11           
    EG.Rollo.Wohnzimmer.Terrassentuer : 2.11           
    Garagentor          : 2.5           
    HM_MOD_Em_8          : 1.1           
    HM_Messsteckdose_1  : 2.5           
    HM_Messsteckdose_2  : 2.5           
    HM_Schaltsteckdose_1 : 2.6           
    HM_Schaltsteckdose_2 : 2.6           
    HM_Schaltsteckdose_3 : 2.6           
    HM_Schaltsteckdose_4 : 2.6           
    HM_Schaltsteckdose_5 : 2.6           
    KG.FensterKontakt.Waschkeller : 2.4           
    KG.Heizung.Waschkeller : 1.4           
    OG.Bewegungsmelder.Diele.1 : 1.2           
    OG.Bewegungsmelder.Diele.2 : 1.2           
    OG.Bewegungsmelder.Diele.3 : 1.2           
    OG.Bewegungsmelder.Treppe.1 : 1.1
    OG.Dimmer.Buero      : 2.9           
    OG.Dimmer.Diele      : 2.9           
    OG.Dimmer.Henna      : 2.9           
    OG.Dimmer.Kinderbad : 2.9           
    OG.Dimmer.Schlafzimmer : 2.9           
    OG.Dimmer.Shirin    : 2.9           
    OG.Dimmer.Treppe    : 2.9           
    OG.FensterKontakt.Diele : 2.4           
    OG.FensterKontakt.Henna : 2.4           
    OG.FensterKontakt.Kinderbad : 2.4           
    OG.FensterKontakt.Schlafzimmer : 2.4           
    OG.FensterKontakt.Shirin : 2.4           
    OG.Heizung.Buero    : 1.4           
    OG.Heizung.Diele    : 1.4           
    OG.Heizung.Henna    : 1.4           
    OG.Heizung.Kinderbad : 1.4           
    OG.Heizung.Schlafzimmer : 1.4           
    OG.Heizung.Shirin    : 1.4           
    OG.RemoteDimmer.Diele.1 : 1.0           
    OG.RemoteDimmer.Diele.2 : 1.0           
    OG.RemoteDimmer.Diele.3 : 1.1           
    OG.RemoteDimmer.Schlafzimmer.1 : 1.0           
    OG.RemoteDimmer.Schlafzimmer.2 : 1.0           
    OG.RemoteDimmer.Treppe.1 : 1.0           
    OG.Rollo.Buero.Tuer : 2.11           
    OG.Rollo.Diele.Fenster : 2.11           
    OG.Rollo.Elternbad.Fenster.Links : 2.11           
    OG.Rollo.Elternbad.Fenster.Rechts : 2.11           
    OG.Rollo.Henna.Fenster : 2.11           
    OG.Rollo.Kinderbad.Fenster : 2.11           
    OG.Rollo.Schlafzimmer.Fenster : 2.11           
    OG.Rollo.Schlafzimmer.Tuer : 2.11           
    OG.Rollo.Shirin.Fenster : 2.11           
    OG.Rollo.Treppe.Fenster : 2.11           
    OG.TuerKontakt.Buero : 2.4           
    ZirkulationsPumpe    : 2.8     



bei den Bewegungsmeldern ist wohl die Version 1.2 die neuste


OG.Bewegungsmelder.Diele.1      : 1.2           
OG.Bewegungsmelder.Diele.2      : 1.2           
OG.Bewegungsmelder.Diele.3      : 1.2           

OG.Bewegungsmelder.Treppe.1   : 1.1
Titel: Antw:eq3 firmware check funkioniert nicht mehr
Beitrag von: Otto123 am 03 September 2019, 12:23:31
Im userReadings muss noch der Suchstring geändert werden!?
m/firmware\/(.*?)_update_v([\d_]+)_(\d\d)(\d\d)(\d\d)/;
Damit findet er bei mir wieder die notwendige Firmware.
In der eq3stateformat in 99_myUtils habe ich jetzt
https://www.eq-3.de/service/downloads.htmlals allgemeinen download link eingetragen.

Wiki aktualisiert. https://wiki.fhem.de/wiki/HomeMatic_Firmware_Update

Gruß Otto
Titel: Antw:eq3 firmware check funkioniert nicht mehr
Beitrag von: Nobby1805 am 03 September 2019, 12:32:38
Nö, bei mir nicht ... aber die Ferhlermeldungen im  Log sind jetzt weg
Titel: Antw:eq3 firmware check funkioniert nicht mehr
Beitrag von: ms_steini am 03 September 2019, 12:35:34
leider nein, keine Anzeige
Titel: Antw:eq3 firmware check funkioniert nicht mehr
Beitrag von: Knallkopp_02 am 03 September 2019, 12:36:04
ich kanns aktuell nicht testen, da alles aktuell ist, so wie es aussieht,

kann man irgendwie generell alle HM Komponenten mit Aktueller und zur Verfügung stehender FW anzeigen lassen, irgendwas einfaches im UserReading ändern?

Gruß
Titel: Antw:eq3 firmware check funkioniert nicht mehr
Beitrag von: Otto123 am 03 September 2019, 12:37:49
Zitat von: ms_steini am 03 September 2019, 12:35:34
leider nein, keine Anzeige
Zitat von: Nobby1805 am 03 September 2019, 12:32:38
Nö, bei mir nicht ... aber die Ferhlermeldungen im  Log sind jetzt weg
Funktioniert bei mir. Ich habe einfach bei zwei Geräten das Firmware attribute verändert.
Zitatlast homematic-fw-check => 2019-09-03 12:35:54

| device                  | model                   | old_fw | new_fw | release    |
------------------------------------------------------------------------------------
| PSD3                    | HM-ES-PMSW1-PL          |    2.1 |  2.5.9 | 17.02.2015 |
| SensorR1                | HM-TC-IT-WM-W-EU        |    1.1 |  1.3.2 | 27.08.2015 |
reread
Habt ihr das userReadings so wie im Wiki geändert?
Also von der Sache her mussten da zur alten Version nur zwei Buchstaben von Groß auf klein geändert werden
Titel: Antw:eq3 firmware check funkioniert nicht mehr
Beitrag von: Nobby1805 am 03 September 2019, 12:52:58
ok
habe jetzt die von Dir nachgeschobene Änderung in 99_myUtils gemacht und das UserReadings noch einmal komplett aus dem Wiki übernommen ... jetzt ist alles OK
Titel: Antw:eq3 firmware check funkioniert nicht mehr
Beitrag von: Otto123 am 03 September 2019, 12:56:44
Zitat von: Nobby1805 am 03 September 2019, 12:52:58
ok
habe jetzt die von Dir nachgeschobene Änderung in 99_myUtils gemacht und das UserReadings noch einmal komplett aus dem Wiki übernommen ... jetzt ist alles OK
Schön :)
99_myUtils war aber eigentlich mehr Kosmetik :) ich bin da noch nicht sicher wegen dem Link.
Titel: Antw:eq3 firmware check funkioniert nicht mehr
Beitrag von: ms_steini am 03 September 2019, 13:02:00
Zitat von: Otto123 am 03 September 2019, 12:37:49
Funktioniert bei mir. Ich habe einfach bei zwei Geräten das Firmware attribute verändert.Habt ihr das userReadings so wie im Wiki geändert?
Also von der Sache her mussten da zur alten Version nur zwei Buchstaben von Groß auf klein geändert werden

ja, userReadings geändert, firmware attribute von 2.11 auf 1.11 geändert, ohne erfolg, es wird nichts angezeigt!
Titel: Antw:eq3 firmware check funkioniert nicht mehr
Beitrag von: Otto123 am 03 September 2019, 13:09:40
naja in deinem list / Device muss was nicht stimmen. Da gibt es schon keine matched readings und keine firmware links. Die hätte es nach der Änderung von Frank gestern geben müssen. Ich sehe es leider (noch) nicht.
Titel: Antw:eq3 firmware check funkioniert nicht mehr
Beitrag von: DeeSPe am 03 September 2019, 13:12:34
Zitat von: ms_steini am 03 September 2019, 08:55:12

   reading01Regex reading01Regex <a.href="(\/downloads\/software\/firmware\/hm[^"]+)


Das kann so nicht funktionieren!

Gruß
Dan
Titel: Antw:eq3 firmware check funkioniert nicht mehr
Beitrag von: ms_steini am 03 September 2019, 13:15:32
au man  >:(

ich hab eq3 mal gelöscht und neu angelegt. jetzt gehts auch. hab vor lauter Bäume den Wald nicht mehr gesehen

| device                  | model                   | old_fw | new_fw | release    |
------------------------------------------------------------------------------------
| EG.Rollo.Buero.Fenster  | HM-LC-BL1PBU-FM         |   1.11 | 2.11.1 | 12.12.2016 |
| EG.Rollo.Buero.Fenster  | HM-LC-BL1PBU-FM         |   1.11 |  2.3.2 | 04.12.2013 |
| OG.Bewegungsmelder.Treppe.1 | HM-SEN-MDIR-WM55        |    1.1 |    1.2 | 25.08.2016 |



Super, Dank Euch
Titel: Antw:eq3 firmware check funkioniert nicht mehr
Beitrag von: Nobby1805 am 03 September 2019, 13:32:05
Irgendetwas passt da immer noch nicht ganz ... liefert eq-3 da im php inkonsistente Informationen?
HM_4D106F               | HM-ES-TX-WM             |    1.0 |    1.2 | 28.06.2016
Aktuell ist aber 2.2 von heute  ;) oder laut Changelog vom 19.6.19Funk-Sender für Energiezähler-Sensor Firmware 2.2
Kurz-Bez.: HM-ES-TX-WM
Downloads-Art: Firmware
Artikel-Nr.: 140143
Changelog
03.09.2019

61,65 KB
Titel: Antw:eq3 firmware check funkioniert nicht mehr
Beitrag von: Otto123 am 03 September 2019, 13:44:38
Der File heisst im downloadlink
2019-09-03 12:42:37   fw_link-06      http://www.eq-3.de/downloads/software/firmware/hm-es-tx-wm_update_v1_2_160628.tgz

Daraus macht das Tool nach allen regeln der Kunst 1.2

Sie bieten im Service Bereich beide an. Und die 2.2 von Heute, vielleicht müssen wir warten bis sie von a nach b kommt? Vielleicht hat Frank dazu ne Idee - ich weiß nicht ganz wie er in den neuen Bereich gekommen ist :)
Titel: Antw:eq3 firmware check funkioniert nicht mehr
Beitrag von: Nobby1805 am 03 September 2019, 13:54:32
Sag ich ja ... Problem bei eq-3  ;)https://www.eq-3.de/downloads/software/firmware/HM-ES-TX-WM_update_V2_2_190619_1.tgz
Titel: Antw:eq3 firmware check funkioniert nicht mehr
Beitrag von: Otto123 am 03 September 2019, 13:59:41
Das heisst auch, wir sollten https verwenden:reading01Format https://www.eq-3.de%s ;)
Titel: Antw:eq3 firmware check funkioniert nicht mehr
Beitrag von: frank am 03 September 2019, 14:31:21
1. fehlende readings

httpmod meldet jetzt bei dir schon mal "HTTP/1.1 200 OK". allerdings werden keine fw_link-readings generiert. aktuell müssten 19 solcher readings kommen. gestern abend gab es noch 20.

eventuell hattest du heute morgen pech, da gerade wieder am server gearbeitet wurde.
versuche mal ein "set eq3 reread" und schaue, ob die readings nun kommen.

wenn nicht, probiere erneut ein reread mit zusätzlichem attribut httpVersion, das bei mir gesetzt ist:
attr eq3 httpVersion 1.1


2. fw prüfung

damit die prüfung auf neue fw funktioniert, muss nun auch das attribut userreadings geändert werden. : 

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;
}



da das userreading nun auch einen fehler meldet, falls der eq3-server keine oder falsche daten liefert, muss zusätzlich auch das attrttribut stateformat geändert werden. wer mit einer sub funktion in der 99_myUtils arbeitet, muss natürlich dort die sub ändern:

{
my $ret ="";
my $lastCheck = ReadingsTimestamp($name,"MATCHED_READINGS","???");
$ret .= '<div style="text-align:left">';
$ret .= 'last <a title="eq3-downloads" href="http://www.eq-3.de/service/downloads.html">homematic</a>-fw-check => '.$lastCheck;
$ret .= '<br><br>';
$ret .= '<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 .= '| ';
$ret .= '<b style="color:red">';
$ret .= sprintf("%-80s",$check);
$ret .= '</b>';
$ret .= ' |';
} 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 .= '| ';
$ret .= '<a href="/fhem?detail='.$dev.'">'; 
$ret .= sprintf("%-23s",$dev);
$ret .= '</a>'; 
$ret .= " | "; 
$ret .= '<b'.(($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>'; 
$ret .= " | "; 
$ret .= '<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>'; 
$ret .= " | "; 
$ret .= '<a title="eq3-firmware.tgz" href="'.$link.'">'; 
$ret .= '<b style="color:red">'; 
$ret .= sprintf("%6s",$nfw);
$ret .= '</b>'; 
$ret .= '</a>'; 
$ret .= " | "; 
$ret .= sprintf("%-10s",$date);
$ret .= " |<br>"; 
}
}
$ret .= '</pre>';
$ret .= '</div>';
return $ret;
}





edit:  na hier war ja was los. ihr habt ja fast schon alles gefunden.

mit dieser regex kommt auch die nagelneue fw 2.2 für den tx. somit sind es aktuell wieder 20 fw-files bei mir.
<a.href="(\/downloads\/software\/firmware\/[hH][mM][^"]+)
Titel: Antw:eq3 firmware check funkioniert nicht mehr
Beitrag von: frank am 03 September 2019, 14:54:44
ich habe gerade gesehen, dass das userreading noch mal geändert werden muss, da eq3 bei der neuen firmware das "v" im link nun auch wieder gross schreibt. was ist da bei denen bloss los.

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;
}


zu diesem userreading braucht man auch noch das stateformat aus meinem vorherigen post, damit die neue fehlermeldung angezeigt werden kann.
Titel: Antw:eq3 firmware check funkioniert nicht mehr
Beitrag von: Otto123 am 03 September 2019, 15:08:24
"Gegenvorschlag":
m/Firmware\/(.*?)_update_V([\d_]+)_(\d\d)(\d\d)(\d\d)/i;
Zitati
Do case-insensitive pattern matching. For example, "A" will match "a" under /i .
Da könnten sie in Zukunft Update groß schreiben :)
Titel: Antw:eq3 firmware check funkioniert nicht mehr
Beitrag von: frank am 03 September 2019, 15:26:04
mit "i" klappt es bei mir gerade nicht. ich hätte eigentlich 5 neue fw. nun nichts mehr.

warum funktioniert bei dir eigentlich das gross geschriebene "Firmware" am anfang der regex?

ausserdem habe ich noch im neuen fw link, hinter dem datum, ein "_1" gesehen. was ist das nun wieder?

jemand mit tx device und alter fw müsste das mal testen. also nobby?
Titel: Antw:eq3 firmware check funkioniert nicht mehr
Beitrag von: Otto123 am 03 September 2019, 15:38:02
Zitat von: frank am 03 September 2019, 15:26:04
warum funktioniert bei dir eigentlich das gross geschriebene "Firmware" am anfang der regex?
Sorry für die Verwirrung, ich wollte dokumentieren mit /i brauchen wir nichts weiter im "Original" ändern.

Das klappt bei mir nur wenn ich /i anfüge. mmmh warum geht das bei Dir nicht? Ich hatte vorhin auch mal den Zustand auf einem anderen System, aber gerade nochmal getestet, das funktioniert.
Titel: Antw:eq3 firmware check funkioniert nicht mehr
Beitrag von: frank am 03 September 2019, 15:41:48
sorry, "i" funktioniert nun doch. ich hatte aus versehen, das "v" ganz rausgeschmissen.  :)
Titel: Antw:eq3 firmware check funkioniert nicht mehr
Beitrag von: frank am 03 September 2019, 15:54:24
"i" funktioniert so gut, dass ich die regex auch gleich noch geändert habe.

reading01RegOpt gi
reading01Regex <a.href="(\/downloads\/software\/firmware\/hm[^"]+)


jetzt müssen sie sich aber schon anstrengen, um uns zu ärgern.   8)
Titel: Antw:eq3 firmware check funkioniert nicht mehr
Beitrag von: Nobby1805 am 03 September 2019, 16:48:41
Zitat von: frank am 03 September 2019, 15:26:04
jemand mit tx device und alter fw müsste das mal testen. also nobby?
Ich musste noch eine weitere Änderung machen   8)
Entweder kam nur die Neue Version vom TX und sonst nichts oder es kamen alle, bis auf die V2.2. des TX  ;D
Im Userreading habe ich jetzt [vV] eingebaut, dann klappt es ... wieso funktioniert die i-Option nicht innerhalb des Userreadings?
| HM_4D106F               | HM-ES-TX-WM             |    1.0 |    2.2 | 19.06.2019 |
| HM_4D106F               | HM-ES-TX-WM             |    1.0 |    1.2 | 28.06.2016 |
| Innen                   | HM-TC-IT-WM-W-EU        |    1.1 |  1.3.2 | 27.08.2015 |
| Innen2                  | HM-TC-IT-WM-W-EU        |    1.2 |  1.3.2 | 27.08.2015 |
| Innen3                  | HM-TC-IT-WM-W-EU        |    1.2 |  1.3.2 | 27.08.2015 |
| Innen4                  | HM-TC-IT-WM-W-EU        |    1.1 |  1.3.2 | 27.08.2015 |
| Innen5                  | HM-TC-IT-WM-W-EU        |    1.2 |  1.3.2
Titel: Antw:eq3 firmware check funkioniert nicht mehr
Beitrag von: ms_steini am 03 September 2019, 17:05:53
nur zur Info,

Ihr dürft keine SVG mit gleichem Namen wie der HTTPMOD haben, dann gib's ne ganz schlimme Anzeige!
Titel: Antw:eq3 firmware check funkioniert nicht mehr
Beitrag von: Otto123 am 03 September 2019, 17:14:07
Zitat von: frank am 03 September 2019, 15:26:04
ausserdem habe ich noch im neuen fw link, hinter dem datum, ein "_1" gesehen. was ist das nun wieder?
jemand mit tx device und alter fw müsste das mal testen. also nobby?
Aber im Tester funktioniert das einwandfrei:
https://regex101.com/r/9qZxph/1

Und bei mir auch bei allen Geräten wo ich testen kann.

Im Übrigen zum Testen von eq3 HTTPMOD, quasi jedes beliebige HM Gerät:)
define HM_test CUL_HM AAFFEE
attr HM_test firmware 1.0
attr HM_test modelForce HM-ES-TX-WM
attr HM_test room CUL_HM
Titel: Antw:eq3 firmware check funkioniert nicht mehr
Beitrag 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
Titel: Antw:eq3 firmware check funkioniert nicht mehr
Beitrag von: Otto123 am 03 September 2019, 17:26:10
Zitat von: ms_steini am 03 September 2019, 17:05:53
nur zur Info,

Ihr dürft keine SVG mit gleichem Namen wie der HTTPMOD haben, dann gib's ne ganz schlimme Anzeige!
Kannst Du da noch etwas ausholen? Wo gibt es ne schlimme Anzeige?
Titel: Antw:eq3 firmware check funkioniert nicht mehr
Beitrag von: Otto123 am 03 September 2019, 17:33:05
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 :)
Titel: Antw:eq3 firmware check funkioniert nicht mehr
Beitrag 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


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).
Titel: Antw:eq3 firmware check funkioniert nicht mehr
Beitrag von: ms_steini am 03 September 2019, 18:09:39
Zitat von: Otto123 am 03 September 2019, 17:26:10
Kannst Du da noch etwas ausholen? Wo gibt es ne schlimme Anzeige?
Titel: Antw:eq3 firmware check funkioniert nicht mehr
Beitrag von: Otto123 am 03 September 2019, 18:16:02
Und was hast Du da für ein svg? Ich versuche es zu verstehen  :o
Titel: Antw:eq3 firmware check funkioniert nicht mehr
Beitrag von: ms_steini am 03 September 2019, 18:21:40
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
Titel: Antw:eq3 firmware check funkioniert nicht mehr
Beitrag von: Nobby1805 am 03 September 2019, 18:34:20
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
Titel: Antw:eq3 firmware check funkioniert nicht mehr
Beitrag von: Otto123 am 03 September 2019, 19:02:18
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.
Titel: Antw:eq3 firmware check funkioniert nicht mehr
Beitrag 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
Titel: Antw:eq3 firmware check funkioniert nicht mehr
Beitrag von: Nobby1805 am 03 September 2019, 19:19:36
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
Titel: Antw:eq3 firmware check funkioniert nicht mehr
Beitrag 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 ?
Titel: Antw:eq3 firmware check funkioniert nicht mehr
Beitrag von: Otto123 am 03 September 2019, 19:39:38
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 ....
Titel: Antw:eq3 firmware check funkioniert nicht mehr
Beitrag von: Nobby1805 am 03 September 2019, 22:13:18
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  :)
Titel: Antw:eq3 firmware check funkioniert nicht mehr
Beitrag von: Beta-User am 04 September 2019, 13:01:58
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 ;) .
Titel: Antw:eq3 firmware check funkioniert nicht mehr
Beitrag von: gloob am 04 September 2019, 15:20:50
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.\
Titel: Antw:eq3 firmware check funkioniert nicht mehr
Beitrag von: Beta-User am 04 September 2019, 16:24:44
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...?
Titel: Antw:eq3 firmware check funkioniert nicht mehr
Beitrag von: frank am 05 September 2019, 13:09:54
Zitat von: Beta-User am 04 September 2019, 16:24:44
??? :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 :'( .

bei mir funktioniert alles, ich finde keine warnings im log und ich nutze keine myutils funktionen.


meine vermutung ist, dass du die fhem.cfg editierst.  8)
da solltest du eigentlich keinen support bekommen, oder wie wird das aktuell behandelt?


finde den unterschied:

1. original zeile, die bei mir funktioniert:
my ($nh,$nl,$no,$date,$idx) = $newFw =~ m/^[^:]+:(\d+)_(\d+)_?(\d*):([^:]+):(\d\d)$/;

2. deine gepostete zeile:
my ($nh,$nl,$no,$date,$idx) = $newFw =~ m/^[^:]+:(\d+)_(\d+)_?(\d*)[^:]+)\d\d)$/;


ich frage mich, wie du das "unbeabsichtigt" hinbekommen hast.
deine myutils sieht sicherlich auch anders aus.

edit: eventuell wird die zeichenfolge aus doppelpunkt und klammer irgendwo als smily interpretiert?  :(
Titel: Antw:eq3 firmware check funkioniert nicht mehr
Beitrag von: gloob am 05 September 2019, 13:34:57
Vielleicht Dank, damit geht es bei mir:

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 CUL_HM
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

Titel: Antw:eq3 firmware check funkioniert nicht mehr
Beitrag von: Nobby1805 am 05 September 2019, 13:39:36
Zitat von: frank am 05 September 2019, 13:09:54

meine vermutung ist, dass du die fhem.cfg editierst.  8)
da solltest du eigentlich keinen support bekommen, oder wie wird das aktuell behandelt?

aus dem Wiki:
Zitatim wesentlichen über das Webinterface eingebbar (können aber auch "en bloc" in die fhem.cfg eingetragen werden - auch wenn das eigentlich nicht empfohlen ist)
ich hatte mir trotzdem die Mühe gemacht und jede Zeile einzeln mit cut/paste ausgeführt ...  ::) :P
Titel: Antw:eq3 firmware check funkioniert nicht mehr
Beitrag von: Beta-User am 05 September 2019, 13:53:46
@frank
Danke für's Überprüfen. Das war ein configDB-System, direktes cfg-Editieren fällt also definitiv weg...

(Vermutlich war tatsächlich das smily-copy-paste schuld; ich hatte das mehrfach aus dem Wiki in FHEM, und dort mehrfach hin- und herkopiert - alles unter Linux, und dabei eigentlich nur die vielen Einzelzeilen etwas komprimiert... Von daher bestand auch keine Veranlassung zu intensiverer/doppelter Prüfung. "Eigentlich" ...  :( .)

Dann packe ich das mal bei Gelegenheit in die HTTPMOD-attrTemplate-file; vor dem Hochladen teste ich dann nochmal ausgiebiger ;D ...
Titel: Antw:eq3 firmware check funkioniert nicht mehr
Beitrag von: frank am 05 September 2019, 14:38:22
Zitat von: Beta-User am 05 September 2019, 13:53:46
Dann packe ich das mal bei Gelegenheit in die HTTPMOD-attrTemplate-file; vor dem Hochladen teste ich dann nochmal ausgiebiger ;D ...

dann aber bitte noch mit folgenden änderungen:

1. wenn regOpt mit "i"
attr eq3 reading01RegOpt gi

dann auch Regex ändern in
attr eq3 reading01Regex <a.href="(\/downloads\/software\/firmware\/hm[^"]+)


2. die "[vV]" zeile im userreading auf "insensitiv" umstellen, also ändern in

my @eq3FwList = map{@data = ReadingsVal($name,"fw_link-".$_,"?") =~ m/firmware\/(.*?)_update_v([\d_]+)_(\d\d)(\d\d)(\d\d)/i;


3. die fw links funktionieren scheinbar auch mit https, also Format ändern in

attr eq3 reading01Format https://www.eq-3.de%s

gruss frank
Titel: Antw:eq3 firmware check funkioniert nicht mehr
Beitrag von: Otto123 am 05 September 2019, 15:10:00
Ich habe die jetzige Version mehrfach getestet und für gut befunden. Deshalb mal ins Wiki eingearbeitet und diesen Abschnitt dabei fast neu gemacht.
Schaut euch das bitte mal an, ob es so nachvollziehbar ist.
Ich wollte den Code nur einmal darstellen und habe das Ganze etwas Modular für "Frank's" Variante (ohne 99_myUtils) und "meine" (mit 99_myUtils) dargestellt.
Ist jetzt nichts für copy & Paste ohne etwas nachzudenken ;)
https://wiki.fhem.de/wiki/HomeMatic_Firmware_Update#Tool_zur_Firmware_Versionspr.C3.BCfung
Bitte anschauen, meckern oder selbst ändern :)

Gruß Otto
Titel: Antw:eq3 firmware check funkioniert nicht mehr
Beitrag von: Beta-User am 05 September 2019, 15:20:15
@Otto: Danke!

Ich versuche dann mal, zackig das template nachzuziehen, vorbereitet ist es, und auch kurz angetestet :) .
Das folgende einfach an's Ende der file httpmod.template im Verzeichnis lib/AttrTemplate pappen, {AttrTemplate_Initialize()} ausführen, dann einen beliebigen HTTPMOD erstellen und dort "set ... attrTemplate ?" aufrufen :) .

#################################
#Show updates for CUL_HM devices, Forum: https://forum.fhem.de/index.php/topic,78501.msg972144.html#msg972144
name:X_01a_CUL_HM_firmware_update_downloader
filter:TYPE=HTTPMOD
desc: Check eQ3 homepage for available new firmware files; provides also links for direct downloads<br>Define a HTTPMOD device like <br>define eq3 HTTPMOD https://www.eq-3.de/ajax/downloads/downloads_eq3.php 604800<br><a href="https://https://forum.fhem.de/index.php/topic,78501.msg972144.html#msg972144">Source: Forum</a><br><a href="https://wiki.fhem.de/wiki/HomeMatic_Firmware_Update#Basis-Definitionen_f.C3.BCr_Device_eq3">Wiki</a>
defmod DEVICE HTTPMOD https://www.eq-3.de/ajax/downloads/downloads_eq3.php 604800
attr DEVICE 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 DEVICE enableControlSet 1
attr DEVICE event-on-change-reading .*
attr DEVICE event-on-update-reading LAST_ERROR,MATCHED_READINGS
attr DEVICE httpVersion 1.1
attr DEVICE reading01AutoNumLen 2
attr DEVICE reading01Format https://www.eq-3.de%s
attr DEVICE reading01Name fw_link
attr DEVICE reading01RegOpt gi
attr DEVICE reading01Regex <a.href="(\/downloads\/software\/firmware\/hm[^"]+)
attr DEVICE readingMaxAge 10
attr DEVICE readingMaxAgeReplacementMode delete
attr DEVICE requestData.* suchbegriff=&quelle=29&suchkategorie=3&themenbereich=1
attr DEVICE room CUL_HM
attr DEVICE showError 1
attr DEVICE showMatched 1
attr DEVICE 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 DEVICE 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_v([\d_]+)_(\d\d)(\d\d)(\d\d)/i;;\
      $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 DEVICE webCmd reread
Titel: Antw:eq3 firmware check funkioniert nicht mehr
Beitrag von: frank am 05 September 2019, 15:58:46
ich habe meine version gerade mit zusätzlichen readings für die links der changeLogs erweitert.
so kann man bequem den link markieren und mit rechtem mausklick im browser das changeLog-file öfnen.

einfach folgende 5 attr ergänzen:
attr eq3 reading02AutoNumLen 2
attr eq3 reading02Format https://www.eq-3.de%s
attr eq3 reading02Name changeLog_link
attr eq3 reading02RegOpt gi
attr eq3 reading02Regex <a.href="(\/downloads\/software\/firmware\/changelog_hm[^"]+)


da 5 devices keinen link bereithalten, gibt es aktuell 20 fw_link-readings und nur 15 changeLog_link-readings.


in der kürze der zeit habe ich noch keine negativen auswirkungen feststellen können.
eventuell erweitere ich bei gelegenheit noch das stateformat entsprechend.
Titel: Antw:eq3 firmware check funkioniert nicht mehr
Beitrag von: Beta-User am 05 September 2019, 16:08:57
 :) Klingt gut.

Wenn weitere Tester das für gut befinden, bau ich's auch gleich noch in das template ein.

Wie schaut es aus, gleich die eq3-file in den firmware-Ordner zu entpacken statt "nur" die Links zu den gepackten Dateien? Müßte eigentlich über einen shell-Befehl zu machen sein, Aufruf wäre z.B. aus dem hier abzuleiten:
<a href=\"/fhem?cmd.dummy=set $name toggle&XHR=1\">

(Damit würde man irgendwelche Rechte-Themen auf dem Weg vom aktuellen Rechner auf den Server vermeiden).
Titel: Antw:eq3 firmware check funkioniert nicht mehr
Beitrag von: frank am 05 September 2019, 16:36:40
ZitatWie schaut es aus, gleich die eq3-file in den firmware-Ordner zu entpacken statt "nur" die Links zu den gepackten Dateien?
vorsicht, da bräuchte es wohl etwas mehr.

oder willst du bei jedem reread 20 dateien runterladen, die du wahrscheinlich schon hast.
dann gibt es noch unterschiedliche files (tgz und tar.gz), oder sind die identisch?

man bräuchte eher eine dateiverwaltung, die nur neue fw-files hinzulädt, diese dann nach models sortiert, da es eventuell bereits fw zum entsprechenden model gibt. in den fw-files sind teilweise auch noch zusätzliche dateien (changelog, bda, icons, ...).

eventuell noch ein attribut für einen persönlichen pfad. dazu fehlerhandling, wenn der speicher nicht reicht oder der pfad nicht erreichbar ist, ...........
Titel: Antw:eq3 firmware check funkioniert nicht mehr
Beitrag von: Beta-User am 05 September 2019, 16:55:33
Mag sein, dass das nicht zuende gedacht ist...

Aber an sich soll ja weiter nur ein Link bereitgestellt werden, nur eben mit einem anderen Ziel (nämlich den system-Kommandoaufruf, z.B. mit einem wget). Dass also plötzlich unbeabsichtigt ganz viele Dateien angelegt werden, war jedenfalls nie das Ziel.

Das firmware-Verzeichnis als Unterverzeichnis zu ./FHEM ist in der Regel vorhanden (da sind auch files für Signalduino, Arducounter und Jeelinkdrin, z.B.), aber du hast recht, man sollte checken, was passiert, wenn es nicht da (...) ist und/oder ggf. konfigurierbar machen. Schließlich kommen "die Leute" ja auf die abstrusesten Gedanken :) .
Titel: Antw:eq3 firmware check funkioniert nicht mehr
Beitrag von: Nobby1805 am 05 September 2019, 17:43:29
Zitat von: Beta-User am 05 September 2019, 16:08:57

Wenn weitere Tester das für gut befinden, bau ich's auch gleich noch in das template ein.

ja funktioniert bei mir auch  ... jetzt muss es nur noch in die Ausgabe eingebaut werden  ;)
Titel: Antw:eq3 firmware check funkioniert nicht mehr
Beitrag von: OdfFhem am 08 September 2019, 12:11:28
Um die neuen Readings bzgl. changeLog auch in der Ausgabe verfügbar zu machen, habe ich einige Änderungen an den beiden Routinen für userReadings bzw. stateFormat vorgenommen. Damit wird das release-Datum zu einem Link umfunktioniert, falls ein passender changeLog-Eintrag verfügbar ist.

Neue Attribute gemäß Antwort 05 September 2019, 15:58:46

attr eq3 reading02AutoNumLen 2
attr eq3 reading02Format https://www.eq-3.de%s
attr eq3 reading02Name changeLog_link
attr eq3 reading02RegOpt gi
attr eq3 reading02Regex <a.href="(\/downloads\/software\/firmware\/changelog_hm[^"]+)


Attribut-Definition für userReadings

attr eq3 userReadings newFwForDevices:MATCHED_READINGS:.* {eq3_userReadings($NAME)}


userReadings-Routine für 99_myUtils.pm

sub eq3_userReadings($) {
  my ($NAME) = @_;

  my $ret = "";
  my @data;
  my @eq3FwList = map{@data = ReadingsVal("$NAME","fw_link-".$_,"?") =~ m/Firmware\/(.*?)_update_V([\d_]+)_(\d\d)(\d\d)(\d\d)/i;
      $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;
  my @eq3ChList = map{@data = ReadingsVal("$NAME","changeLog_link-".$_,"?") =~ m/Firmware\/changelog_(.*?)_update_V([\d_]+)_(\d\d)(\d\d)(\d\d)/i;
      $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/changeLog_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))) {

      my $idx4ch = undef;
      foreach my $newCh (grep m/^${md}:/i,@eq3ChList) {
        my ($ch_nh,$ch_nl,$ch_no,$ch_date,$ch_idx) = $newCh =~ m/^[^:]+:(\d+)_(\d+)_?(\d*):([^:]+):(\d\d)$/;

        if (($ch_nh == $nh) && ($ch_nl == $nl) && ($ch_no == $no) && ($ch_date eq $date)) {
          $idx4ch = $ch_idx;
          last;
        }
      }

      $ret .= "," if($ret ne "");
      $ret .= $dev." (".$md." | fw_".$v." => fw".$idx."_".$nh.".".$nl.($no?sprintf(".%d",$no):"")." | ".$date." | ch".($idx4ch?$idx4ch:"00").")";
      }
    }
  }
  return ($ret eq "")?"no fw-updates needed!":$ret;
}


Attribut-Definition für stateFormat

attr eq3 stateFormat {eq3_stateFormat($name)}


stateFormat-Routine für 99_myUtils.pm

sub eq3_stateFormat($) {
  my ($name) = @_;

  my $ret ="";
  my $lastCheck = ReadingsTimestamp($name,"MATCHED_READINGS","???");
  $ret .= '<div style="text-align:left">';
  $ret .= 'last <a title="eq3-downloads" href="https://www.eq-3.de/service/downloads.html">homematic</a>-fw-check => '.$lastCheck;
  my $check = ReadingsVal($name,"newFwForDevices","???");
  if($check eq "no fw-updates needed!") {
    $ret .= ' => '.$check;
  } else {
    $ret .= '<br/><br/>';
    $ret .= '<pre>';
    $ret .= "| device                  | model                   | old_fw | new_fw | release    |<br/>";
    $ret .= "------------------------------------------------------------------------------------<br/>";

  my @devices = split(',',$check);
    foreach my $devStr (@devices) {
      my ($dev,$md,$ofw,$idx,$nfw,$date,$idx4ch) = $devStr =~ m/^([^\s]+)\s\(([^\s]+)\s\|\sfw_(\d+\.\d+)\s=>\sfw(\d\d)_([\d\.]+)\s\|\s([^\)]+)\s\|\sch(\d\d)\)$/;
      my $link = ReadingsVal($name,"fw_link-".$idx,"???");
      my $link4ch = ReadingsVal($name,"changeLog_link-".$idx4ch,undef);
      $ret .= '| ';
      $ret .= '<a href="/fhem?detail='.$dev.'">';
      $ret .= sprintf("%-23s",$dev);
      $ret .= '</a>';
      $ret .= " | ";
      $ret .= '<b'.(($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>';
      $ret .= " | ";
      $ret .= '<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>';
      $ret .= " | ";
      $ret .= '<a title="eq3-firmware.tgz" href="'.$link.'">';
      $ret .= '<b style="color:red">';
      $ret .= sprintf("%6s",$nfw);
      $ret .= '</b>';
      $ret .= '</a>';
      $ret .= " | ";
      if (defined($link4ch)) { $ret .= '<a href="'.$link4ch.'">'; }
      $ret .= sprintf("%-10s",$date);
      if (defined($link4ch)) { $ret .= '</a>'; }
      $ret .= " |<br/>";
    }

$ret .= '</pre>';
  }
  $ret .= '</div>';
  return $ret;
}

Titel: Antw:eq3 firmware check funkioniert nicht mehr
Beitrag von: frank am 08 September 2019, 12:39:57
meine aktuelle testversion sah am anfang ähnlich aus.

ich hab deine version nicht probiert, aber ich vermisse diverse "sonderlocken" der changelog links. zb:

1. datum als vergleich nicht nutzbar, da teilweise unterschiedlich.
2. sw1pbu hat nur model im file.
3. es müsste auch warnings in fhem.log geben, denke ich.
Titel: Antw:eq3 firmware check funkioniert nicht mehr
Beitrag von: Beta-User am 08 September 2019, 12:45:39
Zitat von: Nobby1805 am 05 September 2019, 17:43:29
ja funktioniert bei mir auch  ... jetzt muss es nur noch in die Ausgabe eingebaut werden  ;)
Danke für die Rückmeldung; habe es jetzt in dem getesteten Zwischenstand ins svn eingeckeckt.

Sollte es einen konsolidierten neuen Stand geben, pack' ich die Ergänzungen gerne dazu :) .
Titel: Antw:eq3 firmware check funkioniert nicht mehr
Beitrag von: OdfFhem am 08 September 2019, 13:01:25
Zitat von: frank am 08 September 2019, 12:39:57
https://forum.fhem.de/index.php/topic,78501.msg972863.html#msg972863 (https://forum.fhem.de/index.php/topic,78501.msg972863.html#msg972863)
Zitat
1. datum als vergleich nicht nutzbar, da teilweise unterschiedlich.
2. sw1pbu hat nur model im file.
3. es müsste auch warnings in fhem.log geben, denke ich.

zu1) Das ist mir auch aufgefallen, aber ich habe mich für die Theorie entschieden: Entweder passen die relevanten Parameter alle oder der changeLog-Eintrag kann nicht zugeordnet werden.

zu 2) s. 1)

zu 3) Warnings im Log tauchen bei mir nicht auf. Ausnahme war beim (einmaligen) Übergang von altem zu neuem userReadings ...


Bei 1) bzw. 2) sehe ich zunächst auch nur die Möglichkeit, else-Fälle zu integrieren, die eine immer weiter abgeschwächte Übereinstimmung erfordern. Ob der changeLog-Eintrag dann wirklich passt, ist - insbesondere im Fall sw1pbu - Glückssache. Auf das Datum hingegen kann man wahrscheinlich auch verzichten, wenn der komplette Versions-Vergleich positiv ausfällt.

Titel: Antw:eq3 firmware check funkioniert nicht mehr
Beitrag von: frank am 08 September 2019, 17:57:55
hiermit sollten alle changelog files funktionieren.

defmod eq3 HTTPMOD https://www.eq-3.de/ajax/downloads/downloads_eq3.php 86400
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 https://www.eq-3.de%s
attr eq3 reading01Name fw_link
attr eq3 reading01RegOpt gi
attr eq3 reading01Regex <a.href="(\/downloads\/software\/firmware\/hm[^"]+)
attr eq3 reading02AutoNumLen 2
attr eq3 reading02Name changeLog_link
attr eq3 reading02OExpr $val=~m/(\/downloads\/software\/firmware\/[^"]+)/?"https://www.eq-3.de".$1:"none"
attr eq3 reading02RegOpt gis
attr eq3 reading02Regex (.{300})<a.href="\/downloads\/software\/firmware\/hm[^"]+
attr eq3 readingMaxAge 10
attr eq3 readingMaxAgeReplacementMode delete
attr eq3 requestData.* suchbegriff=&quelle=29&suchkategorie=3&themenbereich=1
attr eq3 room eq3
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">';; \
$ret .= 'last <a title="eq3-downloads" href="http://www.eq-3.de/service/downloads.html">homematic</a>-fw-check => '.$lastCheck;; \
$ret .= '<br><br>';; \
$ret .= '<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 .= '| ';;\
$ret .= '<b style="color:red">';;\
$ret .= sprintf("%-80s",$check);;\
$ret .= '</b>';;\
$ret .= ' |';;\
} else { \
my @devices = split(',',$check);; \
foreach my $devStr (@devices) { \
my ($dev,$md,$ofw,$idx_fw,$nfw,$date) = $devStr =~ m/^([^\s]+)\s\(([^\s]+)\s\|\sfw_(\d+\.\d+)\s=>\sfw(\d\d)_([\d\.]+)\s\|\s([^\)]+)\)$/;;\
my $fw_link = ReadingsVal($name,"fw_link-".$idx_fw,"???");; \
my $cl_link = ReadingsVal($name,"changeLog_link-".$idx_fw,"???");; \
$ret .= '| ';; \
$ret .= '<a href="/fhem?detail='.$dev.'">';;  \
$ret .= sprintf("%-23s",$dev);; \
$ret .= '</a>';;  \
$ret .= " | ";;  \
$ret .= '<b'.(($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>';;  \
$ret .= " | ";;  \
$ret .= '<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>';;  \
$ret .= " | ";;  \
$ret .= '<a title="download firmware file" href="'.$fw_link.'">';;  \
$ret .= '<b style="color:red">';;  \
$ret .= sprintf("%6s",$nfw);; \
$ret .= '</b>';;  \
$ret .= '</a>';;  \
$ret .= " | ";;  \
$ret .= '<a title="open changeLog file" href="'.$cl_link.'"><b style="color:red">' if($cl_link ne "none");;  \
$ret .= sprintf("%-10s",$date);; \
$ret .= '</b></a>' if($cl_link ne "none");;  \
$ret .= " |<br>";;  \
} \
} \
$ret .= '</pre>';; \
$ret .= '</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_v([\d_]+)_(\d\d)(\d\d)(\d\d)/i;; \
$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


geändert haben sich eigentlich nur die attr reading02.... und stateformat.
Titel: Antw:eq3 firmware check funkioniert nicht mehr
Beitrag von: OdfFhem am 08 September 2019, 18:44:53
@frank

Die Lösung mit dem Verbrauchen der Nummern bei Nichtvorhandensein eines Changelog gefällt mir sehr gut; dadurch entfällt das Rückwärtszuordnen vollständig und man hat erst gar keine Problemfälle.

Und das Beste: es funktioniert und man versteht es fast vollständig ;-)

Wichtig für den schnellen Test war bei mir noch, das alte Attribut reading02Format zu löschen; ansonsten gibt es Probleme.

Vielen Dank erst einmal für die deutlich kürzere Lösungsvariante.
Titel: Antw:eq3 firmware check funkioniert nicht mehr
Beitrag von: Nobby1805 am 08 September 2019, 19:45:08
jo, passt  :D
Titel: Antw:eq3 firmware check funkioniert nicht mehr
Beitrag von: Otto123 am 09 September 2019, 13:41:45
@Frank Da bist Du Deiner eigenen Empfehlung aber untreu geworden ;)
Zitatdefmod eq3 HTTPMOD https://www.eq-3.de/ajax/downloads/downloads_eq3.php 86400

Und es hat mich keiner korrigiert das ich im Wiki im userReadings nicht eq3 durch $name ersetzt habe  :-[ :'(
Titel: Antw:eq3 firmware check funkioniert nicht mehr
Beitrag von: frank am 09 September 2019, 20:12:57
mist, erwischt.  :)
Titel: Antw:eq3 firmware check funkioniert nicht mehr
Beitrag von: Beta-User am 12 September 2019, 13:41:22
Hallo zusammen,

anbei mal die nächste Fassung für die httpmod.template-Datei (incl. alignTime) usw.. Vorteil: der Raum bleibt ggf. erhalten => das sollte also auch ohne weiteres dazu dienen können, zukünftig updates zu verteilen, man muß dann "nur" einfach das template nochmal anwenden...

Ich habe damit aber noch ein "Problemchen" bzw. eine Sache, bei der hier evtl. jemand weiß, ob und wie das geht (s.u.).#################################
#Show updates for CUL_HM devices, Forum: https://forum.fhem.de/index.php/topic,78501.msg972144.html#msg972144
name:X_01a_CUL_HM_firmware_update_downloader
filter:TYPE=HTTPMOD
desc: Check eQ3 homepage for available new firmware files; provides also links for direct downloads<br>Define a HTTPMOD device like <br><a href="/fhem?cmd.dummy=defmod%20eq3%20HTTPMOD%20https://www.eq-3.de/ajax/downloads/downloads_eq3.php%20604800&XHR=1">define eq3 HTTPMOD https://www.eq-3.de/ajax/downloads/downloads_eq3.php 604800</a><br><a href="https://https://forum.fhem.de/index.php/topic,78501.msg972144.html#msg972144">Source: Forum</a><br><a href="https://wiki.fhem.de/wiki/HomeMatic_Firmware_Update#Basis-Definitionen_f.C3.BCr_Device_eq3">Wiki</a>
par:WHICHROOM;Room of the calling device; {AttrVal("DEVICE","room","CUL_HM" )}
defmod DEVICE HTTPMOD https://www.eq-3.de/ajax/downloads/downloads_eq3.php 604800
attr DEVICE 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 DEVICE alignTime 00:45
attr DEVICE enableControlSet 1
attr DEVICE event-on-change-reading .*
attr DEVICE event-on-update-reading LAST_ERROR,MATCHED_READINGS
attr DEVICE httpVersion 1.1
attr DEVICE reading01AutoNumLen 2
attr DEVICE reading01Format https://www.eq-3.de%s
attr DEVICE reading01Name fw_link
attr DEVICE reading01RegOpt gi
attr DEVICE reading01Regex <a.href="(\/downloads\/software\/firmware\/hm[^"]+)
attr DEVICE reading02AutoNumLen 2
attr DEVICE reading02Name changeLog_link
attr DEVICE reading02OExpr $val=~m/(\/downloads\/software\/firmware\/[^"]+)/?"https://www.eq-3.de".$1:"none"
attr DEVICE reading02RegOpt gis
attr DEVICE reading02Regex (.{300})<a.href="\/downloads\/software\/firmware\/hm[^"]+
attr DEVICE readingMaxAge 10
attr DEVICE readingMaxAgeReplacementMode delete
attr DEVICE requestData.* suchbegriff=&quelle=29&suchkategorie=3&themenbereich=1
attr DEVICE room WHICHROOM
attr DEVICE showError 1
attr DEVICE showMatched 1
attr DEVICE stateFormat {\
    my $ret ="";;     \
    my $lastCheck = ReadingsTimestamp($name,"MATCHED_READINGS","???");;     \
    $ret .= '<div style="text-align:left">';;     \
    $ret .= 'last <a title="eq3-downloads" href="http://www.eq-3.de/service/downloads.html">homematic</a>-fw-check => '.$lastCheck;;     \
    $ret .= '<br><br>';;     \
    $ret .= '<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 .= '| ';;\
        $ret .= '<b style="color:red">';;\
        $ret .= sprintf("%-80s",$check);;\
        $ret .= '</b>';;\
        $ret .= ' |';;\
    } else {         \
        my @devices = split(',',$check);;         \
        foreach my $devStr (@devices) {             \
            my ($dev,$md,$ofw,$idx_fw,$nfw,$date) = $devStr =~ m/^([^\s]+)\s\(([^\s]+)\s\|\sfw_(\d+\.\d+)\s=>\sfw(\d\d)_([\d\.]+)\s\|\s([^\)]+)\)$/;;\
            my $fw_link = ReadingsVal($name,"fw_link-".$idx_fw,"???");;             \
            my $cl_link = ReadingsVal($name,"changeLog_link-".$idx_fw,"???");;             \
            $ret .= '| ';;             \
            $ret .= '<a href="/fhem?detail='.$dev.'">';;              \
            $ret .= sprintf("%-23s",$dev);;             \
            $ret .= '</a>';;              \
            $ret .= " | ";;              \
            $ret .= '<b'.(($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>';;              \
            $ret .= " | ";;              \
            $ret .= '<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>';;              \
            $ret .= " | ";;              \
            $ret .= '<a title="download firmware file" href="'.$fw_link.'">';;              \
            $ret .= '<b style="color:red">';;              \
            $ret .= sprintf("%6s",$nfw);;             \
            $ret .= '</b>';;              \
            $ret .= '</a>';;              \
            $ret .= " | ";;              \
            $ret .= '<a title="open changeLog file" href="'.$cl_link.'"><b style="color:red">' if($cl_link ne "none");;              \
            $ret .= sprintf("%-10s",$date);;             \
            $ret .= '</b></a>' if($cl_link ne "none");;              \
            $ret .= " |<br>";;          \
        }     \
    }     \
    $ret .= '</pre>';;     \
    $ret .= '</div>';;     \
    return $ret;; \
}
attr DEVICE 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_v([\d_]+)_(\d\d)(\d\d)(\d\d)/i;;\
      $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 DEVICE webCmd reread

Was nicht geht: Bei "set <irgendein HTTPMOD> attrTemplate ?" erhält man eine Übersichtsliste, was es so alles gibt, mit links ins Wiki, forum usw.. Da wird jetzt bei diesem template ein cmd.dummy-Link angeboten, über den man das Device optimalerweise gleich anlegen lassen kann. Der Link ist da, aber leider nicht funktional. Kann sein, dass sowas gar nicht geht, aber wenn es nur an einer Kleinigkeit hinge, wäre das als allgemeine Funktion (auch für die anderen attrTemplates in HTTPMOD) "nett"...

@Otto: Was hältsts du davon, den Code im Wiki (für die Variante ohne myUtils) gar nicht mehr reinzunehmen und dafür die zwei Zeilen Code für das define und Anwenden des template?
Titel: Antw:eq3 firmware check funkioniert nicht mehr
Beitrag von: Otto123 am 12 September 2019, 13:44:14
Zitat von: Beta-User am 12 September 2019, 13:41:22
@Otto: Was hältsts du davon, den Code im Wiki (für die Variante ohne myUtils) gar nicht mehr reinzunehmen und dafür die zwei Zeilen Code für das define und Anwenden des template?
Spontan nichts - weil ICH die Sache mit den Templates nicht verstehe, bzw. einfach noch nie angeschaut habe.  ;D

Mich stören da momentan 3 Meldungen in meiner Definition:
Immer wenn ich reread mache: 2019.09.12 13:54:56 2: AttrTemplates: got 98 entries
Muss das immer kommen, auch wenn ich es gar nicht verwende?

Beim Start von FHEM kommen die zwei Meldungen:  :-\
2019.09.12 12:53:11 3: eq3: Defined with URL https://www.eq-3.de/ajax/downloads/downloads_eq3.php and interval 604800 featurelevel 5.9
2019.09.12 12:53:11 3: eq3: added hint :text,reading,internal,expression,delete to attr readingMaxAgeReplacementMode in userattr list
Titel: Antw:eq3 firmware check funkioniert nicht mehr
Beitrag von: Beta-User am 12 September 2019, 14:01:22
 ;D ;D ;D
Dann wird's aber mal Zeit...

Im Ernst, das ist keine große Sache:
Bei allen Modulen, die SetExtensions unterstützen, gibt es die Option, dazu attrTemplates zu haben, bei HTTPMOD wurde es extra (unabhängig von SetExtensions(?)) eingebaut.

Dahinter verbirgt sich die Idee, dass die Devices mancher Module stark von der Konfiguration durch Attribute abhängen (insbes. MQTT2_DEVICE und auch HTTPMOD), und daher sehr davon profitieren können, wenn man das zentral verteilt und die user das nicht von überall her zusammensuchen müssen, dabei Fehler machen usw..

Im Prinzip ist es also gesammelter RAW-Code, wobei "vorneweg" eben "etwas Perl" ausgeführt werden kann, v.a., um Variablen zu füllen. Hier wird das z.B. genutzt nachzusehen, ob das room-Attribut schon nutzerseitig anders belegt ist (dann wird der aktuelle Inhalt übernommen). Dazu eine kleine Beschreibung (für das "?") und ggf. etwas "farewell", also Hinweise an den Anwender, was jetzt passieren soll, das war es auch schon :) .
Titel: Antw:eq3 firmware check funkioniert nicht mehr
Beitrag von: zap am 12 September 2019, 16:34:35
Guter Hinweis! Dann werde ich wohl die Defaults von HMCCU mal nach attrtemplates migrieren. Hatte zwar schon davon gelesen, mich aber noch nicht im Detail damit beschäftigt. 😎
Titel: Antw:eq3 firmware check funkioniert nicht mehr
Beitrag von: Beta-User am 12 September 2019, 16:44:19
Zitat von: zap am 12 September 2019, 16:34:35
Guter Hinweis! Dann werde ich wohl die Defaults von HMCCU mal nach attrtemplates migrieren. Hatte zwar schon davon gelesen, mich aber noch nicht im Detail damit beschäftigt. 😎
Wenn du Hilfe dazu brauchst: Einfach melden, und evtl. einen Thread dazu aufmachen, diesen in dem Ankündigungs-Thread von Rudi dann verlinken.
Hintergrund: Hin und wieder gibt/gab es noch Bedarf an zusätzlicher Funktionalität, und in der Vergangenheit hat Rudi da immer wieder nochmal "eins draufgesetzt". Es gibt auch einige features, die nur vorbereitet sind, u.A. kann man auch "bedingte Zweige" haben, könnte also ein Subset von Attributen nur setzen, wenn bestimmte Bedingungen gegeben sind usw.. Auch farewell ist bisher nur "wenig" genutzt.

Gut finde ich auch die Option, direkt aus "?" (z.B.) ins Wiki zu verlinken.
Titel: Antw:eq3 firmware check funkioniert nicht mehr
Beitrag von: Knallkopp_02 am 15 September 2019, 10:24:27
Heute morgen bin ich endlich dazu gekommen, die neuen Änderungen mal zu testen, vorallem mit em template eine sehr schöne Sache. Evtl sollte man das noch mit ins Wiki übernehmen.

Bei mir läuft alles.

BTW, eine Frage habe ich aber noch, die Änderungen in der 99_myUtils.cfg für das setState, kann dann gelöscht werden, wenn ich das richtig sehe, oder?

Großes Lob an Alle die das so schnell hinbekommen haben.

Gruß Knallkopp_02
Titel: Antw:eq3 firmware check funkioniert nicht mehr
Beitrag von: Beta-User am 15 September 2019, 14:45:54
Zitat von: Knallkopp_02 am 15 September 2019, 10:24:27
Heute morgen bin ich endlich dazu gekommen, die neuen Änderungen mal zu testen, vorallem mit em template eine sehr schöne Sache. Evtl sollte man das noch mit ins Wiki übernehmen.
Danke für die Rückmeldung. Ich nehme mal an, dass Otto so freundlich ist, das dann ins Wiki zu übernehmen, sobald er dazu gekommen ist, das mit den attrTemplate mal auszutesten ;D ::) 8) .

ZitatBTW, eine Frage habe ich aber noch, die Änderungen in der 99_myUtils.cfg für das setState, kann dann gelöscht werden, wenn ich das richtig sehe, oder?
Bei dem "Einheitsdevice" brauchst du den (doppelten) Code in myUtils nicht mehr, kannst das aber natürlich umstellen, wenn dir das lieber ist.
Titel: Antw:eq3 firmware check funkioniert nicht mehr
Beitrag von: Knallkopp_02 am 15 September 2019, 15:07:28
Das mit dem Template finde ich genial, auch wenn ich absolut keine Probleme habe die Quelltexte zu kopieren. Aber so hat man mit der Erstellung des Httpmod und der Aktivierung des Templates mit 2 Klicks das ganze Ding aktiv.

Echt klasse, so viele Daumen kann ich garnicht geben

Gruß
Titel: Antw:eq3 firmware check funkioniert nicht mehr
Beitrag von: Otto123 am 17 September 2019, 23:04:00
Hallo Beta-User,

ich habe heute eine Gosund SP111 Steckdose mit tuya-convert auf Tasmota geflashed, mqtt2 eingerichtet und mit attrTemplate die Steckdose in nullkommanix zum laufen gebracht. Damit hast Du mich gegriffen mein Lieber  ;D ;D ;D

Wie "versprochen" habe ich mich dann mit der attrTemplate Definition aus diesem Thread beschäftigt getestet und ins Wiki eingebaut.
Der Artikel muss insgesamt noch überarbeitet werden, aber heute nicht mehr :)

Gruß Otto
Titel: Antw:eq3 firmware check funkioniert nicht mehr
Beitrag von: Beta-User am 18 September 2019, 14:19:43
@Otto:

Danke für's Austesten und die Einarbeitung in's Wiki, THX for reporting your experience with attrTemplate ;D .

[OT @all]
- Es wundert mich etwas, dass das Thema grade bei HTTPMOD so ruhig ist... Eingentlich wäre das ein guter Weg, "sich bekannt" zu machen für viele tolle Sachen, die heute "irgendwo" im Wiki vorhanden sind.
(Shame on me: manches aus dem template-file funktioniert leider nicht ganz so, wie ich mir das wünsche; vielleicht mag sich mal einer um ORF-Wetter kümmern (es gibt mWm. noch eines, bei dem die regexe nicht so hinhauen, es gibt einen Thread dazu, wenn jemand Interesse hat, der Link dahin ist über attrTemplate bei jedem HTTPMOD zu erhalten).

- Wenn jemand das file als Maintainer (ganz oder mit) übernehmen möchte: gerne melden :) , ich bin leider eher nur fortgeschrittener Anfänger beim regexen, und daher keine Optimalbesetzung für diesen Job...
[/OT]

Gruß, Beta-User
Titel: Antw:eq3 firmware check funkioniert nicht mehr
Beitrag von: Burny4600 am 19 Oktober 2019, 20:39:38
Ich habe mich betreffend Firmware Update der HM Geräte hier und auf dem Wiki durchgewurstelt.
Dabei dürfte ich einen Fehler gemacht haben den ich nicht mehr wegbekomme.
Bei mir werden aktuell nur 18 fw_link-readings und nur 18 changeLog_link-readings angezeigt, und es werden keine Firmwareupdates durchgeführt, obwohl es welche geben müsste.
get HMinfo param -d D-firmware
param done:
param list
    entity              : D-firmware            |

Aerosol Difusor            HM-LC-SW1-BA-PCB
    AB_FR_AD            : 1.7

Raumthermostat             HM-CC-RT-DN
    EG_BA_HZG_RT        : 1.4
    EG_KU_HZG_RT        : 1.4
    EG_SL_HZG_RT        : 1.4
    EG_STH_HZG_RT        : 1.4
    EG_WC_HZG_RT        : 1.4
    EG_WI_HZG_RT        : 1.4
    EG_WZ_HZG_RT        : 1.4
    OG1_KI_HZG_RT        : 1.4
    OG1_KU_HZG_RT        : 1.4
    OG1_SL_HZG_RT        : 1.4
    OG1_STH_HZG_RT      : 1.4
    OG1_WC_HZG_RT        : 1.4
    OG1_WZ_HZG_RT        : 1.4
    OG2_BU1_HZG_RT      : 1.4
    OG2_BU2_HZG_RT1      : 1.4
    OG2_BU2_HZG_RT2      : 1.4
    OG2_WC_HZG_RT        : 1.4

Temperatur Controler       HM-TC-IT-WM-W-EU
    EG_BA_HZG_TC        : 1.3
    EG_KU_HZG_TC        : 1.3
    EG_SL_HZG_TC        : 1.3
    EG_WI_HZG_TC        : 1.4
    EG_WZ_HZG_TC        : 1.3
    OG1_KI_HZG_TC        : 1.3
    OG1_KU_HZG_TC        : 1.3
    OG1_SL_HZG_TC        : 1.3
    OG1_WZ_HZG_TC        : 1.3
    OG2_BU1_HZG_TC      : 1.3
    OG2_BU2_HZG_TC      : 1.3

Bewässerung | Kühlung      HM-LC-SW4-BA-PCB
    AB_BKTR_BW          : 1.1
    AB_SG_BW            : 1.1
    AB_VG_BW            : 1.1
    OG2_B1_KG            : 1.1

Bewegungssensor            HM-SEN-MDIR-O-3
    AB_SG_BLGOBWS        : 1.7
    AB_SG_BLWSBWS        : 1.7

Audioausgabe               HM-OU-CFM-TW
    AB_FR_AAM            : 1.3
    EG_KUE_AAM          : 1.3
    EG_STH_AAM          : 1.3
    OG1_VR_AAM          : 1.3
    OG2_BU1_AAM          : 1.3

Fernbedienung Verriegelung HM-RC-KEY4-2
    EG_STH_T1_FB        : 1.2

Verriegelung               HM-SEC-KEY-S
    EG_STH_T1_VG        : 2.5

Taster                     HM-PB-2-WM55
    AB_SA_NT            : 1.4
    EG_STH_T1_VGT        : 1.4

Taster                     HM-LC-SW1PBU-FM
    OG1_WZ_BL_VIO        : 2.8

Regensensor                HM-SEN-RD-O
    AB_WST_RSI          : 1.4

Pegelstand Mühlbach        HM-SEN-WA-OD
    AB_MB_PS            : 1.3

Feuchtesensor              HM-SEC-WDS-2
    AB_GAO_FS1_SSPPWTI  : 1.4
    KG_FS1_HAI          : 1.4
    OG1_KUE_FS1_OAI      : 1.4

Aktor HM-LC-SW1PBU-FM      HM-LC-SW1PBU-FM
    OG1_KUE_FS1_OAFGO    : 2.8

Rauchmelder                HM-SEC-SD-2
    AB_FR_RM            : 1.0
    AB_GAO_RM            : 1.0
    EG_KUE_RM            : 1.0
    EG_SL_RM            : 1.0
    EG_VR_RM            : 1.0
    EG_WR_RM            : 1.0
    EG_WZ_RM            : 1.0
    OG1_KI_RM            : 1.0
    OG1_KUE_RM          : 1.0
    OG1_SL_RM            : 1.0
    OG1_STH_RM          : 1.0
    OG1_VR_RM            : 1.0
    OG1_WZ_RM            : 1.0
    OG2_BU1_RM          : 1.0
    OG2_BU2_RM          : 1.0
    OG2_DB_RM            : 1.0
    OG2_EDV_RM          : 1.0
    OG2_VR_RM            : 1.0

RGB Beleuchtung            HM-LC-RGBW-WM
    RGB_AB_FR            : 1.0
    RGB_OG1_WZ          : 1.0

Fenster Sensoren           HM-SEC-SCO
    UESF1_AB_FR          : 1.0
    UESF1_AB_GAO        : 1.0
    UESF1_EG_BA          : 1.0
    UESF1_EG_KUE        : 1.0
    UESF1_EG_SL          : 1.0
    UESF1_EG_STH        : 1.0
    UESF1_EG_WC          : 1.0
    UESF1_EG_WI          : 1.0
    UESF1_EG_WZ          : 1.0
    UESF1_OG1_BA        : 1.0
    UESF1_OG1_KI        : 1.0
    UESF1_OG1_KUE        : 1.0
    UESF1_OG1_SL        : 1.0
    UESF1_OG1_WC        : 1.0
    UESF1_OG1_WZ        : 1.0
    UESF1_OG2_BUE1_N    : 1.0
    UESF1_OG2_BUE2_N    : 1.0
    UESF1_OG2_BUE2_W    : 1.0
    UESF1_OG2_DB        : 1.0
    UESF1_OG2_DBN        : 1.0
    UESF2_AB_GAO        : 1.0
    UESF2_EG_SL          : 1.0
    UESF2_EG_STH        : 1.0
    UESF2_EG_WZ          : 1.0
    UESF2_OG1_SL        : 1.0
    UESF2_OG1_WZ        : 1.0
    UESF2_OG2_BUE1_N    : 1.0
    UESF2_OG2_BUE2_N    : 1.0
    UESF2_OG2_BUE2_W    : 1.0
    UESF2_OG2_DBN        : 1.0
    UESF3_OG1_STH        : 1.0
    UESF3_OG2_BUE1_N    : 1.0
    UESF3_OG2_BUE2_W    : 1.0
    UESF3_OG2_DBN        : 1.0
    UESF4_OG1_STH        : 1.0
    UESF5_OG2_STH        : 1.0
    UEST1_AB_FR          : 1.0
    UEST1_AB_GAO        : 1.0
    UEST1_AB_GTW        : 1.0
    UEST1_AB_SA          : 1.0
    UEST1_EG_BA          : 1.0
    UEST1_EG_KUE        : 1.0
    UEST1_EG_STH        : 1.0
    UEST1_OG1_KUE        : 1.0
    UEST1_OG2_EDV        : 1.0
    UEST2_AB_GAO        : 1.0


Eine Verständnisfrage habe ich zum Eintrag in der 99_myUtils.pm der userReadings und stateFormat Definition laut Wiki.

attr eQ3 stateFormat {eq3StateFormat($name)}
attr eQ3 userReadings newFwForDevices:MATCHED_READINGS:.* {eq3Attr($name)}

Warum definiert man diese in der 99_myUtils.pm wenn sie ohnehin wieder in die userReadings und stateFormat ausgelagert werden.
######## eQ3 Firmware Update ###################
### 2019.10.19
sub eq3Attr{
        my $name = shift @_;
my $ret = "";
my @data;
if (ReadingsVal($name,"UNMATCHED_READINGS","?") eq "") {
my @eq3FwList = map{
@data = ReadingsVal($name,"fw_link-".$_,"?") =~ m/firmware\/(.*?)_update_v([\d_]+)_(\d\d)(\d\d)(\d\d)/i;
$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;
}

#####################

sub eq3StateFormat($) {
        my $name = shift @_;
my $ret ="";
my $lastCheck = ReadingsTimestamp($name,"MATCHED_READINGS","???");
$ret .= '<div style="text-align:left">';
$ret .= 'last <a title="eq3-downloads" href="http://www.eq-3.de/service/downloads.html">homematic</a>-fw-check => '.$lastCheck;
$ret .= '<br><br>';
$ret .= '<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 .= '| ';
$ret .= '<b style="color:red">';
$ret .= sprintf("%-80s",$check);
$ret .= '</b>';
$ret .= ' |';
} else {
my @devices = split(',',$check);
foreach my $devStr (@devices) {
my ($dev,$md,$ofw,$idx_fw,$nfw,$date) = $devStr =~ m/^([^\s]+)\s\(([^\s]+)\s\|\sfw_(\d+\.\d+)\s=>\sfw(\d\d)_([\d\.]+)\s\|\s([^\)]+)\)$/;
my $fw_link = ReadingsVal($name,"fw_link-".$idx_fw,"???");
my $cl_link = ReadingsVal($name,"changeLog_link-".$idx_fw,"???");
$ret .= '| ';
$ret .= '<a href="/fhem?detail='.$dev.'">';
$ret .= sprintf("%-23s",$dev);
$ret .= '</a>';
$ret .= " | ";
$ret .= '<b'.(($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>';
$ret .= " | ";
$ret .= '<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>';
$ret .= " | ";
$ret .= '<a title="download firmware file" href="'.$fw_link.'">';
$ret .= '<b style="color:red">';
$ret .= sprintf("%6s",$nfw);
$ret .= '</b>';
$ret .= '</a>';
$ret .= " | ";
$ret .= '<a title="open changeLog file" href="'.$cl_link.'"><b style="color:red">' if($cl_link ne "none");
$ret .= sprintf("%-10s",$date);
$ret .= '</b></a>' if($cl_link ne "none");
$ret .= " |<br>";
}
}
$ret .= '</pre>';
$ret .= '</div>';
return $ret;
}


list eQ3
Internals:
   BUSY       0
   CFGFN      /media/hdd/fhem/mycfg/HM/hm_rasp01.cfg
   DEF        https://www.eq-3.de/ajax/downloads/downloads_eq3.php 604800
   FUUID      5c45b04f-f33f-f4d2-e8ac-6e95ed4c33510da6
   Interval   604800
   LASTSEND   1571506945.31442
   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         4212
   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-10-19 19:42:25<br><br><pre>| device                  | model                   | cur_fw | new_fw | release    |<br>------------------------------------------------------------------------------------<br>| <b style="color:green">no fw-updates needed!                                                           </b> |</pre></div>
   TRIGGERTIME 1572043500
   TRIGGERTIME_FMT 2019-10-26 00:45:00
   TYPE       HTTPMOD
   TimeAlign  1571438700
   TimeAlignFmt 2019-10-19 00:45:00
   addr       https://www.eq-3.de:443
   auth       0
   buf       
   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: Sat, 19 Oct 2019 17:42:25 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
Transfer-Encoding: chunked
Content-Type: text/html; charset=UTF-8
   httpversion 1.1
   hu_blocking 0
   hu_filecount 2
   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-10-19 19:42:25   LAST_REQUEST    update
     2019-10-19 19:42:25   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 changeLog_link-01 changeLog_link-02 changeLog_link-03 changeLog_link-04 changeLog_link-05 changeLog_link-06 changeLog_link-07 changeLog_link-08 changeLog_link-09 changeLog_link-10 changeLog_link-11 changeLog_link-12 changeLog_link-13 changeLog_link-14 changeLog_link-15 changeLog_link-16 changeLog_link-17 changeLog_link-18
     2019-10-19 19:42:25   UNMATCHED_READINGS
     2019-10-19 19:42:25   changeLog_link-01 https://www.eq-3.de/downloads/software/firmware/changelog_HM-ES-TX-WM_update_V2_2_190619_1.txt
     2019-10-19 19:42:25   changeLog_link-02 https://www.eq-3.de/downloads/software/firmware/changelog_hm-mod-re-8_update_v1_2_150911.txt
     2019-10-19 19:42:25   changeLog_link-03 https://www.eq-3.de/downloads/software/firmware/changelog_hm_dis_ep_wm55_update_v1_2_170129.txt
     2019-10-19 19:42:25   changeLog_link-04 https://www.eq-3.de/downloads/software/firmware/changelog_hm-lc-bl1pbu-fm_update_v2_11_1_161212.txt
     2019-10-19 19:42:25   changeLog_link-05 https://www.eq-3.de/downloads/software/firmware/changelog_hm-es-pmsw1-pl-dn-r1_update_v2_5_0009_150217.txt
     2019-10-19 19:42:25   changeLog_link-06 https://www.eq-3.de/downloads/software/firmware/changelog_hm-sen-mdir-wm55_update_v1_2_0_160825.txt
     2019-10-19 19:42:25   changeLog_link-07 https://www.eq-3.de/downloads/software/firmware/changelog_hm-es-tx-wm_update_v1_2_160628.txt
     2019-10-19 19:42:25   changeLog_link-08 https://www.eq-3.de/downloads/software/firmware/changelog_hm-ou-cfm-tw_update_v1_3_160620.txt
     2019-10-19 19:42:25   changeLog_link-09 https://www.eq-3.de/downloads/software/firmware/changelog_hm-lc-dim1t-pl-3_update_v2_9_0005_160113.txt
     2019-10-19 19:42:25   changeLog_link-10 https://www.eq-3.de/downloads/software/firmware/changelog_hm-lc-dim1l-pl-3_update_v2_9_0007_160113.txt
     2019-10-19 19:42:25   changeLog_link-11 https://www.eq-3.de/downloads/software/firmware/changelog_hm-lc-dim1tpbu-fm_update_v2_9_0005_160113.txt
     2019-10-19 19:42:25   changeLog_link-12 https://www.eq-3.de/downloads/software/firmware/changelog_hm-lc-dim1pwm-cv_update_v2_9_0005_160113g.txt
     2019-10-19 19:42:25   changeLog_link-13 https://www.eq-3.de/downloads/software/firmware/changelog_hm_tc_it_wm_w_eu_update_v1_3_002_150827.txt
     2019-10-19 19:42:25   changeLog_link-14 https://www.eq-3.de/downloads/software/firmware/changelog_hm-lc-sw1pbu-fm.txt
     2019-10-19 19:42:25   changeLog_link-15 none
     2019-10-19 19:42:25   changeLog_link-16 none
     2019-10-19 19:42:25   changeLog_link-17 none
     2019-10-19 19:42:25   changeLog_link-18 none
     2019-10-19 19:42:25   fw_link-01      https://www.eq-3.de/downloads/software/firmware/HM-ES-TX-WM_update_V2_2_190619_1.tgz
     2019-10-19 19:42:25   fw_link-02      https://www.eq-3.de/downloads/software/firmware/hm-mod-re-8_update_v1_2_150911.tgz
     2019-10-19 19:42:25   fw_link-03      https://www.eq-3.de/downloads/software/firmware/hm_dis_ep_wm55_update_v1_2_170129.tgz
     2019-10-19 19:42:25   fw_link-04      https://www.eq-3.de/downloads/software/firmware/hm-lc-bl1pbu-fm_update_v2_11_1_161212.tgz
     2019-10-19 19:42:25   fw_link-05      https://www.eq-3.de/downloads/software/firmware/hm-es-pmsw1-pl-dn-r1_update_v2_5_0009_150217.tgz
     2019-10-19 19:42:25   fw_link-06      https://www.eq-3.de/downloads/software/firmware/hm-sen-mdir-wm55_update_v1_2_0_160825.tgz
     2019-10-19 19:42:25   fw_link-07      https://www.eq-3.de/downloads/software/firmware/hm-es-tx-wm_update_v1_2_160628.tgz
     2019-10-19 19:42:25   fw_link-08      https://www.eq-3.de/downloads/software/firmware/hm-ou-cfm-tw_update_v1_3_160620.tgz
     2019-10-19 19:42:25   fw_link-09      https://www.eq-3.de/downloads/software/firmware/hm-lc-dim1t-pl-3_update_v2_9_0005_150730.tar.gz
     2019-10-19 19:42:25   fw_link-10      https://www.eq-3.de/downloads/software/firmware/hm-lc-dim1l-pl-3_update_v2_9_0007_150803.tar.gz
     2019-10-19 19:42:25   fw_link-11      https://www.eq-3.de/downloads/software/firmware/hm-lc-dim1tpbu-fm_update_v2_9_0005_150730.tar.gz
     2019-10-19 19:42:25   fw_link-12      https://www.eq-3.de/downloads/software/firmware/hm-lc-dim1pwm-cv_update_v2_9_0005_150730.tar.gz
     2019-10-19 19:42:25   fw_link-13      https://www.eq-3.de/downloads/software/firmware/hm_tc_it_wm_w_eu_update_v1_3_002_150827.tgz
     2019-10-19 19:42:25   fw_link-14      https://www.eq-3.de/downloads/software/firmware/hm-lc-sw1pbu-fm_update_v2_8_2_150713.tgz
     2019-10-19 19:42:25   fw_link-15      https://www.eq-3.de/downloads/software/firmware/hm-sen-mdir-wm55_update_v1_1_2_150413.tgz
     2019-10-19 19:42:25   fw_link-16      https://www.eq-3.de/downloads/software/firmware/hm_cc_rt_dn_update_v1_4_001_141020.tgz
     2019-10-19 19:42:25   fw_link-17      https://www.eq-3.de/downloads/software/firmware/hm-sen-rd-o_update_v1_4_003_130930.tgz
     2019-10-19 19:42:25   fw_link-18      https://www.eq-3.de/downloads/software/firmware/hm-lc-bl1pbu-fm_update_v2_3_0002_131204.tgz
     2019-10-19 19:42:25   newFwForDevices no fw-updates needed!
   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:
       changeLog_link-01 reading
       changeLog_link-02 reading
       changeLog_link-03 reading
       changeLog_link-04 reading
       changeLog_link-05 reading
       changeLog_link-06 reading
       changeLog_link-07 reading
       changeLog_link-08 reading
       changeLog_link-09 reading
       changeLog_link-10 reading
       changeLog_link-11 reading
       changeLog_link-12 reading
       changeLog_link-13 reading
       changeLog_link-14 reading
       changeLog_link-15 reading
       changeLog_link-16 reading
       changeLog_link-17 reading
       changeLog_link-18 reading
       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
     readingNum:
       changeLog_link-01 02
       changeLog_link-02 02
       changeLog_link-03 02
       changeLog_link-04 02
       changeLog_link-05 02
       changeLog_link-06 02
       changeLog_link-07 02
       changeLog_link-08 02
       changeLog_link-09 02
       changeLog_link-10 02
       changeLog_link-11 02
       changeLog_link-12 02
       changeLog_link-13 02
       changeLog_link-14 02
       changeLog_link-15 02
       changeLog_link-16 02
       changeLog_link-17 02
       changeLog_link-18 02
       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
     readingOutdated:
     readingSubNum:
       changeLog_link-01 -1
       changeLog_link-02 -2
       changeLog_link-03 -3
       changeLog_link-04 -4
       changeLog_link-05 -5
       changeLog_link-06 -6
       changeLog_link-07 -7
       changeLog_link-08 -8
       changeLog_link-09 -9
       changeLog_link-10 -10
       changeLog_link-11 -11
       changeLog_link-12 -12
       changeLog_link-13 -13
       changeLog_link-14 -14
       changeLog_link-15 -15
       changeLog_link-16 -16
       changeLog_link-17 -17
       changeLog_link-18 -18
       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
     requestReadings:
       update:
         changeLog_link-01 reading 02-1
         changeLog_link-02 reading 02-2
         changeLog_link-03 reading 02-3
         changeLog_link-04 reading 02-4
         changeLog_link-05 reading 02-5
         changeLog_link-06 reading 02-6
         changeLog_link-07 reading 02-7
         changeLog_link-08 reading 02-8
         changeLog_link-09 reading 02-9
         changeLog_link-10 reading 02-10
         changeLog_link-11 reading 02-11
         changeLog_link-12 reading 02-12
         changeLog_link-13 reading 02-13
         changeLog_link-14 reading 02-14
         changeLog_link-15 reading 02-15
         changeLog_link-16 reading 02-16
         changeLog_link-17 reading 02-17
         changeLog_link-18 reading 02-18
         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
   sslargs:
Attributes:
   alias      eQ3
   alignTime  00:45
   enableControlSet 1
   event-on-change-reading .*
   event-on-update-reading LAST_ERROR,MATCHED_READINGS
   eventMap   reread:Neuanfrage
   group      .Firmware Updates
   httpVersion 1.1
   model      CUL_HM_firmware_update_downloader
   reading01AutoNumLen 2
   reading01Format https://www.eq-3.de%s
   reading01Name fw_link
   reading01RegOpt gi
   reading01Regex <a.href="(\/downloads\/software\/firmware\/hm[^"]+)
   reading02AutoNumLen 2
   reading02Name changeLog_link
   reading02OExpr $val=~m/(\/downloads\/software\/firmware\/[^"]+)/?"https://www.eq-3.de".$1:"none"
   reading02RegOpt gis
   reading02Regex (.{300})<a.href="\/downloads\/software\/firmware\/hm[^"]+
   readingMaxAge 10
   readingMaxAgeReplacementMode delete
   requestData.* suchbegriff=&quelle=29&suchkategorie=3&themenbereich=1
   room       _HM
   showError  1
   showMatched 1
   stateFormat {   my $ret ="";;
    my $lastCheck = ReadingsTimestamp($name,"MATCHED_READINGS","???");;
    $ret .= '<div style="text-align:left">';;
    $ret .= '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 .= '| <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_fw,$nfw,$date) = $devStr =~ m/^([^\s]+)\s\(([^\s]+)\s\|\sfw_(\d+\.\d+)\s=>\sfw(\d\d)_([\d\.]+)\s\|\s([^\)]+)\)$/;;
        my $fw_link = ReadingsVal($name,"fw_link-".$idx_fw,"???");;
        my $cl_link = ReadingsVal($name,"changeLog_link-".$idx_fw,"???");;
        $ret .= '| <b><a href="/fhem?detail='.$dev.'">';;
        $ret .= sprintf("%-23s",$dev);;
        $ret .= '</a> | ';;
        $ret .= '<b'.(($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> | ';;
        $ret .= '<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> | ';;
        $ret .= '<a title="download firmware file" href="'.$fw_link.'">';;
        $ret .= '<b style="color:red">';;
        $ret .= sprintf("%6s",$nfw);;
        $ret .= '</b></a> | <b>';;
        $ret .= '<a title="open changeLog file" href="'.$cl_link.'"><b style="color:red">' if($cl_link ne "none");;
        $ret .= sprintf("%-10s",$date);;
        $ret .= '</b></a>' if($cl_link ne "none");;
        $ret .= " |<br>";;
      }
    }
    $ret .= '</pre></div>';;
  return $ret;;
}
   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_v([\d_]+)_(\d\d)(\d\d)(\d\d)/i;;
      $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;;
}
   userattr   enableControlSet event-on-change-reading event-on-update-reading reading01AutoNumLen reading01Format reading01Name reading01RegOpt reading01RegOpt:s,i,g reading01Regex reading02AutoNumLen reading02Name reading02OExpr reading02RegOpt reading02Regex readingMaxAge readingMaxAgeReplacementMode readingMaxAgeReplacementMode:text,expression,delete readingMaxAgeReplacementMode:text,reading,internal,expression,delete requestData.* showError showMatched stateFormat userReadings webCmd
   verbose    0
   webCmd     reread


Wo muss ich noch ansetzten damit alle Links geprüft werden und die Updates auch ausgeführt werden?
Titel: Antw:eq3 firmware check funkioniert nicht mehr
Beitrag von: MadMax-FHEM am 19 Oktober 2019, 20:48:40
Es gibt doch mittlerweile ein Template für HTTPMOD: https://forum.fhem.de/index.php/topic,78501.msg974716.html#msg974716

Da sollte myUtils etc. unnötig sein...

Gruß, Joachim
Titel: Antw:eq3 firmware check funkioniert nicht mehr
Beitrag von: Otto123 am 19 Oktober 2019, 21:11:49
Zitat von: Burny4600 am 19 Oktober 2019, 20:39:38

Eine Verständnisfrage habe ich zum Eintrag in der 99_myUtils.pm der userReadings und stateFormat Definition laut Wiki.
....
Warum definiert man diese in der 99_myUtils.pm wenn sie ohnehin wieder in die userReadings und stateFormat ausgelagert werden.
Ev. missverstehst Du da was? Im Wiki sind zwei Varianten dargestellt: Entweder macht man einen Aufruf in die 99_myUtils oder man kopiert den kompletten Code in die Attribute. Je nach dem wie man es schöner findet.

Und ein Firmware Update macht dieses Anzeige Tool doch nicht? Es zeigt Dir an welche gemacht werden könnten.
Titel: Antw:eq3 firmware check funkioniert nicht mehr
Beitrag von: Burny4600 am 19 Oktober 2019, 21:19:37
Da habe ich wirklich einiges falsch verstanden.
Nur das Tool zeigt mir keine Updates an.
Das sollte es ja auf jedenfall machen.
Titel: Antw:eq3 firmware check funkioniert nicht mehr
Beitrag von: Otto123 am 19 Oktober 2019, 21:36:22
Hallo Chris,

gib mal bitte ein Beispiel. Ich kann auf Anhieb keines Erkennen, da ich nicht alle Deine Geräte hab.

Gruß Otto
Titel: Antw:eq3 firmware check funkioniert nicht mehr
Beitrag von: frank am 19 Oktober 2019, 21:50:21
die links der fw für rt (1.5) und tc (1.4) habe ich dir in deinem anderen thread extra rausgesucht, da sie nicht bei eq3 zu finden sind.
Titel: Antw:eq3 firmware check funkioniert nicht mehr
Beitrag von: Burny4600 am 20 Oktober 2019, 14:09:04
@frank
Danke für die Links. Ich werde die Updates bei den Geräten testen ob sich eine Verbesserung ergibt.

@Otto
Das im Wiki zwei unterschiedliche Konfigurationen gibt habe ich verstanden.
Die erste Kurzfassung mit der Konfiguration
define eq3test HTTPMOD https://www.eq-3.de/ajax/downloads/downloads_eq3.php 604800
und anschließendem
set eq3test attrTemplate CUL_HM_firmware_update_downloader
vervollständigt die Attribute
list eq3test
Internals:
   BUSY       0
   CFGFN     
   DEF        https://www.eq-3.de/ajax/downloads/downloads_eq3.php 604800
   FUUID      5dac4614-f33f-21bc-ca77-26bc71a8ded742cb
   Interval   604800
   LASTSEND   1571571222.46031
   MainURL    https://www.eq-3.de/ajax/downloads/downloads_eq3.php
   MaxAgeEnabled 1
   ModuleVersion 3.5.9 - 13.2.2019
   NAME       eq3test
   NOTIFYDEV  global
   NR         11766
   NTFY_ORDER 50-eq3test
   STATE      <div style="text-align:left">last <a title="eq3-downloads" href="http://www.eq-3.de/service/downloads.html">homematic</a>-fw-check => ???<br><br><pre>| device                  | model                   | cur_fw | new_fw | release    |<br>------------------------------------------------------------------------------------<br>| <b style="color:red">error => no or wrong data from eq3-server!                                      </b> |</pre></div>
   TRIGGERTIME 1572129900
   TRIGGERTIME_FMT 2019-10-27 00:45:00
   TYPE       HTTPMOD
   TimeAlign  1571525100
   TimeAlignFmt 2019-10-20 00:45:00
   addr       https://www.eq-3.de:443
   auth       0
   code       200
   compress   1
   conn       
   data       
   displayurl https://www.eq-3.de/ajax/downloads/downloads_eq3.php
   header     
   host       www.eq-3.de
   httpheader HTTP/1.1 200 OK
Date: Sun, 20 Oct 2019 11:33:43 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 1
   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:
   REQUEST:
     data       
     header     
     ignoreredirects 0
     retryCount 0
     type       update
     url        https://www.eq-3.de/ajax/downloads/downloads_eq3.php
     value      0
   sslargs:
Attributes:
   alignTime  00:45
   enableControlSet 1
   event-on-change-reading .*
   event-on-update-reading LAST_ERROR,MATCHED_READINGS
   httpVersion 1.1
   model      CUL_HM_firmware_update_downloader
   reading01AutoNumLen 2
   reading01Format https://www.eq-3.de%s
   reading01Name fw_link
   reading01RegOpt gi
   reading01Regex <a.href="(\/downloads\/software\/firmware\/hm[^"]+)
   reading02AutoNumLen 2
   reading02Name changeLog_link
   reading02OExpr $val=~m/(\/downloads\/software\/firmware\/[^"]+)/?"https://www.eq-3.de".$1:"none"
   reading02RegOpt gis
   reading02Regex (.{300})<a.href="\/downloads\/software\/firmware\/hm[^"]+
   readingMaxAge 10
   readingMaxAgeReplacementMode delete
   requestData.* suchbegriff=&quelle=29&suchkategorie=3&themenbereich=1
   room       CUL_HM
   showError  1
   showMatched 1
   stateFormat {   my $ret ="";;
    my $lastCheck = ReadingsTimestamp($name,"MATCHED_READINGS","???");;
    $ret .= '<div style="text-align:left">';;
    $ret .= '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 .= '| <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_fw,$nfw,$date) = $devStr =~ m/^([^\s]+)\s\(([^\s]+)\s\|\sfw_(\d+\.\d+)\s=>\sfw(\d\d)_([\d\.]+)\s\|\s([^\)]+)\)$/;;
        my $fw_link = ReadingsVal($name,"fw_link-".$idx_fw,"???");;
        my $cl_link = ReadingsVal($name,"changeLog_link-".$idx_fw,"???");;
        $ret .= '| <b><a href="/fhem?detail='.$dev.'">';;
        $ret .= sprintf("%-23s",$dev);;
        $ret .= '</a> | ';;
        $ret .= '<b'.(($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> | ';;
        $ret .= '<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> | ';;
        $ret .= '<a title="download firmware file" href="'.$fw_link.'">';;
        $ret .= '<b style="color:red">';;
        $ret .= sprintf("%6s",$nfw);;
        $ret .= '</b></a> | <b>';;
        $ret .= '<a title="open changeLog file" href="'.$cl_link.'"><b style="color:red">' if($cl_link ne "none");;
        $ret .= sprintf("%-10s",$date);;
        $ret .= '</b></a>' if($cl_link ne "none");;
        $ret .= " |<br>";;
      }
    }
    $ret .= '</pre></div>';;
  return $ret;;
}
   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_v([\d_]+)_(\d\d)(\d\d)(\d\d)/i;;
      $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;;
}
   userattr   enableControlSet event-on-change-reading event-on-update-reading reading01AutoNumLen reading01Format reading01Name reading01RegOpt reading01RegOpt:s,i,g reading01Regex reading02AutoNumLen reading02Name reading02OExpr reading02RegOpt reading02Regex readingMaxAge readingMaxAgeReplacementMode readingMaxAgeReplacementMode:text,expression,delete readingMaxAgeReplacementMode:text,reading,internal,expression,delete requestData.* showError showMatched stateFormat userReadings webCmd
   webCmd     reread

Mir ist aufgefallen, dass die Commandref Anleitung zu
set eq3 attrTemplate CUL_HM_firmware_update_downloader
als Information nicht korrekt ist.

Bei der Variante mit der manuellen Konfiguration.
list eQ3
Internals:
   BUSY       0
   CFGFN      /media/hdd/fhem/mycfg/HM/hm_rasp01.cfg
   DEF        https://www.eq-3.de/ajax/downloads/downloads_eq3.php 604800
   FUUID      5c45b04f-f33f-f4d2-e8ac-6e95ed4c33510da6
   Interval   604800
   LASTSEND   1571572157.87573
   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         4212
   NTFY_ORDER 50-eQ3
   STATE      <div style="text-align:left">last <a title="eq3-downloads" href="https://www.eq-3.de/service/downloads.html">homematic</a>-fw-check => 2019-10-20 13:49:20<br><br><pre>| device                  | model                   | cur_fw | new_fw | release    |<br>------------------------------------------------------------------------------------<br>| <b style="color:green">no fw-updates needed!                                                           </b> |</pre></div>
   TRIGGERTIME 1572129900
   TRIGGERTIME_FMT 2019-10-27 00:45:00
   TYPE       HTTPMOD
   TimeAlign  1571525100
   TimeAlignFmt 2019-10-20 00:45:00
   addr       https://www.eq-3.de:443
   auth       0
   buf       
   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: Sun, 20 Oct 2019 11:49:19 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
Transfer-Encoding: chunked
Content-Type: text/html; charset=UTF-8
   httpversion 1.1
   hu_blocking 0
   hu_filecount 4
   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-10-20 13:23:12   LAST_ERROR      read from https://www.eq-3.de:443 timed out
     2019-10-20 13:49:20   LAST_REQUEST    update
     2019-10-20 13:49:20   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 changeLog_link-01 changeLog_link-02 changeLog_link-03 changeLog_link-04 changeLog_link-05 changeLog_link-06 changeLog_link-07 changeLog_link-08 changeLog_link-09 changeLog_link-10 changeLog_link-11 changeLog_link-12 changeLog_link-13 changeLog_link-14 changeLog_link-15 changeLog_link-16 changeLog_link-17 changeLog_link-18
     2019-10-20 13:49:20   UNMATCHED_READINGS
     2019-10-20 13:49:20   changeLog_link-01 https://www.eq-3.de/downloads/software/firmware/changelog_HM-ES-TX-WM_update_V2_2_190619_1.txt
     2019-10-20 13:49:20   changeLog_link-02 https://www.eq-3.de/downloads/software/firmware/changelog_hm-mod-re-8_update_v1_2_150911.txt
     2019-10-20 13:49:20   changeLog_link-03 https://www.eq-3.de/downloads/software/firmware/changelog_hm_dis_ep_wm55_update_v1_2_170129.txt
     2019-10-20 13:49:20   changeLog_link-04 https://www.eq-3.de/downloads/software/firmware/changelog_hm-lc-bl1pbu-fm_update_v2_11_1_161212.txt
     2019-10-20 13:49:20   changeLog_link-05 https://www.eq-3.de/downloads/software/firmware/changelog_hm-es-pmsw1-pl-dn-r1_update_v2_5_0009_150217.txt
     2019-10-20 13:49:20   changeLog_link-06 https://www.eq-3.de/downloads/software/firmware/changelog_hm-sen-mdir-wm55_update_v1_2_0_160825.txt
     2019-10-20 13:49:20   changeLog_link-07 https://www.eq-3.de/downloads/software/firmware/changelog_hm-es-tx-wm_update_v1_2_160628.txt
     2019-10-20 13:49:20   changeLog_link-08 https://www.eq-3.de/downloads/software/firmware/changelog_hm-ou-cfm-tw_update_v1_3_160620.txt
     2019-10-20 13:49:20   changeLog_link-09 https://www.eq-3.de/downloads/software/firmware/changelog_hm-lc-dim1t-pl-3_update_v2_9_0005_160113.txt
     2019-10-20 13:49:20   changeLog_link-10 https://www.eq-3.de/downloads/software/firmware/changelog_hm-lc-dim1l-pl-3_update_v2_9_0007_160113.txt
     2019-10-20 13:49:20   changeLog_link-11 https://www.eq-3.de/downloads/software/firmware/changelog_hm-lc-dim1tpbu-fm_update_v2_9_0005_160113.txt
     2019-10-20 13:49:20   changeLog_link-12 https://www.eq-3.de/downloads/software/firmware/changelog_hm-lc-dim1pwm-cv_update_v2_9_0005_160113g.txt
     2019-10-20 13:49:20   changeLog_link-13 https://www.eq-3.de/downloads/software/firmware/changelog_hm_tc_it_wm_w_eu_update_v1_3_002_150827.txt
     2019-10-20 13:49:20   changeLog_link-14 https://www.eq-3.de/downloads/software/firmware/changelog_hm-lc-sw1pbu-fm.txt
     2019-10-20 13:49:20   changeLog_link-15 none
     2019-10-20 13:49:20   changeLog_link-16 none
     2019-10-20 13:49:20   changeLog_link-17 none
     2019-10-20 13:49:20   changeLog_link-18 none
     2019-10-20 13:49:20   fw_link-01      https://www.eq-3.de/downloads/software/firmware/HM-ES-TX-WM_update_V2_2_190619_1.tgz
     2019-10-20 13:49:20   fw_link-02      https://www.eq-3.de/downloads/software/firmware/hm-mod-re-8_update_v1_2_150911.tgz
     2019-10-20 13:49:20   fw_link-03      https://www.eq-3.de/downloads/software/firmware/hm_dis_ep_wm55_update_v1_2_170129.tgz
     2019-10-20 13:49:20   fw_link-04      https://www.eq-3.de/downloads/software/firmware/hm-lc-bl1pbu-fm_update_v2_11_1_161212.tgz
     2019-10-20 13:49:20   fw_link-05      https://www.eq-3.de/downloads/software/firmware/hm-es-pmsw1-pl-dn-r1_update_v2_5_0009_150217.tgz
     2019-10-20 13:49:20   fw_link-06      https://www.eq-3.de/downloads/software/firmware/hm-sen-mdir-wm55_update_v1_2_0_160825.tgz
     2019-10-20 13:49:20   fw_link-07      https://www.eq-3.de/downloads/software/firmware/hm-es-tx-wm_update_v1_2_160628.tgz
     2019-10-20 13:49:20   fw_link-08      https://www.eq-3.de/downloads/software/firmware/hm-ou-cfm-tw_update_v1_3_160620.tgz
     2019-10-20 13:49:20   fw_link-09      https://www.eq-3.de/downloads/software/firmware/hm-lc-dim1t-pl-3_update_v2_9_0005_150730.tar.gz
     2019-10-20 13:49:20   fw_link-10      https://www.eq-3.de/downloads/software/firmware/hm-lc-dim1l-pl-3_update_v2_9_0007_150803.tar.gz
     2019-10-20 13:49:20   fw_link-11      https://www.eq-3.de/downloads/software/firmware/hm-lc-dim1tpbu-fm_update_v2_9_0005_150730.tar.gz
     2019-10-20 13:49:20   fw_link-12      https://www.eq-3.de/downloads/software/firmware/hm-lc-dim1pwm-cv_update_v2_9_0005_150730.tar.gz
     2019-10-20 13:49:20   fw_link-13      https://www.eq-3.de/downloads/software/firmware/hm_tc_it_wm_w_eu_update_v1_3_002_150827.tgz
     2019-10-20 13:49:20   fw_link-14      https://www.eq-3.de/downloads/software/firmware/hm-lc-sw1pbu-fm_update_v2_8_2_150713.tgz
     2019-10-20 13:49:20   fw_link-15      https://www.eq-3.de/downloads/software/firmware/hm-sen-mdir-wm55_update_v1_1_2_150413.tgz
     2019-10-20 13:49:20   fw_link-16      https://www.eq-3.de/downloads/software/firmware/hm_cc_rt_dn_update_v1_4_001_141020.tgz
     2019-10-20 13:49:20   fw_link-17      https://www.eq-3.de/downloads/software/firmware/hm-sen-rd-o_update_v1_4_003_130930.tgz
     2019-10-20 13:49:20   fw_link-18      https://www.eq-3.de/downloads/software/firmware/hm-lc-bl1pbu-fm_update_v2_3_0002_131204.tgz
     2019-10-20 13:49:20   newFwForDevices no fw-updates needed!
   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:
       changeLog_link-01 reading
       changeLog_link-02 reading
       changeLog_link-03 reading
       changeLog_link-04 reading
       changeLog_link-05 reading
       changeLog_link-06 reading
       changeLog_link-07 reading
       changeLog_link-08 reading
       changeLog_link-09 reading
       changeLog_link-10 reading
       changeLog_link-11 reading
       changeLog_link-12 reading
       changeLog_link-13 reading
       changeLog_link-14 reading
       changeLog_link-15 reading
       changeLog_link-16 reading
       changeLog_link-17 reading
       changeLog_link-18 reading
       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
     readingNum:
       changeLog_link-01 02
       changeLog_link-02 02
       changeLog_link-03 02
       changeLog_link-04 02
       changeLog_link-05 02
       changeLog_link-06 02
       changeLog_link-07 02
       changeLog_link-08 02
       changeLog_link-09 02
       changeLog_link-10 02
       changeLog_link-11 02
       changeLog_link-12 02
       changeLog_link-13 02
       changeLog_link-14 02
       changeLog_link-15 02
       changeLog_link-16 02
       changeLog_link-17 02
       changeLog_link-18 02
       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
     readingOutdated:
     readingSubNum:
       changeLog_link-01 -1
       changeLog_link-02 -2
       changeLog_link-03 -3
       changeLog_link-04 -4
       changeLog_link-05 -5
       changeLog_link-06 -6
       changeLog_link-07 -7
       changeLog_link-08 -8
       changeLog_link-09 -9
       changeLog_link-10 -10
       changeLog_link-11 -11
       changeLog_link-12 -12
       changeLog_link-13 -13
       changeLog_link-14 -14
       changeLog_link-15 -15
       changeLog_link-16 -16
       changeLog_link-17 -17
       changeLog_link-18 -18
       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
     requestReadings:
       update:
         changeLog_link-01 reading 02-1
         changeLog_link-02 reading 02-2
         changeLog_link-03 reading 02-3
         changeLog_link-04 reading 02-4
         changeLog_link-05 reading 02-5
         changeLog_link-06 reading 02-6
         changeLog_link-07 reading 02-7
         changeLog_link-08 reading 02-8
         changeLog_link-09 reading 02-9
         changeLog_link-10 reading 02-10
         changeLog_link-11 reading 02-11
         changeLog_link-12 reading 02-12
         changeLog_link-13 reading 02-13
         changeLog_link-14 reading 02-14
         changeLog_link-15 reading 02-15
         changeLog_link-16 reading 02-16
         changeLog_link-17 reading 02-17
         changeLog_link-18 reading 02-18
         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
   sslargs:
Attributes:
   alias      eQ3
   alignTime  00:45
   enableControlSet 1
   event-on-change-reading .*
   event-on-update-reading LAST_ERROR,MATCHED_READINGS
   eventMap   reread:Neuanfrage
   group      .Firmware Updates
   httpVersion 1.1
   model      CUL_HM_firmware_update_downloader
   reading01AutoNumLen 2
   reading01Format https://www.eq-3.de%s
   reading01Name fw_link
   reading01RegOpt gi
   reading01Regex <a.href="(\/downloads\/software\/firmware\/hm[^"]+)
   reading02AutoNumLen 2
   reading02Name changeLog_link
   reading02OExpr $val=~m/(\/downloads\/software\/firmware\/[^"]+)/?"https://www.eq-3.de".$1:"none"
   reading02RegOpt gis
   reading02Regex (.{300})<a.href="\/downloads\/software\/firmware\/hm[^"]+
   readingMaxAge 10
   readingMaxAgeReplacementMode delete
   requestData.* suchbegriff=&quelle=29&suchkategorie=3&themenbereich=1
   room       CUL_HM,_HM
   showError  1
   showMatched 1
   stateFormat {eq3StateFormat($name)}
   userReadings newFwForDevices:MATCHED_READINGS:.* {eq3Attr($name)}
   userattr   enableControlSet event-on-change-reading event-on-update-reading reading01AutoNumLen reading01Format reading01Name reading01RegOpt reading01RegOpt:s,i,g reading01Regex reading02AutoNumLen reading02Name reading02OExpr reading02RegOpt reading02Regex readingMaxAge readingMaxAgeReplacementMode readingMaxAgeReplacementMode:text,expression,delete readingMaxAgeReplacementMode:text,reading,internal,expression,delete requestData.* showError showMatched stateFormat userReadings webCmd
   verbose    0
   webCmd     reread


Bei beiden Konfiguration gibt es drei Links wo meine Gerätetypen vorhanden sind.
HM-OU-CFM-TW
HM-LC-SW1PBU-FM
HM-SEN-RD-O

Ich bin davon ausgegangen das zumindest diese drei Typen auch geprüft werden und auch bei dem Prüftool angezeigt werden.
Die restlichen Gerätetypen sind nicht in der Überprüfung vorhanden. Ist halt so.
Wie findet man die eQ3 Firmware die nicht auf der öffentklichen Seite angeführt werden?
Titel: Antw:eq3 firmware check funkioniert nicht mehr
Beitrag von: Otto123 am 20 Oktober 2019, 17:01:32
Danke für den Hinweis, ich habe das im Wiki korrigiert  :D
Titel: Antw:eq3 firmware check funkioniert nicht mehr
Beitrag von: OdfFhem am 08 November 2019, 14:43:03
@Beta-User

Hallo,

unten habe ich eine leicht angepasste template-Version für CUL_HM_firmware_update_downloader bereitgestellt:

Vielleicht finden die Änderungen so oder so ähnlich ihren Weg ins offizielle Update ...

Viele Grüße


#################################
#Show updates for CUL_HM devices, Forum: https://forum.fhem.de/index.php/topic,78501.msg972144.html#msg972144
name:CUL_HM_firmware_update_downloader
filter:TYPE=HTTPMOD
desc: Check eQ3 homepage for available new firmware files; provides also links for direct downloads<br>Define a HTTPMOD device like <br>define eq3 HTTPMOD https://www.eq-3.de/ajax/downloads/downloads_eq3.php 604800<br><a href="https://https://forum.fhem.de/index.php/topic,78501.msg972144.html#msg972144">Source: Forum</a><br><a href="https://wiki.fhem.de/wiki/HomeMatic_Firmware_Update#Basis-Definitionen_f.C3.BCr_Device_eq3">Wiki</a>
order:X_01a
par:WHICHROOM;Actual room of the device; {AttrVal("DEVICE","room","CUL_HM" )}
defmod DEVICE HTTPMOD https://www.eq-3.de/ajax/downloads/downloads_eq3.php 604800
attr DEVICE alignTime 00:45
attr DEVICE enableControlSet 1
attr DEVICE event-on-change-reading .*
attr DEVICE event-on-update-reading LAST_ERROR,MATCHED_READINGS
attr DEVICE httpVersion 1.1
attr DEVICE reading01AutoNumLen 2
attr DEVICE reading01Format https://www.eq-3.de%s
attr DEVICE reading01Name fw_link
attr DEVICE reading01RegOpt gi
attr DEVICE reading01Regex <a.href="(\/downloads\/software\/firmware\/hm[^"]+)
attr DEVICE reading02AutoNumLen 2
attr DEVICE reading02Name changeLog_link
attr DEVICE reading02OExpr $val=~m/(\/downloads\/software\/firmware\/[^"]+)/?"https://www.eq-3.de".$1:"none"
attr DEVICE reading02RegOpt gis
attr DEVICE reading02Regex (.{300})<a.href="\/downloads\/software\/firmware\/hm[^"]+
attr DEVICE readingMaxAge 10
attr DEVICE readingMaxAgeReplacementMode delete
attr DEVICE requestData.* suchbegriff=&quelle=29&suchkategorie=3&themenbereich=1
attr DEVICE room WHICHROOM
attr DEVICE showError 1
attr DEVICE showMatched 1
attr DEVICE stateFormat {   my $ret ="";;\
    my $lastCheck = ReadingsTimestamp($name,"MATCHED_READINGS","???");;\
    $ret .= '<div style="text-align:left">';;\
    $ret .= '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 .= '| <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_fw,$nfw,$date) = $devStr =~ m/^([^\s]+)\s\(([^\s]+)\s\|\sfw_(\d+\.\d+)\s=>\sfw(\d\d)_([\d\.]+)\s\|\s([^\)]+)\)$/;;\
        my $fw_link = ReadingsVal($name,"fw_link-".$idx_fw,"???");;\
        my $cl_link = ReadingsVal($name,"changeLog_link-".$idx_fw,"???");;\
        $ret .= '| <a href="/fhem?detail='.$dev.'"><b>';;\
        $ret .= sprintf("%-23s",$dev);;\
        $ret .= '</b></a> | ';;\
        $ret .= '<b'.(($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> | ';;\
        $ret .= '<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> | ';;\
        $ret .= '<a title="download firmware file" href="'.$fw_link.'"><b style="color:red">';;\
        $ret .= sprintf("%6s",$nfw);;\
        $ret .= '</b></a> | ';;\
        $ret .= (($cl_link ne "none")?'<a title="open changeLog file" href="'.$cl_link.'"><b style="color:black">':'<b style="color:lightgray">');;\
        $ret .= sprintf("%-10s",$date);;\
        $ret .= (($cl_link ne "none")?'</b></a>':'</b>');;\
        $ret .= " |<br>";;\
      }\
    }\
    $ret .= '</pre></div>';;\
  return $ret;;\
}
attr DEVICE 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_v([\d_]+)_(\d\d)(\d\d)(\d\d)/i;;\
      $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 DEVICE webCmd reread
attr DEVICE model CUL_HM_firmware_update_downloader
attr DEVICE userattr reading01AutoNumLen reading01Format reading01Name reading01RegOpt reading01Regex reading02AutoNumLen reading02Name reading02OExpr reading02RegOpt reading02Regex readingMaxAge readingMaxAgeReplacementMode:text,reading,internal,expression,delete
Titel: Antw:eq3 firmware check funkioniert nicht mehr
Beitrag von: MadMax-FHEM am 08 November 2019, 16:21:38
Ich finde das mit den Templates ja grandios!

Vielen Dank dafür!

Allerdings habe ich eine Frage:

wenn es ein Update gibt und ich fhem update...
...wird dann automatisch das neue Template aktiv/aktiviert (also klar ich muss es mind. schon einmal wo verwendet haben ;)  )?

Oder was muss ich tun, damit ich die Neuerung(en) des Templates nach update "erhalte"!?
(und wenn ich manuell was tun muss: wie bekomme ich mit, dass es für eines von mir verwendeter Templates ein Update gibt?)

Danke, Joachim
Titel: Antw:eq3 firmware check funkioniert nicht mehr
Beitrag von: Beta-User am 08 November 2019, 16:50:13
Danke für die Rückmeldung zum Thema attrTemplate :) .

Finde auch super, was Rudi da als Framework bereitgestellt hat!

ABER: Es funktioniert nichts automatisch, attrTemplate wird nur auf User-Initiative aktiv (es ist ein Eingriff in die Konfiguration! Attribute -  dafür ist es eigentlich gemacht - gehören qua Definition dem user...). Und ich habe nicht bei allen template-Änderungen zu großen Wert auf Rückwärtskompabilität gelegt (in der Regel ist das aber auch kein Problem, das betraf tendenziell die Anfangszeit bei den Tasmotas, jetzt evtl. mal die zigbee2mqtt-Geschichten, weil ich am Überlegne bin, ob z.B. beim contact-Sensor nicht "contact" zu "state" werden sollte).

Um updates zu verfolgen, hilft (zumindest derzeit) nur der Blick in das Changelog des betreffenden template-files, Versionsangaben usw. werden derzeit nicht gepflegt und können auch nicht ausgewertet werden.

"An sich" sollte es auch so sein, dass das Device nach Anwendung des templates dann so ist, wie du dir das vorstellst (bzw. du dann auf der Basis weitermachst), also gar kein Bedarf besteht, das nochmal anzufassen...



@OdfFhem: Thx, werde das testen, sieht nach einem sinnvollen Vorschlag aus. Wenn jemand anderes nach Test sein OK gibt, kommt's auch gerne direkt in's svn.



(Btw. @all: ich bin nach wie vor nicht der Regex- oder HTTPMOD-Experte, wenn also jemand da (v.a. für HTTPMOD mit) als Maintainer einspringen will: sehr gerne! Ich habe bisher auch eher "kuratiert" als "developer" gespielt, vielleicht abgesehen von ein paar Anregungen, die Rudi dann in Code umgewandelt hat... ::) . Das ganze ist also kein Hexenwerk, und man kann eigentlich auch keine laufende Installation ohne weiteres mit templates "zerschießen", s.o.. Höchstens mal eben nicht funktionierenden Konfigurationscode ausliefern, was mir schon gelegentlich untergekommen ist  ::) ::) ::) ...)
Titel: Antw:eq3 firmware check funkioniert nicht mehr
Beitrag von: Beta-User am 08 November 2019, 19:50:33
update ist im svn.
Titel: Antw:eq3 firmware check funkioniert nicht mehr
Beitrag von: Kai-Alfonso am 11 November 2019, 09:48:04
Guten Morgen,

ich bin zufällig über diesen Thread gestolpert. Ich habe irgendwann mal das alte Beispiel im Wiki probiert, da kam aber (wie hier am Anfang geschrieben) eine Fehlermeldung. Hab das Device dann gelöscht und nicht mehr drüber nachgedacht. Hab dann, nachdem ich den Thread hier gelesen habe, noch mal einen neuen Versuch gestartet mit

define eq3 HTTPMOD https://www.eq-3.de/ajax/downloads/downloads_eq3.php 604800

und dann laut Wiki

set eq3 attrTemplate X_01a_CUL_HM_firmware_update_downloader

Wenn ich das richtig verstehe im Wiki sind die Skripts in der myUtils nicht mehr nötig?

Auf jeden Fall meldet jetzt das Device keinen Fehler meld, sondern

no fw-updates needed!

Ich hab jetzt nicht so viele verschiedene original HM Geräte, vor allem aber die HM-LC-BI1BPU-FM.

Laut Device-Reading habe ich die D-firmware2.11 auf den Aktoren, laut eq3 Seite gibt es aber schon eine 2.3 FW

Habe ich da noch was vergessen, das er die neue FW nicht erkennt?
Titel: Antw:eq3 firmware check funkioniert nicht mehr
Beitrag von: Beta-User am 11 November 2019, 10:15:42
Zitat von: Kai-Alfonso am 11 November 2019, 09:48:04
Laut Device-Reading habe ich die D-firmware2.11 auf den Aktoren, laut eq3 Seite gibt es aber schon eine 2.3 FW

Habe ich da noch was vergessen, das er die neue FW nicht erkennt?
Moin. MMn ist alles bestens, oder ist 2.11 nicht größer wie 2.3? (Kann sein, dass es auf der eQ3-Seite mehrere Firmwares gibt, aber schau ggf. auch mal das 2.11-er changelog an.)
Titel: Antw:eq3 firmware check funkioniert nicht mehr
Beitrag von: Otto123 am 11 November 2019, 12:22:18
Alles gut so. 2.11 ist die Letzte :) hab ich auch so.
Titel: Antw:eq3 firmware check funkioniert nicht mehr
Beitrag von: Kai-Alfonso am 11 November 2019, 12:30:35
Zitat von: Beta-User am 11 November 2019, 10:15:42
Moin. MMn ist alles bestens, oder ist 2.11 nicht größer wie 2.3? (Kann sein, dass es auf der eQ3-Seite mehrere Firmwares gibt, aber schau ggf. auch mal das 2.11-er changelog an.)

oh man - ja klar, 2.11 ist natürlich höher als 2.3. Hatte da ein Knoten im Hirn.


Bitte weitergehen, hier gibt es nix zu sehen  8) 8) 8)
Titel: Antw:eq3 firmware check funkioniert nicht mehr
Beitrag von: Knallkopp_02 am 28 November 2019, 21:40:06
Kann es sein, das schon wieder etwas geändert worden ist.

Bekomme folgende Meldung



error => no or wrong data from eq3-server!



Gruß Knallkopp_02
Titel: Antw:eq3 firmware check funkioniert nicht mehr
Beitrag von: frank am 28 November 2019, 21:59:43
wahrscheinlich ist dein httpmod modul zu neu und hat gerade schwierigkeiten mit den regex.
schau mal nach warnings in fhem.log.
ich habe heute welche gesehen.

die anzeige im device habe ich jetzt erst gesehen. funktioniert ja gut.  :)
Titel: Antw:eq3 firmware check funkioniert nicht mehr
Beitrag von: frank am 28 November 2019, 23:45:32
bei mir funktioniert es mit httpmod (3.5.18 - 20.11.2019) und folgender änderung von 4 attributen (regex optionen i und s direkt in die regex einbauen):

attr eq3 reading01RegOpt g
attr eq3 reading01Regex (?i)<a.href="(\/downloads\/software\/firmware\/hm[^"]+)
attr eq3 reading02RegOpt g
attr eq3 reading02Regex (?si)(.{300})<a.href="\/downloads\/software\/firmware\/hm[^"]+
Titel: Antw:eq3 firmware check funkioniert nicht mehr
Beitrag von: Beta-User am 29 November 2019, 07:51:26
Thx, ist seit eben auch im svn...
Titel: Antw:eq3 firmware check funkioniert nicht mehr
Beitrag von: Knallkopp_02 am 29 November 2019, 11:02:12
Perfekt
Titel: Antw:eq3 firmware check funkioniert nicht mehr
Beitrag von: Knallkopp_02 am 30 November 2019, 12:46:24
ich bins schon wieder,

hätte da noch eine Frage bezüglich der Anzeige.

Wäre es möglich in der Anzeige trotz nicht vorhandenem Update alle Geräte mit deren Daten anzeigen zu lassen?

Beispiel:


device                  | model                   | cur_fw | new_fw | release
----------------------------------------------------------------------------------
no fw-updates needed!
----------------------------------------------------------------------------------
Liste aller vorhandenen Geräte


Gruß Knallkopp_02
Titel: Antw:eq3 firmware check funkioniert nicht mehr
Beitrag von: yersinia am 30 November 2019, 15:40:19
Quick & Dirty - die if Bedingung im attribut userReadings auskommentieren
attr [HTTPMODNAME] 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_v([\d_]+)_(\d\d)(\d\d)(\d\d)/i;;;;\
      $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;;;;\
}
Titel: Antw:eq3 firmware check funkioniert nicht mehr
Beitrag von: juemuc am 30 November 2019, 20:05:40
Hallo,

das auskommentieren hat bei mir nicht den gewünschten Erfolg gebracht.

Viele Grüße

Jürgen
Titel: Antw:eq3 firmware check funkioniert nicht mehr
Beitrag von: OdfFhem am 01 Dezember 2019, 00:00:54
Das Auskommentieren sollte aber für das gewünschte Ergebnis sorgen; es sei denn, man hat keine passenden HM-Komponenten. Wichtig ist natürlich ein erneutes reread.
Titel: Antw:eq3 firmware check funkioniert nicht mehr
Beitrag von: DeeSPe am 01 Dezember 2019, 10:16:46
Haben eq3 hier wieder etwas an Ihrer Webseite verändert?
Die URL https://www.eq-3.de/ajax/downloads/downloads_eq3.php gibt es nicht mehr, dafür nun https://www.eq-3.de/service/downloads.html.
Mit der neuen URL funktioniert aber der Firmware check nicht mehr.

Gruß
Dan
Titel: Antw:eq3 firmware check funkioniert nicht mehr
Beitrag von: frank am 01 Dezember 2019, 10:49:25
ich denke du bist ziehmlich spät dran. 
ist das nicht schon seit wochen so.  ;)

mit fhem update solltest du über set attrTemplate alles aktuelle  erhalten.
Titel: Antw:eq3 firmware check funkioniert nicht mehr
Beitrag von: Knallkopp_02 am 01 Dezember 2019, 10:56:43
Morgen zusammen,

ich selbst habe grade das attrTemplate neu geladen -> Download der Daten geht.

was für mich aber auch nicht funktioniert ist das auskommentieren des 2. IF wenn man die Liste immer angezeigt haben will wie yersinia geschieben hat.

Gruß Knallkopp_02

[[[EDIT]]] muss mich korregieren, nun wird die Liste angezeigt, nach mehrmaligem neuladen
Titel: Antw:eq3 firmware check funkioniert nicht mehr
Beitrag von: frank am 01 Dezember 2019, 11:04:27
@betauser:
mir ist gerade der gedanke gekommen, dass es ganz nützlich wäre, wenn in der attrTemplate liste in den einträgen die jeweilige revisionsnummer angehängt wäre.
müsste es doch eigentlich für eingecheckte templates geben, oder nicht?
Titel: Antw:eq3 firmware check funkioniert nicht mehr
Beitrag von: Beta-User am 01 Dezember 2019, 13:44:34
Hmm, verstehe grade noch nicht ganz, wie du dir das genau vorstellst. Es ist so, dass es eine revisions-Nummer für das ganze file gibt, aber im Moment sehe ich nicht so recht, wie man die "ans device" bringen könnte (so hatte ich die Anregung verstanden). Dazu bräuchte es wohl noch etwas code im attrTemplate-Modul und einen Ort, um das abzulegen (Attribut wie model). Nach model könnte man es zwar schieben, aber dann wäre jede Änderung ein neues model und damit statistics vermutlich kaum mehr zu gebrauchen.

Die Alternative wäre, jede Änderung am einzelnen Template händisch (z.B. nach model) einzupflegen. (Feiwillige vor..., mir "reicht" es auch so, was für mich an Aufwand mit attrTemplate verbunden ist).

(Anm.: wenn es ist wie hier, dass sich z.B. die URL ändert, und das im attrTemplate drin ist, _kann_ man ja auch einfach mal nachsehen, ob sich das template geändert hat (oder einfach austesten, ob was sinnvolles kommt, wenn man das neu drüberklatscht...).
Meistens ist das ansonsten doch eher statisch..
Titel: Antw:eq3 firmware check funkioniert nicht mehr
Beitrag von: DeeSPe am 01 Dezember 2019, 14:31:34
Zitat von: frank am 01 Dezember 2019, 10:49:25
ich denke du bist ziehmlich spät dran. 
ist das nicht schon seit wochen so.  ;)

mit fhem update solltest du über set attrTemplate alles aktuelle  erhalten.

Das verwirrt mich etwas!
Habe ein aktuelles FHEM und über "set eq3 attrTemplate CUL_HM_firmware_update_downloader" das Device aktualisiert. Die URL ist dann "https://www.eq-3.de/ajax/downloads/downloads_eq3.php", also falsch. Ersetze ich diese durch "https://www.eq-3.de/service/downloads.html", funktioniert die Abfrage leider auch nicht.
Wenn es bei Euch funktioniert, woher bekomme ich denn dann so ein funktionierendes Template?

Gruß
Dan
Titel: Antw:eq3 firmware check funkioniert nicht mehr
Beitrag von: Beta-User am 01 Dezember 2019, 15:18:47
Hmm, komisch, mit der ajax-Seite bekomme ich Daten. (template-file gestern morgen aktualisiert wg. der Kompabilität zu den letzten Versionen von HTTPMOD wie von frank im msg. 998229 vorgeschlagen).
Titel: Antw:eq3 firmware check funkioniert nicht mehr
Beitrag von: DeeSPe am 01 Dezember 2019, 15:43:59
Zitat von: Beta-User am 01 Dezember 2019, 15:18:47
Hmm, komisch, mit der ajax-Seite bekomme ich Daten. (template-file gestern morgen aktualisiert wg. der Kompabilität zu den letzten Versionen von HTTPMOD wie von frank im msg. 998229 vorgeschlagen).

Bei mir wurden seit Ende Oktober keine Daten mehr aktualisiert. Deshalb bin ich da heute drüber gestolpert.
Hab dann heute Vormittag probiert mit manuellem reread und immer keine Daten erhalten - Internetverbindung bestand aber.
Habe eben nochmal ein reread gemacht und bekomme nun wieder aktuellen Daten angezeigt. Keine Ahnung woran es lag.

Danke für's Überprüfen.

Gruß
Dan
Titel: Antw:eq3 firmware check funkioniert nicht mehr
Beitrag von: yersinia am 01 Dezember 2019, 15:58:53
Wenn ich das Template aktualisiere, dann wird doch die DEF mit dem ggf evralteten FW-Link nicht aktualisiert, oder? Zumindest war das bei mir bisher der Fall, wenn ich mich recht entsinne...
Titel: Antw:eq3 firmware check funkioniert nicht mehr
Beitrag von: OdfFhem am 01 Dezember 2019, 16:58:16
Das Template startet mit einem defmod, somit sollte also auch das DEF angepasst werden ...
Titel: Antw:eq3 firmware check funkioniert nicht mehr
Beitrag von: frank am 01 Dezember 2019, 17:31:22
Zitat von: Beta-User am 01 Dezember 2019, 13:44:34
(Anm.: wenn es ist wie hier, dass sich z.B. die URL ändert, und das im attrTemplate drin ist, _kann_ man ja auch einfach mal nachsehen, ob sich das template geändert hat (oder einfach austesten, ob was sinnvolles kommt, wenn man das neu drüberklatscht...).
Meistens ist das ansonsten doch eher statisch..
du hast mich richtig verstanden.

händisch eintragen hatte ich natürlich nicht im sinn.
war nur so eine idee, ohne das genaue verfahren zu kennen.

je nach "qualität" der templates kann es gerade zusammen mit httpmod zu schlecht erkennbarer "verminderter datenqualität" kommen. besonders, wenn sich die zu pollenden daten zb im internet selten verändern.

zb könnte jemand auf die idee kommen, die vorhandene zusätzliche datenquelle für eq3 fw-updates (rt und tc) in das template zu integrieren, wodurch die datenqualität der anwendung gesteigert würde.

mit einer echten revisionsnummer im templatenamen, die sogar ggf über userreading überwachbar wäre, könnte sich das device sogar ggf automatisch updaten.
die "schwarmintelligenz" von fhem hätte direkten einfluss auf die datenqualität.
Titel: Antw:eq3 firmware check funkioniert nicht mehr
Beitrag von: Verkehrsrot am 25 Januar 2020, 16:10:58
Bei mir werden keine Updates mehr angezeigt (müssten aber, habe paar HM-CC-RT-DN mit v1.4, neuere haben v1.5).
Allerdings finde ich auch bei manueller Suche auf https://www.eq-3.de/service/downloads.html keine Firmware-Updates mehr für Homematic Devices außer CCUs. Nehme an, das ist die Ursache? Was nun?
Titel: Antw:eq3 firmware check funkioniert nicht mehr
Beitrag von: Verkehrsrot am 25 Januar 2020, 17:01:46
Zitat von: Verkehrsrot am 25 Januar 2020, 16:10:58
Bei mir werden keine Updates mehr angezeigt (müssten aber, habe paar HM-CC-RT-DN mit v1.4, neuere haben v1.5).

Habe nun noch folgenden Fehler in den readings bemerkt, scheinbar klappt der Zugriff auf den eq3-Webserver nicht mehr?

LAST_ERROR
https://www.eq-3.de/ajax/downloads/downloads_eq3.php: Can't connect(2) to https://www.eq-3.de:443: SSL wants a read first
2020-01-25 16:59:49
Titel: Antw:eq3 firmware check funkioniert nicht mehr
Beitrag von: Otto123 am 25 Januar 2020, 17:25:21
Bei mir funktioniert das, muss bei Dir was lokales sein?
Titel: Antw:eq3 firmware check funkioniert nicht mehr
Beitrag von: Verkehrsrot am 25 Januar 2020, 17:48:52
Hmm, woran liegt es? Ich poste hier mal die Device-Daten, erkennt jemand was?

ZitatBUSY
0
DEF   
https://www.eq-3.de/ajax/downloads/downloads_eq3.php 604800
FUUID
5e2c4018-f33f-1fbf-735e-f48a18fe368a981d
Interval
604800
LASTSEND
1579969309.51162
MainURL
https://www.eq-3.de/ajax/downloads/downloads_eq3.php
MaxAgeEnabled
1
ModuleVersion
3.5.21 - 27.12.2019
NAME
eq3
NOTIFYDEV
global
NR
254
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 => 2020-01-25 17:21:49<br><br><pre>| device | model | cur_fw | new_fw | release |<br>------------------------------------------------------------------------------------<br>| <b style="color:green">no fw-updates needed! </b> |</pre></div>
TRIGGERTIME
1580514300
TRIGGERTIME_FMT
2020-02-01 00:45:00
TYPE
HTTPMOD
TimeAlign
1579909500
TimeAlignFmt
2020-01-25 00:45:00
addr
https://www.eq-3.de:443
auth
0
buf
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: Sat, 25 Jan 2020 16:21:49 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
Transfer-Encoding: chunked
Content-Type: text/html; charset=UTF-8
httpversion
1.1
hu_blocking
0
hu_filecount
1
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
Titel: Antw:eq3 firmware check funkioniert nicht mehr
Beitrag von: Otto123 am 27 Januar 2020, 21:40:12
Mit dem Template gibt es seit heute (Featurelevel 6) ein neues "Problem"
Zitatbad attribute name requestData.* (contains not A-Za-z/\d_\.- or is too long)

So richtig zuordnen kann ich es noch nicht.

Gruß Otto
Titel: Antw:eq3 firmware check funkioniert nicht mehr
Beitrag von: frank am 27 Januar 2020, 22:28:00
entferne mal ".*" bei attr requestdata.
Titel: Antw:eq3 firmware check funkioniert nicht mehr
Beitrag von: Otto123 am 27 Januar 2020, 22:49:32
Ja da geht es auf den ersten Blick. Allerdings funktioniert irgendwas nicht mehr. Es gibt kaum noch Firmwarelinks.
Titel: Antw:eq3 firmware check funkioniert nicht mehr
Beitrag von: frank am 27 Januar 2020, 22:58:42
mein letzter poll vom 15.1. zeigt 19 links.
ich kann gerade nichts weiter testen.
Titel: Antw:eq3 firmware check funkioniert nicht mehr
Beitrag von: Otto123 am 27 Januar 2020, 23:14:18
Ja, ich behaupte mal am Freitag/Samstag ging bei mir auch noch alles.
Titel: Antw:eq3 firmware check funkioniert nicht mehr
Beitrag von: Beta-User am 28 Januar 2020, 05:48:13
Diese Fehlermeldung gab es bei anderen HTTPMOD-Geräten auch, müßte den Thread suchen...
Scheinbar ist das dort aber nur eine einmalige Meldung gewesen, die bei späteren Starts verschwunden war (?).

Muß bei Gelegenheit auch mal testen...
Titel: Antw:eq3 firmware check funkioniert nicht mehr
Beitrag von: Otto123 am 28 Januar 2020, 11:20:39
Naja ich denke dieser Name  requestData.* ist falsch.
Er steht so im Wiki im Template und ist wahrscheinlich historisch durchgeschleift. Ich verstehe allerdings nicht so richtig was er tut und ob es vielelicht
requestData .*
heissen muss, oder ob das .* wirklich einfach weg muss.
Titel: Antw:eq3 firmware check funkioniert nicht mehr
Beitrag von: Beta-User am 28 Januar 2020, 11:35:16
vermutlich hast du recht, dass das ".*" einfach weg muß, aber das Attribut an sich bleiben... Jedenfalls liest sich die commandref zu HTTPMOD so.
Vermutlich hat das ganze was damit zu tun, welche Attribute HTTPMOD zuläßt, und da sind zum Teil regex-Auswertungen drin, die dann auch in der Auswahlliste der setzbaren Attribute auftauchen. Schätze, so ist das da reingewandert?
Titel: Antw:eq3 firmware check funkioniert nicht mehr
Beitrag von: Otto123 am 28 Januar 2020, 11:44:24
Zitat von: Beta-User am 28 Januar 2020, 11:35:16
... Schätze, so ist das da reingewandert?
Vermute ich auch :) hat vielleicht nie gestört und auch nichts gemacht?
Rudi hats gemerkt ;)
Titel: Antw:eq3 firmware check funkioniert nicht mehr
Beitrag von: Beta-User am 29 Januar 2020, 05:55:56
Hab's jetzt auch aus dem template entfernt, nachdem das Ergebnis bei mir dasselbe war: no updates...

Ich hatte aber extra nicht alle updates ausgeführt, um noch testen zu können. Da aber auch die Auswahl beschränkt ist, wenn man über die normale Seite kommt (https://www.eq-3.de/service/downloads.html), entspricht das den von eQ-3 gesetzten Realitäten... (die regen mich auf! Was soll das?!?). Zum Glück sollte ich die aktuelleren firmwares zum größeren Teil irgendwo noch runtergeladen haben...
Titel: Antw:eq3 firmware check funkioniert nicht mehr
Beitrag von: Verkehrsrot am 29 Januar 2020, 11:04:22
Zitat von: Otto123 am 27 Januar 2020, 22:49:32
Ja da geht es auf den ersten Blick. Allerdings funktioniert irgendwas nicht mehr. Es gibt kaum noch Firmwarelinks.

Das scheint mir daran zu liegen, dass man es auf der eq3 Download Webseite kaum noch welche gibt, sie sind dort verschwunden.
Titel: Antw:eq3 firmware check funkioniert nicht mehr
Beitrag von: Otto123 am 29 Januar 2020, 11:46:55
Naja nach vier Jahren, die die dort mindestens lagen, sollte ja jeder ein update gemacht haben. Das ist sicher auch der Anfang vom Support Ende für Classic  :'(
Titel: Antw:eq3 firmware check funkioniert nicht mehr
Beitrag von: Pfriemler am 29 Januar 2020, 13:44:37
uuh... die sind ja wirklich alle weg. Merde! Hätte ich mir mal alle auf Halde gelegt.
Weiß jemand alternative Quellen?

Titel: Antw:eq3 firmware check funkioniert nicht mehr
Beitrag von: Beta-User am 29 Januar 2020, 14:02:36
Zitat von: Pfriemler am 29 Januar 2020, 13:44:37
Weiß jemand alternative Quellen?
Man sollte den Entscheidern bei eQ-3 v.a. rückmelden, dass man in dieser Community hier eine transparentere Update-policy (RT-DN+1.5?) wünschen würde. (Gab es da nicht neulich eine von Rudi verbreitete Einladung zu einem Usertreff, bei dem der Wert der Community hier sehr hoch gehangen wurde...?)

Das "inoffizielle" Tauschen könnte ein copyright-Problem sein, vielleicht bekommt man auf eine kitische Rückfrage von diesem Unternehmen eventuell ja auch die "schlichte" Rückmeldung, dass mal wieder irgendein Umbau im Gange ist und man das asap reparieren wird (iVm. einem Gutscheinchen für's Melden des Problems?!?).

(Im Ernst: ich sehe meinen Entschluss bestätigt, bis auf weiteres nichts mehr von denen zu kaufen!)

[OT] Überhaupt updates: Auch manch anderem Hersteller/Zwischenhändler stünde da etwas mehr Entgegenkommen/Transparenz gut zu Gesicht. (ungeprüft) ein paar Beispiele aus dem Kopf:

Negativ:
fibaro bzgl. Z-Wave, Philips (bzgl. zigbee ohne Hue-Bridge), dto. für innr und Xiaomi, wenn es ohne deren ZigBee-Bridge gehen soll...

Positiv:
Osram und Ikea @ZigBee, scheint beides mit deconz zu laufen...

Vielleicht sollte man mal eine Seite aufmachen, wo man solche Infos abliefern kann, auch wenn sich grade mal irgendwo wieder der (unternehmenspolitische) Wind dreht?!?
[/OT]
Titel: Antw:eq3 firmware check funkioniert nicht mehr
Beitrag von: yersinia am 29 Januar 2020, 15:45:34
Zitat von: Pfriemler am 29 Januar 2020, 13:44:37Weiß jemand alternative Quellen?
Dieses Forum? Einige Firmware ist verstreut, zB für HM-CC-RT-DN v1.5 und HM-TC-IT-W-EU v1.4 (https://forum.fhem.de/index.php/topic,93074.msg869315.html#msg869315).
Vielleicht ist es sinnvoll einen eigenen, angepinnten Thread im Homematic-Forum aufzumachen und die HM-fw dort zu sammeln/archivieren. Einige user haben bestimmt auch noch firmware files rumliegen.....

Edit meint, dass ich (neben den zwei verlinkten fw) noch folgende auf dem RasPi habe:
HM-ES-PMSw1-Pl_update_V2_5_0009_150217.eq3
HM-LC-Bl1PBU-FM_update_V2_11_1_161212.eq3
Titel: Antw:eq3 firmware check funkioniert nicht mehr
Beitrag von: Pfriemler am 29 Januar 2020, 19:48:52
Dieses Skript liefert alle Firmwares (auch die von HM-IP).
https://homematic-forum.de/forum/viewtopic.php?f=27&t=56380#p560319
Wenn man jq (sudo apt-get install jq) nachinstalliert, tut's auch aufm Raspi.

Laut Auskunft im Homematic-Forum werden derzeit alle Firmwares mit erweiterten info.txt versehen, die die erforderlichen Mindest-Versionen für CCU2 und CCU3 listen. Meine soeben heruntergeladenen haben allesamt neuere info.txt, während die Firmware selbst sich mit meinen Backups deckt. Bin noch am Sortieren.
Titel: Antw:eq3 firmware check funkioniert nicht mehr
Beitrag von: WolfgangV am 29 Januar 2020, 20:12:10
Danke! funktioniert wunderbar!

Gruß


Wolfgang
Titel: Antw:eq3 firmware check funkioniert nicht mehr
Beitrag von: yersinia am 30 Januar 2020, 12:55:29
Zitat von: Pfriemler am 29 Januar 2020, 19:48:52
Dieses Skript liefert alle Firmwares (auch die von HM-IP).
https://homematic-forum.de/forum/viewtopic.php?f=27&t=56380#p560319
Uih, der Link https://update.homematic.com/firmware/api/firmware/search/DEVICE liefert ja anscheinend ein JSON (?):
homematic.com.setDeviceFirmwareVersions([
{"type":"HmIPW-WTH","version":"2.4.6"},
{"type":"HM-LC-Dim1L-Pl-3","version":"2.9.7"},
{"type":"HmIP-STHD","version":"2.2.2"},
{"type":"HmIPW-DRD3","version":"1.0.0"},
{"type":"HmIP-SMO","version":"1.2.8"},
{"type":"HmIP-SWO-PR","version":"1.0.18"},
{"type":"HmIP-FROLL","version":"1.2.0"},
{"type":"HM-LC-Sw1-Pl-DN-R3","version":"2.6.0"},
{"type":"HmIP-SWO-B","version":"1.0.18"},
{"type":"HM-LC-RGBW-WM","version":"1.0.0"},
{"type":"HmIP-SRH","version":"1.2.10"},
{"type":"HmIP-SPI","version":"1.4.0"},
{"type":"HmIP-PDT","version":"1.4.8"},
{"type":"HM-ES-PMSw1-Pl-DN-R3","version":"2.6.0"},
{"type":"HmIP-PSM-IT","version":"2.6.2"},
{"type":"HmIP-PSM","version":"2.6.2"},
{"type":"HmIP-KRCA","version":"1.10.0"},
{"type":"HmIP-PS","version":"2.6.2"},
{"type":"HmIP-MIOB","version":"1.6.4"},
{"type":"HM-CC-RT-DN","version":"1.5.3"},
{"type":"HmIP-BBL","version":"1.6.2"},
{"type":"HM-ES-PMSw1-Pl-DN-R2","version":"2.6.0"},
{"type":"HmIP-PSM-PE","version":"2.6.2"},
{"type":"HM-LC-Dim1T-Pl-3","version":"2.9.5"},
{"type":"HmIP-BSL","version":"1.0.2"},
{"type":"HM-LC-Sw1-Pl-DN-R1","version":"2.6.0"},
{"type":"HmIP-BSM","version":"1.12.6"},
{"type":"HmIP-eTRV-C","version":"1.2.4"},
{"type":"HmIP-PDT-UK","version":"1.4.8"},
{"type":"HmIP-SMI","version":"1.4.8"},
{"type":"HmIP-STH","version":"2.2.0"},
{"type":"HmIP-FDT","version":"1.4.8"},
{"type":"HM-Dis-EP-WM55","version":"1.2.0"},
{"type":"HmIP-SWDO-I","version":"1.16.10"},
{"type":"HM-ES-PMSw1-Pl-DN-R5","version":"2.6.0"},
{"type":"HmIP-WTH-2","version":"2.6.0"},
{"type":"HM-LC-Dim1T-DR","version":"1.1.0"},
{"type":"HM-LC-Sw1-Pl-DN-R4","version":"2.6.0"},
{"type":"HmIPW-STH","version":"2.4.6"},
{"type":"HmIP-WTH","version":"2.4.8"},
{"type":"HM-ES-PMSw1-Pl-DN-R4","version":"2.6.0"},
{"type":"HM-MOD-Re-8","version":"1.2.0"},
{"type":"HmIP-PSM-CH","version":"2.6.2"},
{"type":"HM-LC-Dim1TPBU-FM","version":"2.9.5"},
{"type":"HmIP-FBL","version":"1.8.12"},
{"type":"HmIP-BWTH","version":"1.2.4"},
{"type":"HM-TC-IT-WM-W-EU","version":"1.4.2"},
{"type":"HM-LC-Bl1PBU-FM","version":"2.11.1"},
{"type":"HM-OU-CFM-TW","version":"1.3.0"},
{"type":"HmIP-BWTH","version":"1.2.4"},
{"type":"HmIP-ASIR","version":"1.4.2"},
{"type":"HmIP-FSM","version":"1.6.2"},
{"type":"HmIP-eTRV","version":"2.2.8"},
{"type":"HmIP-BROLL","version":"1.6.2"},
{"type":"HmIP-SMO-A","version":"1.2.8"},
{"type":"HM-LC-Sw1-Pl-DN-R2","version":"2.6.0"},
{"type":"HmIP-eTRV-2","version":"2.2.8"},
{"type":"HmIP-SWDO","version":"1.16.8"},
{"type":"HmIP-PCBS","version":"2.10.2"},
{"type":"HmIP-PCBS2","version":"1.10.10"},
{"type":"HmIP-WTH-2","version":"2.0.2"},
{"type":"HM-LC-Sw1-Pl-DN-R5","version":"2.6.0"},
{"type":"HmIP-WTH","version":"2.2.0"},
{"type":"HmIP-BDT","version":"1.4.8"},
{"type":"HmIP-FSM16","version":"1.6.2"},
{"type":"HmIP-PSM-UK","version":"2.6.2"},
{"type":"HM-ES-PMSw1-Pl-DN-R1","version":"2.6.0"},
{"type":"HmIP-BBL","version":"1.8.10"},
{"type":"HmIPW-STHD","version":"2.4.8"},
{"type":"HM-LC-Dim1PWM-CV","version":"2.9.5"},
{"type":"HmIP-SWO-PL","version":"1.0.18"},
{"type":"HM-Sen-MDIR-WM55","version":"1.2.0"}]);

Das kann man sicher in HTTPMOD auslesen und mittels https://ccu3-update.homematic.com/firmware/download?cmd=download&serial=0&product=[DEVICE] einen link generieren bei Update.
Titel: Antw:eq3 firmware check funkioniert nicht mehr
Beitrag von: yersinia am 31 Januar 2020, 10:43:01
Danke Pfriemler für den Tipp (https://forum.fhem.de/index.php/topic,78501.msg1018712.html#msg1018712).

Ich habe den bestehenden Code angepasst und jetzt funktioniert dies mit dem neuen Link:
defmod hm_fw_check HTTPMOD https://update.homematic.com/firmware/api/firmware/search/DEVICE 86400
attr hm_fw_check userattr reading01AutoNumLen reading01Name reading01RegOpt reading01Regex reading02AutoNumLen reading02Name reading02RegOpt reading02Regex readingMaxAge readingMaxAgeReplacementMode:text,reading,internal,expression,delete showNewFWOnly:yes,no
attr hm_fw_check enableControlSet 1
attr hm_fw_check icon hm_ccu
attr hm_fw_check reading01AutoNumLen 2
attr hm_fw_check reading01Name hmfw-type
attr hm_fw_check reading01RegOpt g
attr hm_fw_check reading01Regex (?i)"type":"((?:\w+[-]*){1,})
attr hm_fw_check reading02AutoNumLen 2
attr hm_fw_check reading02Name hmfw-version
attr hm_fw_check reading02RegOpt g
attr hm_fw_check reading02Regex (?si)"version":"(\d+[.]\d+[.]\d+)
attr hm_fw_check readingMaxAge 10
attr hm_fw_check readingMaxAgeReplacementMode delete
attr hm_fw_check room fw-checks
attr hm_fw_check showError 1
attr hm_fw_check showMatched 1
attr hm_fw_check showNewFWOnly yes
attr hm_fw_check stateFormat {   my $ret ="";;;;\
    my $lastCheck = ReadingsTimestamp($name,"MATCHED_READINGS","???");;;;\
    $ret .= '<div style="text-align:left">';;;;\
    $ret .= '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 |<br>";;;;\
    $ret .= "------------------------------------------------------------------------------<br>";;;;\
    my $check = ReadingsVal($name,"newFwForDevices","error => no or wrong data from eq3-server!");;;;\
    if($check eq "no fw-updates needed!") {\
      $ret .= '| <b style="color:green">';;;;\
      $ret .= sprintf("%-74s",$check);;;;\
      $ret .= '</b> |';;;;\
    } elsif($check eq "error => no or wrong data from eq3-server!") {\
      $ret .= '| <b style="color:red">';;;;\
      $ret .= sprintf("%-74s",$check);;;;\
      $ret .= '</b> |';;;;\
    } else {\
      my @devices = split(',',$check);;;;\
      foreach my $devStr (@devices) {\
        my ($dev,$md,$idx,$ofw,$nfw) = $devStr =~ m/([^\s]+)\s[(]([^\s]+)\s[(](\d+)[)]\sofw_([\d\.]+)\s=>\snfw_([\d\.]+)/;;;;\
        my $fw_link = "https://ccu3-update.homematic.com/firmware/download?cmd=download&serial=0&product=".$md;;;;\
        $ret .= '| <a href="/fhem?detail='.$dev.'" target="_blank"><b>';;;;\
        $ret .= sprintf("%-30s",$dev);;;;\
        $ret .= '</b></a> | ';;;;\
        $ret .= '<b'.(($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> | ';;;;\
        $ret .= '<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> | ';;;;\
        $ret .= '<a title="download firmware file" href="'.$fw_link.'" target="_blank"><b style="color:red;;">';;;;\
        $ret .= sprintf("%6s",$nfw);;;;\
        $ret .= '</b></a> | ';;;;\
        $ret .= "<br />";;;;\
      }\
    }\
    $ret .= '</pre></div>';;;;\
  return $ret;;;;\
}
attr hm_fw_check userReadings newFwForDevices:MATCHED_READINGS.* {\
  my $ret = "";;;;\
  my $newfwonly = AttrVal($name,"showNewFWOnly","yes");;;;\
  if (ReadingsVal($name,"UNMATCHED_READINGS","?") eq "") {\
    my @eq3FwList = map { \
sprintf(uc(ReadingsVal($name,"hmfw-type-".$_,"?")).":".ReadingsVal($name,"hmfw-version-".$_,"?").":".$_);;;;\
} ReadingsVal($name,"MATCHED_READINGS","?")=~ m/hmfw-version-(\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 ($fwmd, $fwv, $idx) = $newFW =~ m/([^:]+):(\d+[.]\d+[.]\d+):(\d+)$/;;;;\
my ($fwh, $fwl) = split('\.',$fwv);;;;\
if(($newfwonly eq "no") || (($fwh > $h) || (($fwh == $h) && ($fwl > $l)))) {\
          $ret .= "," if($ret ne "");;;;\
  $ret .= $dev." (".$md." (".$idx.") ofw_".$v." => nfw_".$fwv.")";;;;\
        }\
      }\
    }\
  } else {\
    $ret = "error => no or wrong data from eq3-server!";;;;\
  }\
  return ($ret eq "")?"no fw-updates needed!":$ret;;;;\
}
attr hm_fw_check webCmd reread

Ich habe ein userAttr showNewFWOnly eingepflegt, default ist yes. Setzt man dies auf no werden immer alle gefundenen firmware-versionen angezeigt - ansonsten -im default- werden nur neue Versionen angezeigt, wenn es auch welche gibt.
Ein Datum oder Changelog lassen sich so nicht extrahieren - die Daten liegen nicht vor.

Bitte mal testen, wenn es keine Probleme gibt könnte das als Template eingepflegt werden.

EDIT 2020-02-03: Beta-User (https://forum.fhem.de/index.php?action=profile;u=9229) hat es in die httpmod.templates (https://forum.fhem.de/index.php/topic,108051.0.html) übernommen

EDIT 2020-04-16: model gross/klein-Schreibung (https://forum.fhem.de/index.php/topic,110272.0.html) berücksichtigt.
Titel: Antw:eq3 firmware check funkioniert nicht mehr
Beitrag von: Frank_Huber am 31 Januar 2020, 11:21:35
Zitat von: yersinia am 31 Januar 2020, 10:43:01
Ich habe den bestehenden Code angepasst und jetzt funktioniert dies mit dem neuen Link:

Bitte mal testen, wenn es keine Probleme gibt könnte das als Template eingepflegt werden.

Danke dafür.
Sehe ich das richtig dass hierfür jetzt kein Code in der myUtils mehr notwendig ist.
Titel: Antw:eq3 firmware check funkioniert nicht mehr
Beitrag von: yersinia am 31 Januar 2020, 12:13:43
Zitat von: Frank_Huber am 31 Januar 2020, 11:21:35
Sehe ich das richtig dass hierfür jetzt kein Code in der myUtils mehr notwendig ist.
Korrekt.
Titel: Antw:eq3 firmware check funkioniert nicht mehr
Beitrag von: Pfriemler am 31 Januar 2020, 12:53:35
erst ein "error => no or wrong data from eq3-server!", nach einem reread:

hm_fw_check

last homematic-fw-check => 2020-01-31 12:51:03

| device                         | model                   | cur_fw | new_fw |
------------------------------------------------------------------------------
| HKThermostat1                  | HM-CC-RT-DN             |    1.4 |  1.5.3 |
| HKThermostat2                  | HM-CC-RT-DN             |    1.4 |  1.5.3 |
| HKThermostat3                  | HM-CC-RT-DN             |    1.4 |  1.5.3 |
| HM_2DBDB9                      | HM-LC-BL1PBU-FM         |    2.3 | 2.11.1 |
| HM_Universalschalter1          | HM-LC-SW1-PL-DN-R1      |    2.5 |  2.6.0 |
| KBadThermostat                 | HM-TC-IT-WM-W-EU        |    1.3 |  1.4.2 |
| Treppenlichtdimmer             | HM-LC-DIM1T-DR          |    1.0 |  1.1.0 |


Grandios! die alte Routine hatte schon ewig nichts mehr gefunden (ist inwzischen auch klar warum). Gleich rückstandsfrei entsorgt.
Titel: Antw:eq3 firmware check funkioniert nicht mehr
Beitrag von: MadMax-FHEM am 08 Februar 2020, 09:23:05
Zitat von: yersinia am 31 Januar 2020, 10:43:01
Danke Pfriemler für den Tipp (https://forum.fhem.de/index.php/topic,78501.msg1018712.html#msg1018712).

Ich habe den bestehenden Code angepasst und jetzt funktioniert dies mit dem neuen Link:
defmod hm_fw_check HTTPMOD https://update.homematic.com/firmware/api/firmware/search/DEVICE 86400
attr hm_fw_check userattr reading01AutoNumLen reading01Name reading01RegOpt reading01Regex reading02AutoNumLen reading02Name reading02RegOpt reading02Regex readingMaxAge readingMaxAgeReplacementMode:text,reading,internal,expression,delete showNewFWOnly:yes,no
attr hm_fw_check enableControlSet 1
attr hm_fw_check icon hm_ccu
attr hm_fw_check reading01AutoNumLen 2
attr hm_fw_check reading01Name hmfw-type
attr hm_fw_check reading01RegOpt g
attr hm_fw_check reading01Regex (?i)"type":"((?:\w+[-]*){1,})
attr hm_fw_check reading02AutoNumLen 2
attr hm_fw_check reading02Name hmfw-version
attr hm_fw_check reading02RegOpt g
attr hm_fw_check reading02Regex (?si)"version":"(\d+[.]\d+[.]\d+)
attr hm_fw_check readingMaxAge 10
attr hm_fw_check readingMaxAgeReplacementMode delete
attr hm_fw_check room fw-checks
attr hm_fw_check showError 1
attr hm_fw_check showMatched 1
attr hm_fw_check showNewFWOnly yes
attr hm_fw_check stateFormat {   my $ret ="";;;;\
    my $lastCheck = ReadingsTimestamp($name,"MATCHED_READINGS","???");;;;\
    $ret .= '<div style="text-align:left">';;;;\
    $ret .= '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 |<br>";;;;\
    $ret .= "------------------------------------------------------------------------------<br>";;;;\
    my $check = ReadingsVal($name,"newFwForDevices","error => no or wrong data from eq3-server!");;;;\
    if($check eq "no fw-updates needed!") {\
      $ret .= '| <b style="color:green">';;;;\
      $ret .= sprintf("%-74s",$check);;;;\
      $ret .= '</b> |';;;;\
    } elsif($check eq "error => no or wrong data from eq3-server!") {\
      $ret .= '| <b style="color:red">';;;;\
      $ret .= sprintf("%-74s",$check);;;;\
      $ret .= '</b> |';;;;\
    } else {\
      my @devices = split(',',$check);;;;\
      foreach my $devStr (@devices) {\
        my ($dev,$md,$idx,$ofw,$nfw) = $devStr =~ m/([^\s]+)\s[(]([^\s]+)\s[(](\d+)[)]\sofw_([\d\.]+)\s=>\snfw_([\d\.]+)/;;;;\
        my $fw_link = "https://ccu3-update.homematic.com/firmware/download?cmd=download&serial=0&product=".$md;;;;\
        $ret .= '| <a href="/fhem?detail='.$dev.'" target="_blank"><b>';;;;\
        $ret .= sprintf("%-30s",$dev);;;;\
        $ret .= '</b></a> | ';;;;\
        $ret .= '<b'.(($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> | ';;;;\
        $ret .= '<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> | ';;;;\
        $ret .= '<a title="download firmware file" href="'.$fw_link.'" target="_blank"><b style="color:red;;">';;;;\
        $ret .= sprintf("%6s",$nfw);;;;\
        $ret .= '</b></a> | ';;;;\
        $ret .= "<br />";;;;\
      }\
    }\
    $ret .= '</pre></div>';;;;\
  return $ret;;;;\
}
attr hm_fw_check userReadings newFwForDevices:MATCHED_READINGS.* {\
  my $ret = "";;;;\
  my $newfwonly = AttrVal($name,"showNewFWOnly","yes");;;;\
  if (ReadingsVal($name,"UNMATCHED_READINGS","?") eq "") {\
    my @eq3FwList = map { \
sprintf(ReadingsVal($name,"hmfw-type-".$_,"?").":".ReadingsVal($name,"hmfw-version-".$_,"?").":".$_);;;;\
} ReadingsVal($name,"MATCHED_READINGS","?")=~ m/hmfw-version-(\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 ($fwmd, $fwv, $idx) = $newFW =~ m/([^:]+):(\d+[.]\d+[.]\d+):(\d+)$/;;;;\
my ($fwh, $fwl) = split('\.',$fwv);;;;\
if(($newfwonly eq "no") || (($fwh > $h) || (($fwh == $h) && ($fwl > $l)))) {\
          $ret .= "," if($ret ne "");;;;\
  $ret .= $dev." (".$md." (".$idx.") ofw_".$v." => nfw_".$fwv.")";;;;\
        }\
      }\
    }\
  } else {\
    $ret = "error => no or wrong data from eq3-server!";;;;\
  }\
  return ($ret eq "")?"no fw-updates needed!":$ret;;;;\
}
attr hm_fw_check webCmd reread

Ich habe ein userAttr showNewFWOnly eingepflegt, default ist yes. Setzt man dies auf no werden immer alle gefundenen firmware-versionen angezeigt - ansonsten -im default- werden nur neue Versionen angezeigt, wenn es auch welche gibt.
Ein Datum oder Changelog lassen sich so nicht extrahieren - die Daten liegen nicht vor.

Bitte mal testen, wenn es keine Probleme gibt könnte das als Template eingepflegt werden.

EDIT 2020-02-03: Beta-User (https://forum.fhem.de/index.php?action=profile;u=9229) hat es in die httpmod.templates (https://forum.fhem.de/index.php/topic,108051.0.html) übernommen


Der Code als rawDefinition funktioniert!! :)

DANKE!! :)


Zitat
EDIT 2020-02-03: Beta-User (https://forum.fhem.de/index.php?action=profile;u=9229) hat es in die httpmod.templates (https://forum.fhem.de/index.php/topic,108051.0.html) übernommen

Allerdings habe ich vorher mal mit den Templates "rumgespielt", da wollte keines...

Bei einem kam ein Fehler (V2 / auch nach mehrfachem reread) und bei dem anderen kam: no Updates...

Oder ist es kein httpmod-Template!?
Dann weiß ich nicht wo wie suchen/einrichten... :-\

Gruß, Joachim
Titel: Antw:eq3 firmware check funkioniert nicht mehr
Beitrag von: yersinia am 08 Februar 2020, 09:29:48
Zitat von: MadMax-FHEM am 08 Februar 2020, 09:23:05Bei einem kam ein Fehler (V2 / auch nach mehrfachem reread) und bei dem anderen kam: no Updates...
Oder ist es kein httpmod-Template!?
Ja, raw (https://forum.fhem.de/index.php/topic,78501.msg1019327.html#msg1019327) funktioniert es, das httpmod.template funktionierte allerdings nicht; dies ist aber seit gestern gefixt (https://forum.fhem.de/index.php/topic,97694.msg1021839.html#msg1021839) und seit heute morgen im Update (https://forum.fhem.de/index.php/topic,108201.0.html).
Der Code ist ansonsten identisch.
Titel: Antw:eq3 firmware check funkioniert nicht mehr
Beitrag von: MadMax-FHEM am 08 Februar 2020, 09:34:21
Zitat von: yersinia am 08 Februar 2020, 09:29:48
Ja, raw (https://forum.fhem.de/index.php/topic,78501.msg1019327.html#msg1019327) funktioniert es, das httpmod.template funktionierte allerdings nicht; dies ist aber seit gestern gefixt (https://forum.fhem.de/index.php/topic,97694.msg1021839.html#msg1021839) und seit heute morgen im Update (https://forum.fhem.de/index.php/topic,108201.0.html).
Der Code ist ansonsten identisch.

Mist, habe gestern extra ein update gemacht ;)

Tja, dann halt nochmal...

Danke, Joachim
Titel: Antw:eq3 firmware check funkioniert nicht mehr
Beitrag von: Burny4600 am 08 Februar 2020, 17:50:07
Zitat von: yersinia am 31 Januar 2020, 10:43:01
Danke Pfriemler für den Tipp (https://forum.fhem.de/index.php/topic,78501.msg1018712.html#msg1018712).

Ich habe den bestehenden Code angepasst und jetzt funktioniert dies mit dem neuen Link:
defmod hm_fw_check HTTPMOD https://update.homematic.com/firmware/api/firmware/search/DEVICE 86400
attr hm_fw_check userattr reading01AutoNumLen reading01Name reading01RegOpt reading01Regex reading02AutoNumLen reading02Name reading02RegOpt reading02Regex readingMaxAge readingMaxAgeReplacementMode:text,reading,internal,expression,delete showNewFWOnly:yes,no
attr hm_fw_check enableControlSet 1
attr hm_fw_check icon hm_ccu
attr hm_fw_check reading01AutoNumLen 2
attr hm_fw_check reading01Name hmfw-type
attr hm_fw_check reading01RegOpt g
attr hm_fw_check reading01Regex (?i)"type":"((?:\w+[-]*){1,})
attr hm_fw_check reading02AutoNumLen 2
attr hm_fw_check reading02Name hmfw-version
attr hm_fw_check reading02RegOpt g
attr hm_fw_check reading02Regex (?si)"version":"(\d+[.]\d+[.]\d+)
attr hm_fw_check readingMaxAge 10
attr hm_fw_check readingMaxAgeReplacementMode delete
attr hm_fw_check room fw-checks
attr hm_fw_check showError 1
attr hm_fw_check showMatched 1
attr hm_fw_check showNewFWOnly yes
attr hm_fw_check stateFormat {   my $ret ="";;;;\
    my $lastCheck = ReadingsTimestamp($name,"MATCHED_READINGS","???");;;;\
    $ret .= '<div style="text-align:left">';;;;\
    $ret .= '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 |<br>";;;;\
    $ret .= "------------------------------------------------------------------------------<br>";;;;\
    my $check = ReadingsVal($name,"newFwForDevices","error => no or wrong data from eq3-server!");;;;\
    if($check eq "no fw-updates needed!") {\
      $ret .= '| <b style="color:green">';;;;\
      $ret .= sprintf("%-74s",$check);;;;\
      $ret .= '</b> |';;;;\
    } elsif($check eq "error => no or wrong data from eq3-server!") {\
      $ret .= '| <b style="color:red">';;;;\
      $ret .= sprintf("%-74s",$check);;;;\
      $ret .= '</b> |';;;;\
    } else {\
      my @devices = split(',',$check);;;;\
      foreach my $devStr (@devices) {\
        my ($dev,$md,$idx,$ofw,$nfw) = $devStr =~ m/([^\s]+)\s[(]([^\s]+)\s[(](\d+)[)]\sofw_([\d\.]+)\s=>\snfw_([\d\.]+)/;;;;\
        my $fw_link = "https://ccu3-update.homematic.com/firmware/download?cmd=download&serial=0&product=".$md;;;;\
        $ret .= '| <a href="/fhem?detail='.$dev.'" target="_blank"><b>';;;;\
        $ret .= sprintf("%-30s",$dev);;;;\
        $ret .= '</b></a> | ';;;;\
        $ret .= '<b'.(($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> | ';;;;\
        $ret .= '<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> | ';;;;\
        $ret .= '<a title="download firmware file" href="'.$fw_link.'" target="_blank"><b style="color:red;;">';;;;\
        $ret .= sprintf("%6s",$nfw);;;;\
        $ret .= '</b></a> | ';;;;\
        $ret .= "<br />";;;;\
      }\
    }\
    $ret .= '</pre></div>';;;;\
  return $ret;;;;\
}
attr hm_fw_check userReadings newFwForDevices:MATCHED_READINGS.* {\
  my $ret = "";;;;\
  my $newfwonly = AttrVal($name,"showNewFWOnly","yes");;;;\
  if (ReadingsVal($name,"UNMATCHED_READINGS","?") eq "") {\
    my @eq3FwList = map { \
sprintf(ReadingsVal($name,"hmfw-type-".$_,"?").":".ReadingsVal($name,"hmfw-version-".$_,"?").":".$_);;;;\
} ReadingsVal($name,"MATCHED_READINGS","?")=~ m/hmfw-version-(\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 ($fwmd, $fwv, $idx) = $newFW =~ m/([^:]+):(\d+[.]\d+[.]\d+):(\d+)$/;;;;\
my ($fwh, $fwl) = split('\.',$fwv);;;;\
if(($newfwonly eq "no") || (($fwh > $h) || (($fwh == $h) && ($fwl > $l)))) {\
          $ret .= "," if($ret ne "");;;;\
  $ret .= $dev." (".$md." (".$idx.") ofw_".$v." => nfw_".$fwv.")";;;;\
        }\
      }\
    }\
  } else {\
    $ret = "error => no or wrong data from eq3-server!";;;;\
  }\
  return ($ret eq "")?"no fw-updates needed!":$ret;;;;\
}
attr hm_fw_check webCmd reread

Ich habe ein userAttr showNewFWOnly eingepflegt, default ist yes. Setzt man dies auf no werden immer alle gefundenen firmware-versionen angezeigt - ansonsten -im default- werden nur neue Versionen angezeigt, wenn es auch welche gibt.
Ein Datum oder Changelog lassen sich so nicht extrahieren - die Daten liegen nicht vor.

Bitte mal testen, wenn es keine Probleme gibt könnte das als Template eingepflegt werden.

EDIT 2020-02-03: Beta-User (https://forum.fhem.de/index.php?action=profile;u=9229) hat es in die httpmod.templates (https://forum.fhem.de/index.php/topic,108051.0.html) übernommen

Da muß noch etwas korrigiert werden.
Wenn ich das Attribut showNewFWOnly yes definiere, dürften eigentlich nur die angezeigt werden für die ein neues Update vorhanden ist.
Ich vermute das der Bezug auf den Vergleichswert zwischen alter und neuer Firmware nicht passt.
Geräte Firmware ist zweistelllig. Abgerufene eQ3 Firmware ist aber dreistellig.
Titel: Antw:eq3 firmware check funkioniert nicht mehr
Beitrag von: Beta-User am 08 Februar 2020, 18:09:13
STATE wird erst aktualisiert, wenn es Änderungen der Readings gibt => reread nach Änderung des Attributs ausführen. Bei mir scheint das zu passen...
Titel: Antw:eq3 firmware check funkioniert nicht mehr
Beitrag von: Burny4600 am 08 Februar 2020, 19:21:53
Ich habe es nochmals ausgeführt. Änderung nach dem dritten reread.
Jetzt passt es wieder!?
Titel: Antw:eq3 firmware check funkioniert nicht mehr
Beitrag von: yersinia am 09 Februar 2020, 16:23:36
Zitat von: Burny4600 am 08 Februar 2020, 17:50:07Wenn ich das Attribut showNewFWOnly yes definiere, dürften eigentlich nur die angezeigt werden für die ein neues Update vorhanden ist.
Ich vermute das der Bezug auf den Vergleichswert zwischen alter und neuer Firmware nicht passt.
Geräte Firmware ist zweistelllig. Abgerufene eQ3 Firmware ist aber dreistellig.
Die HM devices liefern nur zweistelligen (a.b) Firmware code, die eq3 Webseite aber dreistelligen (a.b.c). Es ist dadurch natürlich unscharf. Das Attribut showNewFWOnly no gibt einem die Möglichkeit, alle gefundenen firmware-Versionen zu den eigenen HM-Devices anzuzeigen, auch wenn nach Vergleichoperation keine neue Version vorhanden wäre.

Das Reread und Aktualisierung des STATES kann schon etwas dauern.
Titel: Antw:eq3 firmware check funkioniert nicht mehr
Beitrag von: Burny4600 am 10 Februar 2020, 17:16:09
@yersinia
ZitatDas Reread und Aktualisierung des STATES kann schon etwas dauern.
Beim erstenmal dauert es sehr lange. Vieles muß erst eingelesen werden. Bei darauffolgenden Rereads geht es schneller.
Ich war da ein wenig zu schnell.

Was mir auffällt ist das es viele Geräte gibt die bei mir überhaupt nicht angezeigt werden.
Heißt das, dass nur Geräte angezeigt werden die auch eine Firmware Online angeboten bekommen?
Titel: Antw:eq3 firmware check funkioniert nicht mehr
Beitrag von: yersinia am 10 Februar 2020, 17:58:55
Zitat von: Burny4600 am 10 Februar 2020, 17:16:09Was mir auffällt ist das es viele Geräte gibt die bei mir überhaupt nicht angezeigt werden.
Heißt das, dass nur Geräte angezeigt werden die auch eine Firmware Online angeboten bekommen?
Jaein.
eq3 liefert für sehr viele HM Devices die fw Version (siehe auch Post #148 (https://forum.fhem.de/index.php/topic,78501.msg1018940.html#msg1018940)), die Versionsprüfung beschränkt sich aber nur auf solche HM-Devices, die deinem FHEM bekannt sind. Dieses List entspricht dem Scope vom fw-check:
list TYPE=CUL_HM:FILTER=DEF=......:FILTER=subType!=(virtual|)
Hat dein FHEM kein Device aus der Quelle, gibt es keinen Eintrag.
Sollte es ein Device in FHEM geben, dass nicht in der Quelle gelistet ist, gibt es keinen Eintrag.
Sollte die Versionsnummer gleich sein, gibt es keinen Eintrag (außer showNewFWOnly ist auf no gesetzt).
Titel: Antw:eq3 firmware check funkioniert nicht mehr
Beitrag von: Burny4600 am 12 Februar 2020, 18:38:53
Danke für die Infos.
Titel: Antw:eq3 firmware check funkioniert nicht mehr
Beitrag von: mar3d@RPi3 am 15 Februar 2020, 12:06:18
Klasse, das funktioniert wieder, DANKE!
Ich wollte mir nun ein DOIF basteln, mit dem die FW-Datei nach ./Download heruntergeladen wird aber wenn ich die FW-Datei aus dem Link mit FHEM herunterladen möchte, bekomme ich immer "Bad Request" obwohl es im Browser funktioniert.
Hat jemand bitte einen Tip für mich?
Titel: Antw:eq3 firmware check funkioniert nicht mehr
Beitrag von: Otto123 am 15 Februar 2020, 12:21:31
Ja, zeig mal Dein DOIF :)
Titel: Antw:eq3 firmware check funkioniert nicht mehr
Beitrag von: mar3d@RPi3 am 15 Februar 2020, 12:56:00
 :o ich bin aber noch am basteln  ;D
Internals:
   DEF        ([$SELF:state] eq "update")
({
my $MODEL = "HM-TC-IT-WM-W-EU";
my $model = "hm_tc_it_wm_w_eu";
my $version = "V1_4_002";
my $file = $model."_update_".$version."_171018.tgz";
fhem ("setreading $SELF File $file");
## my $fw = "";
my $ls = `ls ./Downloads`;
if ($ls =~ $file) {
fhem ("setreading $SELF Downloadinfo Datei vorhanden, kein Download")
}
else {
## system("wget https://www.eq-3.de/Downloads/Software/Firmware/$file -P ./Downloads -o ./Downloads/HM_FwUpdate.dlinfo");
##neuer Link#https://ccu3-update.homematic.com/firmware/download?cmd=download&serial=0&product=$model
system("wget https://ccu3-update.homematic.com/firmware/download?cmd=download&serial=0&product=$model -P ./Downloads -o ./Downloads/HM_FwUpdate.dlinfo");
my $downloadinfo = `cat ./Downloads/HM_FwUpdate.dlinfo`;
fhem ("setreading $SELF Downloadinfo $downloadinfo");
## system("tar xvzf $file")
}
## fhem ("set HM_618409 fwUpdate ./Download/$fw")
})
   FUUID      5e3ec562-f33f-0125-c815-cc801e115a89c0b2
   MODEL      FHEM
   NAME       HM_FwUpdate_doif
   NOTIFYDEV  HM_FwUpdate_doif,global
   NR         897
   NTFY_ORDER 50-HM_FwUpdate_doif
   STATE      initialized
   TYPE       DOIF
   VERSION    20929 2020-01-10 09:44:35
   .attraggr:
   .attrminint:
   READINGS:
     2020-02-15 12:53:21   cmd             0
     2020-02-08 19:43:36   downloadinfo    Datei vorhanden, kein Download
     2020-02-08 19:33:56   file            HM-TC-IT-WM-W-EU-1.4.2.tgz
     2020-02-15 12:53:21   mode            enabled
     2020-02-15 12:53:21   state           initialized
   Regex:
     accu:
     cond:
       HM_FwUpdate_doif:
         0:
           state      ^HM_FwUpdate_doif$:^state:
   condition:
     0          ::ReadingValDoIf($hash,'HM_FwUpdate_doif','state') eq "update"
   do:
     0:
       0          { my $MODEL = "HM-TC-IT-WM-W-EU"; my $model = "hm_tc_it_wm_w_eu"; my $version = "V1_4_002"; my $file = $model."_update_".$version."_171018.tgz"; fhem ("setreading HM_FwUpdate_doif File $file");  my $ls = `ls ./Downloads`; if ($ls =~ $file) { fhem ("setreading HM_FwUpdate_doif Downloadinfo Datei vorhanden, kein Download") } else {  #neuer Link#https://ccu3-update.homematic.com/firmware/download?cmd=download&serial=0&product=$model system("wget https://ccu3-update.homematic.com/firmware/download?cmd=download&serial=0&product=$model -P ./Downloads -o ./Downloads/HM_FwUpdate.dlinfo"); my $downloadinfo = `cat ./Downloads/HM_FwUpdate.dlinfo`; fhem ("setreading HM_FwUpdate_doif Downloadinfo $downloadinfo"); system("tar xvzf $file") } fhem ("set HM_618409 fwUpdate ./Download/$fw") }
     1:
   helper:
     DEVFILTER  ^global$|^HM_FwUpdate_doif$
     NOTIFYDEV  global|HM_FwUpdate_doif
     globalinit 1
     last_timer 0
     sleeptimer -1
   readings:
     all         HM_FwUpdate_doif:state
   uiState:
   uiTable:
Attributes:

hauptsächlich geht es um die Zeile mit dem wget
Titel: Antw:eq3 firmware check funkioniert nicht mehr
Beitrag von: Otto123 am 15 Februar 2020, 15:07:28
Naja deine zweite wget Zeile will die ccu3 Software laden? Und serial fehlt irgendwie :)
Titel: Antw:eq3 firmware check funkioniert nicht mehr
Beitrag von: mar3d@RPi3 am 15 Februar 2020, 15:14:11
https://ccu3-update.homematic.com/firmware/download?cmd=download&serial=0&product=HM-TC-IT-WM-W-EU
im Browser lädt er die Datei für HM-TC-IT-WM-W-EU herunter
vielleicht ist wget auch die falsche wahl ¯\_(ツ)_/¯
Titel: Antw:eq3 firmware check funkioniert nicht mehr
Beitrag von: Otto123 am 15 Februar 2020, 16:42:39
Naja da machen die irgendwas mit dem Browser...
Der Server sperrt ja auch den Zugriff nach drei Versuchen :(
Titel: Antw:eq3 firmware check funkioniert nicht mehr
Beitrag von: mar3d@RPi3 am 15 Februar 2020, 17:39:41
ich habe noch das hier gefunden:
curl --output ./Downloads/HM-TC-IT-WM-W-EU-1.4.2.tgz 'http://ccu3-update.homematic.com/firmware/download?cmd=download&serial=0&product=HM-TC-IT-WM-W-EU'
damit lädt die aktuelle fw und wird auch gleich gespeichert wo ich möchte. In meinem DOIF also in der Art:
system("curl --output ./Downloads/$file 'http://ccu3-update.homematic.com/firmware/download?cmd=download&serial=0&product=$MODEL'");
manchmal steht man einfach auf dem Schlauch. DANKE
Titel: Antw:eq3 firmware check funkioniert nicht mehr
Beitrag von: mar3d@RPi3 am 19 Februar 2020, 19:02:00
bleibt nur eins:
Trotz
attr <alle HMDevices> event-on-update-reading fwUpdate
wird das Reading fwUpdate auf "done" gesetzt ABER ohne EVENT.
Ich habe mir also erstmal ein notify für das Log geschrieben:
defmod HM_FwUpdate_notify notify .*CUL_HM.fwUpdate.completed set HM_FwUpdate_doif update_done
attr HM_FwUpdate_notify readLog 1
Titel: Antw:eq3 firmware check funkioniert nicht mehr
Beitrag von: mar3d@RPi3 am 20 Februar 2020, 18:19:44
Hier noch einmal mein fertiges DOIF, mit sortby direkt unter das Firmware-HTTPMOD platziert. Hier erscheint immer ein Button mit der Aktion die als nächstes erfolgt und macht immer das Update für des erste, aufgelistete Gerät:

DEF
([$SELF:"^reread$"] or [eQ3:"^reread$"])
({
my $newFwForDev1 = (split(/,/m,ReadingsVal("eQ3","newFwForDevices","???")))[0];
## fhem ("setreading $SELF NewFwForDev1 $newFwForDev1");
if ($newFwForDev1 =~ "Keine") {
fhem ("defmod status_HM_FwUpdate_doif at +00:00:01 set $SELF Keine");
}
else {
my $HMDevice = (split(/ /m,$newFwForDev1))[0];
fhem ("setreading $SELF HMDevice $HMDevice");
my $HMAlias = AttrVal("$HMDevice","alias","???");
fhem ("setreading $SELF HMDeviceAlias $HMAlias")
}
}
trigger WEB JS:location.reload()
)
DOELSEIF ([$SELF:"^Keine$"])
(trigger WEB JS:location.reload())
DOELSEIF ([$SELF:"^update$"])
({
my $newFwForDev1 = (split(/,/m,ReadingsVal("eQ3","newFwForDevices","???")))[0];
## fhem ("setreading $SELF NewFwForDev1 $newFwForDev1");
my $HMDevice = (split(/ /m,$newFwForDev1))[0];
fhem ("setreading $SELF HMDevice $HMDevice");
my $HMAlias = AttrVal("$HMDevice","alias","???");
fhem ("setreading $SELF HMDeviceAlias $HMAlias");
my $HMSerial = ReadingsVal("$HMDevice","D-serialNr","???");
fhem ("setreading $SELF HMDeviceSerial $HMSerial");
my $MODEL = (split(/ /m,$newFwForDev1))[1];
$MODEL =~ s/\(//g;
my $VERSION = (split(/ /m,$newFwForDev1))[5];
$VERSION =~ s/nfw_//g;
$VERSION =~ s/\)//g;
my $file = $MODEL."-".$VERSION.".tgz";
## fhem ("setreading $SELF File $file");
my $fw = "???";
my $extraktinfo = "???";
my $ls = `ls ./Downloads`,1;
if ($ls =~ $file) {
fhem ("setreading $SELF Downloadinfo Datei vorhanden, kein erneuter Download")
}
else {
my $downloadinfo = `curl --output ./Downloads/$file 'http://ccu3-update.homematic.com/firmware/download?cmd=download&serial=0&product=$MODEL'`,1;
fhem ("setreading $SELF Downloadinfo $downloadinfo")
}
my $tar = `tar tf ./Downloads/$file`,1;
## fhem ("setreading $SELF TAR $tar");
my $tar0 = (split(/\n/m,$tar))[0];
## fhem ("setreading $SELF TAR0 $tar0");
my $tar1 = (split(/\n/m,$tar))[1];
## fhem ("setreading $SELF TAR1 $tar1");
my $tar2 = (split(/\n/m,$tar))[2];
## fhem ("setreading $SELF TAR2 $tar2");
if ($tar0 =~ ".eq3") {
$fw = "$tar0"
}
elsif ($tar1 =~ ".eq3") {
$fw = "$tar1"
}
elsif ($tar2 =~ ".eq3") {
$fw = "$tar2"
}
else {
$fw = "???"
}
## fhem ("setreading $SELF Firmware $fw");
my $link = "./Downloads/fw_$MODEL/"."$fw";
## fhem ("setreading $SELF FirmwareLink $link");
if ($ls =~ "fw_$MODEL") {
my $lsM = `ls ./Downloads/fw_$MODEL`,1;
## fhem ("setreading $SELF LsM $lsM");
if ($lsM =~ "$fw") {
$extraktinfo = "Firmware-Datei vorhanden, kein erneutes Entpacken"
}
else {
$extraktinfo = `tar vxf ./Downloads/$file -C ./Downloads/fw_$MODEL`,1
}
}
else {
system("mkdir ./Downloads/fw_$MODEL");
## tar vxf ./Downloads/HM-TC-IT-WM-W-EU-1.4.2.tgz -C ./Downloads/fw_HM-TC-IT-WM-W-EU
$extraktinfo = `tar vxf ./Downloads/$file -C ./Downloads/fw_$MODEL`,1
}
fhem ("setreading $SELF Extraktinfo $extraktinfo");
fhem ("set $HMDevice fwUpdate ./Downloads/fw_$MODEL/$fw")
}
trigger WEB JS:location.reload()
)
DOELSEIF (["^HM_......$:^fwUpdate:.done$"])
(trigger WEB JS:location.reload())
DOELSEIF ([$SELF:"^hmPairSerial$"])
({
fhem ("set VCCU hmPairSerial ".ReadingsVal("$SELF","HMDeviceSerial","HMDeviceSerial"))
})
(trigger WEB JS:location.reload())
DOELSEIF (["^HM_......$:^D-firmware:.*$"])
({
fhem ("set eQ3 reread")
})


Attributes
addStateEvent
1

cmdState
reread|update|update_done|hmPairSerial|D-firmware

event-on-update-reading
state,Downloadinfo,Extraktinfo

group
Homematic Update

room
Homematic,system

selftrigger
wait

setList
reread update hmPairSerial

sortby
2

uiTable
{$SHOWNODEVICELINE = "system";
sub RET_HM_FwUpdate_doif {
if (ReadingsVal("$SELF","state","") eq "reread") {
my $ret = ReadingsVal("$SELF","HMDevice","HMDevice")." ".ReadingsVal("$SELF","HMDeviceAlias","HMDeviceAlias");
return $ret
}
elsif (ReadingsVal("$SELF","state","") eq "update") {
my $ret = ReadingsVal("$SELF","HMDevice","HMDevice")." ".ReadingsVal("$SELF","HMDeviceAlias","HMDeviceAlias")." <b>updating<marquee width=20 direction=right>...</marquee></b>";
return $ret
}
elsif (ReadingsVal("$SELF","state","") eq "update_done") {
my $ret = ReadingsVal("$SELF","HMDevice","HMDevice").'<br>'.ReadingsVal("$SELF","HMDeviceAlias","HMDeviceAlias");
return $ret
}
elsif (ReadingsVal("$SELF","state","") eq "hmPairSerial") {
my $ret = "Zum Erkennen des neuen Softwarestandes, jetzt bitte die Anlerntaste am Homematic-Gerät ".ReadingsVal("$SELF","HMDevice","HMDevice")." ".ReadingsVal("$SELF","HMDeviceAlias","HMDeviceAlias")." drücken!";
return $ret
}
}
sub STA_HM_FwUpdate_doif {
if (ReadingsVal("$SELF","state","") eq "reread") {
return "update"
}
elsif (ReadingsVal("$SELF","state","") eq "update_done") {
return "hmPairSerial"
}
elsif (ReadingsVal("$SELF","state","") eq "hmPairSerial") {
return "reread"
}
elsif (ReadingsVal("$SELF","state","") eq "initialized") {
return "reread"
}
}
}
'<div style="text-align:justify">'.(RET_HM_FwUpdate_doif).'</div>'
WID([$SELF],"uzsuSelectRadio,".(STA_HM_FwUpdate_doif)."")

wait
1:0.1:0.1:0.1:0.1:0.1
Titel: Antw:eq3 firmware check funkioniert nicht mehr
Beitrag von: Migul47 am 24 Februar 2020, 19:59:53
Hallo,

dort sind aber nicht alle aufgelistet, oder? Mein HM-ES-TX-WM hat FW1.2 und es gibt eine 2.5 dafür.
Titel: Antw:eq3 firmware check funkioniert nicht mehr
Beitrag von: yersinia am 24 Februar 2020, 20:12:08
Zitat von: Migul47 am 24 Februar 2020, 19:59:53Mein HM-ES-TX-WM hat FW1.2 und es gibt eine 2.5 dafür.
Was die Quelle (https://update.homematic.com/firmware/api/firmware/search/DEVICE) nicht hergibt (https://ccu3-update.homematic.com/firmware/download?cmd=download&serial=0&product=HM-ES-TX-WM), kann auch das device nicht finden.
Allerdings gibt es diese bei eq-3 (https://www.eq-3.de/downloads/software/firmware/HM-ES-TX-WM_update_V2_5_191209.tgz).
Titel: Antw:eq3 firmware check funkioniert nicht mehr
Beitrag von: Pfriemler am 24 Februar 2020, 22:25:47
Obacht: Für die Energiemonitore gibt es mit dem Sprung auf V2.x etliche Änderungen. Ein Update macht nur für IEC-Interfaces Sinn. Ferraris-Sensoren bzw. einfache Kontakte werden in 2.x. nicht mehr unterstützt.
Titel: Antw:eq3 firmware check funkioniert nicht mehr
Beitrag von: Migul47 am 24 Februar 2020, 23:06:58
Hallo,

Ich habe auch nicht vor ein Update zu machen. Solange es geht, lang es nicht an. Ich wollte nur daruf hinweisen, das dort nicht alle Firmware gelistet wird.
Titel: Antw:eq3 firmware check funkioniert nicht mehr
Beitrag von: Beetle2003 am 29 Februar 2020, 19:57:03
Zitat von: mar3d@RPi3 am 20 Februar 2020, 18:19:44
Hier noch einmal mein fertiges DOIF, mit sortby direkt unter das Firmware-HTTPMOD platziert. Hier erscheint immer ein Button mit der Aktion die als nächstes erfolgt und macht immer das Update für des erste, aufgelistete Gerät:

DEF
([$SELF:"^reread$"] or [eQ3:"^reread$"])
({
my $newFwForDev1 = (split(/,/m,ReadingsVal("eQ3","newFwForDevices","???")))[0];
## fhem ("setreading $SELF NewFwForDev1 $newFwForDev1");
if ($newFwForDev1 =~ "Keine") {
fhem ("defmod status_HM_FwUpdate_doif at +00:00:01 set $SELF Keine");
}
else {
my $HMDevice = (split(/ /m,$newFwForDev1))[0];
fhem ("setreading $SELF HMDevice $HMDevice");
my $HMAlias = AttrVal("$HMDevice","alias","???");
fhem ("setreading $SELF HMDeviceAlias $HMAlias")
}
}
trigger WEB JS:location.reload()
)
DOELSEIF ([$SELF:"^Keine$"])
(trigger WEB JS:location.reload())
DOELSEIF ([$SELF:"^update$"])
({
my $newFwForDev1 = (split(/,/m,ReadingsVal("eQ3","newFwForDevices","???")))[0];
## fhem ("setreading $SELF NewFwForDev1 $newFwForDev1");
my $HMDevice = (split(/ /m,$newFwForDev1))[0];
fhem ("setreading $SELF HMDevice $HMDevice");
my $HMAlias = AttrVal("$HMDevice","alias","???");
fhem ("setreading $SELF HMDeviceAlias $HMAlias");
my $HMSerial = ReadingsVal("$HMDevice","D-serialNr","???");
fhem ("setreading $SELF HMDeviceSerial $HMSerial");
my $MODEL = (split(/ /m,$newFwForDev1))[1];
$MODEL =~ s/\(//g;
my $VERSION = (split(/ /m,$newFwForDev1))[5];
$VERSION =~ s/nfw_//g;
$VERSION =~ s/\)//g;
my $file = $MODEL."-".$VERSION.".tgz";
## fhem ("setreading $SELF File $file");
my $fw = "???";
my $extraktinfo = "???";
my $ls = `ls ./Downloads`,1;
if ($ls =~ $file) {
fhem ("setreading $SELF Downloadinfo Datei vorhanden, kein erneuter Download")
}
else {
my $downloadinfo = `curl --output ./Downloads/$file 'http://ccu3-update.homematic.com/firmware/download?cmd=download&serial=0&product=$MODEL'`,1;
fhem ("setreading $SELF Downloadinfo $downloadinfo")
}
my $tar = `tar tf ./Downloads/$file`,1;
## fhem ("setreading $SELF TAR $tar");
my $tar0 = (split(/\n/m,$tar))[0];
## fhem ("setreading $SELF TAR0 $tar0");
my $tar1 = (split(/\n/m,$tar))[1];
## fhem ("setreading $SELF TAR1 $tar1");
my $tar2 = (split(/\n/m,$tar))[2];
## fhem ("setreading $SELF TAR2 $tar2");
if ($tar0 =~ ".eq3") {
$fw = "$tar0"
}
elsif ($tar1 =~ ".eq3") {
$fw = "$tar1"
}
elsif ($tar2 =~ ".eq3") {
$fw = "$tar2"
}
else {
$fw = "???"
}
## fhem ("setreading $SELF Firmware $fw");
my $link = "./Downloads/fw_$MODEL/"."$fw";
## fhem ("setreading $SELF FirmwareLink $link");
if ($ls =~ "fw_$MODEL") {
my $lsM = `ls ./Downloads/fw_$MODEL`,1;
## fhem ("setreading $SELF LsM $lsM");
if ($lsM =~ "$fw") {
$extraktinfo = "Firmware-Datei vorhanden, kein erneutes Entpacken"
}
else {
$extraktinfo = `tar vxf ./Downloads/$file -C ./Downloads/fw_$MODEL`,1
}
}
else {
system("mkdir ./Downloads/fw_$MODEL");
## tar vxf ./Downloads/HM-TC-IT-WM-W-EU-1.4.2.tgz -C ./Downloads/fw_HM-TC-IT-WM-W-EU
$extraktinfo = `tar vxf ./Downloads/$file -C ./Downloads/fw_$MODEL`,1
}
fhem ("setreading $SELF Extraktinfo $extraktinfo");
fhem ("set $HMDevice fwUpdate ./Downloads/fw_$MODEL/$fw")
}
trigger WEB JS:location.reload()
)
DOELSEIF (["^HM_......$:^fwUpdate:.done$"])
(trigger WEB JS:location.reload())
DOELSEIF ([$SELF:"^hmPairSerial$"])
({
fhem ("set VCCU hmPairSerial ".ReadingsVal("$SELF","HMDeviceSerial","HMDeviceSerial"))
})
(trigger WEB JS:location.reload())
DOELSEIF (["^HM_......$:^D-firmware:.*$"])
({
fhem ("set eQ3 reread")
})


Attributes
addStateEvent
1

cmdState
reread|update|update_done|hmPairSerial|D-firmware

event-on-update-reading
state,Downloadinfo,Extraktinfo

group
Homematic Update

room
Homematic,system

selftrigger
wait

setList
reread update hmPairSerial

sortby
2

uiTable
{$SHOWNODEVICELINE = "system";
sub RET_HM_FwUpdate_doif {
if (ReadingsVal("$SELF","state","") eq "reread") {
my $ret = ReadingsVal("$SELF","HMDevice","HMDevice")." ".ReadingsVal("$SELF","HMDeviceAlias","HMDeviceAlias");
return $ret
}
elsif (ReadingsVal("$SELF","state","") eq "update") {
my $ret = ReadingsVal("$SELF","HMDevice","HMDevice")." ".ReadingsVal("$SELF","HMDeviceAlias","HMDeviceAlias")." <b>updating<marquee width=20 direction=right>...</marquee></b>";
return $ret
}
elsif (ReadingsVal("$SELF","state","") eq "update_done") {
my $ret = ReadingsVal("$SELF","HMDevice","HMDevice").'<br>'.ReadingsVal("$SELF","HMDeviceAlias","HMDeviceAlias");
return $ret
}
elsif (ReadingsVal("$SELF","state","") eq "hmPairSerial") {
my $ret = "Zum Erkennen des neuen Softwarestandes, jetzt bitte die Anlerntaste am Homematic-Gerät ".ReadingsVal("$SELF","HMDevice","HMDevice")." ".ReadingsVal("$SELF","HMDeviceAlias","HMDeviceAlias")." drücken!";
return $ret
}
}
sub STA_HM_FwUpdate_doif {
if (ReadingsVal("$SELF","state","") eq "reread") {
return "update"
}
elsif (ReadingsVal("$SELF","state","") eq "update_done") {
return "hmPairSerial"
}
elsif (ReadingsVal("$SELF","state","") eq "hmPairSerial") {
return "reread"
}
elsif (ReadingsVal("$SELF","state","") eq "initialized") {
return "reread"
}
}
}
'<div style="text-align:justify">'.(RET_HM_FwUpdate_doif).'</div>'
WID([$SELF],"uzsuSelectRadio,".(STA_HM_FwUpdate_doif)."")

wait
1:0.1:0.1:0.1:0.1:0.1


Danke, war die Lösung. Nun funktioniert es.
Titel: Antw:eq3 firmware check funkioniert nicht mehr
Beitrag von: yersinia am 16 April 2020, 13:10:50
Für Interessierte, es gibt dies jetzt auch als JsonMod Device: Anwendungsfall JsonMod #6: eq3 / homematic firmware check (https://forum.fhem.de/index.php/topic,110271.0.html)

btw, das dort beschriebene Problem trifft auch auf diese Versions-prüfung zu:
Zitat von: yersinia am 16 April 2020, 13:08:51
Die Versionsprüfung basiert bei den HM-Devices auf zwei Attributen: model und firmware. Hier kommt es in einem -mir bekannten- Fall zu einem Missmatch weil eq-3 HM-LC-Bl1PBU-FM definiert, das entsprechende HM Device aber HM-LC-BL1PBU-FM beinhaltet.

EDIT: hab einen Weg gefunden, das zu umschiffen (das gleiche RAW wie in meinen ursprünglichen post (https://forum.fhem.de/index.php/topic,78501.msg1019327.html#msg1019327)):
defmod hm_fw_check HTTPMOD https://update.homematic.com/firmware/api/firmware/search/DEVICE 86400
attr hm_fw_check userattr reading01AutoNumLen reading01Name reading01RegOpt reading01Regex reading02AutoNumLen reading02Name reading02RegOpt reading02Regex readingMaxAge readingMaxAgeReplacementMode:text,reading,internal,expression,delete showNewFWOnly:yes,no
attr hm_fw_check enableControlSet 1
attr hm_fw_check icon hm_ccu
attr hm_fw_check reading01AutoNumLen 2
attr hm_fw_check reading01Name hmfw-type
attr hm_fw_check reading01RegOpt g
attr hm_fw_check reading01Regex (?i)"type":"((?:\w+[-]*){1,})
attr hm_fw_check reading02AutoNumLen 2
attr hm_fw_check reading02Name hmfw-version
attr hm_fw_check reading02RegOpt g
attr hm_fw_check reading02Regex (?si)"version":"(\d+[.]\d+[.]\d+)
attr hm_fw_check readingMaxAge 10
attr hm_fw_check readingMaxAgeReplacementMode delete
attr hm_fw_check room fw-checks
attr hm_fw_check showError 1
attr hm_fw_check showMatched 1
attr hm_fw_check showNewFWOnly yes
attr hm_fw_check stateFormat {   my $ret ="";;;;\
    my $lastCheck = ReadingsTimestamp($name,"MATCHED_READINGS","???");;;;\
    $ret .= '<div style="text-align:left">';;;;\
    $ret .= '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 |<br>";;;;\
    $ret .= "------------------------------------------------------------------------------<br>";;;;\
    my $check = ReadingsVal($name,"newFwForDevices","error => no or wrong data from eq3-server!");;;;\
    if($check eq "no fw-updates needed!") {\
      $ret .= '| <b style="color:green">';;;;\
      $ret .= sprintf("%-74s",$check);;;;\
      $ret .= '</b> |';;;;\
    } elsif($check eq "error => no or wrong data from eq3-server!") {\
      $ret .= '| <b style="color:red">';;;;\
      $ret .= sprintf("%-74s",$check);;;;\
      $ret .= '</b> |';;;;\
    } else {\
      my @devices = split(',',$check);;;;\
      foreach my $devStr (@devices) {\
        my ($dev,$md,$idx,$ofw,$nfw) = $devStr =~ m/([^\s]+)\s[(]([^\s]+)\s[(](\d+)[)]\sofw_([\d\.]+)\s=>\snfw_([\d\.]+)/;;;;\
        my $fw_link = "https://ccu3-update.homematic.com/firmware/download?cmd=download&serial=0&product=".$md;;;;\
        $ret .= '| <a href="/fhem?detail='.$dev.'" target="_blank"><b>';;;;\
        $ret .= sprintf("%-30s",$dev);;;;\
        $ret .= '</b></a> | ';;;;\
        $ret .= '<b'.(($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> | ';;;;\
        $ret .= '<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> | ';;;;\
        $ret .= '<a title="download firmware file" href="'.$fw_link.'" target="_blank"><b style="color:red;;">';;;;\
        $ret .= sprintf("%6s",$nfw);;;;\
        $ret .= '</b></a> | ';;;;\
        $ret .= "<br />";;;;\
      }\
    }\
    $ret .= '</pre></div>';;;;\
  return $ret;;;;\
}
attr hm_fw_check userReadings newFwForDevices:MATCHED_READINGS.* {\
  my $ret = "";;;;\
  my $newfwonly = AttrVal($name,"showNewFWOnly","yes");;;;\
  if (ReadingsVal($name,"UNMATCHED_READINGS","?") eq "") {\
    my @eq3FwList = map { \
sprintf(uc(ReadingsVal($name,"hmfw-type-".$_,"?")).":".ReadingsVal($name,"hmfw-version-".$_,"?").":".$_);;;;\
} ReadingsVal($name,"MATCHED_READINGS","?")=~ m/hmfw-version-(\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 ($fwmd, $fwv, $idx) = $newFW =~ m/([^:]+):(\d+[.]\d+[.]\d+):(\d+)$/;;;;\
my ($fwh, $fwl) = split('\.',$fwv);;;;\
if(($newfwonly eq "no") || (($fwh > $h) || (($fwh == $h) && ($fwl > $l)))) {\
          $ret .= "," if($ret ne "");;;;\
  $ret .= $dev." (".$md." (".$idx.") ofw_".$v." => nfw_".$fwv.")";;;;\
        }\
      }\
    }\
  } else {\
    $ret = "error => no or wrong data from eq3-server!";;;;\
  }\
  return ($ret eq "")?"no fw-updates needed!":$ret;;;;\
}
attr hm_fw_check webCmd reread
Titel: Antw:eq3 firmware check funkioniert nicht mehr
Beitrag von: yersinia am 26 November 2020, 10:32:03
Anbei eine neuere Version, welche HmIP mit einschließt. Der HmIP-Input kommt von mcp (https://forum.fhem.de/index.php/topic,110271.msg1104330.html#msg1104330) aus dem JsonMod Thread.

defmod hm_fw_check HTTPMOD https://update.homematic.com/firmware/api/firmware/search/DEVICE 86400
attr hm_fw_check userattr reading01AutoNumLen reading01Name reading01RegOpt reading01Regex reading02AutoNumLen reading02Name reading02RegOpt reading02Regex readingMaxAge readingMaxAgeReplacementMode:text,reading,internal,expression,delete showNewFWOnly:yes,no
attr hm_fw_check do_not_notify 1
attr hm_fw_check enableControlSet 1
attr hm_fw_check icon hm_ccu
attr hm_fw_check reading01AutoNumLen 2
attr hm_fw_check reading01Name hmfw-type
attr hm_fw_check reading01RegOpt g
attr hm_fw_check reading01Regex (?i)"type":"((?:\w+[-]*){1,})
attr hm_fw_check reading02AutoNumLen 2
attr hm_fw_check reading02Name hmfw-version
attr hm_fw_check reading02RegOpt g
attr hm_fw_check reading02Regex (?si)"version":"(\d+[.]\d+[.]\d+)
attr hm_fw_check readingMaxAge 10
attr hm_fw_check readingMaxAgeReplacementMode delete
attr hm_fw_check room fw-checks
attr hm_fw_check showError 1
attr hm_fw_check showMatched 1
attr hm_fw_check showNewFWOnly yes
attr hm_fw_check stateFormat {   my $ret ="";;\
    my $lastCheck = POSIX::strftime("%d.%m. %H:%M",localtime(time_str2num(ReadingsTimestamp($name,"MATCHED_READINGS","2000-01-01 00:00:00"))));;\
my $nextCheck = POSIX::strftime("%d.%m. %H:%M",localtime(time_str2num(InternalVal($name,"TRIGGERTIME_FMT","2000-01-01 00:00:00"))));;\
my $cellstyle = "padding:3pt;;border-bottom:1px dotted lightgray;;";;\
    $ret .= '<div style="text-align:left;;">';;;;\
    $ret .= '<div>last <a title="eq3-downloads" href="http://www.eq-3.de/service/downloads.html">homematic</a>-fw-check => '.$lastCheck;;\
    $ret .= '</div>';;\
    my $check = ReadingsVal($name,"newFwForDevices","error => no or wrong data from eq3-server!");;\
    if($check eq "no fw-updates needed!") {\
      $ret .= '<div style="color:limegreen;;font-weight:bold;;">';;\
      $ret .= $check;;\
      $ret .= '</div>';;\
    } elsif($check eq "error => no or wrong data from eq3-server!") {\
      $ret .= '<div style="color:red;;font-weight:bold;;">';;\
      $ret .= $check;;\
      $ret .= '</div>';;\
    } else {\
$ret .= '<div style="display:table;;width:100%;;">';;\
$ret .= '<div style="display:table-row;;">';;\
      $ret .= '<div style="display:table-cell;;'.$cellstyle.'width:50%;;font-weight:bold;;">device</div>';;\
  $ret .= '<div style="display:table-cell;;'.$cellstyle.'width:40%;;font-weight:bold;;">model</div>';;\
  $ret .= '<div style="display:table-cell;;'.$cellstyle.'width:5%;;font-weight:bold;;">current</div>';;\
  $ret .= '<div style="display:table-cell;;'.$cellstyle.'width:5%;;font-weight:bold;;">new</div>';;\
$ret .= '</div>';; #header\
      my @devices = split(',',$check);;\
      foreach my $devStr (@devices) {\
my ($dev,$idx) = $devStr =~ m/([^\s]+)\s[(](\d+)[)]/;;\
my $md = ReadingsVal($name,("hmfw-type-".$idx),"?");;\
#my $ofw = AttrVal($dev,"firmware","?");;\
my $ofw = InternalVal($dev,"firmware",AttrVal($dev,"firmware","0.0"));;\
my $nfw = ReadingsVal($name,("hmfw-version-".$idx),"none");;\
        my $fw_link = "https://ccu3-update.homematic.com/firmware/download?cmd=download&serial=0&product=".$md;;\
$ret .= '<div style="display:table-row;;">';;\
$ret .= '<div style="display:table-cell;;'.$cellstyle.'width:50%;;">';;\
        $ret .= '<a href="/fhem?detail='.$dev.'" target="_blank">';;\
$ret .= AttrVal($dev,"alias",$dev);;\
        $ret .= '</a></div>';;\
$ret .= '<div style="display:table-cell;;'.$cellstyle.'width:30%;;font-weight:bold;;color:lightgrey;;">';;\
        $ret .= $md;;\
        $ret .= '</div>';;\
$ret .= '<div style="display:table-cell;;'.$cellstyle.'width:10%;;font-weight:bold;;color:lightgrey;;">';;\
        $ret .= $ofw;;\
        $ret .= '</div>';;\
$ret .= '<div style="display:table-cell;;'.$cellstyle.'width:10%;;font-weight:bold;;color:red;;">';;\
        $ret .= '<a title="download firmware file" href="'.$fw_link.'" rel="noopener noreferrer" target="_blank" style="color:red;;">';;\
        $ret .= $nfw;;\
        $ret .= '</a></div>';;\
        $ret .= '</div>';; #row\
      }\
  $ret .= '</div>';; #table\
    }\
$ret .= "<div style=\"text-align:left;;\">(next check: ".$nextCheck.")</div>";;\
    $ret .= '</div>';;\
  return $ret;;\
}
attr hm_fw_check userReadings newFwForDevices:MATCHED_READINGS.* {\
  my $ret = "";;\
  my $newfwonly = AttrVal($name,"showNewFWOnly","yes");;\
  if (ReadingsVal($name,"UNMATCHED_READINGS","?") eq "") {\
    my @eq3FwList = map { \
sprintf(uc(ReadingsVal($name,"hmfw-type-".$_,"?")).":".ReadingsVal($name,"hmfw-version-".$_,"?").":".$_);;\
} ReadingsVal($name,"MATCHED_READINGS","?")=~ m/hmfw-version-(\d\d)/g;;\
\
foreach my $dev (devspec2array("TYPE=CUL_HM|HMCCUDEV:FILTER=DEF=(......|..............):FILTER=subType!=virtual")) {\
  my $md = uc(InternalVal($dev,"ccutype",AttrVal($dev,"model","?")));;\
  my $v = InternalVal($dev,"firmware",AttrVal($dev,"firmware","0.0"));;\
      my ($h,$l) = split('\.',$v);;\
      foreach my $newFW (grep m/^${md}:/i,@eq3FwList) {\
my ($fwmd, $fwv, $idx) = $newFW =~ m/([^:]+):(\d+[.]\d+[.]\d+):(\d+)$/;;\
my ($fwh, $fwl) = split('\.',$fwv);;\
if(($newfwonly eq "no") || (($fwh > $h) || (($fwh == $h) && ($fwl > $l)))) {\
          $ret .= "," if($ret ne "");;\
  $ret .= $dev." (".$idx.")";;\
        }\
      }\
    }\
  } else {\
    $ret = "error => no or wrong data from eq3-server!";;\
  }\
  return ($ret eq "")?"no fw-updates needed!":$ret;;\
}
attr hm_fw_check webCmd reread

Ich hab es für Homematic-only (hab leider kein HmIP) getestet und es funktioniert wie zuvor.
Titel: Antw:eq3 firmware check funkioniert nicht mehr
Beitrag von: Beta-User am 26 November 2020, 10:43:37
Evtl. wäre es sinnvoll, das auch in dem "Vorschläge"-Thread zu posten; bin nicht sicher, ob der aktuelle Maintainer von httpmod.template hier mitliest ;) ...

(@yersinia: Möchtest du das Thema attrTemplate nicht evtl. nochmal bei JSONMOD anschieben und das übernehmen?)
Titel: Antw:eq3 firmware check funkioniert nicht mehr
Beitrag von: yersinia am 27 November 2020, 10:24:09
Zitat von: Beta-User am 26 November 2020, 10:43:37Evtl. wäre es sinnvoll, das auch in dem "Vorschläge"-Thread zu posten;
Erledigt (https://forum.fhem.de/index.php/topic,97694.msg1104841.html#msg1104841)

Zitat von: Beta-User am 26 November 2020, 10:43:37(@yersinia: Möchtest du das Thema attrTemplate nicht evtl. nochmal bei JSONMOD anschieben und das übernehmen?)
Da sehe ich bisher keinen Bedarf für. Bisher gibt es neun (https://forum.fhem.de/index.php/topic,111489.msg1057154.html#msg1057154) (mir bekannte) Vorlagen, davon sind zwei Corona-spezifisch. Zumal herrmannj dies noch einbauen müsste - ich glaube nicht, dass es hohe Priorität hätte derzeit.
Titel: Antw:eq3 firmware check funkioniert nicht mehr
Beitrag von: Beta-User am 27 November 2020, 10:50:41
Zitat von: yersinia am 27 November 2020, 10:24:09
Erledigt (https://forum.fhem.de/index.php/topic,97694.msg1104841.html#msg1104841)
Danke!

ZitatDa sehe ich bisher keinen Bedarf für. Bisher gibt es sieben (https://forum.fhem.de/index.php/topic,111489.msg1057154.html#msg1057154) (mir bekannte) Vorlagen, davon sind zwei Corona-spezifisch. Zumal herrmannj dies noch einbauen müsste - ich glaube nicht, dass es hohe Priorität hätte derzeit.
Na ja, der Aufwand, das grundsätzlich zu implementieren ist relativ gering (bei Bedarf suche ich den Patch für MQTT2_DEVICE raus, dürfte in <30 Min. erledigt sein).
Muss zugeben, dass ich auch bei MQTT2_DEVICE erst nicht gedacht hätte, dass es (so) großen Bedarf gäbe, und deine Sammlung ist sicher auch eine (gute!) Lösung, "best practice" vorzuhalten. Nur halt nur bedingt z.B. für englischsprachige User, die es ja durchaus auch gibt...

Andererseits: Wenn es (noch und relativ) wenige Beispiele gibt, ist der Pflegeaufwand für die templates auch nahezu null ;) .
Titel: Antw:eq3 firmware check funkioniert nicht mehr
Beitrag von: yersinia am 27 November 2020, 11:10:03
Seh' ich grundsätzlich ähnlich und hab es als Wunsch in die Feature-Wunschliste (https://forum.fhem.de/index.php/topic,111489.msg1057154.html#msg1057154) mit aufgenommen.
Titel: Antw:eq3 firmware check funkioniert nicht mehr
Beitrag von: yersinia am 02 Dezember 2020, 11:14:55
Mir ist aufgefallen, dass eq-3 download-link wesentlich mehr Geräte (insb HmIP) enthält als dieses httpmod template abfragt, daher hier eine neu Version:
defmod hm_fw_check HTTPMOD https://update.homematic.com/firmware/api/firmware/search/DEVICE 86400
attr hm_fw_check userattr reading01AutoNumLen reading01Name reading01RegOpt reading01Regex reading02AutoNumLen reading02Name reading02RegOpt reading02Regex readingMaxAge readingMaxAgeReplacementMode:text,reading,internal,expression,delete showNewFWOnly:yes,no
attr hm_fw_check do_not_notify 1
attr hm_fw_check enableControlSet 1
attr hm_fw_check icon hm_ccu
attr hm_fw_check reading01AutoNumLen 3
attr hm_fw_check reading01Name hmfw-type
attr hm_fw_check reading01RegOpt g
attr hm_fw_check reading01Regex (?i)"type":"((?:\w+[-]*){1,})
attr hm_fw_check reading02AutoNumLen 3
attr hm_fw_check reading02Name hmfw-version
attr hm_fw_check reading02RegOpt g
attr hm_fw_check reading02Regex (?si)"version":"(\d+[.]\d+[.]\d+)
attr hm_fw_check readingMaxAge 10
attr hm_fw_check readingMaxAgeReplacementMode delete
attr hm_fw_check showError 1
attr hm_fw_check showMatched 1
attr hm_fw_check showNewFWOnly yes
attr hm_fw_check stateFormat {   my $ret ="";;\
my $lastCheck = FmtDateTime(InternalVal($name,".LastUpdate",0));;\
my $nextCheck = FmtDateTime(InternalVal($name,".TRIGGERTIME",0));;\
my $cellstyle = "padding:3pt;;border-bottom:1px dotted lightgray;;";;\
    $ret .= '<div style="text-align:left;;">';;;;\
    $ret .= '<div>last <a title="eq3-downloads" href="http://www.eq-3.de/service/downloads.html">homematic</a>-fw-check => '.$lastCheck;;\
    $ret .= '</div>';;\
    my $check = ReadingsVal($name,"newFwForDevices","error => no or wrong data from eq3-server!");;\
    if($check eq "no fw-updates needed!") {\
      $ret .= '<div style="color:limegreen;;font-weight:bold;;">';;\
      $ret .= $check;;\
      $ret .= '</div>';;\
    } elsif($check eq "error => no or wrong data from eq3-server!") {\
      $ret .= '<div style="color:red;;font-weight:bold;;">';;\
      $ret .= $check;;\
      $ret .= '</div>';;\
    } else {\
$ret .= '<div style="display:table;;width:100%;;">';;\
$ret .= '<div style="display:table-row;;">';;\
      $ret .= '<div style="display:table-cell;;'.$cellstyle.'width:50%;;font-weight:bold;;">device</div>';;\
  $ret .= '<div style="display:table-cell;;'.$cellstyle.'width:40%;;font-weight:bold;;">model</div>';;\
  $ret .= '<div style="display:table-cell;;'.$cellstyle.'width:5%;;font-weight:bold;;">current</div>';;\
  $ret .= '<div style="display:table-cell;;'.$cellstyle.'width:5%;;font-weight:bold;;">new</div>';;\
$ret .= '</div>';; #header\
      my @devices = split(',',$check);;\
      foreach my $devStr (@devices) {\
my ($dev,$idx) = $devStr =~ m/([^\s]+)\s[(](\d+)[)]/;;\
my $md = ReadingsVal($name,("hmfw-type-".$idx),"?");;\
my $ofw = InternalVal($dev,"firmware",AttrVal($dev,"firmware","0.0"));;\
my $nfw = ReadingsVal($name,("hmfw-version-".$idx),"none");;\
        my $fw_link = "https://ccu3-update.homematic.com/firmware/download?cmd=download&serial=0&product=".$md;;\
$ret .= '<div style="display:table-row;;">';;\
$ret .= '<div style="display:table-cell;;'.$cellstyle.'width:50%;;">';;\
        $ret .= '<a href="/fhem?detail='.$dev.'" target="_blank">';;\
$ret .= AttrVal($dev,"alias",$dev);;\
        $ret .= '</a></div>';;\
$ret .= '<div style="display:table-cell;;'.$cellstyle.'width:30%;;font-weight:bold;;color:lightgrey;;">';;\
        $ret .= $md;;\
        $ret .= '</div>';;\
$ret .= '<div style="display:table-cell;;'.$cellstyle.'width:10%;;font-weight:bold;;color:lightgrey;;">';;\
        $ret .= $ofw;;\
        $ret .= '</div>';;\
$ret .= '<div style="display:table-cell;;'.$cellstyle.'width:10%;;font-weight:bold;;color:red;;">';;\
        $ret .= '<a title="download firmware file" href="'.$fw_link.'" rel="noopener noreferrer" target="_blank" style="color:red;;">';;\
        $ret .= $nfw;;\
        $ret .= '</a></div>';;\
        $ret .= '</div>';; #row\
      }\
  $ret .= '</div>';; #table\
    }\
$ret .= "<div style=\"text-align:left;;\">(next check: ".$nextCheck.")</div>";;\
    $ret .= '</div>';;\
  return $ret;;\
}
attr hm_fw_check userReadings newFwForDevices:MATCHED_READINGS.* {\
  my $ret = "";;\
  my $newfwonly = AttrVal($name,"showNewFWOnly","yes");;\
  if (ReadingsVal($name,"UNMATCHED_READINGS","?") eq "") {\
    my @eq3FwList = map { \
sprintf(uc(ReadingsVal($name,"hmfw-type-".$_,"?")).":".ReadingsVal($name,"hmfw-version-".$_,"?").":".$_);;\
} ReadingsVal($name,"MATCHED_READINGS","?")=~ m/hmfw-version-(\d\d\d)/g;;\
\
foreach my $dev (devspec2array("TYPE=CUL_HM|HMCCUDEV:FILTER=DEF=(......|..............):FILTER=subType!=virtual")) {\
  my $md = uc(InternalVal($dev,"ccutype",AttrVal($dev,"model","?")));;\
  my $v = InternalVal($dev,"firmware",AttrVal($dev,"firmware","0.0"));;\
      my ($h,$l) = split('\.',$v);;\
      foreach my $newFW (grep m/^${md}:/i,@eq3FwList) {\
my ($fwmd, $fwv, $idx) = $newFW =~ m/([^:]+):(\d+[.]\d+[.]\d+):(\d+)$/;;\
my ($fwh, $fwl) = split('\.',$fwv);;\
if(($newfwonly eq "no") || (($fwh > $h) || (($fwh == $h) && ($fwl > $l)))) {\
          $ret .= "," if($ret ne "");;\
  $ret .= $dev." (".$idx.")";;\
        }\
      }\
    }\
  } else {\
    $ret = "error => no or wrong data from eq3-server!";;\
  }\
  return ($ret eq "")?"no fw-updates needed!":$ret;;\
}
attr hm_fw_check webCmd reread




EDIT 2020-12-03: Update nach #187 (https://forum.fhem.de/index.php/topic,78501.msg1106645.html#msg1106645) - Danke @betateilchen
Titel: Antw:eq3 firmware check funkioniert nicht mehr
Beitrag von: betateilchen am 02 Dezember 2020, 11:25:56
Mir ist aufgefallen, dass "next_check" keine plausiblen Daten anzeigt.

InternalVal($name,"TRIGGERTIME_FMT","2000-01-01 00:00:00")

Wo soll denn das hier verwendete Internal herkommen? Beim Blick in 98_HTTPMOD.pm finde ich nirgends einen Hinweis darauf, dass dieses Internal überhaupt irgendwo verwendet wird.
Titel: Antw:eq3 firmware check funkioniert nicht mehr
Beitrag von: frank am 02 Dezember 2020, 11:30:20
stefan hat letztens im httpmod modul "aufgeräumt".
dabei sind einige internals verschwunden.
Titel: Antw:eq3 firmware check funkioniert nicht mehr
Beitrag von: yersinia am 02 Dezember 2020, 12:46:43
Korrekt, das Internal TRIGGERTIME_FMT ist im httpmod weggefallen ([1] (https://forum.fhem.de/index.php/topic,45176.msg1095872.html#msg1095872), [2] (https://forum.fhem.de/index.php/topic,45176.msg1102482.html#msg1102482)) - das hatte ich im httpmod Thread aber auch mehrfach überlesen. ::)
Ich hab es jetzt in #183 (https://forum.fhem.de/index.php/topic,78501.msg1106499.html#msg1106499) (und im template (https://forum.fhem.de/index.php/topic,97694.msg1106500.html#msg1106500)) auskommentiert. Mir ist noch nicht ganz klar, wie man den Zeitpunkt des nächsten checks berechnen kann - und ob es überhaupt jemanden interessiert.
Titel: Antw:eq3 firmware check funkioniert nicht mehr
Beitrag von: betateilchen am 02 Dezember 2020, 17:35:57
Zitat von: yersinia am 02 Dezember 2020, 12:46:43
Mir ist noch nicht ganz klar, wie man den Zeitpunkt des nächsten checks berechnen kann

Man muss gar nix berechnen, der timestamp für den nächsten Check steht im Internal ".TRIGGERTIME".
Der timestamp müsste nur in einem lesbaren Format in das stateFormat ausgegeben werden.


my $lastCheck = FmtDateTime(InternalVal($name,".LastUpdate",0));
my $nextCheck = FmtDateTime(InternalVal($name,".TRIGGERTIME",0));



Zitat von: yersinia am 02 Dezember 2020, 12:46:43
und ob es überhaupt jemanden interessiert.

wohl eher nicht  8)



Warum man in dem stateFormat aber so komplizierte Zeit-Umrechnungen macht, anstatt einfach FHEM Funktionen zu verwenden, ist mir ein Rätsel.


--
Titel: Antw:eq3 firmware check funkioniert nicht mehr
Beitrag von: yersinia am 02 Dezember 2020, 17:41:48
Zitat von: betateilchen am 02 Dezember 2020, 17:35:57Man muss gar nix berechnen, der timestamp für den nächsten Check steht im Internal ".TRIGGERTIME".
Kann ich nicht bestätigen. Enthält bei meinen Tests die Zeit des letzten Events (?) des Devices.

Aber wenn es niemand braucht, dann ist die Diskussion auch überflüssig....also wech damit! ;)
Titel: Antw:eq3 firmware check funkioniert nicht mehr
Beitrag von: betateilchen am 02 Dezember 2020, 17:45:31
Bei mir steht in .TRIGGERTIME definitiv ein timestamp von morgen.


Internals:
   .LASTSEND  1606926757.30555
   .LastUpdate 1606926757.30393
   .MaxAgeEnabled 1
   .TRIGGERTIME 1607013157.30393
   .getList   
   .setList   interval reread:noArg stop:noArg start:noArg clearCookies:noArg upgradeAttributes:noArg storeKeyValue
   BUSY       0
   DEF        https://update.homematic.com/firmware/api/firmware/search/DEVICE 86400
   FUUID      5fbfc2ad-f33f-b166-d626-fac91657762a6aa6
   Interval   86400
   MainURL    https://update.homematic.com/firmware/api/firmware/search/DEVICE
   ModuleVersion 4.0.12 - 24.10.2020
Titel: Antw:eq3 firmware check funkioniert nicht mehr
Beitrag von: yersinia am 02 Dezember 2020, 17:57:45
Zitat von: betateilchen am 02 Dezember 2020, 17:35:57
my $lastCheck = FmtDateTime(InternalVal($name,".LastUpdate",0));
my $nextCheck = FmtDateTime(InternalVal($name,".TRIGGERTIME",0));


Warum man in dem stateFormat aber so komplizierte Zeit-Umrechnungen macht, anstatt einfach FHEM Funktionen zu verwenden, ist mir ein Rätsel.
Ich persönlich finde das Format YYYY-MM-DD hh:mm:ss unschön und für den Zweck schwer zu lesen. Daher die Konvertierung zu DD.MM hh:mm.
Und ohne Entwickler zu sein, geschweigedenn Perl-Erfahrung zu haben, baut man auf dem auf, was man bekommen hat und ergänzt es um Dinge, die man so im Internet findet. Wenn es funktioniert, ist es gut. Ob das Hemdsärmlige Vorgehen gute Code-Qualität hervorbringt, wage ich zu bezweifeln.
Wenn es eine bessere, schnellere, effizientere Lösung gibt, immer her damit. :)

Zitat von: betateilchen am 02 Dezember 2020, 17:45:31Bei mir steht in .TRIGGERTIME definitiv ein timestamp von morgen.
Jup, mit der FmtDateTime()-Funktion stimmt es auch bei mir.

Titel: Antw:eq3 firmware check funkioniert nicht mehr
Beitrag von: betateilchen am 02 Dezember 2020, 18:17:37
Hey, wenn man davor schon einen englischen Text schreibt, kann man auch ein englischsprachiges Datums-/Zeitformat verwenden.
Ausserdem ist das eine in FHEM durchaus übliche und bekannte Darstellungsvariante.

Es funktioniert aber natürlich auch mit Deinem persönlichen Lieblingsformat ganz einfach:

my $lastCheck = POSIX::strftime("%d.%m. %H:%M",localtime(InternalVal($name,".LastUpdate",0)));

(identisch auf für $nextCheck verwendbar)
Titel: Antw:eq3 firmware check funkioniert nicht mehr
Beitrag von: yersinia am 03 Dezember 2020, 11:46:04
Zitat von: betateilchen am 02 Dezember 2020, 18:17:37Hey, wenn man davor schon einen englischen Text schreibt, kann man auch ein englischsprachiges Datums-/Zeitformat verwenden.
Ausserdem ist das eine in FHEM durchaus übliche und bekannte Darstellungsvariante.
Überzeugt. Folgen wir partiell der ISO 8601 (https://en.wikipedia.org/wiki/ISO_8601) und nutzen YYYY-MM-DD hh:mm:ss
(mir ist kein einheitlicher (iSv der globalen Sprachverteilung) Englischer Standard bekannt - da ist auch alles möglich (https://en.wikipedia.org/wiki/Date_format_by_country): YMD, DMY, MM/DD/YYYY, ...)

Zitat von: betateilchen am 02 Dezember 2020, 18:17:37Es funktioniert aber natürlich auch mit Deinem persönlichen Lieblingsformat ganz einfach:

my $lastCheck = POSIX::strftime("%d.%m. %H:%M",localtime(InternalVal($name,".LastUpdate",0)));

(identisch auf für $nextCheck verwendbar)
Thx für den Code, ich werde es aktualisieren. :)
Titel: Antw:eq3 firmware check funkioniert nicht mehr
Beitrag von: Frini am 17 Februar 2021, 14:27:16
Hallo,
hat eq3 hier die Server-Struktur geändert?
Ich bekomme hier nur noch folgende Rückmeldung:
error => no or wrong data from eq3-server!
Titel: Antw:eq3 firmware check funkioniert nicht mehr
Beitrag von: yersinia am 17 Februar 2021, 14:30:16
Kann ich nicht bestätigen, letzte Aktualisierung bei mir um 14Uhr und lief.

Welche Version des Templates hast du? Ein list von deinem Device bitte.
Titel: Antw:eq3 firmware check funkioniert nicht mehr
Beitrag von: DeeSPe am 17 Februar 2021, 14:44:58
Mein altes eq3 Device hat auch keine Daten mehr geholt.
Offensichtlich hat sich dort einiges geändert. Habe das Device gelöscht, neu angelegt und attrTemplate drüber gesetzt.
Ergebnis: funktioniert wieder einwandfrei!

Gruß
Dan
Titel: Antw:eq3 firmware check funkioniert nicht mehr
Beitrag von: Frini am 17 Februar 2021, 14:48:36
Ich habs jetzt auch noch einmal gelöscht und neu angelegt. Wie oben beschrieben. Jetzt kommen die Daten wieder. Schande über mein Haupt.

Titel: Antw:eq3 firmware check funkioniert nicht mehr
Beitrag von: yersinia am 03 März 2021, 14:26:19
Es gibt doch tatsächlich für ein Homematic classic Device (HM-ES-PMSw1-Pl) noch ein Update - auch wenn die Firmware von 2015 ist.
Titel: Antw:eq3 firmware check funkioniert nicht mehr
Beitrag von: Frank_Huber am 03 März 2021, 14:44:13
Zitat von: yersinia am 03 März 2021, 14:26:19
Es gibt doch tatsächlich für ein Homematic classic Device (HM-ES-PMSw1-Pl) noch ein Update - auch wenn die Firmware von 2015 ist.
Wow, hätte ich nicht damit gerechnet.
Wollte die Tage den FWcheck schon löschen weil da eh nie was kommt. ;-)
Titel: Antw:eq3 firmware check funkioniert nicht mehr
Beitrag von: Pfriemler am 03 März 2021, 14:57:43
Darüber haben sie sich gestern im Homematic-Forum auch schon gewundert. Hier ein erfreulichicher Beweis, dass alles noch funktioniert.
Titel: Antw:eq3 firmware check funkioniert nicht mehr
Beitrag von: Otto123 am 03 März 2021, 15:39:13
Wie man sieht: dreifach ist einfach besser  ;D ;D ;D

Das ich auch immer alles aufheben muss  :o
Titel: Antw:eq3 firmware check funkioniert nicht mehr
Beitrag von: Rampler am 03 März 2021, 19:43:53
Hi,
auch, wenn Ihr mich jetzt steinigt, aber wo kann ich die 2.6 für den HM-ES-PMSw1-Pl runter laden ?

Edit:
Ok, habs gefunden, war ja auch zu einfach ..
Titel: Antw:eq3 firmware check funkioniert nicht mehr
Beitrag von: cocojambo am 18 März 2021, 16:04:58
Ich habe zwei updates für meine HM Devices mit Hilfe diesen Tools gefunden und runtergeladen.
Nach dem entpacken steht in den "changelog.txt" Files immer eine Warnung drin, das man das update File nur in Verbindung mit einer CCU2/CCu3 durchführen darf.
Ist das so, oder kann ich diese eq3 Files auch wie vorher immer mit meinem HM-CFG-USB2 Stick zum updaten verwenden?

Gruß aus Köln
Norbert
Titel: Antw:eq3 firmware check funkioniert nicht mehr
Beitrag von: Otto123 am 18 März 2021, 18:16:27
Hallo Norbert,

wenn Du noch verrätst um welche Firmware und Geräte es sich handelt, könnte es sein das jemand konkrete Erfahrung dazu mitteilt. Es sind ja nicht alle changelog Leser :)

Gruß Otto
Titel: Antw:eq3 firmware check funkioniert nicht mehr
Beitrag von: Pfriemler am 18 März 2021, 19:15:31
Also ich bin unsicher.
Zum einen habe ich einen HM-LC-Dim1T-DR durch ein Update via FHEM eingebüßt (zumindest war es das initiale Update, dort steht ebenfalls die Warnung) - hingegen bekomme ich aber mit dem Configstick und dem HM-Firmware-Updater die Firmware problemlos neu aufgespielt (allerdings arbeitet der Aktor danach immer noch nicht).
Das muss aber nicht damit zusammenhängen, sondern kann auch ein Fehler des Gerätes sein.

Daneben habe ich zwei HM-LC-Bl1PBU-FM, in deren Changelog ebenfalls die Warnung steht, diese sind bei mir teilweise seit Sommer 2016 im Einsatz und dort habe ich mit an Sicherheit grenzender Wahrscheinlichkeit nichts anderes als FHEM für das letzte Update verwendet (den Aktor hatte ich bevor das Firmwareupdate V2_11_1_161212 kam).

In den Changelogs zur letzten Firmware bei beiden Aktoren steht aber auch, dass man das Update genausogut mit dem Firmwareupdate-Tool 1.2 machen darf (das sich nach frischer Installation im Programm allerdings als 1.1.8.9105 ausweist). Ich nutze selbst den HM-CFG-USB-2 dafür (aber eben nicht aus FHEM).

jm2c

Titel: Antw:eq3 firmware check funkioniert nicht mehr
Beitrag von: yersinia am 19 März 2021, 08:14:55
Ich habe bisher alle firmware-updates (für TC, DN und ES-PMSw1-Pl) mit den nanoCULs (a-culfw) und über FHEM geflasht. Bis auf einige Startschwierigkeiten (mehrere versuche bis man in den bootloader gekommen ist) lief das bei mir gut und erfolgreich durch. Ja, das kann unter anderen Bedingungen, bei anderen Benutzern, anders ablaufen. Wichtig ist, dass man sich und dem Funkprotokoll Zeit gibt und nicht den ganzen HM-Zoo in einem Rutsch versucht zu aktualisieren. Lieber ein paar Tage Zeit nehmen und die Devices sukzessive flashen.
Titel: Antw:eq3 firmware check funkioniert nicht mehr
Beitrag von: cocojambo am 19 März 2021, 10:22:10
Ich hatte zuvor eq3 angeschrieben wegen der beiden updates und bekam diese Antwort:
Zitatvielen Dank für Ihre Nachricht.
Die aktuellen Firmwaren werden nur noch und ausschließlich über die CCU Oberfläche angeboten. Gehen Sie dort auf die Starseite da wird im oberen rechten Bereich ein anstehendes Update angezeigt.

Also es handelt sich um diese zwei Aktoren, die ich mit dem USB Stick updaten möchte:

HM-ES-PMSw1-PL
HM-OU-CFM-PL

Gruß
Norbert
Titel: Antw:eq3 firmware check funkioniert nicht mehr
Beitrag von: Pfriemler am 19 März 2021, 11:32:35
Vom HM-ES-PMSw1-PL habe ich letztens drei Stück am Stück :-) via FHEM ohne Probleme mit neuer Firmware versorgt. Mindestabstand war nötig, danach liefen alle drei durch, sogar einer durch zwei Geschossdecken in den Keller (dauerte gefühlt länger - ?) aber ohne Probleme. Bei dem steht im Changelog aber nix, meine ich gestern nachgesehen zu haben.

Für den HM-OU-CFM-PL habe ich nur eine frisch heruntergeladene FW aber schon von 2015. Da steht zwar was von "neuester CCU-Software", aber da würde ich mir weniger n Kopp machen.

Nachtrag: Meines Wissens verwenden der unsrige firmware check und die CCU die gleiche Quelle. Im offiziellen Downloadbereich fehlen immer mal welche. So ist das von meinem kaputten Dimmer dort nicht gelistet. Langsam ahne ich, die wissen warum  >:(
Titel: Antw:eq3 firmware check funkioniert nicht mehr
Beitrag von: cocojambo am 21 März 2021, 10:22:21
Bin jetzt mal endlich dazu gekommen das Ganze auszuprobieren.
Software für USB Firmware Update installiert. Aktoren in Boot Modus gebracht und Firmware als .tar.gz überspielt.
Bei beiden Aktortypen hat es nur funktioniert wenn ich das Programm USB Firmware Update 2x gestartet habe und dann auf jeden Aktor 2x hintereinander die Firmware aufgespielt habe.
Beim ersten Start kommt ganz kurz die Eingabe Maske auf dem Desktop und verschwindet wieder und beim ersten update ändert sich nicht die Firmware Version.
Alles in Allem hat es funktioniert, man kann also die Firmware trotz Warnung 100% ig verwenden. Alle 4 Aktoren funktionieren einwandfrei und alle vorherigen Einstellungen sind auch noch vorhanden.

Vielen Dank für Eure Tipps.

Gruß
Norbert
Titel: Antw:eq3 firmware check funkioniert nicht mehr
Beitrag von: Pfriemler am 21 März 2021, 18:32:04
Zitat von: cocojambo am 21 März 2021, 10:22:21
Beim ersten Start kommt ganz kurz die Eingabe Maske auf dem Desktop
Kenne ich. Habe aktuell im Rahmen meiner Rettungsversuche auf drei Rechnern (Win7 und 2x Win10) mehr oder weniger Schiffbruch mit dem Programm erlitten, du kannst von Glück reden, wenn es immer nur einmal kurz verschwindet...

Zitatbeim ersten update ändert sich nicht die Firmware Version.
Sicher? getVersion ausgelöst?
Updates haben - wenn der Upload einmal lief - bei mir immer im ersten Anlauf perfekt funktioniert (ich hatte anfangs fast ausschließlich die Soft verwendet, weil der zuerst bei mir benutzte HMLAN keine Updates kann).
Man kann übrigens auch am Flackern der Geräte-LED erkennen, dass die Updates über die Software weit stabilier übertragen werden - ein so gleichmäßiges Flickern habe ich aus FHEM nie gesehen. Nichtsdestotrotz scheint auch aus FHEM das Timing ausreichend genau für die Übertragung zu sein. Fehlerhafte Übertragungen würde der Aktor ohnehin zurückweisen.
Titel: Antw:eq3 firmware check funkioniert nicht mehr
Beitrag von: Otto123 am 21 März 2021, 18:49:23
Die Firmwareversion im Device in FHEM ändert ist erst nach dem man eine neue Anlernmessage ausgelöst hat!

ZitatDen neuen Eintrag (und damit die Erfolgsquittung) erhält man nur mit einer Anlernmessage:
set HMUART1 hmPairSerial <Serial des gerade aktualisierten Gerätes>
set <> getConfig
Alternativ, oder falls das nicht funktioniert, kann man die Configtaste drücken.
Titel: Antw:eq3 firmware check funkioniert nicht mehr
Beitrag von: Thoffi1978 am 10 Mai 2021, 10:25:19
Hej,
wenn ich aus dem u.g. Code das "StateFormat" eingebe (Copy&Paste) kommt folgende Fehlermeldung:
Missing right curly or square bracket at (eval 3166) line 1, at end of line
syntax error at (eval 3166) line 1, at EOF


Alle anderen Attribute konnte ich Fehlerfrei hinzufügen.
Könnt Ihr mir sagen wie ich das mit dem StateFormat machen kann?

Vielen Dank,
Hoffi


Zitat von: yersinia am 02 Dezember 2020, 11:14:55
Mir ist aufgefallen, dass eq-3 download-link wesentlich mehr Geräte (insb HmIP) enthält als dieses httpmod template abfragt, daher hier eine neu Version:
defmod hm_fw_check HTTPMOD https://update.homematic.com/firmware/api/firmware/search/DEVICE 86400
attr hm_fw_check userattr reading01AutoNumLen reading01Name reading01RegOpt reading01Regex reading02AutoNumLen reading02Name reading02RegOpt reading02Regex readingMaxAge readingMaxAgeReplacementMode:text,reading,internal,expression,delete showNewFWOnly:yes,no
attr hm_fw_check do_not_notify 1
attr hm_fw_check enableControlSet 1
attr hm_fw_check icon hm_ccu
attr hm_fw_check reading01AutoNumLen 3
attr hm_fw_check reading01Name hmfw-type
attr hm_fw_check reading01RegOpt g
attr hm_fw_check reading01Regex (?i)"type":"((?:\w+[-]*){1,})
attr hm_fw_check reading02AutoNumLen 3
attr hm_fw_check reading02Name hmfw-version
attr hm_fw_check reading02RegOpt g
attr hm_fw_check reading02Regex (?si)"version":"(\d+[.]\d+[.]\d+)
attr hm_fw_check readingMaxAge 10
attr hm_fw_check readingMaxAgeReplacementMode delete
attr hm_fw_check showError 1
attr hm_fw_check showMatched 1
attr hm_fw_check showNewFWOnly yes
attr hm_fw_check stateFormat {   my $ret ="";;\
my $lastCheck = FmtDateTime(InternalVal($name,".LastUpdate",0));;\
my $nextCheck = FmtDateTime(InternalVal($name,".TRIGGERTIME",0));;\
my $cellstyle = "padding:3pt;;border-bottom:1px dotted lightgray;;";;\
    $ret .= '<div style="text-align:left;;">';;;;\
    $ret .= '<div>last <a title="eq3-downloads" href="http://www.eq-3.de/service/downloads.html">homematic</a>-fw-check => '.$lastCheck;;\
    $ret .= '</div>';;\
    my $check = ReadingsVal($name,"newFwForDevices","error => no or wrong data from eq3-server!");;\
    if($check eq "no fw-updates needed!") {\
      $ret .= '<div style="color:limegreen;;font-weight:bold;;">';;\
      $ret .= $check;;\
      $ret .= '</div>';;\
    } elsif($check eq "error => no or wrong data from eq3-server!") {\
      $ret .= '<div style="color:red;;font-weight:bold;;">';;\
      $ret .= $check;;\
      $ret .= '</div>';;\
    } else {\
$ret .= '<div style="display:table;;width:100%;;">';;\
$ret .= '<div style="display:table-row;;">';;\
      $ret .= '<div style="display:table-cell;;'.$cellstyle.'width:50%;;font-weight:bold;;">device</div>';;\
  $ret .= '<div style="display:table-cell;;'.$cellstyle.'width:40%;;font-weight:bold;;">model</div>';;\
  $ret .= '<div style="display:table-cell;;'.$cellstyle.'width:5%;;font-weight:bold;;">current</div>';;\
  $ret .= '<div style="display:table-cell;;'.$cellstyle.'width:5%;;font-weight:bold;;">new</div>';;\
$ret .= '</div>';; #header\
      my @devices = split(',',$check);;\
      foreach my $devStr (@devices) {\
my ($dev,$idx) = $devStr =~ m/([^\s]+)\s[(](\d+)[)]/;;\
my $md = ReadingsVal($name,("hmfw-type-".$idx),"?");;\
my $ofw = InternalVal($dev,"firmware",AttrVal($dev,"firmware","0.0"));;\
my $nfw = ReadingsVal($name,("hmfw-version-".$idx),"none");;\
        my $fw_link = "https://ccu3-update.homematic.com/firmware/download?cmd=download&serial=0&product=".$md;;\
$ret .= '<div style="display:table-row;;">';;\
$ret .= '<div style="display:table-cell;;'.$cellstyle.'width:50%;;">';;\
        $ret .= '<a href="/fhem?detail='.$dev.'" target="_blank">';;\
$ret .= AttrVal($dev,"alias",$dev);;\
        $ret .= '</a></div>';;\
$ret .= '<div style="display:table-cell;;'.$cellstyle.'width:30%;;font-weight:bold;;color:lightgrey;;">';;\
        $ret .= $md;;\
        $ret .= '</div>';;\
$ret .= '<div style="display:table-cell;;'.$cellstyle.'width:10%;;font-weight:bold;;color:lightgrey;;">';;\
        $ret .= $ofw;;\
        $ret .= '</div>';;\
$ret .= '<div style="display:table-cell;;'.$cellstyle.'width:10%;;font-weight:bold;;color:red;;">';;\
        $ret .= '<a title="download firmware file" href="'.$fw_link.'" rel="noopener noreferrer" target="_blank" style="color:red;;">';;\
        $ret .= $nfw;;\
        $ret .= '</a></div>';;\
        $ret .= '</div>';; #row\
      }\
  $ret .= '</div>';; #table\
    }\
$ret .= "<div style=\"text-align:left;;\">(next check: ".$nextCheck.")</div>";;\
    $ret .= '</div>';;\
  return $ret;;\
}
attr hm_fw_check userReadings newFwForDevices:MATCHED_READINGS.* {\
  my $ret = "";;\
  my $newfwonly = AttrVal($name,"showNewFWOnly","yes");;\
  if (ReadingsVal($name,"UNMATCHED_READINGS","?") eq "") {\
    my @eq3FwList = map { \
sprintf(uc(ReadingsVal($name,"hmfw-type-".$_,"?")).":".ReadingsVal($name,"hmfw-version-".$_,"?").":".$_);;\
} ReadingsVal($name,"MATCHED_READINGS","?")=~ m/hmfw-version-(\d\d\d)/g;;\
\
foreach my $dev (devspec2array("TYPE=CUL_HM|HMCCUDEV:FILTER=DEF=(......|..............):FILTER=subType!=virtual")) {\
  my $md = uc(InternalVal($dev,"ccutype",AttrVal($dev,"model","?")));;\
  my $v = InternalVal($dev,"firmware",AttrVal($dev,"firmware","0.0"));;\
      my ($h,$l) = split('\.',$v);;\
      foreach my $newFW (grep m/^${md}:/i,@eq3FwList) {\
my ($fwmd, $fwv, $idx) = $newFW =~ m/([^:]+):(\d+[.]\d+[.]\d+):(\d+)$/;;\
my ($fwh, $fwl) = split('\.',$fwv);;\
if(($newfwonly eq "no") || (($fwh > $h) || (($fwh == $h) && ($fwl > $l)))) {\
          $ret .= "," if($ret ne "");;\
  $ret .= $dev." (".$idx.")";;\
        }\
      }\
    }\
  } else {\
    $ret = "error => no or wrong data from eq3-server!";;\
  }\
  return ($ret eq "")?"no fw-updates needed!":$ret;;\
}
attr hm_fw_check webCmd reread




EDIT 2020-12-03: Update nach #187 (https://forum.fhem.de/index.php/topic,78501.msg1106645.html#msg1106645) - Danke @betateilchen
Titel: Antw:eq3 firmware check funkioniert nicht mehr
Beitrag von: yersinia am 10 Mai 2021, 10:36:27
Ich kann den Fehler nicht nachstellen. Ich habe den Code
Zitat von: yersinia am 02 Dezember 2020, 11:14:55
defmod hm_fw_check HTTPMOD https://update.homematic.com/firmware/api/firmware/search/DEVICE 86400
attr hm_fw_check userattr reading01AutoNumLen reading01Name reading01RegOpt reading01Regex reading02AutoNumLen reading02Name reading02RegOpt reading02Regex readingMaxAge readingMaxAgeReplacementMode:text,reading,internal,expression,delete showNewFWOnly:yes,no
attr hm_fw_check do_not_notify 1
attr hm_fw_check enableControlSet 1
attr hm_fw_check icon hm_ccu
attr hm_fw_check reading01AutoNumLen 3
attr hm_fw_check reading01Name hmfw-type
attr hm_fw_check reading01RegOpt g
attr hm_fw_check reading01Regex (?i)"type":"((?:\w+[-]*){1,})
attr hm_fw_check reading02AutoNumLen 3
attr hm_fw_check reading02Name hmfw-version
attr hm_fw_check reading02RegOpt g
attr hm_fw_check reading02Regex (?si)"version":"(\d+[.]\d+[.]\d+)
attr hm_fw_check readingMaxAge 10
attr hm_fw_check readingMaxAgeReplacementMode delete
attr hm_fw_check showError 1
attr hm_fw_check showMatched 1
attr hm_fw_check showNewFWOnly yes
attr hm_fw_check stateFormat {   my $ret ="";;\
my $lastCheck = FmtDateTime(InternalVal($name,".LastUpdate",0));;\
my $nextCheck = FmtDateTime(InternalVal($name,".TRIGGERTIME",0));;\
my $cellstyle = "padding:3pt;;border-bottom:1px dotted lightgray;;";;\
    $ret .= '<div style="text-align:left;;">';;;;\
    $ret .= '<div>last <a title="eq3-downloads" href="http://www.eq-3.de/service/downloads.html">homematic</a>-fw-check => '.$lastCheck;;\
    $ret .= '</div>';;\
    my $check = ReadingsVal($name,"newFwForDevices","error => no or wrong data from eq3-server!");;\
    if($check eq "no fw-updates needed!") {\
      $ret .= '<div style="color:limegreen;;font-weight:bold;;">';;\
      $ret .= $check;;\
      $ret .= '</div>';;\
    } elsif($check eq "error => no or wrong data from eq3-server!") {\
      $ret .= '<div style="color:red;;font-weight:bold;;">';;\
      $ret .= $check;;\
      $ret .= '</div>';;\
    } else {\
$ret .= '<div style="display:table;;width:100%;;">';;\
$ret .= '<div style="display:table-row;;">';;\
      $ret .= '<div style="display:table-cell;;'.$cellstyle.'width:50%;;font-weight:bold;;">device</div>';;\
  $ret .= '<div style="display:table-cell;;'.$cellstyle.'width:40%;;font-weight:bold;;">model</div>';;\
  $ret .= '<div style="display:table-cell;;'.$cellstyle.'width:5%;;font-weight:bold;;">current</div>';;\
  $ret .= '<div style="display:table-cell;;'.$cellstyle.'width:5%;;font-weight:bold;;">new</div>';;\
$ret .= '</div>';; #header\
      my @devices = split(',',$check);;\
      foreach my $devStr (@devices) {\
my ($dev,$idx) = $devStr =~ m/([^\s]+)\s[(](\d+)[)]/;;\
my $md = ReadingsVal($name,("hmfw-type-".$idx),"?");;\
my $ofw = InternalVal($dev,"firmware",AttrVal($dev,"firmware","0.0"));;\
my $nfw = ReadingsVal($name,("hmfw-version-".$idx),"none");;\
        my $fw_link = "https://ccu3-update.homematic.com/firmware/download?cmd=download&serial=0&product=".$md;;\
$ret .= '<div style="display:table-row;;">';;\
$ret .= '<div style="display:table-cell;;'.$cellstyle.'width:50%;;">';;\
        $ret .= '<a href="/fhem?detail='.$dev.'" target="_blank">';;\
$ret .= AttrVal($dev,"alias",$dev);;\
        $ret .= '</a></div>';;\
$ret .= '<div style="display:table-cell;;'.$cellstyle.'width:30%;;font-weight:bold;;color:lightgrey;;">';;\
        $ret .= $md;;\
        $ret .= '</div>';;\
$ret .= '<div style="display:table-cell;;'.$cellstyle.'width:10%;;font-weight:bold;;color:lightgrey;;">';;\
        $ret .= $ofw;;\
        $ret .= '</div>';;\
$ret .= '<div style="display:table-cell;;'.$cellstyle.'width:10%;;font-weight:bold;;color:red;;">';;\
        $ret .= '<a title="download firmware file" href="'.$fw_link.'" rel="noopener noreferrer" target="_blank" style="color:red;;">';;\
        $ret .= $nfw;;\
        $ret .= '</a></div>';;\
        $ret .= '</div>';; #row\
      }\
  $ret .= '</div>';; #table\
    }\
$ret .= "<div style=\"text-align:left;;\">(next check: ".$nextCheck.")</div>";;\
    $ret .= '</div>';;\
  return $ret;;\
}
attr hm_fw_check userReadings newFwForDevices:MATCHED_READINGS.* {\
  my $ret = "";;\
  my $newfwonly = AttrVal($name,"showNewFWOnly","yes");;\
  if (ReadingsVal($name,"UNMATCHED_READINGS","?") eq "") {\
    my @eq3FwList = map { \
sprintf(uc(ReadingsVal($name,"hmfw-type-".$_,"?")).":".ReadingsVal($name,"hmfw-version-".$_,"?").":".$_);;\
} ReadingsVal($name,"MATCHED_READINGS","?")=~ m/hmfw-version-(\d\d\d)/g;;\
\
foreach my $dev (devspec2array("TYPE=CUL_HM|HMCCUDEV:FILTER=DEF=(......|..............):FILTER=subType!=virtual")) {\
  my $md = uc(InternalVal($dev,"ccutype",AttrVal($dev,"model","?")));;\
  my $v = InternalVal($dev,"firmware",AttrVal($dev,"firmware","0.0"));;\
      my ($h,$l) = split('\.',$v);;\
      foreach my $newFW (grep m/^${md}:/i,@eq3FwList) {\
my ($fwmd, $fwv, $idx) = $newFW =~ m/([^:]+):(\d+[.]\d+[.]\d+):(\d+)$/;;\
my ($fwh, $fwl) = split('\.',$fwv);;\
if(($newfwonly eq "no") || (($fwh > $h) || (($fwh == $h) && ($fwl > $l)))) {\
          $ret .= "," if($ret ne "");;\
  $ret .= $dev." (".$idx.")";;\
        }\
      }\
    }\
  } else {\
    $ret = "error => no or wrong data from eq3-server!";;\
  }\
  return ($ret eq "")?"no fw-updates needed!":$ret;;\
}
attr hm_fw_check webCmd reread
1:1 übernommen und das Device ist fehlerfrei inkl. stateFormat angelegt worden. Hast du den Code via Template übernommen oder hast du den Code kopiert? Wenn Letzteres, evtl Kopierfehler?
Titel: Antw:eq3 firmware check funkioniert nicht mehr
Beitrag von: Otto123 am 10 Mai 2021, 11:16:03
Zitat von: Thoffi1978 am 10 Mai 2021, 10:25:19
Könnt Ihr mir sagen wie ich das mit dem StateFormat machen kann?
Hi,

raw Definition auf, den Code in allen Zeilen kopieren:
attr hm_fw_check stateFormat {   my $ret ="";;\
my $lastCheck = FmtDateTime(InternalVal($name,".LastUpdate",0));;\
my $nextCheck = FmtDateTime(InternalVal($name,".TRIGGERTIME",0));;\
my $cellstyle = "padding:3pt;;border-bottom:1px dotted lightgray;;";;\
    $ret .= '<div style="text-align:left;;">';;;;\
    $ret .= '<div>last <a title="eq3-downloads" href="http://www.eq-3.de/service/downloads.html">homematic</a>-fw-check => '.$lastCheck;;\
    $ret .= '</div>';;\
    my $check = ReadingsVal($name,"newFwForDevices","error => no or wrong data from eq3-server!");;\
    if($check eq "no fw-updates needed!") {\
      $ret .= '<div style="color:limegreen;;font-weight:bold;;">';;\
      $ret .= $check;;\
      $ret .= '</div>';;\
    } elsif($check eq "error => no or wrong data from eq3-server!") {\
      $ret .= '<div style="color:red;;font-weight:bold;;">';;\
      $ret .= $check;;\
      $ret .= '</div>';;\
    } else {\
$ret .= '<div style="display:table;;width:100%;;">';;\
$ret .= '<div style="display:table-row;;">';;\
      $ret .= '<div style="display:table-cell;;'.$cellstyle.'width:50%;;font-weight:bold;;">device</div>';;\
  $ret .= '<div style="display:table-cell;;'.$cellstyle.'width:40%;;font-weight:bold;;">model</div>';;\
  $ret .= '<div style="display:table-cell;;'.$cellstyle.'width:5%;;font-weight:bold;;">current</div>';;\
  $ret .= '<div style="display:table-cell;;'.$cellstyle.'width:5%;;font-weight:bold;;">new</div>';;\
$ret .= '</div>';; #header\
      my @devices = split(',',$check);;\
      foreach my $devStr (@devices) {\
my ($dev,$idx) = $devStr =~ m/([^\s]+)\s[(](\d+)[)]/;;\
my $md = ReadingsVal($name,("hmfw-type-".$idx),"?");;\
my $ofw = InternalVal($dev,"firmware",AttrVal($dev,"firmware","0.0"));;\
my $nfw = ReadingsVal($name,("hmfw-version-".$idx),"none");;\
        my $fw_link = "https://ccu3-update.homematic.com/firmware/download?cmd=download&serial=0&product=".$md;;\
$ret .= '<div style="display:table-row;;">';;\
$ret .= '<div style="display:table-cell;;'.$cellstyle.'width:50%;;">';;\
        $ret .= '<a href="/fhem?detail='.$dev.'" target="_blank">';;\
$ret .= AttrVal($dev,"alias",$dev);;\
        $ret .= '</a></div>';;\
$ret .= '<div style="display:table-cell;;'.$cellstyle.'width:30%;;font-weight:bold;;color:lightgrey;;">';;\
        $ret .= $md;;\
        $ret .= '</div>';;\
$ret .= '<div style="display:table-cell;;'.$cellstyle.'width:10%;;font-weight:bold;;color:lightgrey;;">';;\
        $ret .= $ofw;;\
        $ret .= '</div>';;\
$ret .= '<div style="display:table-cell;;'.$cellstyle.'width:10%;;font-weight:bold;;color:red;;">';;\
        $ret .= '<a title="download firmware file" href="'.$fw_link.'" rel="noopener noreferrer" target="_blank" style="color:red;;">';;\
        $ret .= $nfw;;\
        $ret .= '</a></div>';;\
        $ret .= '</div>';; #row\
      }\
  $ret .= '</div>';; #table\
    }\
$ret .= "<div style=\"text-align:left;;\">(next check: ".$nextCheck.")</div>";;\
    $ret .= '</div>';;\
  return $ret;;\
}
Execute und fertig  ;D

Gruß Otto
Titel: Antw:eq3 firmware check funkioniert nicht mehr
Beitrag von: Thoffi1978 am 10 Mai 2021, 12:43:42
Es war mein Fehler.
Direkt in der cfg passts natürlich.

Entschuldigung  :-X

Hoffi
Titel: Antw:eq3 firmware check funkioniert nicht mehr
Beitrag von: reibuehl am 17 November 2021, 17:41:19
Mit dem HTTPMOD attrTemplate hm_firmware_check_v2 bekomme ich "no fw-updates needed" während die JsonMod Variante mir ein Update von 2.5 auf 2.6 für meine HM-ES-PMSW1-PL anzeigt. Woran könnte das liegen?
Titel: Antw:eq3 firmware check funkioniert nicht mehr
Beitrag von: yersinia am 18 November 2021, 07:42:48
An einem fehlenden list des HTTPMOD Devices. ;)

Wenn ich mein httpmod device auf alle Firmwares anzeigen stelle (ich habe bereits die fw 2.6), finde ich einen Eintrag für einen HM-ES-PMSw1-Pl (https://ccu3-update.homematic.com/firmware/download?cmd=download&serial=0&product=HM-ES-PMSw1-Pl).
Titel: Antw:eq3 firmware check funkioniert nicht mehr
Beitrag von: MadMax-FHEM am 18 November 2021, 08:01:49
Zitat von: yersinia am 18 November 2021, 07:42:48
... finde ich einen Eintrag für einen HM-ES-PMSw1-Pl (https://ccu3-update.homematic.com/firmware/download?cmd=download&serial=0&product=HM-ES-PMSw1-Pl).

Ich auch und ich habe diese FW noch nicht aufgespielt...
...und auch sonst nichts groß am HTTPMOD "eingestellt" (zumindest kann ich mich nicht erinnern 8)  )...

Gruß, Joachim
Titel: Antw:eq3 firmware check funkioniert nicht mehr
Beitrag von: reibuehl am 18 November 2021, 14:32:44
Hier der List des Devices:

[code]Internals:
   BUSY       0
   DEF        https://update.homematic.com/firmware/api/firmware/search/DEVICE 86400
   FUUID      5c59d11e-f33f-3bc6-cb21-b4392da77552bc03
   Interval   86400
   MainURL    https://update.homematic.com/firmware/api/firmware/search/DEVICE
   ModuleVersion 4.1.10 - 6.7.2021
   NAME       eq3
   NOTIFYDEV  global
   NR         678
   NTFY_ORDER 50-eq3
   STATE      <div style="text-align:left;"><div>last <a title="eq3-downloads" href="http://www.eq-3.de/service/downloads.html">homematic</a>-fw-check => 2021-11-17 17:38:07</div><div style="color:limegreen;font-weight:bold;">no fw-updates needed!</div><div style="text-align:left;">(next check: 2021-11-18 16:21:50)</div></div>
   TYPE       HTTPMOD
   value     
   CompiledRegexes:
   HttpUtils:
     NAME       
     addr       https://update.homematic.com:443
     auth       0
     buf       
     code       200
     compress   1
     conn       
     data       
     displayurl https://update.homematic.com/firmware/api/firmware/search/DEVICE
     header     
     host       update.homematic.com
     httpheader HTTP/1.1 200 OK
Server: nginx
Date: Wed, 17 Nov 2021 16:38:07 GMT
Content-Type: text/plain
Content-Length: 982
Connection: close
content-encoding: gzip
Strict-Transport-Security: max-age=31536000; includeSubDomains
Content-Security-Policy: upgrade-insecure-requests
     httpversion 1.0
     hu_blocking 0
     hu_filecount 1
     hu_port    443
     hu_portSfx
     ignoreredirects 1
     loglevel   4
     path       /firmware/api/firmware/search/DEVICE
     protocol   https
     redirects  0
     timeout    2
     url        https://update.homematic.com/firmware/api/firmware/search/DEVICE
     sslargs:
   QUEUE:
   READINGS:
     2021-11-16 19:56:38   LAST_ERROR      read from https://www.eq-3.de:443 timed out
     2021-11-17 17:38:07   LAST_REQUEST    update
     2021-11-17 17:38:07   MATCHED_READINGS hmfw-type-001 hmfw-type-002 hmfw-type-003 hmfw-type-004 hmfw-type-005 hmfw-type-006 hmfw-type-007 hmfw-type-008 hmfw-type-009 hmfw-type-010 hmfw-type-011 hmfw-type-012 hmfw-type-013 hmfw-type-014 hmfw-type-015 hmfw-type-016 hmfw-type-017 hmfw-type-018 hmfw-type-019 hmfw-type-020 hmfw-type-021 hmfw-type-022 hmfw-type-023 hmfw-type-024 hmfw-type-025 hmfw-type-026 hmfw-type-027 hmfw-type-028 hmfw-type-029 hmfw-type-030 hmfw-type-031 hmfw-type-032 hmfw-type-033 hmfw-type-034 hmfw-type-035 hmfw-type-036 hmfw-type-037 hmfw-type-038 hmfw-type-039 hmfw-type-040 hmfw-type-041 hmfw-type-042 hmfw-type-043 hmfw-type-044 hmfw-type-045 hmfw-type-046 hmfw-type-047 hmfw-type-048 hmfw-type-049 hmfw-type-050 hmfw-type-051 hmfw-type-052 hmfw-type-053 hmfw-type-054 hmfw-type-055 hmfw-type-056 hmfw-type-057 hmfw-type-058 hmfw-type-059 hmfw-type-060 hmfw-type-061 hmfw-type-062 hmfw-type-063 hmfw-type-064 hmfw-type-065 hmfw-type-066 hmfw-type-067 hmfw-type-068 hmfw-type-069 hmfw-type-070 hmfw-type-071 hmfw-type-072 hmfw-type-073 hmfw-type-074 hmfw-type-075 hmfw-type-076 hmfw-type-077 hmfw-type-078 hmfw-type-079 hmfw-type-080 hmfw-type-081 hmfw-type-082 hmfw-type-083 hmfw-type-084 hmfw-type-085 hmfw-type-086 hmfw-type-087 hmfw-type-088 hmfw-type-089 hmfw-type-090 hmfw-type-091 hmfw-type-092 hmfw-type-093 hmfw-type-094 hmfw-type-095 hmfw-type-096 hmfw-type-097 hmfw-type-098 hmfw-type-099 hmfw-type-100 hmfw-type-101 hmfw-type-102 hmfw-type-103 hmfw-type-104 hmfw-type-105 hmfw-type-106 hmfw-type-107 hmfw-type-108 hmfw-type-109 hmfw-type-110 hmfw-type-111 hmfw-type-112 hmfw-type-113 hmfw-type-114 hmfw-type-115 hmfw-type-116 hmfw-type-117 hmfw-type-118 hmfw-type-119 hmfw-type-120 hmfw-type-121 hmfw-type-122 hmfw-type-123 hmfw-type-124 hmfw-type-125 hmfw-type-126 hmfw-version-001 hmfw-version-002 hmfw-version-003 hmfw-version-004 hmfw-version-005 hmfw-version-006 hmfw-version-007 hmfw-version-008 hmfw-version-009 hmfw-version-010 hmfw-version-011 hmfw-version-012 hmfw-version-013 hmfw-version-014 hmfw-version-015 hmfw-version-016 hmfw-version-017 hmfw-version-018 hmfw-version-019 hmfw-version-020 hmfw-version-021 hmfw-version-022 hmfw-version-023 hmfw-version-024 hmfw-version-025 hmfw-version-026 hmfw-version-027 hmfw-version-028 hmfw-version-029 hmfw-version-030 hmfw-version-031 hmfw-version-032 hmfw-version-033 hmfw-version-034 hmfw-version-035 hmfw-version-036 hmfw-version-037 hmfw-version-038 hmfw-version-039 hmfw-version-040 hmfw-version-041 hmfw-version-042 hmfw-version-043 hmfw-version-044 hmfw-version-045 hmfw-version-046 hmfw-version-047 hmfw-version-048 hmfw-version-049 hmfw-version-050 hmfw-version-051 hmfw-version-052 hmfw-version-053 hmfw-version-054 hmfw-version-055 hmfw-version-056 hmfw-version-057 hmfw-version-058 hmfw-version-059 hmfw-version-060 hmfw-version-061 hmfw-version-062 hmfw-version-063 hmfw-version-064 hmfw-version-065 hmfw-version-066 hmfw-version-067 hmfw-version-068 hmfw-version-069 hmfw-version-070 hmfw-version-071 hmfw-version-072 hmfw-version-073 hmfw-version-074 hmfw-version-075 hmfw-version-076 hmfw-version-077 hmfw-version-078 hmfw-version-079 hmfw-version-080 hmfw-version-081 hmfw-version-082 hmfw-version-083 hmfw-version-084 hmfw-version-085 hmfw-version-086 hmfw-version-087 hmfw-version-088 hmfw-version-089 hmfw-version-090 hmfw-version-091 hmfw-version-092 hmfw-version-093 hmfw-version-094 hmfw-version-095 hmfw-version-096 hmfw-version-097 hmfw-version-098 hmfw-version-099 hmfw-version-100 hmfw-version-101 hmfw-version-102 hmfw-version-103 hmfw-version-104 hmfw-version-105 hmfw-version-106 hmfw-version-107 hmfw-version-108 hmfw-version-109 hmfw-version-110 hmfw-version-111 hmfw-version-112 hmfw-version-113 hmfw-version-114 hmfw-version-115 hmfw-version-116 hmfw-version-117 hmfw-version-118 hmfw-version-119 hmfw-version-120 hmfw-version-121 hmfw-version-122 hmfw-version-123 hmfw-version-124 hmfw-version-125 hmfw-version-126
     2021-11-17 17:38:07   UNMATCHED_READINGS
     2021-11-17 16:21:29   attrTemplateVersion 20201206
     2021-11-17 17:38:07   hmfw-type-001   http://www.eq-3.de/HmIPW-WTH
     2021-11-17 17:38:07   hmfw-type-002   http://www.eq-3.de/HM-LC-Dim1L-Pl-3
     2021-11-17 17:38:07   hmfw-type-003   http://www.eq-3.de/HmIPW-DRD3
     2021-11-17 17:38:07   hmfw-type-004   http://www.eq-3.de/HmIP-FALMOT-C12
     2021-11-17 17:38:07   hmfw-type-005   http://www.eq-3.de/HmIP-SWO-PR
     2021-11-17 17:38:07   hmfw-type-006   http://www.eq-3.de/HM-ES-PMSw1-Pl
     2021-11-17 17:38:07   hmfw-type-007   http://www.eq-3.de/HmIP-SWO-B
     2021-11-17 17:38:07   hmfw-type-008   http://www.eq-3.de/HmIPW-FIO6
     2021-11-17 17:38:07   hmfw-type-009   http://www.eq-3.de/HmIP-eTRV-E
     2021-11-17 17:38:07   hmfw-type-010   http://www.eq-3.de/HmIP-PDT
     2021-11-17 17:38:07   hmfw-type-011   http://www.eq-3.de/HM-ES-PMSw1-Pl-DN-R3
     2021-11-17 17:38:07   hmfw-type-012   http://www.eq-3.de/HmIP-PSM-IT
     2021-11-17 17:38:07   hmfw-type-013   http://www.eq-3.de/HmIP-PS
     2021-11-17 17:38:07   hmfw-type-014   http://www.eq-3.de/HmIP-FROLL
     2021-11-17 17:38:07   hmfw-type-015   http://www.eq-3.de/HmIP-FCI6
     2021-11-17 17:38:07   hmfw-type-016   http://www.eq-3.de/HM-LC-Dim1TPBU-FM
     2021-11-17 17:38:07   hmfw-type-017   http://www.eq-3.de/HmIPW-FAL230-C6
     2021-11-17 17:38:07   hmfw-type-018   http://www.eq-3.de/HM-ES-PMSw1-Pl-DN-R2
     2021-11-17 17:38:07   hmfw-type-019   http://www.eq-3.de/HmIP-SPDR
     2021-11-17 17:38:07   hmfw-type-020   http://www.eq-3.de/HmIP-SFD
     2021-11-17 17:38:07   hmfw-type-021   http://www.eq-3.de/HmIP-WHS2
     2021-11-17 17:38:07   hmfw-type-022   http://www.eq-3.de/HM-LC-Sw1-Pl-DN-R1
     2021-11-17 17:38:07   hmfw-type-023   http://www.eq-3.de/HmIP-STHD
     2021-11-17 17:38:07   hmfw-type-024   http://www.eq-3.de/HmIP-eTRV-C
     2021-11-17 17:38:07   hmfw-type-025   http://www.eq-3.de/HmIP-SMI
     2021-11-17 17:38:07   hmfw-type-026   http://www.eq-3.de/HmIPW-DRI32
     2021-11-17 17:38:07   hmfw-type-027   http://www.eq-3.de/HmIP-SWDO-I
     2021-11-17 17:38:07   hmfw-type-028   http://www.eq-3.de/HmIP-STHO
     2021-11-17 17:38:07   hmfw-type-029   http://www.eq-3.de/HmIP-PSM-UK
     2021-11-17 17:38:07   hmfw-type-030   http://www.eq-3.de/HmIP-WTH-2
     2021-11-17 17:38:07   hmfw-type-031   http://www.eq-3.de/HM-LC-Sw1-Pl-DN-R4
     2021-11-17 17:38:07   hmfw-type-032   http://www.eq-3.de/HM-LC-Dim1T-DR
     2021-11-17 17:38:07   hmfw-type-033   http://www.eq-3.de/HmIP-HAP
     2021-11-17 17:38:07   hmfw-type-034   http://www.eq-3.de/HmIP-SCI
     2021-11-17 17:38:07   hmfw-type-035   http://www.eq-3.de/HmIP-FAL230-C6
     2021-11-17 17:38:07   hmfw-type-036   http://www.eq-3.de/HmIPW-SPI
     2021-11-17 17:38:07   hmfw-type-037   http://www.eq-3.de/HmIP-ASIR
     2021-11-17 17:38:07   hmfw-type-038   http://www.eq-3.de/HmIP-BWTH24
     2021-11-17 17:38:07   hmfw-type-039   http://www.eq-3.de/HmIP-STHO-A
     2021-11-17 17:38:07   hmfw-type-040   http://www.eq-3.de/HmIP-BBL
     2021-11-17 17:38:07   hmfw-type-041   http://www.eq-3.de/HmIP-SMO-A
     2021-11-17 17:38:07   hmfw-type-042   http://www.eq-3.de/HmIPW-FALMOT-C12
     2021-11-17 17:38:07   hmfw-type-043   http://www.eq-3.de/HmIP-RC8
     2021-11-17 17:38:07   hmfw-type-044   http://www.eq-3.de/HmIP-WRC6
     2021-11-17 17:38:07   hmfw-type-045   http://www.eq-3.de/HmIP-FAL230-C10
     2021-11-17 17:38:07   hmfw-type-046   http://www.eq-3.de/HmIP-RCB1
     2021-11-17 17:38:07   hmfw-type-047   http://www.eq-3.de/HmIP-MIOB
     2021-11-17 17:38:07   hmfw-type-048   http://www.eq-3.de/HmIP-DLS
     2021-11-17 17:38:07   hmfw-type-049   http://www.eq-3.de/HM-LC-Sw1-Pl-DN-R5
     2021-11-17 17:38:07   hmfw-type-050   http://www.eq-3.de/HmIP-PSM-PE
     2021-11-17 17:38:07   hmfw-type-051   http://www.eq-3.de/HmIP-BDT
     2021-11-17 17:38:07   hmfw-type-052   http://www.eq-3.de/HmIP-FSM16
     2021-11-17 17:38:07   hmfw-type-053   http://www.eq-3.de/HmIP-BROLL
     2021-11-17 17:38:07   hmfw-type-054   http://www.eq-3.de/HmIP-PSM-CH
     2021-11-17 17:38:07   hmfw-type-055   http://www.eq-3.de/HM-OU-CFM-Pl
     2021-11-17 17:38:07   hmfw-type-056   http://www.eq-3.de/HmIP-DLD
     2021-11-17 17:38:07   hmfw-type-057   http://www.eq-3.de/HM-ES-PMSw1-Pl-DN-R1
     2021-11-17 17:38:07   hmfw-type-058   http://www.eq-3.de/HmIP-SWO-PL
     2021-11-17 17:38:07   hmfw-type-059   http://www.eq-3.de/HmIP-WRC2
     2021-11-17 17:38:07   hmfw-type-060   http://www.eq-3.de/HmIPW-DRS4
     2021-11-17 17:38:07   hmfw-type-061   http://www.eq-3.de/HmIP-STH
     2021-11-17 17:38:07   hmfw-type-062   http://www.eq-3.de/HmIP-SMO
     2021-11-17 17:38:07   hmfw-type-063   http://www.eq-3.de/HM-LC-Sw1-Pl-DN-R3
     2021-11-17 17:38:07   hmfw-type-064   http://www.eq-3.de/HmIP-BSM
     2021-11-17 17:38:07   hmfw-type-065   http://www.eq-3.de/HmIP-FCI1
     2021-11-17 17:38:07   hmfw-type-066   http://www.eq-3.de/HmIP-SRD
     2021-11-17 17:38:07   hmfw-type-067   http://www.eq-3.de/HmIP-SCTH230
     2021-11-17 17:38:07   hmfw-type-068   http://www.eq-3.de/HM-LC-RGBW-WM
     2021-11-17 17:38:07   hmfw-type-069   http://www.eq-3.de/HmIP-SRH
     2021-11-17 17:38:07   hmfw-type-070   http://www.eq-3.de/HmIP-SPI
     2021-11-17 17:38:07   hmfw-type-071   http://www.eq-3.de/HmIP-FAL24-C10
     2021-11-17 17:38:07   hmfw-type-072   http://www.eq-3.de/HmIP-KRCA
     2021-11-17 17:38:07   hmfw-type-073   http://www.eq-3.de/HmIP-MOD-OC8
     2021-11-17 17:38:07   hmfw-type-074   http://www.eq-3.de/HmIPW-BRC2
     2021-11-17 17:38:07   hmfw-type-075   http://www.eq-3.de/HM-CC-RT-DN
     2021-11-17 17:38:07   hmfw-type-076   http://www.eq-3.de/HmIP-FSM
     2021-11-17 17:38:07   hmfw-type-077   http://www.eq-3.de/HM-LC-Dim1T-Pl-3
     2021-11-17 17:38:07   hmfw-type-078   http://www.eq-3.de/HmIP-BSL
     2021-11-17 17:38:07   hmfw-type-079   http://www.eq-3.de/HmIP-MIO16-PCB
     2021-11-17 17:38:07   hmfw-type-080   http://www.eq-3.de/HmIP-PDT-UK
     2021-11-17 17:38:07   hmfw-type-081   http://www.eq-3.de/HmIP-STE2-PCB
     2021-11-17 17:38:07   hmfw-type-082   http://www.eq-3.de/HmIP-FDT
     2021-11-17 17:38:07   hmfw-type-083   http://www.eq-3.de/HM-Dis-EP-WM55
     2021-11-17 17:38:07   hmfw-type-084   http://www.eq-3.de/HM-ES-PMSw1-Pl-DN-R5
     2021-11-17 17:38:07   hmfw-type-085   http://www.eq-3.de/HmIPW-FAL24-C6
     2021-11-17 17:38:07   hmfw-type-086   http://www.eq-3.de/HmIPW-STH
     2021-11-17 17:38:07   hmfw-type-087   http://www.eq-3.de/HmIPW-DRBL4
     2021-11-17 17:38:07   hmfw-type-088   http://www.eq-3.de/HmIP-WTH
     2021-11-17 17:38:07   hmfw-type-089   http://www.eq-3.de/HM-ES-PMSw1-Pl-DN-R4
     2021-11-17 17:38:07   hmfw-type-090   http://www.eq-3.de/HmIP-FAL24-C6
     2021-11-17 17:38:07   hmfw-type-091   http://www.eq-3.de/HmIPW-WRC2
     2021-11-17 17:38:07   hmfw-type-092   http://www.eq-3.de/HM-MOD-Re-8
     2021-11-17 17:38:07   hmfw-type-093   http://www.eq-3.de/HmIP-FSI16
     2021-11-17 17:38:07   hmfw-type-094   http://www.eq-3.de/HmIPW-DRAP
     2021-11-17 17:38:07   hmfw-type-095   http://www.eq-3.de/HmIP-DRBLI4
     2021-11-17 17:38:07   hmfw-type-096   http://www.eq-3.de/HmIPW-FAL24-C10
     2021-11-17 17:38:07   hmfw-type-097   http://www.eq-3.de/HM-LC-Dim1TPBU-FM
     2021-11-17 17:38:07   hmfw-type-098   http://www.eq-3.de/HmIP-FBL
     2021-11-17 17:38:07   hmfw-type-099   http://www.eq-3.de/HmIP-MP3P
     2021-11-17 17:38:07   hmfw-type-100   http://www.eq-3.de/HmIP-MOD-TM
     2021-11-17 17:38:07   hmfw-type-101   http://www.eq-3.de/HmIP-BWTH
     2021-11-17 17:38:07   hmfw-type-102   http://www.eq-3.de/HM-OU-CFM-TW
     2021-11-17 17:38:07   hmfw-type-103   http://www.eq-3.de/HM-LC-Bl1PBU-FM
     2021-11-17 17:38:07   hmfw-type-104   http://www.eq-3.de/HM-TC-IT-WM-W-EU
     2021-11-17 17:38:07   hmfw-type-105   http://www.eq-3.de/HmIPW-FAL230-C10
     2021-11-17 17:38:07   hmfw-type-106   http://www.eq-3.de/HmIP-eTRV
     2021-11-17 17:38:07   hmfw-type-107   http://www.eq-3.de/HmIP-SWD
     2021-11-17 17:38:07   hmfw-type-108   http://www.eq-3.de/HmIP-SWDO-PL
     2021-11-17 17:38:07   hmfw-type-109   http://www.eq-3.de/HM-LC-Sw1PBU-FM
     2021-11-17 17:38:07   hmfw-type-110   http://www.eq-3.de/HM-LC-Sw1-Pl-DN-R2
     2021-11-17 17:38:07   hmfw-type-111   http://www.eq-3.de/HmIP-eTRV-2
     2021-11-17 17:38:07   hmfw-type-112   http://www.eq-3.de/HmIPW-DRS8
     2021-11-17 17:38:07   hmfw-type-113   http://www.eq-3.de/HmIP-PSM
     2021-11-17 17:38:07   hmfw-type-114   http://www.eq-3.de/HmIP-SWDO
     2021-11-17 17:38:07   hmfw-type-115   http://www.eq-3.de/HmIP-PCBS
     2021-11-17 17:38:07   hmfw-type-116   http://www.eq-3.de/HmIP-PMFS
     2021-11-17 17:38:07   hmfw-type-117   http://www.eq-3.de/HmIP-PCBS2
     2021-11-17 17:38:07   hmfw-type-118   http://www.eq-3.de/HmIP-SLO
     2021-11-17 17:38:07   hmfw-type-119   http://www.eq-3.de/HmIP-KRC4
     2021-11-17 17:38:07   hmfw-type-120   http://www.eq-3.de/HmIP-eTRV-2-UK
     2021-11-17 17:38:07   hmfw-type-121   http://www.eq-3.de/HmIPW-STHD
     2021-11-17 17:38:07   hmfw-type-122   http://www.eq-3.de/HmIP-SMI55
     2021-11-17 17:38:07   hmfw-type-123   http://www.eq-3.de/HmIP-WGC
     2021-11-17 17:38:07   hmfw-type-124   http://www.eq-3.de/HM-LC-Dim1PWM-CV
     2021-11-17 17:38:07   hmfw-type-125   http://www.eq-3.de/HM-Sen-MDIR-WM55
     2021-11-17 17:38:07   hmfw-type-126   http://www.eq-3.de/HmIPW-DRI16
     2021-11-17 17:38:07   hmfw-version-001 2.4.6
     2021-11-17 17:38:07   hmfw-version-002 2.9.7
     2021-11-17 17:38:07   hmfw-version-003 1.0.0
     2021-11-17 17:38:07   hmfw-version-004 1.4.6
     2021-11-17 17:38:07   hmfw-version-005 1.0.18
     2021-11-17 17:38:07   hmfw-version-006 2.6.0
     2021-11-17 17:38:07   hmfw-version-007 1.0.18
     2021-11-17 17:38:07   hmfw-version-008 1.2.6
     2021-11-17 17:38:07   hmfw-version-009 1.0.10
     2021-11-17 17:38:07   hmfw-version-010 1.4.8
     2021-11-17 17:38:07   hmfw-version-011 2.6.0
     2021-11-17 17:38:07   hmfw-version-012 2.18.22
     2021-11-17 17:38:07   hmfw-version-013 2.6.2
     2021-11-17 17:38:07   hmfw-version-014 1.8.12
     2021-11-17 17:38:07   hmfw-version-015 1.0.16
     2021-11-17 17:38:07   hmfw-version-016 2.9.5
     2021-11-17 17:38:07   hmfw-version-017 2.0.2
     2021-11-17 17:38:07   hmfw-version-018 2.6.0
     2021-11-17 17:38:07   hmfw-version-019 1.2.0
     2021-11-17 17:38:07   hmfw-version-020 1.2.22
     2021-11-17 17:38:07   hmfw-version-021 1.4.0
     2021-11-17 17:38:07   hmfw-version-022 2.6.0
     2021-11-17 17:38:07   hmfw-version-023 2.6.0
     2021-11-17 17:38:07   hmfw-version-024 1.2.4
     2021-11-17 17:38:07   hmfw-version-025 1.4.8
     2021-11-17 17:38:07   hmfw-version-026 1.2.2
     2021-11-17 17:38:07   hmfw-version-027 1.16.10
     2021-11-17 17:38:07   hmfw-version-028 1.0.6
     2021-11-17 17:38:07   hmfw-version-029 2.18.22
     2021-11-17 17:38:07   hmfw-version-030 2.6.0
     2021-11-17 17:38:07   hmfw-version-031 2.6.0
     2021-11-17 17:38:07   hmfw-version-032 1.1.0
     2021-11-17 17:38:07   hmfw-version-033 2.2.18
     2021-11-17 17:38:07   hmfw-version-034 1.0.6
     2021-11-17 17:38:07   hmfw-version-035 2.0.4
     2021-11-17 17:38:07   hmfw-version-036 1.0.30
     2021-11-17 17:38:07   hmfw-version-037 1.4.2
     2021-11-17 17:38:07   hmfw-version-038 1.2.4
     2021-11-17 17:38:07   hmfw-version-039 1.0.6
     2021-11-17 17:38:07   hmfw-version-040 1.8.20
     2021-11-17 17:38:07   hmfw-version-041 1.2.8
     2021-11-17 17:38:07   hmfw-version-042 1.4.6
     2021-11-17 17:38:07   hmfw-version-043 1.0.19
     2021-11-17 17:38:07   hmfw-version-044 1.0.19
     2021-11-17 17:38:07   hmfw-version-045 2.0.4
     2021-11-17 17:38:07   hmfw-version-046 1.2.4
     2021-11-17 17:38:07   hmfw-version-047 1.8.4
     2021-11-17 17:38:07   hmfw-version-048 1.2.4
     2021-11-17 17:38:07   hmfw-version-049 2.6.0
     2021-11-17 17:38:07   hmfw-version-050 2.18.22
     2021-11-17 17:38:07   hmfw-version-051 1.4.8
     2021-11-17 17:38:07   hmfw-version-052 1.18.22
     2021-11-17 17:38:07   hmfw-version-053 1.8.20
     2021-11-17 17:38:07   hmfw-version-054 2.18.22
     2021-11-17 17:38:07   hmfw-version-055 2.4.2
     2021-11-17 17:38:07   hmfw-version-056 1.2.0
     2021-11-17 17:38:07   hmfw-version-057 2.6.0
     2021-11-17 17:38:07   hmfw-version-058 1.0.18
     2021-11-17 17:38:07   hmfw-version-059 1.10.0
     2021-11-17 17:38:07   hmfw-version-060 1.2.4
     2021-11-17 17:38:07   hmfw-version-061 2.6.0
     2021-11-17 17:38:07   hmfw-version-062 1.2.8
     2021-11-17 17:38:07   hmfw-version-063 2.6.0
     2021-11-17 17:38:07   hmfw-version-064 1.18.14
     2021-11-17 17:38:07   hmfw-version-065 1.0.14
     2021-11-17 17:38:07   hmfw-version-066 1.0.18
     2021-11-17 17:38:07   hmfw-version-067 1.0.6
     2021-11-17 17:38:07   hmfw-version-068 1.0.0
     2021-11-17 17:38:07   hmfw-version-069 1.2.10
     2021-11-17 17:38:07   hmfw-version-070 1.4.0
     2021-11-17 17:38:07   hmfw-version-071 2.0.4
     2021-11-17 17:38:07   hmfw-version-072 1.10.0
     2021-11-17 17:38:07   hmfw-version-073 1.8.12
     2021-11-17 17:38:07   hmfw-version-074 2.2.10
     2021-11-17 17:38:07   hmfw-version-075 1.5.3
     2021-11-17 17:38:07   hmfw-version-076 1.18.22
     2021-11-17 17:38:07   hmfw-version-077 2.9.5
     2021-11-17 17:38:07   hmfw-version-078 1.0.2
     2021-11-17 17:38:07   hmfw-version-079 1.0.10
     2021-11-17 17:38:07   hmfw-version-080 1.4.8
     2021-11-17 17:38:07   hmfw-version-081 1.0.26
     2021-11-17 17:38:07   hmfw-version-082 1.4.8
     2021-11-17 17:38:07   hmfw-version-083 1.2.0
     2021-11-17 17:38:07   hmfw-version-084 2.6.0
     2021-11-17 17:38:07   hmfw-version-085 2.0.2
     2021-11-17 17:38:07   hmfw-version-086 2.4.6
     2021-11-17 17:38:07   hmfw-version-087 1.8.2
     2021-11-17 17:38:07   hmfw-version-088 2.4.8
     2021-11-17 17:38:07   hmfw-version-089 2.6.0
     2021-11-17 17:38:07   hmfw-version-090 2.0.4
     2021-11-17 17:38:07   hmfw-version-091 2.2.10
     2021-11-17 17:38:07   hmfw-version-092 1.2.0
     2021-11-17 17:38:07   hmfw-version-093 1.18.22
     2021-11-17 17:38:07   hmfw-version-094 2.2.24
     2021-11-17 17:38:07   hmfw-version-095 1.8.2
     2021-11-17 17:38:07   hmfw-version-096 2.0.2
     2021-11-17 17:38:07   hmfw-version-097 2.9.5
     2021-11-17 17:38:07   hmfw-version-098 1.8.12
     2021-11-17 17:38:07   hmfw-version-099 1.0.26
     2021-11-17 17:38:07   hmfw-version-100 1.0.0
     2021-11-17 17:38:07   hmfw-version-101 1.2.4
     2021-11-17 17:38:07   hmfw-version-102 1.3.0
     2021-11-17 17:38:07   hmfw-version-103 2.11.1
     2021-11-17 17:38:07   hmfw-version-104 1.4.2
     2021-11-17 17:38:07   hmfw-version-105 2.0.2
     2021-11-17 17:38:07   hmfw-version-106 2.2.8
     2021-11-17 17:38:07   hmfw-version-107 1.0.2
     2021-11-17 17:38:07   hmfw-version-108 1.16.10
     2021-11-17 17:38:07   hmfw-version-109 2.8.2
     2021-11-17 17:38:07   hmfw-version-110 2.6.0
     2021-11-17 17:38:07   hmfw-version-111 2.2.8
     2021-11-17 17:38:07   hmfw-version-112 1.2.4
     2021-11-17 17:38:07   hmfw-version-113 2.18.22
     2021-11-17 17:38:07   hmfw-version-114 1.16.8
     2021-11-17 17:38:07   hmfw-version-115 2.10.2
     2021-11-17 17:38:07   hmfw-version-116 1.0.12
     2021-11-17 17:38:07   hmfw-version-117 1.10.10
     2021-11-17 17:38:07   hmfw-version-118 1.0.16
     2021-11-17 17:38:07   hmfw-version-119 1.10.0
     2021-11-17 17:38:07   hmfw-version-120 2.2.8
     2021-11-17 17:38:07   hmfw-version-121 2.4.8
     2021-11-17 17:38:07   hmfw-version-122 1.0.12
     2021-11-17 17:38:07   hmfw-version-123 1.0.2
     2021-11-17 17:38:07   hmfw-version-124 2.9.5
     2021-11-17 17:38:07   hmfw-version-125 1.2.0
     2021-11-17 17:38:07   hmfw-version-126 1.2.2
     2021-11-17 17:38:07   newFwForDevices no fw-updates needed!
   REQUEST:
     context    reading
     data       
     header     
     ignoreredirects 0
     num        unknown
     retryCount 0
     type       update
     url        https://update.homematic.com/firmware/api/firmware/search/DEVICE
   defptr:
     readingBase:
       hmfw-type-001 reading
       hmfw-type-002 reading
       hmfw-type-003 reading
       hmfw-type-004 reading
       hmfw-type-005 reading
       hmfw-type-006 reading
       hmfw-type-007 reading
       hmfw-type-008 reading
       hmfw-type-009 reading
       hmfw-type-010 reading
       hmfw-type-011 reading
       hmfw-type-012 reading
       hmfw-type-013 reading
       hmfw-type-014 reading
       hmfw-type-015 reading
       hmfw-type-016 reading
       hmfw-type-017 reading
       hmfw-type-018 reading
       hmfw-type-019 reading
       hmfw-type-020 reading
       hmfw-type-021 reading
       hmfw-type-022 reading
       hmfw-type-023 reading
       hmfw-type-024 reading
       hmfw-type-025 reading
       hmfw-type-026 reading
       hmfw-type-027 reading
       hmfw-type-028 reading
       hmfw-type-029 reading
       hmfw-type-030 reading
       hmfw-type-031 reading
       hmfw-type-032 reading
       hmfw-type-033 reading
       hmfw-type-034 reading
       hmfw-type-035 reading
       hmfw-type-036 reading
       hmfw-type-037 reading
       hmfw-type-038 reading
       hmfw-type-039 reading
       hmfw-type-040 reading
       hmfw-type-041 reading
       hmfw-type-042 reading
       hmfw-type-043 reading
       hmfw-type-044 reading
       hmfw-type-045 reading
       hmfw-type-046 reading
       hmfw-type-047 reading
       hmfw-type-048 reading
       hmfw-type-049 reading
       hmfw-type-050 reading
       hmfw-type-051 reading
       hmfw-type-052 reading
       hmfw-type-053 reading
       hmfw-type-054 reading
       hmfw-type-055 reading
       hmfw-type-056 reading
       hmfw-type-057 reading
       hmfw-type-058 reading
       hmfw-type-059 reading
       hmfw-type-060 reading
       hmfw-type-061 reading
       hmfw-type-062 reading
       hmfw-type-063 reading
       hmfw-type-064 reading
       hmfw-type-065 reading
       hmfw-type-066 reading
       hmfw-type-067 reading
       hmfw-type-068 reading
       hmfw-type-069 reading
       hmfw-type-070 reading
       hmfw-type-071 reading
       hmfw-type-072 reading
       hmfw-type-073 reading
       hmfw-type-074 reading
       hmfw-type-075 reading
       hmfw-type-076 reading
       hmfw-type-077 reading
       hmfw-type-078 reading
       hmfw-type-079 reading
       hmfw-type-080 reading
       hmfw-type-081 reading
       hmfw-type-082 reading
       hmfw-type-083 reading
       hmfw-type-084 reading
       hmfw-type-085 reading
       hmfw-type-086 reading
       hmfw-type-087 reading
       hmfw-type-088 reading
       hmfw-type-089 reading
       hmfw-type-090 reading
       hmfw-type-091 reading
       hmfw-type-092 reading
       hmfw-type-093 reading
       hmfw-type-094 reading
       hmfw-type-095 reading
       hmfw-type-096 reading
       hmfw-type-097 reading
       hmfw-type-098 reading
       hmfw-type-099 reading
       hmfw-type-100 reading
       hmfw-type-101 reading
       hmfw-type-102 reading
       hmfw-type-103 reading
       hmfw-type-104 reading
       hmfw-type-105 reading
       hmfw-type-106 reading
       hmfw-type-107 reading
       hmfw-type-108 reading
       hmfw-type-109 reading
       hmfw-type-110 reading
       hmfw-type-111 reading
       hmfw-type-112 reading
       hmfw-type-113 reading
       hmfw-type-114 reading
       hmfw-type-115 reading
       hmfw-type-116 reading
       hmfw-type-117 reading
       hmfw-type-118 reading
       hmfw-type-119 reading
       hmfw-type-120 reading
       hmfw-type-121 reading
       hmfw-type-122 reading
       hmfw-type-123 reading
       hmfw-type-124 reading
       hmfw-type-125 reading
       hmfw-type-126 reading
       hmfw-version-001 reading
       hmfw-version-002 reading
       hmfw-version-003 reading
       hmfw-version-004 reading
       hmfw-version-005 reading
       hmfw-version-006 reading
       hmfw-version-007 reading
       hmfw-version-008 reading
       hmfw-version-009 reading
       hmfw-version-010 reading
       hmfw-version-011 reading
       hmfw-version-012 reading
       hmfw-version-013 reading
       hmfw-version-014 reading
       hmfw-version-015 reading
       hmfw-version-016 reading
       hmfw-version-017 reading
       hmfw-version-018 reading
       hmfw-version-019 reading
       hmfw-version-020 reading
       hmfw-version-021 reading
       hmfw-version-022 reading
       hmfw-version-023 reading
       hmfw-version-024 reading
       hmfw-version-025 reading
       hmfw-version-026 reading
       hmfw-version-027 reading
       hmfw-version-028 reading
       hmfw-version-029 reading
       hmfw-version-030 reading
       hmfw-version-031 reading
       hmfw-version-032 reading
       hmfw-version-033 reading
       hmfw-version-034 reading
       hmfw-version-035 reading
       hmfw-version-036 reading
       hmfw-version-037 reading
       hmfw-version-038 reading
       hmfw-version-039 reading
       hmfw-version-040 reading
       hmfw-version-041 reading
       hmfw-version-042 reading
       hmfw-version-043 reading
       hmfw-version-044 reading
       hmfw-version-045 reading
       hmfw-version-046 reading
       hmfw-version-047 reading
       hmfw-version-048 reading
       hmfw-version-049 reading
       hmfw-version-050 reading
       hmfw-version-051 reading
       hmfw-version-052 reading
       hmfw-version-053 reading
       hmfw-version-054 reading
       hmfw-version-055 reading
       hmfw-version-056 reading
       hmfw-version-057 reading
       hmfw-version-058 reading
       hmfw-version-059 reading
       hmfw-version-060 reading
       hmfw-version-061 reading
       hmfw-version-062 reading
       hmfw-version-063 reading
       hmfw-version-064 reading
       hmfw-version-065 reading
       hmfw-version-066 reading
       hmfw-version-067 reading
       hmfw-version-068 reading
       hmfw-version-069 reading
       hmfw-version-070 reading
       hmfw-version-071 reading
       hmfw-version-072 reading
       hmfw-version-073 reading
       hmfw-version-074 reading
       hmfw-version-075 reading
       hmfw-version-076 reading
       hmfw-version-077 reading
       hmfw-version-078 reading
       hmfw-version-079 reading
       hmfw-version-080 reading
       hmfw-version-081 reading
       hmfw-version-082 reading
       hmfw-version-083 reading
       hmfw-version-084 reading
       hmfw-version-085 reading
       hmfw-version-086 reading
       hmfw-version-087 reading
       hmfw-version-088 reading
       hmfw-version-089 reading
       hmfw-version-090 reading
       hmfw-version-091 reading
       hmfw-version-092 reading
       hmfw-version-093 reading
       hmfw-version-094 reading
       hmfw-version-095 reading
       hmfw-version-096 reading
       hmfw-version-097 reading
       hmfw-version-098 reading
       hmfw-version-099 reading
       hmfw-version-100 reading
       hmfw-version-101 reading
       hmfw-version-102 reading
       hmfw-version-103 reading
       hmfw-version-104 reading
       hmfw-version-105 reading
       hmfw-version-106 reading
       hmfw-version-107 reading
       hmfw-version-108 reading
       hmfw-version-109 reading
       hmfw-version-110 reading
       hmfw-version-111 reading
       hmfw-version-112 reading
       hmfw-version-113 reading
       hmfw-version-114 reading
       hmfw-version-115 reading
       hmfw-version-116 reading
       hmfw-version-117 reading
       hmfw-version-118 reading
       hmfw-version-119 reading
       hmfw-version-120 reading
       hmfw-version-121 reading
       hmfw-version-122 reading
       hmfw-version-123 reading
       hmfw-version-124 reading
       hmfw-version-125 reading
       hmfw-version-126 reading
     readingNum:
       hmfw-type-001 01
       hmfw-type-002 01
       hmfw-type-003 01
       hmfw-type-004 01
       hmfw-type-005 01
       hmfw-type-006 01
       hmfw-type-007 01
       hmfw-type-008 01
       hmfw-type-009 01
       hmfw-type-010 01
       hmfw-type-011 01
       hmfw-type-012 01
       hmfw-type-013 01
       hmfw-type-014 01
       hmfw-type-015 01
       hmfw-type-016 01
       hmfw-type-017 01
       hmfw-type-018 01
       hmfw-type-019 01
       hmfw-type-020 01
       hmfw-type-021 01
       hmfw-type-022 01
       hmfw-type-023 01
       hmfw-type-024 01
       hmfw-type-025 01
       hmfw-type-026 01
       hmfw-type-027 01
       hmfw-type-028 01
       hmfw-type-029 01
       hmfw-type-030 01
       hmfw-type-031 01
       hmfw-type-032 01
       hmfw-type-033 01
       hmfw-type-034 01
       hmfw-type-035 01
       hmfw-type-036 01
       hmfw-type-037 01
       hmfw-type-038 01
       hmfw-type-039 01
       hmfw-type-040 01
       hmfw-type-041 01
       hmfw-type-042 01
       hmfw-type-043 01
       hmfw-type-044 01
       hmfw-type-045 01
       hmfw-type-046 01
       hmfw-type-047 01
       hmfw-type-048 01
       hmfw-type-049 01
       hmfw-type-050 01
       hmfw-type-051 01
       hmfw-type-052 01
       hmfw-type-053 01
       hmfw-type-054 01
       hmfw-type-055 01
       hmfw-type-056 01
       hmfw-type-057 01
       hmfw-type-058 01
       hmfw-type-059 01
       hmfw-type-060 01
       hmfw-type-061 01
       hmfw-type-062 01
       hmfw-type-063 01
       hmfw-type-064 01
       hmfw-type-065 01
       hmfw-type-066 01
       hmfw-type-067 01
       hmfw-type-068 01
       hmfw-type-069 01
       hmfw-type-070 01
       hmfw-type-071 01
       hmfw-type-072 01
       hmfw-type-073 01
       hmfw-type-074 01
       hmfw-type-075 01
       hmfw-type-076 01
       hmfw-type-077 01
       hmfw-type-078 01
       hmfw-type-079 01
       hmfw-type-080 01
       hmfw-type-081 01
       hmfw-type-082 01
       hmfw-type-083 01
       hmfw-type-084 01
       hmfw-type-085 01
       hmfw-type-086 01
       hmfw-type-087 01
       hmfw-type-088 01
       hmfw-type-089 01
       hmfw-type-090 01
       hmfw-type-091 01
       hmfw-type-092 01
       hmfw-type-093 01
       hmfw-type-094 01
       hmfw-type-095 01
       hmfw-type-096 01
       hmfw-type-097 01
       hmfw-type-098 01
       hmfw-type-099 01
       hmfw-type-100 01
       hmfw-type-101 01
       hmfw-type-102 01
       hmfw-type-103 01
       hmfw-type-104 01
       hmfw-type-105 01
       hmfw-type-106 01
       hmfw-type-107 01
       hmfw-type-108 01
       hmfw-type-109 01
       hmfw-type-110 01
       hmfw-type-111 01
       hmfw-type-112 01
       hmfw-type-113 01
       hmfw-type-114 01
       hmfw-type-115 01
       hmfw-type-116 01
       hmfw-type-117 01
       hmfw-type-118 01
       hmfw-type-119 01
       hmfw-type-120 01
       hmfw-type-121 01
       hmfw-type-122 01
       hmfw-type-123 01
       hmfw-type-124 01
       hmfw-type-125 01
       hmfw-type-126 01
       hmfw-version-001 02
       hmfw-version-002 02
       hmfw-version-003 02
       hmfw-version-004 02
       hmfw-version-005 02
       hmfw-version-006 02
       hmfw-version-007 02
       hmfw-version-008 02
       hmfw-version-009 02
       hmfw-version-010 02
       hmfw-version-011 02
       hmfw-version-012 02
       hmfw-version-013 02
       hmfw-version-014 02
       hmfw-version-015 02
       hmfw-version-016 02
       hmfw-version-017 02
       hmfw-version-018 02
       hmfw-version-019 02
       hmfw-version-020 02
       hmfw-version-021 02
       hmfw-version-022 02
       hmfw-version-023 02
       hmfw-version-024 02
       hmfw-version-025 02
       hmfw-version-026 02
       hmfw-version-027 02
       hmfw-version-028 02
       hmfw-version-029 02
       hmfw-version-030 02
       hmfw-version-031 02
       hmfw-version-032 02
       hmfw-version-033 02
       hmfw-version-034 02
       hmfw-version-035 02
       hmfw-version-036 02
       hmfw-version-037 02
       hmfw-version-038 02
       hmfw-version-039 02
       hmfw-version-040 02
       hmfw-version-041 02
       hmfw-version-042 02
       hmfw-version-043 02
       hmfw-version-044 02
       hmfw-version-045 02
       hmfw-version-046 02
       hmfw-version-047 02
       hmfw-version-048 02
       hmfw-version-049 02
       hmfw-version-050 02
       hmfw-version-051 02
       hmfw-version-052 02
       hmfw-version-053 02
       hmfw-version-054 02
       hmfw-version-055 02
       hmfw-version-056 02
       hmfw-version-057 02
       hmfw-version-058 02
       hmfw-version-059 02
       hmfw-version-060 02
       hmfw-version-061 02
       hmfw-version-062 02
       hmfw-version-063 02
       hmfw-version-064 02
       hmfw-version-065 02
       hmfw-version-066 02
       hmfw-version-067 02
       hmfw-version-068 02
       hmfw-version-069 02
       hmfw-version-070 02
       hmfw-version-071 02
       hmfw-version-072 02
       hmfw-version-073 02
       hmfw-version-074 02
       hmfw-version-075 02
       hmfw-version-076 02
       hmfw-version-077 02
       hmfw-version-078 02
       hmfw-version-079 02
       hmfw-version-080 02
       hmfw-version-081 02
       hmfw-version-082 02
       hmfw-version-083 02
       hmfw-version-084 02
       hmfw-version-085 02
       hmfw-version-086 02
       hmfw-version-087 02
       hmfw-version-088 02
       hmfw-version-089 02
       hmfw-version-090 02
       hmfw-version-091 02
       hmfw-version-092 02
       hmfw-version-093 02
       hmfw-version-094 02
       hmfw-version-095 02
       hmfw-version-096 02
       hmfw-version-097 02
       hmfw-version-098 02
       hmfw-version-099 02
       hmfw-version-100 02
       hmfw-version-101 02
       hmfw-version-102 02
       hmfw-version-103 02
       hmfw-version-104 02
       hmfw-version-105 02
       hmfw-version-106 02
       hmfw-version-107 02
       hmfw-version-108 02
       hmfw-version-109 02
       hmfw-version-110 02
       hmfw-version-111 02
       hmfw-version-112 02
       hmfw-version-113 02
       hmfw-version-114 02
       hmfw-version-115 02
       hmfw-version-116 02
       hmfw-version-117 02
       hmfw-version-118 02
       hmfw-version-119 02
       hmfw-version-120 02
       hmfw-version-121 02
       hmfw-version-122 02
       hmfw-version-123 02
       hmfw-version-124 02
       hmfw-version-125 02
       hmfw-version-126 02
     readingOutdated:
     readingSubNum:
       hmfw-type-001 -1
       hmfw-type-002 -2
       hmfw-type-003 -3
       hmfw-type-004 -4
       hmfw-type-005 -5
       hmfw-type-006 -6
       hmfw-type-007 -7
       hmfw-type-008 -8
       hmfw-type-009 -9
       hmfw-type-010 -10
       hmfw-type-011 -11
       hmfw-type-012 -12
       hmfw-type-013 -13
       hmfw-type-014 -14
       hmfw-type-015 -15
       hmfw-type-016 -16
       hmfw-type-017 -17
       hmfw-type-018 -18
       hmfw-type-019 -19
       hmfw-type-020 -20
       hmfw-type-021 -21
       hmfw-type-022 -22
       hmfw-type-023 -23
       hmfw-type-024 -24
       hmfw-type-025 -25
       hmfw-type-026 -26
       hmfw-type-027 -27
       hmfw-type-028 -28
       hmfw-type-029 -29
       hmfw-type-030 -30
       hmfw-type-031 -31
       hmfw-type-032 -32
       hmfw-type-033 -33
       hmfw-type-034 -34
       hmfw-type-035 -35
       hmfw-type-036 -36
       hmfw-type-037 -37
       hmfw-type-038 -38
       hmfw-type-039 -39
       hmfw-type-040 -40
       hmfw-type-041 -41
       hmfw-type-042 -42
       hmfw-type-043 -43
       hmfw-type-044 -44
       hmfw-type-045 -45
       hmfw-type-046 -46
       hmfw-type-047 -47
       hmfw-type-048 -48
       hmfw-type-049 -49
       hmfw-type-050 -50
       hmfw-type-051 -51
       hmfw-type-052 -52
       hmfw-type-053 -53
       hmfw-type-054 -54
       hmfw-type-055 -55
       hmfw-type-056 -56
       hmfw-type-057 -57
       hmfw-type-058 -58
       hmfw-type-059 -59
       hmfw-type-060 -60
       hmfw-type-061 -61
       hmfw-type-062 -62
       hmfw-type-063 -63
       hmfw-type-064 -64
       hmfw-type-065 -65
       hmfw-type-066 -66
       hmfw-type-067 -67
       hmfw-type-068 -68
       hmfw-type-069 -69
       hmfw-type-070 -70
       hmfw-type-071 -71
       hmfw-type-072 -72
       hmfw-type-073 -73
       hmfw-type-074 -74
       hmfw-type-075 -75
       hmfw-type-076 -76
       hmfw-type-077 -77
       hmfw-type-078 -78
       hmfw-type-079 -79
       hmfw-type-080 -80
       hmfw-type-081 -81
       hmfw-type-082 -82
       hmfw-type-083 -83
       hmfw-type-084 -84
       hmfw-type-085 -85
       hmfw-type-086 -86
       hmfw-type-087 -87
       hmfw-type-088 -88
       hmfw-type-089 -89
       hmfw-type-090 -90
       hmfw-type-091 -91
       hmfw-type-092 -92
       hmfw-type-093 -93
       hmfw-type-094 -94
       hmfw-type-095 -95
       hmfw-type-096 -96
       hmfw-type-097 -97
       hmfw-type-098 -98
       hmfw-type-099 -99
       hmfw-type-100 -100
       hmfw-type-101 -101
       hmfw-type-102 -102
       hmfw-type-103 -103
       hmfw-type-104 -104
       hmfw-type-105 -105
       hmfw-type-106 -106
       hmfw-type-107 -107
       hmfw-type-108 -108
       hmfw-type-109 -109
       hmfw-type-110 -110
       hmfw-type-111 -111
       hmfw-type-112 -112
       hmfw-type-113 -113
       hmfw-type-114 -114
       hmfw-type-115 -115
       hmfw-type-116 -116
       hmfw-type-117 -117
       hmfw-type-118 -118
       hmfw-type-119 -119
       hmfw-type-120 -120
       hmfw-type-121 -121
       hmfw-type-122 -122
       hmfw-type-123 -123
       hmfw-type-124 -124
       hmfw-type-125 -125
       hmfw-type-126 -126
       hmfw-version-001 -1
       hmfw-version-002 -2
       hmfw-version-003 -3
       hmfw-version-004 -4
       hmfw-version-005 -5
       hmfw-version-006 -6
       hmfw-version-007 -7
       hmfw-version-008 -8
       hmfw-version-009 -9
       hmfw-version-010 -10
       hmfw-version-011 -11
       hmfw-version-012 -12
       hmfw-version-013 -13
       hmfw-version-014 -14
       hmfw-version-015 -15
       hmfw-version-016 -16
       hmfw-version-017 -17
       hmfw-version-018 -18
       hmfw-version-019 -19
       hmfw-version-020 -20
       hmfw-version-021 -21
       hmfw-version-022 -22
       hmfw-version-023 -23
       hmfw-version-024 -24
       hmfw-version-025 -25
       hmfw-version-026 -26
       hmfw-version-027 -27
       hmfw-version-028 -28
       hmfw-version-029 -29
       hmfw-version-030 -30
       hmfw-version-031 -31
       hmfw-version-032 -32
       hmfw-version-033 -33
       hmfw-version-034 -34
       hmfw-version-035 -35
       hmfw-version-036 -36
       hmfw-version-037 -37
       hmfw-version-038 -38
       hmfw-version-039 -39
       hmfw-version-040 -40
       hmfw-version-041 -41
       hmfw-version-042 -42
       hmfw-version-043 -43
       hmfw-version-044 -44
       hmfw-version-045 -45
       hmfw-version-046 -46
       hmfw-version-047 -47
       hmfw-version-048 -48
       hmfw-version-049 -49
       hmfw-version-050 -50
       hmfw-version-051 -51
       hmfw-version-052 -52
       hmfw-version-053 -53
       hmfw-version-054 -54
       hmfw-version-055 -55
       hmfw-version-056 -56
       hmfw-version-057 -57
       hmfw-version-058 -58
       hmfw-version-059 -59
       hmfw-version-060 -60
       hmfw-version-061 -61
       hmfw-version-062 -62
       hmfw-version-063 -63
       hmfw-version-064 -64
       hmfw-version-065 -65
       hmfw-version-066 -66
       hmfw-version-067 -67
       hmfw-version-068 -68
       hmfw-version-069 -69
       hmfw-version-070 -70
       hmfw-version-071 -71
       hmfw-version-072 -72
       hmfw-version-073 -73
       hmfw-version-074 -74
       hmfw-version-075 -75
       hmfw-version-076 -76
       hmfw-version-077 -77
       hmfw-version-078 -78
       hmfw-version-079 -79
       hmfw-version-080 -80
       hmfw-version-081 -81
       hmfw-version-082 -82
       hmfw-version-083 -83
       hmfw-version-084 -84
       hmfw-version-085 -85
       hmfw-version-086 -86
       hmfw-version-087 -87
       hmfw-version-088 -88
       hmfw-version-089 -89
       hmfw-version-090 -90
       hmfw-version-091 -91
       hmfw-version-092 -92
       hmfw-version-093 -93
       hmfw-version-094 -94
       hmfw-version-095 -95
       hmfw-version-096 -96
       hmfw-version-097 -97
       hmfw-version-098 -98
       hmfw-version-099 -99
       hmfw-version-100 -100
       hmfw-version-101 -101
       hmfw-version-102 -102
       hmfw-version-103 -103
       hmfw-version-104 -104
       hmfw-version-105 -105
       hmfw-version-106 -106
       hmfw-version-107 -107
       hmfw-version-108 -108
       hmfw-version-109 -109
       hmfw-version-110 -110
       hmfw-version-111 -111
       hmfw-version-112 -112
       hmfw-version-113 -113
       hmfw-version-114 -114
       hmfw-version-115 -115
       hmfw-version-116 -116
       hmfw-version-117 -117
       hmfw-version-118 -118
       hmfw-version-119 -119
       hmfw-version-120 -120
       hmfw-version-121 -121
       hmfw-version-122 -122
       hmfw-version-123 -123
       hmfw-version-124 -124
       hmfw-version-125 -125
       hmfw-version-126 -126
     requestReadings:
       update:
         hmfw-type-001 reading 01-1
         hmfw-type-002 reading 01-2
         hmfw-type-003 reading 01-3
         hmfw-type-004 reading 01-4
    &
Titel: Antw:eq3 firmware check funkioniert nicht mehr
Beitrag von: yersinia am 18 November 2021, 15:00:43
Uih, zu lang fürs Forum.
Aber es fällt schon was auf:
     2021-11-17 17:38:07   hmfw-type-001   http://www.eq-3.de/HmIPW-WTH
       hmfw-type-126 01
       hmfw-version-001 02

Da stimmt etwas ganz und gar nicht.

Die Readings müssten eher so aussehen:
     2021-11-18 14:50:52   hmfw-type-001   HmIPW-WTH
     2021-11-18 14:50:52   hmfw-type-002   HM-LC-Dim1L-Pl-3
     2021-11-18 14:50:52   hmfw-version-001 2.4.6
     2021-11-18 14:50:52   hmfw-version-002 2.9.7


Zeig bitte mal ein raw listing von den Attributen
reading01.*
reading02.*


Hier ein funktionierendes RAW:
defmod HM_FW_Check HTTPMOD https://update.homematic.com/firmware/api/firmware/search/DEVICE 86400
attr HM_FW_Check userattr showNewFWOnly:yes,no
attr HM_FW_Check do_not_notify 1
attr HM_FW_Check enableControlSet 1
attr HM_FW_Check icon hm_ccu
attr HM_FW_Check reading01AutoNumLen 3
attr HM_FW_Check reading01Name hmfw-type
attr HM_FW_Check reading01RegOpt g
attr HM_FW_Check reading01Regex (?i)"type":"((?:\w+[-]*){1,})
attr HM_FW_Check reading02AutoNumLen 3
attr HM_FW_Check reading02Name hmfw-version
attr HM_FW_Check reading02RegOpt g
attr HM_FW_Check reading02Regex (?si)"version":"(\d+[.]\d+[.]\d+)
attr HM_FW_Check readingMaxAge 10
attr HM_FW_Check readingMaxAgeReplacementMode delete
attr HM_FW_Check showError 1
attr HM_FW_Check showMatched 1
attr HM_FW_Check showNewFWOnly yes
attr HM_FW_Check stateFormat {   my $ret ="";;\
my $lastCheck = FmtDateTime(InternalVal($name,".LastUpdate",0));;\
my $nextCheck = FmtDateTime(InternalVal($name,".TRIGGERTIME",0));;\
my $cellstyle = "padding:3pt;;border-bottom:1px dotted lightgray;;";;\
    $ret .= '<div style="text-align:left;;">';;;;\
    $ret .= '<div>last <a title="eq3-downloads" href="http://www.eq-3.de/service/downloads.html" rel="noopener noreferrer" target="_blank">homematic</a>-fw-check => '.$lastCheck;;\
    $ret .= '</div>';;\
    my $check = ReadingsVal($name,"newFwForDevices","error => no or wrong data from eq3-server!");;\
    if($check eq "no fw-updates needed!") {\
      $ret .= '<div style="color:limegreen;;font-weight:bold;;">';;\
      $ret .= $check;;\
      $ret .= '</div>';;\
    } elsif($check eq "error => no or wrong data from eq3-server!") {\
      $ret .= '<div style="color:red;;font-weight:bold;;">';;\
      $ret .= $check;;\
      $ret .= '</div>';;\
    } else {\
$ret .= '<div style="display:table;;width:100%;;">';;\
$ret .= '<div style="display:table-row;;">';;\
      $ret .= '<div style="display:table-cell;;'.$cellstyle.'width:50%;;font-weight:bold;;">device</div>';;\
  $ret .= '<div style="display:table-cell;;'.$cellstyle.'width:40%;;font-weight:bold;;">model</div>';;\
  $ret .= '<div style="display:table-cell;;'.$cellstyle.'width:5%;;font-weight:bold;;">current</div>';;\
  $ret .= '<div style="display:table-cell;;'.$cellstyle.'width:5%;;font-weight:bold;;">new</div>';;\
$ret .= '</div>';; #header\
      my @devices = split(',',$check);;\
      foreach my $devStr (@devices) {\
my ($dev,$idx) = $devStr =~ m/([^\s]+)\s[(](\d+)[)]/;;\
my $md = ReadingsVal($name,("hmfw-type-".$idx),"?");;\
#my $ofw = AttrVal($dev,"firmware","?");;\
my $ofw = InternalVal($dev,"firmware",AttrVal($dev,"firmware","0.0"));;\
my $nfw = ReadingsVal($name,("hmfw-version-".$idx),"none");;\
        my $fw_link = "https://ccu3-update.homematic.com/firmware/download?cmd=download&serial=0&product=".$md;;\
$ret .= '<div style="display:table-row;;">';;\
$ret .= '<div style="display:table-cell;;'.$cellstyle.'width:50%;;">';;\
        $ret .= '<a href="/fhem?detail='.$dev.'" target="_blank">';;\
$ret .= AttrVal($dev,"alias",$dev);;\
        $ret .= '</a></div>';;\
$ret .= '<div style="display:table-cell;;'.$cellstyle.'width:30%;;font-weight:bold;;color:lightgrey;;">';;\
        $ret .= $md;;\
        $ret .= '</div>';;\
$ret .= '<div style="display:table-cell;;'.$cellstyle.'width:10%;;font-weight:bold;;color:lightgrey;;">';;\
        $ret .= $ofw;;\
        $ret .= '</div>';;\
$ret .= '<div style="display:table-cell;;'.$cellstyle.'width:10%;;font-weight:bold;;color:red;;">';;\
        $ret .= '<a title="download firmware file" href="'.$fw_link.'" rel="noopener noreferrer" target="_blank" style="color:red;;">';;\
        $ret .= $nfw;;\
        $ret .= '</a></div>';;\
        $ret .= '</div>';; #row\
      }\
  $ret .= '</div>';; #table\
    }\
$ret .= "<div style=\"text-align:left;;\">(next check: ".$nextCheck.")</div>";;\
    $ret .= '</div>';;\
  return $ret;;\
}
attr HM_FW_Check userReadings newFwForDevices:MATCHED_READINGS.* {\
  my $ret = "";;\
  my $newfwonly = AttrVal($name,"showNewFWOnly","yes");;\
  if (ReadingsVal($name,"UNMATCHED_READINGS","?") eq "") {\
    my @eq3FwList = map { \
sprintf(uc(ReadingsVal($name,"hmfw-type-".$_,"?")).":".ReadingsVal($name,"hmfw-version-".$_,"?").":".$_);;\
} ReadingsVal($name,"MATCHED_READINGS","?")=~ m/hmfw-version-(\d\d\d)/g;;\
\
foreach my $dev (devspec2array("TYPE=CUL_HM|HMCCUDEV|HMCCUCHN:FILTER=DEF=(......|..............|................):FILTER=subType!=virtual")) {\
      my $md = uc(InternalVal($dev,"ccutype",AttrVal($dev,"model","?")));;\
      my $v = InternalVal($dev,"firmware",AttrVal($dev,"firmware","0.0"));;\
      my ($h,$l) = split('\.',$v);;\
      foreach my $newFW (grep m/^${md}:/i,@eq3FwList) {\
my ($fwmd, $fwv, $idx) = $newFW =~ m/([^:]+):(\d+[.]\d+[.]\d+):(\d+)$/;;\
my ($fwh, $fwl) = split('\.',$fwv);;\
if(($newfwonly eq "no") || (($fwh > $h) || (($fwh == $h) && ($fwl > $l)))) {\
          $ret .= "," if($ret ne "");;\
  $ret .= $dev." (".$idx.")";;\
        }\
      }\
    }\
  } else {\
    $ret = "error => no or wrong data from eq3-server!";;\
  }\
  return ($ret eq "")?"no fw-updates needed!":$ret;;\
}
attr HM_FW_Check webCmd reread
Titel: Antw:eq3 firmware check funkioniert nicht mehr
Beitrag von: reibuehl am 19 November 2021, 09:56:13
Hier das Raw Listing der beiden Readings bei mir:
attr eq3 reading01AutoNumLen 3
attr eq3 reading01Format http://www.eq-3.de/%s
attr eq3 reading01Name hmfw-type
attr eq3 reading01RegOpt g
attr eq3 reading01Regex (?i)"type":"((?:\w+[-]*){1,})
attr eq3 reading02AutoNumLen 3
attr eq3 reading02Name hmfw-version
attr eq3 reading02RegOpt g
attr eq3 reading02Regex (?si)"version":"(\d+[.]\d+[.]\d+)


Die RegEx sind identisch zu deiner funktionierenden Version, nur das Attribut "reading01Format" scheint bei mir zu viel gesetzt zu sein. Nachdem ich das gelöscht habe, stimmt jetzt auch die Ausgabe! Das Attribut ist wahrscheinlich noch von einer alten Version des Checks übrig geblieben.

Danke!
Titel: Antw:eq3 firmware check funkioniert nicht mehr
Beitrag von: Kiter1988 am 18 September 2022, 12:22:55
Hallo,

könnte mir jemand die Firmware 1.4 für die Thermostate HM-CC-RT-DN zusenden ?
Finde sie nirgends im Internet.
Titel: Antw:eq3 firmware check funkioniert nicht mehr
Beitrag von: isy am 18 September 2022, 12:31:08
Hilft dir das Skript weiter?

https://forum.fhem.de/index.php/topic,119601.msg1140284.html#msg1140284


VG Helmut
Titel: Antw:eq3 firmware check funkioniert nicht mehr
Beitrag von: Kiter1988 am 18 September 2022, 13:30:41
Nicht sehr viel, ich weiß nicht wie ich den code ausführen soll.

Über die Raspberry shell und/oder direkt in Fhem gehts wohl nicht.
Titel: Antw:eq3 firmware check funkioniert nicht mehr
Beitrag von: yersinia am 18 September 2022, 13:40:16
Das script liest ja auch nur die verfügbare Firmware aller Devices aus und lädt die enstprechend runter. In deinem Fall wäre dies die derzeit gültige v1.5 (https://ccu3-update.homematic.com/firmware/download?cmd=download&serial=0&product=HM-CC-RT-DN).
Du bist mit deiner Frage aber hier eigentlich falsch; mach' einen neuen Thread im Homematic-Bereich auf und frag ob jemand die v1.4 für den HM-CC-RT-DN hat.
Titel: Antw:eq3 firmware check funkioniert nicht mehr
Beitrag von: enno am 18 September 2022, 13:43:27
Zitat von: Kiter1988 am 18 September 2022, 12:22:55
Hallo,

könnte mir jemand die Firmware 1.4 für die Thermostate HM-CC-RT-DN zusenden ?
Finde sie nirgends im Internet.
hilft dies?

https://forum.fhem.de/index.php/topic,93074.msg1022259.html#msg1022259

Gruss
  Enno
Titel: Antw:eq3 firmware check funkioniert nicht mehr
Beitrag von: desmoloch am 01 Oktober 2022, 11:46:40
Da ich auch leider nach den Firmwares gesucht hab. Hier gibt es eine gute Anleitung wie man an die Firmware kommt: https://github.com/alexreinert/debmatic/issues/222
Für den RT-DN wäre es dann: https://ccu3-update.homematic.com:8443/firmware/download?cmd=download&serial=0&product=HM-CC-RT-DN

Gruß
Titel: Aw: eq3 firmware check funkioniert nicht mehr
Beitrag von: kamp am 02 Juni 2023, 19:45:12
geht das nicht mehr? error => no or wrong data from eq3-server!
Titel: Aw: eq3 firmware check funkioniert nicht mehr
Beitrag von: yersinia am 04 Juni 2023, 20:35:59
Zitat von: kamp am 02 Juni 2023, 19:45:12geht das nicht mehr? error => no or wrong data from eq3-server!
Doch, funktioniert. Mehr Details hast du nicht?
Titel: Aw: eq3 firmware check funkioniert nicht mehr
Beitrag von: kamp am 06 Juni 2023, 16:19:33
wenn du mir sagst, wie ich mehr details aus dieser fehlermeldung vom device bekomme, dann gerne :)
Titel: Aw: eq3 firmware check funkioniert nicht mehr
Beitrag von: yersinia am 06 Juni 2023, 16:21:43
Fangen wir doch mal mit einem List des Devices an!?

Darüber hinaus - hast du dies mal probiert => https://forum.fhem.de/index.php?topic=110271.0
Titel: Aw: eq3 firmware check funkioniert nicht mehr
Beitrag von: kamp am 07 Juni 2023, 18:52:55
Hallo, nein ein anderes Device habe ich nicht probiert, die Frage hier bezieht sich ja auf das httpmod hm_fw_check_v2 template, welches bei mir nicht mehr funktioniert.

Internals:
   BUSY       0
   CFGFN     
   DEF        https://update.homematic.com/firmware/api/firmware/search/DEVICE 86400
   FUUID      6480b4b3-f33f-1b7d-306b-e0b11888038af228
   Interval   86400
   MainURL    https://update.homematic.com/firmware/api/firmware/search/DEVICE
   ModuleVersion 4.1.15 - 17.12.2022
   NAME       hm_fw_check
   NOTIFYDEV  global
   NR         6502
   NTFY_ORDER 50-hm_fw_check
   STATE      <div style="text-align:left;"><div>last <a title="eq3-downloads" href="http://www.eq-3.de/service/downloads.html" rel="noopener noreferrer" target="_blank">homematic</a>-fw-check => 2023-06-07 18:47:47</div><div style="color:red;font-weight:bold;">error => no or wrong data from eq3-server!</div><br /><div style="text-align:left;">(next check: 2023-06-08 18:47:47)</div></div>
   TYPE       HTTPMOD
   value     
   CompiledRegexes:
   HttpUtils:
     NAME       
     addr       https://update.homematic.com:443
     auth       0
     buf       
     code       200
     compress   1
     conn       
     data       
     displayurl https://update.homematic.com/firmware/api/firmware/search/DEVICE
     header     
     host       update.homematic.com
     httpheader HTTP/1.1 200 OK
Server: nginx
Date: Wed, 07 Jun 2023 16:47:47 GMT
Content-Type: text/plain
Content-Length: 1288
Connection: close
content-encoding: gzip
Strict-Transport-Security: max-age=31536000; includeSubDomains
Content-Security-Policy: upgrade-insecure-requests
     httpversion 1.0
     hu_blocking 0
     hu_filecount 1
     hu_port    443
     hu_portSfx
     ignoreredirects 1
     loglevel   4
     path       /firmware/api/firmware/search/DEVICE
     protocol   https
     redirects  0
     timeout    2
     url        https://update.homematic.com/firmware/api/firmware/search/DEVICE
     sslargs:
   QUEUE:
   READINGS:
     2023-06-07 18:48:20   attrTemplateVersion 20201206
   REQUEST:
     context    reading
     data       
     header     
     ignoreredirects 0
     num        unknown
     retryCount 0
     type       update
     url        https://update.homematic.com/firmware/api/firmware/search/DEVICE
Attributes:
   do_not_notify 1
   enableControlSet 1
   icon       hm_ccu
   model      hm_fw_check_v2
   reading01AutoNumLen 3
   reading01Name hmfw-type
   reading01RegOpt g
   reading01Regex (?i)"type":"((?:\w+[-]*){1,})
   reading02AutoNumLen 3
   reading02Name hmfw-version
   reading02RegOpt g
   reading02Regex (?si)"version":"(\d+[.]\d+[.]\d+)
   readingMaxAge 10
   readingMaxAgeReplacementMode delete
   room       HTTPMOD
   showError  1
   showMatched 1
   showNewFWOnly yes
   stateFormat {   my $ret ="";
my $lastCheck = FmtDateTime(InternalVal($name,".LastUpdate",0));
my $nextCheck = FmtDateTime(InternalVal($name,".TRIGGERTIME",0));
my $cellstyle = "padding:3pt;border-bottom:1px dotted lightgray;";
    $ret .= '<div style="text-align:left;">';
    $ret .= '<div>last <a title="eq3-downloads" href="http://www.eq-3.de/service/downloads.html" rel="noopener noreferrer" target="_blank">homematic</a>-fw-check => '.$lastCheck;
    $ret .= '</div>';
    my $check = ReadingsVal($name,"newFwForDevices","error => no or wrong data from eq3-server!");
    if($check eq "no fw-updates needed!") {
      $ret .= '<div style="color:limegreen;font-weight:bold;">';
      $ret .= $check;
      $ret .= '</div>';
    } elsif($check eq "error => no or wrong data from eq3-server!") {
      $ret .= '<div style="color:red;font-weight:bold;">';
      $ret .= $check;
      $ret .= '</div>';
    } else {
$ret .= '<div style="display:table;width:100%;">';
$ret .= '<div style="display:table-row;">';
      $ret .= '<div style="display:table-cell;'.$cellstyle.'width:50%;font-weight:bold;">device</div>';
  $ret .= '<div style="display:table-cell;'.$cellstyle.'width:40%;font-weight:bold;">model</div>';
  $ret .= '<div style="display:table-cell;'.$cellstyle.'width:5%;font-weight:bold;">current</div>';
  $ret .= '<div style="display:table-cell;'.$cellstyle.'width:5%;font-weight:bold;">new</div>';
$ret .= '</div>'; #header
      my @devices = split(',',$check);
      foreach my $devStr (@devices) {
my ($dev,$idx) = $devStr =~ m/([^\s]+)\s[(](\d+)[)]/;
my $md = ReadingsVal($name,("hmfw-type-".$idx),"?");
my $ofw = InternalVal($dev,"firmware",AttrVal($dev,"firmware","0.0"));
my $nfw = ReadingsVal($name,("hmfw-version-".$idx),"none");
        my $fw_link = "https://ccu3-update.homematic.com/firmware/download?cmd=download&serial=0&product=".$md;
$ret .= '<div style="display:table-row;">';
$ret .= '<div style="display:table-cell;'.$cellstyle.'width:50%;">';
        $ret .= '<a href="/fhem?detail='.$dev.'" target="_blank">';
$ret .= AttrVal($dev,"alias",$dev);
        $ret .= '</a></div>';
$ret .= '<div style="display:table-cell;'.$cellstyle.'width:30%;font-weight:bold;color:lightgrey;">';
        $ret .= $md;
        $ret .= '</div>';
$ret .= '<div style="display:table-cell;'.$cellstyle.'width:10%;font-weight:bold;color:lightgrey;">';
        $ret .= $ofw;
        $ret .= '</div>';
$ret .= '<div style="display:table-cell;'.$cellstyle.'width:10%;font-weight:bold;color:red;">';
        $ret .= '<a title="download firmware file" href="'.$fw_link.'" rel="noopener noreferrer" target="_blank" style="color:red;">';
        $ret .= $nfw;
        $ret .= '</a></div>';
        $ret .= '</div>'; #row
      }
  $ret .= '</div>'; #table
    }
$ret .= "<br \/><div style=\"text-align:left;\">(next check: ".$nextCheck.")</div>";
    $ret .= '</div>';
  return $ret;
}
   userReadings newFwForDevices:MATCHED_READINGS.* {
  my $ret = "";
  my $newfwonly = AttrVal($name,"showNewFWOnly","yes");
  if (ReadingsVal($name,"UNMATCHED_READINGS","?") eq "") {
    my @eq3FwList = map {
sprintf(uc(ReadingsVal($name,"hmfw-type-".$_,"?")).":".ReadingsVal($name,"hmfw-version-".$_,"?").":".$_);
} ReadingsVal($name,"MATCHED_READINGS","?")=~ m/hmfw-version-(\d\d\d)/g;

foreach my $dev (devspec2array("TYPE=CUL_HM|HMCCUDEV:FILTER=DEF=(......|..............):FILTER=subType!=virtual")) {
my $md = uc(InternalVal($dev,"ccutype",AttrVal($dev,"model","?")));
my $v = InternalVal($dev,"firmware",AttrVal($dev,"firmware","0.0"));
        my ($h,$l) = split('\.',$v);
        foreach my $newFW (grep m/^${md}:/i,@eq3FwList) {
my ($fwmd, $fwv, $idx) = $newFW =~ m/([^:]+):(\d+[.]\d+[.]\d+):(\d+)$/;
my ($fwh, $fwl) = split('\.',$fwv);
if(($newfwonly eq "no") || (($fwh > $h) || (($fwh == $h) && ($fwl > $l)))) {
  $ret .= "," if($ret ne "");
  $ret .= $dev." (".$idx.")";
        }
      }
    }
  } else {
    $ret = "error => no or wrong data from eq3-server!";
  }
  return ($ret eq "")?"no fw-updates needed!":$ret;
}
   userattr   showNewFWOnly:yes,no
   webCmd     reread

Ich würde gerne herausfinden, ob das httpmod template defekt ist und ggf. angepasst werden muss, damit es wieder läuft. Wenn das nichts wird, kann man ja nach alternativen weiter schauen :)
Titel: Aw: eq3 firmware check funkioniert nicht mehr
Beitrag von: yersinia am 08 Juni 2023, 16:30:41
Mmh, soweit sieht dein List aus - bis auf, dass dir einige readings (LAST_REQUEST, MATCHED_READINGS) fehlen. Ich kann den Fehler auch nicht nachvollziehen. Ein neues Device mit dem Template liefert Daten nach einem reread.
Was wird dir angezeigt, wenn du
https://update.homematic.com/firmware/api/firmware/search/DEVICEmal direkt aufrufst?

Möglicherweise ist dies ein Problem deines FHEMs - veraltete SSL, OS oder HTTPMOD Version?
Auf welchem OS läuft denn dein FHEM? Und welche FHEM Revision (Ausgabe von version in der FHEM Kommandozeile) hast du?
Titel: Aw: eq3 firmware check funkioniert nicht mehr
Beitrag von: kamp am 09 Juni 2023, 16:43:50
Die fehlenden Readings kann daran liegen, dass ich das Device kurz zuvor gelöscht und neu erstellt hatte, nur um sicher zu gehen. Wenn ich die URL in Edge auf meinem PC aufrufe, bekomme ich ein JSON. Auch mittels wget via ssh auf der FHEM-Maschine.

FHEM läuft auf einem proxmox-LXC mit Ubuntu 20.04, regelmäßige updates.
Latest Revision: 27642

File                      Rev   Last Change

fhem.pl                   27498 2023-04-30 08:50:41Z rudolfkoenig
98_HTTPMOD.pm             27065 2023-01-15 17:33:44Z StefanStrobel
Titel: Aw: eq3 firmware check funkioniert nicht mehr
Beitrag von: yersinia am 09 Juni 2023, 16:56:45
Tja, da bin ich nun von hier aus ratlos. ::) Evtl weiss ein anderer Forist noch weiter.
Titel: Aw: eq3 firmware check funkioniert nicht mehr
Beitrag von: betateilchen am 09 Juni 2023, 18:24:36
Naja, es kommt ja ein HTTP 200 zurück, also ist der Aufruf erstmal ok.

Für eine Fehlersuche würde ich zuerst das Attribut showBody 1 setzen, damit man sehen kann, WAS da bei einem reread zurückkommt.

Edit: die Rückgabe scheint ok zu sein, bei mir kommt die gleiche content-length zurück:

httpheader HTTP/1.1 200 OK
Server: nginx
Date: Thu, 08 Jun 2023 21:28:30 GMT
Content-Type: text/plain
Content-Length: 1288
Connection: close
content-encoding: gzip
Strict-Transport-Security: max-age=31536000; includeSubDomains
Content-Security-Policy: upgrade-insecure-requests
     httpversion 1.0
     hu_blocking 0
     hu_filecount 1
     hu_port    443
     hu_portSfx
     ignoreredirects 1
     loglevel   4
     path       /firmware/api/firmware/search/DEVICE
     protocol   https
     redirects  0
     timeout    2
     url        https://update.homematic.com/firmware/api/firmware/search/DEVICE
     sslargs:

Das heißt, das Problem liegt wohl im Auswertungsteil selbst.
Bei mir funktioniert das device wie gehabt unauffällig.
Titel: Aw: eq3 firmware check funkioniert nicht mehr
Beitrag von: betateilchen am 09 Juni 2023, 23:20:59
Zitat von: betateilchen am 09 Juni 2023, 18:24:36Das heißt, das Problem liegt wohl im Auswertungsteil selbst.
Bei mir funktioniert das device wie gehabt unauffällig.

Nachtrag: ich verwende allerdings nicht attrTemplate, sondern habe das selbst eingepflegt.