enhance device update check

This commit is contained in:
John
2024-10-05 09:07:07 +02:00
parent 6e552c3945
commit 8c5c6c4cef
7 changed files with 49 additions and 17 deletions
+1 -1
View File
@@ -428,7 +428,7 @@ def_global_updatecheck_device-payload = {
},
"state_topic":"%topic",
"name":"%name",
"value_template":"{%% set my_new = value_json|truncate(255)|regex_replace(find='^[^,]*|, device firmware |,.*| available',replace='') %%}{%% set my_cur = 'old' %%}{%% if my_new == '' %%}{%% set my_new = 'current' %%}{%% set my_cur = 'current' %%}{%% endif %%}{{ {'installed_version':my_cur,'latest_version':my_new,'entity_picture':'https://adapter.ebusd.eu/favicon.ico','release_url':'https://adapter.ebusd.eu/firmware/ChangeLog'} | tojson }}"
"value_template":"{%% set my_new = value_json|truncate(255)|regex_replace(find='^[^,]*|, device firmware |,.*| available',replace='') %%}{%% set my_ds = 'v31/firmware/' %%}{%% if my_new is search('up to date') %%}{%% set my_ds = my_new|regex_replace(find=' .*',replace='/') %%}{%% set my_new = 'current' %%}{%% set my_cur = 'current' %%}{%% else %%}{%% set my_cur = 'old' %%}{%% if my_new is search(' ') %%}{%% set my_ds = my_new|regex_replace(find=' .*',replace='/') %%}{%% set my_new = my_new|regex_replace(find='.* ',replace='') %%}{%% else %%}{%% if my_new == '' %%}{%% set my_new = 'current' %%}{%% set my_cur = 'current' %%}{%% endif %%}{%% endif %%}{%% endif %%}{{ {'installed_version':my_cur,'latest_version':my_new,'entity_picture':'https://adapter.ebusd.eu/'+my_ds+'favicon.ico','release_url':'https://adapter.ebusd.eu/'+my_ds+'ChangeLog'} | tojson }}"
}
# the topic and payload to listen to in order to republish all config messages.
+2 -4
View File
@@ -2,12 +2,11 @@
version=`head -n 1 ../../VERSION`
revision=`git describe --always`
echo "ebusd=${version},${revision}" > versions.txt
# cp versions.txt > oldversions.txt
devver=`curl -s https://adapter.ebusd.eu/v31/firmware/ChangeLog|grep "<h[0-9].*>Version "|head -n 1|sed -e 's#.*<code[^>]*>##' -e 's#<.*##' -e 's# ##'`
devbl=`curl -s https://adapter.ebusd.eu/v31/firmware/ChangeLog|grep "<h[0-9].*>Bootloader version"|head -n 1|sed -e 's#.*<code[^>]*>##' -e 's#<.*##' -e 's# ##'`
echo "device=${devver},${devbl}" >> versions.txt
devver=`curl -s https://adapter.ebusd.eu/v5/ChangeLog|grep "<h[0-9].*>Version "|head -n 1|sed -e 's#.*<code[^>]*>##' -e 's#<.*##' -e 's# ##'`
echo "device=${devver},${devver}" >> versions.txt
devver=`curl -s https://adapter.ebusd.eu/v5/ChangeLog|grep "<h[0-9].*>Version "|head -n 1|sed -e 's#.*id="\([^"]*\)".*<code[^>]*>\([^<]*\)<.*#\2,\2,\1#'`
echo "device=${devver}" >> versions.txt
cp versions.txt cdnversions.txt
files=`find config/de -type f -or -type l`
../../src/lib/ebus/test/test_filereader $files|sed -e 's#^config/de/##' -e 's#^\([^ ]*\) #\1=#' -e 's# #,#g'|sort >> versions.txt
@@ -17,7 +16,6 @@ for filever in $(../../src/lib/ebus/test/test_filereader $files|sed -e 's#^confi
ver=${filever#*=}
sed -i -e "s#^$file=\(.*\)\$#$file=\1,$ver#" versions.txt
done
#./oldtest_filereader $files|sed -e 's#^config/##' -e 's#^\([^ ]*\) #\1=#' -e 's# #,#g'|sort >> oldversions.txt
curl -sS https://ebus.github.io/en/versions.json -o veren.json
curl -sS https://ebus.github.io/de/versions.json -o verde.json
node -e 'fs=require("fs");e=JSON.parse(fs.readFileSync("veren.json","utf-8"));d=JSON.parse(fs.readFileSync("verde.json","utf-8"));console.log(Object.entries(d).map(([k,de])=>{en=e[k];return `${k}=${de.hash},${de.size},${de.mtime},${en.hash},${en.size},${en.mtime}`;}).join("\n"))'|sort >> cdnversions.txt
+2 -2
View File
@@ -5,7 +5,7 @@ if (substr($agent, 0, 5)==='ebusd') {
$r = @file_get_contents('php://input');
header('Content-Type: text/plain');
$r = @json_decode($r, true);
echo checkUpdate(@$r['v'], @$r['r'], @$r['a'], @$r['dv'], @$r['l'], @$r['lc'], @$r['cp']);
echo checkUpdate(@$r['v'], @$r['r'], @$r['a'], @$r['dv'], @$r['di'], @$r['l'], @$r['lc'], @$r['cp']);
exit;
}
readVersions();
@@ -23,7 +23,7 @@ $ref = @file_get_contents('ebusd-configuration/.git/refs/heads/master');
}
?>
<p>latest ebusd version: <?=$versions['ebusd'][0]?></p>
<p>latest device firmware: v5=<?=$versions['devicesame'][0]?>, v3*=<?=$versions['device'][0]?></p>
<p>latest device firmware: v5*=<?=$versions['devicesame'][0]?>, v3*=<?=$versions['device'][0]?></p>
<p>config files:<table><thead><th>File</th><th>German</th><th>English</th></thead><tbody>
<?php
$func = function($v, $k) {
+8 -3
View File
@@ -14,7 +14,7 @@ function readVersions($prefix='') {
if (count($val)>1) {
$key = $val[0];
$val = explode(',', $val[1]);
if ($key==='device' && count($val)===2 && $val[0]===$val[1]) {
if ($key==='device' && count($val)>=2 && $val[0]===$val[1]) {
$key = 'devicesame';
}
$versions[$key] = $val;
@@ -23,7 +23,7 @@ function readVersions($prefix='') {
array_walk($v, $func);
return true;
}
function checkUpdate($ebusdVersion, $ebusdRelease, $architecture, $deviceVersion, $loadedFiles, $language, $cdnPath) {
function checkUpdate($ebusdVersion, $ebusdRelease, $architecture, $deviceVersion, $deviceId, $loadedFiles, $language, $cdnPath) {
if (!$ebusdVersion) {
return 'invalid request';
}
@@ -43,7 +43,12 @@ function checkUpdate($ebusdVersion, $ebusdRelease, $architecture, $deviceVersion
$ver = strtok('.');
if ($ver) {
$key = ($ver===strtok('.')) ? 'devicesame' : 'device';
if ($ver!==$versions[$key][0]) {
$devTypes = array('00'=>'v5', '01'=>'v5-c6', '00n'=>'v5', '01n'=>'');
$devType = $key==='devicesame' && strlen($deviceId)===9*2 && substr($deviceId,-2)==='00' ? $devTypes[substr($deviceId,-4,2).(substr($deviceId,-6,2)==='00'?'n':'')] : '';
if ($devType) {
$devVer = $versions[$key][0];
$ret .= ', device firmware '.$devType.' '.$devVer.($ver===$devVer ? ' up to date' : ' available');
} else if ($ver!==$versions[$key][0]) {
$ret .= ', device firmware '.$versions[$key][0].' available';
}
}