shelly_firmware: Initial version of role

This commit is contained in:
Timo Makinen 2024-02-13 20:02:01 +00:00
parent 31d00d0b9d
commit bf10bc5c6c
3 changed files with 55 additions and 0 deletions

View file

@ -16,3 +16,4 @@
- nginx - nginx
- role: nginx_site - role: nginx_site
nginx_site_name: iot.foo.sh nginx_site_name: iot.foo.sh
- shelly_firmware

View file

@ -0,0 +1,26 @@
#!/bin/sh
set -eu
umask 022
cd /srv/web/iot.foo.sh/shelly
PATH="/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin"
URL="http://archive.shelly-tools.de/"
for _prod in $(curl -sSf "${URL}/archive.php" | jq -r '.[].type') ; do
_ver="$(curl -sSf "${URL}/archive.php?type=${_prod}" | jq -r \
'max_by(.version[1:] | split(".") | map(try tonumber catch 0)) .version')"
_name="$(curl -sSf "${URL}/archive.php?type=${_prod}" | jq -r \
'limit(1; .[].file)')"
if [ ! -f "${_prod}.${_ver}.zip" ]; then
echo "New firmware for ${_prod} (version ${_ver})"
curl -sSf -o "${_prod}.${_ver}.zip" "${URL}/version/${_ver}/${_name}"
if [ -h "$_name" ]; then
rm -f "$_name"
fi
ln -s "${_prod}.${_ver}.zip" "$_name"
fi
done

View file

@ -0,0 +1,28 @@
---
- name: Install dependencies
ansible.builtin.package:
name: jq
state: installed
- name: Create download directory
ansible.builtin.file:
path: /srv/web/iot.foo.sh/shelly
state: directory
mode: 0755
owner: root
group: "{{ ansible_wheel }}"
- name: Install download script
ansible.builtin.copy:
dest: /usr/local/bin/download-shelly-firmware
src: download-shelly-firmware.sh
mode: 0755
owner: root
group: "{{ ansible_wheel }}"
- name: Install cron job
ansible.builtin.cron:
name: download-shelly-firmware
job: /usr/local/bin/download-shelly-firmware
hour: "05"
minute: 20