Zitat von: Gernott am 07 Februar 2026, 17:08:55Nein, ich habe fast nur Homematic-Geräte (~30) und einige wenige MQTT2-Devices, die allerdings nicht viel Event-Last erzeugen. Außerdem fehlen jetzt im Winter etliche HM-Geräte, da der Pool nicht im Betrieb ist. Neuzugänge waren nur die beiden Monitoring-Instanzen.Hmm, bin im Moment ohne Idee. Meine monitoring-Instanzen sind im Moment so angelegt, dass Sie ein NOTIFYDEF als Internal haben.
2024 my $returnListMediaServers = "|listMediaServers|".$info->{deviceID};
2025 foreach my $mediaServer (@{ $listMediaServers->{ListMediaServersResponse}->{media_server} }) {
2026 $returnListMediaServers .= ",".$mediaServer->{friendly_name};
Zitat von: DeeSPe am 09 Februar 2026, 17:58:10Bevor ich es als Template verwurste, wäre es schön wenn es von Euch mal getestet wird.
curl --head --insecure https://fhempi
HTTP/2 302
server: nginx
content-type: text/html; charset=utf-8
location: https://fhempi/login
cache-control: max-age=0, must-revalidate, private
date: Mon, 09 Feb 2026 14:55:29 GMT
expires: Mon, 09 Feb 2026 14:55:29 GMT
set-cookie: PHPSESSID=bd97a3d97777e733a32c36c237d1d4da; path=/; secure; httponly; samesite=lax
x-content-type-options: nosniff
x-frame-options: SAMEORIGINcat /etc/hosts
127.0.0.1 localhost
::1 localhost ip6-localhost ip6-loopback
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
127.0.1.1 fhempiZitat von: Wernieman am 09 Februar 2026, 17:56:57Komisch .. wie häufig ich schon bei diversen Projekten von "Umsteigern" solche Werbung gehört habe ....
warum bist Du dann auch wieder da?
(Sorry musste mal raus ... da schöne ist ja, das es verschiedene Arten gibt ein Problem zu lösen. Jedem das seine)

defmod z2m_version_check HTTPMOD https://api.github.com/repos/Koenkk/zigbee2mqtt/releases/latest 86400
attr z2m_version_check userattr bridgeRegexp showDevices:all,updatable
attr z2m_version_check bridgeRegexp TYPE=MQTT2?_DEVICE:FILTER=NAME=.*zigbee.*bridge.*
attr z2m_version_check devStateIcon {\
my $lver = ReadingsVal($name,'latestVersion','');;\
my $spec = AttrVal($name,'bridgeRegexp','TYPE=MQTT2?_DEVICE:FILTER=NAME=.*zigbee.*bridge.*');;\
my $url = 'https://github.com/Koenkk/zigbee2mqtt/';;\
my $link = '<a title="z2m versions" href="'.$url.'tags" target="_blank">z2m version</a>';;\
my $fwb = 'font-weight:bold';;\
my $tal = 'text-align:left';;\
my $tar = 'text-align:right';;\
my $ret = '<div style="'.$tal.'">';;\
$ret .= '<p>last '.$link.' check: '.POSIX::strftime('%d.%m.%Y %H:%M',localtime(time_str2num(ReadingsTimestamp($name,'latestVersion','1970-01-01 00:00:00')))).'</p>';;\
my $update = AttrVal($name,'showDevices','updatable');;\
my $state = devspec2array($spec)?InternalVal($name,'STATE',''):'error => no valid devices found for devspec "'.$spec.'"';;\
if ($state =~ m/^error/x) {\
$ret .= '<p style="color:red;;'.$fwb.'">'.$state.'</p>'\
} else {\
$ret .= '<p style="color:limegreen;;'.$fwb.'">'.$state.'</p>';;\
if ($state =~ m/^\d/x || $update eq 'all') {\
my @devs = devspec2array($spec.($update eq 'all'?'':':FILTER=r:version!='.$lver));;\
if (@devs) {\
$url .= 'releases/tag/';;\
my $bs = '1px solid grey';;\
my $pa = 'padding:5px';;\
my $br = 'border-right:'.$bs.';;'.$pa;;\
$ret .= '<table style="'.$tal.';;border-collapse:collapse;;margin:10px 0 10px 0">';;\
$ret .= '<thead><tr style="border-bottom:'.$bs.'"><th style="'.$br.'">device</th><th style="'.$br.';;'.$tar.'">current</th><th style="'.$br.';;'.$tar.'">new</th><th style="'.$pa.';;'.$tar.'">released</th></tr></thead>';;\
$ret .= '<tbody>';;\
my $cdevs = 0;;\
for (@devs) {\
my $ver = ReadingsVal($_,'version','');;\
next if ($ver !~ m/^(\d+\.){2}\d+$/x);;\
$cdevs += 1;;\
$ret .= '<tr'.($cdevs==scalar(@devs)-1?' style="border-bottom:'.$bs.'"':'').'>';;\
$ret .= '<td style="'.$br.'"><a href="/fhem?detail='.$_.'">'.AttrVal($_,'alias',$_).'</a></td>';;\
$ret .= '<td style="'.$br.';;'.$tar.'"><a href="'.$url.$ver.'" target="_blank">'.$ver.'</a></td>';;\
$ret .= '<td style="'.$br.';;'.$tar.'"><a'.($ver ne $lver?' style="color:red!important;;'.$fwb.'"':'').' href="'.$url.$lver.'" target="_blank">'.$lver.'</a></td>';;\
$ret .= '<td style="'.$pa.';;'.$tar.'"><a ref="'.$url.$lver.'" target="_blank">'.ReadingsVal($name,'latestDate','').'</a></td>';;\
$ret .= '</tr>';;\
}\
$ret .= '</tbody></table>';;\
}\
}\
}\
$ret .= '<p">next '.$link.' check: '.POSIX::strftime('%d.%m.%Y %H:%M',localtime(InternalVal($name,'.TRIGGERTIME',0))).'</p>';;\
$ret .= '</div>';;\
return $ret;;\
}
attr z2m_version_check enableControlSet 1
attr z2m_version_check event-on-change-reading latestVersion
attr z2m_version_check event-on-update-reading latestDate
attr z2m_version_check handleRedirects 0
attr z2m_version_check icon mqtt_bridge_1
attr z2m_version_check reading01JSON tag_name
attr z2m_version_check reading01Name latestVersion
attr z2m_version_check reading01OExpr $val =~ m/^(\d+\.){2}\d+$/x;; $val
attr z2m_version_check reading02JSON published_at
attr z2m_version_check reading02Name latestDate
attr z2m_version_check reading02OExpr $val =~ m/^(\d{4})-(\d\d)-(\d\d)T.*$/x;; "$3.$2.$1"
attr z2m_version_check stateFormat {\
my $ret;;\
if (!ReadingsVal($name,'latestVersion','')) {\
$ret = 'error => no/wrong data from server!'\
} else {\
my @devs = devspec2array(AttrVal($name,'bridgeRegexp','TYPE=MQTT2?_DEVICE:FILTER=NAME=.*zigbee.*bridge.*'));;\
my $cupd = 0;;\
for (@devs) {\
my $ver = ReadingsVal($_,'version','');;\
$cupd += 1 if ($ver =~ /^((\d+\.){2}\d+)$/ && $ver ne ReadingsVal($name,'latestVersion',''))\
}\
$ret = $cupd==0?'no z2m update'.(scalar(@devs)>1?'s':'').' needed!':$cupd.' update'.($cupd>1?'s':'').' needed!';;\
}\
return $ret;;\
}
attr z2m_version_check webCmd reread