Funktionsanfrage: hminfo erweiterungen firmware Versionsprüfung

Begonnen von no_Legend, 18 Januar 2016, 11:44:07

Vorheriges Thema - Nächstes Thema

DK4RST


StephanFHEM

Hallo,

mir ist aufgefallen, dass mir ein Firmware-Update für HM-CC-RT-DN nicht angezeigt wird. Bei der Fehlersuche bin ich auf zwei Themen gestoßen:

1. Es gibt Version 1.5 aber auf der eq3-Seite wird immer noch 1.4 angezeigt
2. Wenn man die Download-Seite öffnet wie in dem Device, dann zeigt er nicht mehr alle Ergebnisse direkt an. Man erhält sie teilweise nur durch die detaillierte Suche. Daher greift da auch dieses "Tool" nicht mehr.

Gibt es mittlerweile andere Möglichkeiten des Update-Checks?

frank

moin,

1. die neue fw für rt und tc gibt es zur zeit nicht auf dem eq3 server. siehe https://forum.fhem.de/index.php/topic,93074.0.html

2. ich musste letztens die url auf "https" ändern, damit das tool wieder richtig funktionierte.
FHEM: 6.0(SVN) => Pi3(buster)
IO: CUL433|CUL868|HMLAN|HMUSB2|HMUART
CUL_HM: CC-TC|CC-VD|SEC-SD|SEC-SC|SEC-RHS|Sw1PBU-FM|Sw1-FM|Dim1TPBU-FM|Dim1T-FM|ES-PMSw1-Pl
IT: ITZ500|ITT1500|ITR1500|GRR3500
WebUI [HMdeviceTools.js (hm.js)]: https://forum.fhem.de/index.php/topic,106959.0.html

Burny4600

Nachdem es doch schon einige HM Geräte sind habe ich die Firmwareprüfung laut Wiki und ein paar Anpassungen durchgeführt.
Beim Test bekomme ich immer die Meldung LAST_ERROR Cant create UDP socket:Invalid argument
Kommt das aus dem Modul oder ist Firefox in diesem Fall das Problem? Derzeit ändert sich so viel betreffend HTTPS und überall läuten die Alarmglocken.
list TYPE=CUL_HM bringt jedenfalls alle HM Geräte.
get HMinfo param -d D-firmware listet die Firmwareversion der HM Geräte auf.

list eq3
Internals:
   BUSY       0
   CFGFN      /media/hdd/fhem/mycfg/HM/hm_rasp01.cfg
   DEF        https://www.eq-3.de/service/downloads.html 1728000
   FUUID      5c45b04f-f33f-f4d2-e8ac-6e95ed4c33510da6
   Interval   1728000
   LASTSEND   1549724347.42514
   MainURL    https://www.eq-3.de/service/downloads.html
   MaxAgeEnabled 1
   ModuleVersion 3.5.4 - 9.11.2018
   NAME       eq3
   NR         3834
   STATE      <div style="text-align:left">last <a title="eq3-downloads" href="https://www.eq-3.de/service/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 1551395700
   TRIGGERTIME_FMT 2019-03-01 00:15:00
   TYPE       HTTPMOD
   TimeAlign  1549667700
   TimeAlignFmt 2019-02-09 00:15:00
   addr       https://www.eq-3.de:443
   auth       0
   data       suchtext=&suche_in=2&downloadart=11
   displayurl https://www.eq-3.de/service/downloads.html
   header     
   host       www.eq-3.de
   httpversion 1.0
   ignoreredirects 0
   loglevel   4
   path       /service/downloads.html
   protocol   https
   redirects  0
   timeout    2
   url        https://www.eq-3.de/service/downloads.html
   value      0
   QUEUE:
   READINGS:
     2019-02-09 15:59:07   LAST_ERROR      Cant create UDP socket:Invalid argument
     2019-02-09 15:59:07   LAST_REQUEST    update
   REQUEST:
     data       suchtext=&suche_in=2&downloadart=11
     header     
     ignoreredirects 0
     retryCount 0
     type       update
     url        https://www.eq-3.de/service/downloads.html
     value      0
   defptr:
     readingBase:
     readingOutdated:
   sslargs:
Attributes:
   alias      eq3
   alignTime  00:15
   enableControlSet 1
   event-on-change-reading .*
   event-on-update-reading LAST_ERROR,MATCHED_READINGS
   eventMap   reread:Neuanfrage
   group      .Firmware Updates
   reading01AutoNumLen 2
   reading01Format https://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       _HM
   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     Neuanfrage


Ausschnitt 99_myUtils.pm

######## eQ3 Firmware Update ###################
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="https://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;
}


Irgendwo muss ich da noch einen Fehler haben obwohl alles aktuell mit den Nachbesserungen sein müsste.
LG Chris

Raspberry Pi 2-5, Bullseye Lite, Bookworm Lite
Schnittstellen: 1-Wire, FHEM2FEHEM, HM-MOD-UART, LAN, Modbus, MQTT, nanoCUL, RFXtrx433E, SIGNALduino, ser2net
Devices: APC, Eastron, FS20, IT, Homematic, MQTT, PV-(DEYE, EPEVER, FRONIUS), Resol-VBUS, S.USV, TEK603, WMR200, YouLess

Otto123

Hallo Chris,

deine function in 99_myUtils gibt offenbar was fehlerhaftes zurück - zumindest sieht dein State so aus
Zitathomematic</a>-fw-check => ???<br><br><pre>
Ich kann nicht wirklich einen Unterschied erkennen, außer das bei mir die url eine andere ist -> "https://www.eq-3.de/downloads.html" aber es funktionieren offenbar beide.

Ich habe sowohl dein list als auch die 99_myUtils Funktion mit notepad++ verglichen und keine anderen Unterschiede festgestellt.
Wenn ich bei mir eine Firmware z.B. im Wandthermostat ändere wird dies auch zuverlässig angezeigt. -> funktioniert  :)

Funktioniert der Aufruf von
{eq3StateFormat()}
in der Kommandozeile?

Gruß Otto
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

Burny4600

Hallo Otto.

Der Befehl {eq3StateFormat()} liefert
<div style="text-align:left">last <a title="eq3-downloads" href="https://www.eq-3.de/service/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>
LG Chris

Raspberry Pi 2-5, Bullseye Lite, Bookworm Lite
Schnittstellen: 1-Wire, FHEM2FEHEM, HM-MOD-UART, LAN, Modbus, MQTT, nanoCUL, RFXtrx433E, SIGNALduino, ser2net
Devices: APC, Eastron, FS20, IT, Homematic, MQTT, PV-(DEYE, EPEVER, FRONIUS), Resol-VBUS, S.USV, TEK603, WMR200, YouLess

Otto123

Hallo Chris,

ist eigenartig... Ich verstehe es nicht. Offenbar stellt er fest, da ist eine Firmware anders, aber dann macht er nicht weiter. Er liefert  aber auch kein Datum der Abfrage ...
Bei mir sieht es so aus, nichts ist zu aktualisieren:
<div style="text-align:left">last <a title="eq3-downloads" href="https://www.eq-3.de/downloads.html">homematic</a>-fw-check => 2019-02-10 00:45:01<br><br><pre>| device                  | model                   | old_fw | new_fw | release    |
------------------------------------------------------------------------------------
| no fw-updates needed!                                                            |</pre></div>


Gruß Otto
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

frank

hallo burny4600,

soweit ich mich erinnere, hat es doch bei dir schon funktioniert. was hast du wie warum geändert?

setze mal verbose=5 bei httpmod.
FHEM: 6.0(SVN) => Pi3(buster)
IO: CUL433|CUL868|HMLAN|HMUSB2|HMUART
CUL_HM: CC-TC|CC-VD|SEC-SD|SEC-SC|SEC-RHS|Sw1PBU-FM|Sw1-FM|Dim1TPBU-FM|Dim1T-FM|ES-PMSw1-Pl
IT: ITZ500|ITT1500|ITR1500|GRR3500
WebUI [HMdeviceTools.js (hm.js)]: https://forum.fhem.de/index.php/topic,106959.0.html

ph1959de

Zitat von: frank am 10 Februar 2019, 17:56:18
setze mal verbose=5 bei httpmod.

Und - hab hier nicht gesehen, dass das schon geprüft wurde - schau mal ins fhem-log, ob da nicht ohnehin schon weitere Informationen / Fehlermeldungen vom HTTPMOD zu finden sind.
Aktives Mitglied des FHEM e.V. | Moderator im Forenbereich "Wiki"

Burny4600

Ich hatte es schon vor längerer Zeit eingerichtet, aber bisher noch nie getestet ob alles funktioniert.
Erst jetzt wo eine Menge an HM Geräte vorhanden sind wollte ich es fertig einrichten.
Meine Änderungen haben sich auf https bzw. die aktuellen Links von eq3 bezogen die soweit bei einem manuellen Test auch funktionieren.

Verbose 5 Ergebnis
2019.02.10 18:32:10.238 5: eq3: set called with reread
2019.02.10 18:32:10.239 4: eq3: GetUpdate called (reread)
2019.02.10 18:32:10.240 4: eq3: AddToQueue adds update, initial queue len: 0
2019.02.10 18:32:10.241 5: eq3: AddToQueue adds type update to URL https://www.eq-3.de/service/downloads.html, data suchtext=&suche_in=2&downloadart=11, no headers, retry 0
2019.02.10 18:32:10.242 5: eq3: HandleSendQueue called, qlen = 1
2019.02.10 18:32:10.244 4: eq3: HandleSendQueue sends request type update to URL https://www.eq-3.de/service/downloads.html,
data: suchtext=&suche_in=2&downloadart=11, No Header
timeout 2
2019.02.10 18:32:10.244 5: HttpUtils url=https://www.eq-3.de/service/downloads.html
2019.02.10 18:32:10.469 4: HttpUtils: Cant create UDP socket:Invalid argument
2019.02.10 18:32:10.470 3: eq3: Read callback: Error: Cant create UDP socket:Invalid argument
2019.02.10 18:32:10.471 4: eq3: Read callback: request type was update retry 0, body empty
2019.02.10 18:32:10.471 5: eq3: ExtractSid called, context reading, num
2019.02.10 18:32:10.472 5: eq3: UpdateRequestHash called
2019.02.10 18:32:10.473 5: eq3: MaxAge: check reading LAST_ERROR
2019.02.10 18:32:10.473 5: eq3: MaxAge: reading LAST_ERROR doesn't come from a -Name attr -> skipping
2019.02.10 18:32:10.474 5: eq3: MaxAge: check reading LAST_REQUEST
2019.02.10 18:32:10.474 5: eq3: MaxAge: reading LAST_REQUEST doesn't come from a -Name attr -> skipping
2019.02.10 18:32:10.475 4: eq3: CheckAuth decided no authentication required
LG Chris

Raspberry Pi 2-5, Bullseye Lite, Bookworm Lite
Schnittstellen: 1-Wire, FHEM2FEHEM, HM-MOD-UART, LAN, Modbus, MQTT, nanoCUL, RFXtrx433E, SIGNALduino, ser2net
Devices: APC, Eastron, FS20, IT, Homematic, MQTT, PV-(DEYE, EPEVER, FRONIUS), Resol-VBUS, S.USV, TEK603, WMR200, YouLess

frank

seltsam finde ich, dass httputils einen udp fehler angibt, obwohl hier eigentlich https auf port 443 genutzt wird.
ich nutze viel httpmod und habe schon viel errors gesehen, aber noch nie udp im errror gelesen.

wird eventuell ein falscher port genutzt?
was passiert, wenn du in der def die url auf http änderst?
FHEM: 6.0(SVN) => Pi3(buster)
IO: CUL433|CUL868|HMLAN|HMUSB2|HMUART
CUL_HM: CC-TC|CC-VD|SEC-SD|SEC-SC|SEC-RHS|Sw1PBU-FM|Sw1-FM|Dim1TPBU-FM|Dim1T-FM|ES-PMSw1-Pl
IT: ITZ500|ITT1500|ITR1500|GRR3500
WebUI [HMdeviceTools.js (hm.js)]: https://forum.fhem.de/index.php/topic,106959.0.html

Burny4600

Mit http in der Original Wiki Vorgabe sah es nicht anders aus darum habe ich alles auf aktuelle Links mit https geändert.
Einen Test mit Verbose 5 und http und Wiki Vorgaben kann ich erst nächsten Samstag wieder durchführen.
LG Chris

Raspberry Pi 2-5, Bullseye Lite, Bookworm Lite
Schnittstellen: 1-Wire, FHEM2FEHEM, HM-MOD-UART, LAN, Modbus, MQTT, nanoCUL, RFXtrx433E, SIGNALduino, ser2net
Devices: APC, Eastron, FS20, IT, Homematic, MQTT, PV-(DEYE, EPEVER, FRONIUS), Resol-VBUS, S.USV, TEK603, WMR200, YouLess

frank

mit http kam also auch eine udp fehlermeldung?

nutzt du auf dieser fhem installation ein anderes httpmod-modul, welches mit https/http funktioniert? wenn ja, wie sieht dort ein list aus?
FHEM: 6.0(SVN) => Pi3(buster)
IO: CUL433|CUL868|HMLAN|HMUSB2|HMUART
CUL_HM: CC-TC|CC-VD|SEC-SD|SEC-SC|SEC-RHS|Sw1PBU-FM|Sw1-FM|Dim1TPBU-FM|Dim1T-FM|ES-PMSw1-Pl
IT: ITZ500|ITT1500|ITR1500|GRR3500
WebUI [HMdeviceTools.js (hm.js)]: https://forum.fhem.de/index.php/topic,106959.0.html

Burny4600

Zitatmit http kam also auch eine udp fehlermeldung?
Ja, darum hatte ich zur Sicherheit alle Links auf aktuellem Stand und per https geändert und gehofft das es damit erledigt ist.
Auf dieser Installation ist alles standartmäßig installiert und nichts bei den Updates ausgeschlossen- Somit sollte alles akutell sein.
Genaueres kann ich erst ab Samstag ermitteln.
LG Chris

Raspberry Pi 2-5, Bullseye Lite, Bookworm Lite
Schnittstellen: 1-Wire, FHEM2FEHEM, HM-MOD-UART, LAN, Modbus, MQTT, nanoCUL, RFXtrx433E, SIGNALduino, ser2net
Devices: APC, Eastron, FS20, IT, Homematic, MQTT, PV-(DEYE, EPEVER, FRONIUS), Resol-VBUS, S.USV, TEK603, WMR200, YouLess

Burny4600

#254
Ich habe heute nochmals einen Test ausgeführt. Das HTTPMOD Modul ist jedenfalls nicht alt.
Das installierte HTTPMOD Modul ist:
File          Rev   Last Change

98_HTTPMOD.pm 18540 2019-02-09 10:15:54Z StefanStrobel

doif.js                    15546 2017-12-03 09:57:42Z Ellert
fhemweb.js                 17826 2018-11-23 10:40:33Z rudolfkoenig
fhemweb_readingsGroup.js   15189 2017-10-03 17:53:27Z justme1968


Beim Test mit https standen dieses mal PERL WARNINGS die es vorher nicht gab.
2019.02.16 18:51:18.038 5: eq3: set called with reread
2019.02.16 18:51:18.038 4: eq3: GetUpdate called (reread)
2019.02.16 18:51:18.038 4: eq3: AddToQueue adds update, initial queue len: 0
2019.02.16 18:51:18.039 5: eq3: AddToQueue adds type update to URL https://www.eq-3.de/service/downloads.html, data suchtext=&suche_in=2&downloadart=11, no headers, retry 0
2019.02.16 18:51:18.039 5: eq3: HandleSendQueue called, qlen = 1
2019.02.16 18:51:18.040 4: eq3: HandleSendQueue sends request type update to URL https://www.eq-3.de/service/downloads.html,
data: suchtext=&suche_in=2&downloadart=11, No Header
timeout 2
2019.02.16 18:51:18.040 5: HttpUtils url=https://www.eq-3.de/service/downloads.html
2019.02.16 18:51:19.340 4: HttpUtils: Cant create UDP socket:Invalid argument
2019.02.16 18:51:19.341 3: eq3: Read callback: Error: Cant create UDP socket:Invalid argument
2019.02.16 18:51:19.341 4: eq3: Read callback: request type was update retry 0, body empty
2019.02.16 18:51:19.342 5: eq3: ExtractSid called, context reading, num
2019.02.16 18:51:19.343 5: eq3: UpdateRequestHash called
2019.02.16 18:51:19.344 5: eq3: MaxAge: check reading LAST_ERROR
2019.02.16 18:51:19.344 5: eq3: MaxAge: reading LAST_ERROR doesn't come from a -Name attr -> skipping
2019.02.16 18:51:19.344 5: eq3: MaxAge: check reading LAST_REQUEST
2019.02.16 18:51:19.345 5: eq3: MaxAge: reading LAST_REQUEST doesn't come from a -Name attr -> skipping
2019.02.16 18:51:19.345 4: eq3: CheckAuth decided no authentication required
2019.02.16 18:51:19.346 1: PERL WARNING: Use of uninitialized value $idx in concatenation (.) or string at ./FHEM/99_myUtils.pm line 170.
2019.02.16 18:51:19.347 1: PERL WARNING: Use of uninitialized value $dev in concatenation (.) or string at ./FHEM/99_myUtils.pm line 172.
2019.02.16 18:51:19.347 1: PERL WARNING: Use of uninitialized value $dev in sprintf at ./FHEM/99_myUtils.pm line 173.
2019.02.16 18:51:19.347 1: PERL WARNING: Use of uninitialized value $md in string eq at ./FHEM/99_myUtils.pm line 176.
2019.02.16 18:51:19.348 1: PERL WARNING: Use of uninitialized value $md in sprintf at ./FHEM/99_myUtils.pm line 177.
2019.02.16 18:51:19.348 1: PERL WARNING: Use of uninitialized value $ofw in string eq at ./FHEM/99_myUtils.pm line 180.
2019.02.16 18:51:19.348 1: PERL WARNING: Use of uninitialized value $ofw in sprintf at ./FHEM/99_myUtils.pm line 181.
2019.02.16 18:51:19.349 1: PERL WARNING: Use of uninitialized value $nfw in sprintf at ./FHEM/99_myUtils.pm line 186.
2019.02.16 18:51:19.349 1: PERL WARNING: Use of uninitialized value $date in sprintf at ./FHEM/99_myUtils.pm line 190.


Die Meldungen beziehen sich auf diese Zeilen.
      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);     


Die Definition mit http liefert folgenden LOG Eintrag
2019.02.16 19:03:47.709 5: eq3: set called with upgradeAttributes
2019.02.16 19:04:14.746 5: eq3: set called with reread
2019.02.16 19:04:14.747 4: eq3: GetUpdate called (reread)
2019.02.16 19:04:14.748 4: eq3: AddToQueue adds update, initial queue len: 0
2019.02.16 19:04:14.748 5: eq3: AddToQueue adds type update to URL http://www.eq-3.de/service/downloads.html, data suchtext=&suche_in=2&downloadart=11, no headers, retry 0
2019.02.16 19:04:14.749 5: eq3: HandleSendQueue called, qlen = 1
2019.02.16 19:04:14.751 4: eq3: HandleSendQueue sends request type update to URL http://www.eq-3.de/service/downloads.html,
data: suchtext=&suche_in=2&downloadart=11, No Header
timeout 2
2019.02.16 19:04:14.751 5: HttpUtils url=http://www.eq-3.de/service/downloads.html
2019.02.16 19:04:14.754 4: HttpUtils: Cant create UDP socket:Invalid argument
2019.02.16 19:04:14.755 3: eq3: Read callback: Error: Cant create UDP socket:Invalid argument
2019.02.16 19:04:14.756 4: eq3: Read callback: request type was update retry 0, body empty
2019.02.16 19:04:14.756 5: eq3: ExtractSid called, context reading, num
2019.02.16 19:04:14.758 5: eq3: UpdateRequestHash called
2019.02.16 19:04:14.758 5: eq3: MaxAge: check reading LAST_ERROR
2019.02.16 19:04:14.759 5: eq3: MaxAge: reading LAST_ERROR doesn't come from a -Name attr -> skipping
2019.02.16 19:04:14.759 5: eq3: MaxAge: check reading LAST_REQUEST
2019.02.16 19:04:14.760 5: eq3: MaxAge: reading LAST_REQUEST doesn't come from a -Name attr -> skipping
2019.02.16 19:04:14.760 4: eq3: CheckAuth decided no authentication required


List eq3
Internals:
   BUSY       0
   CFGFN      /media/hdd/fhem/mycfg/HM/hm_rasp01.cfg
   DEF        http://www.eq-3.de/service/downloads.html 1728000
   FUUID      5c45b04f-f33f-f4d2-e8ac-6e95ed4c33510da6
   Interval   1728000
   LASTSEND   1550340254.75083
   MainURL    http://www.eq-3.de/service/downloads.html
   MaxAgeEnabled 1
   ModuleVersion 3.5.4 - 9.11.2018
   NAME       eq3
   NR         3834
   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                   | 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 1552000500
   TRIGGERTIME_FMT 2019-03-08 00:15:00
   TYPE       HTTPMOD
   TimeAlign  1550272500
   TimeAlignFmt 2019-02-16 00:15:00
   addr       http://www.eq-3.de:80
   auth       0
   data       suchtext=&suche_in=2&downloadart=11
   displayurl http://www.eq-3.de/service/downloads.html
   header     
   host       www.eq-3.de
   httpversion 1.0
   ignoreredirects 0
   loglevel   4
   path       /service/downloads.html
   protocol   http
   redirects  0
   timeout    2
   url        http://www.eq-3.de/service/downloads.html
   value      0
   QUEUE:
   READINGS:
     2019-02-16 19:04:14   LAST_ERROR      Cant create UDP socket:Invalid argument
     2019-02-16 19:04:14   LAST_REQUEST    update
   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:
   alias      eq3
   alignTime  00:15
   enableControlSet 1
   event-on-change-reading .*
   event-on-update-reading LAST_ERROR,MATCHED_READINGS
   eventMap   reread:Neuanfrage
   group      .Firmware Updates
   reading01AutoNumLen 2
   reading01Format https://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       _HM
   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
   verbose    5
   webCmd     Neuanfrage

Auch hier wieder die udp Meldung.
Irgendetwas muss aber bei mir noch falsch sein.
LG Chris

Raspberry Pi 2-5, Bullseye Lite, Bookworm Lite
Schnittstellen: 1-Wire, FHEM2FEHEM, HM-MOD-UART, LAN, Modbus, MQTT, nanoCUL, RFXtrx433E, SIGNALduino, ser2net
Devices: APC, Eastron, FS20, IT, Homematic, MQTT, PV-(DEYE, EPEVER, FRONIUS), Resol-VBUS, S.USV, TEK603, WMR200, YouLess