Remplacement de l’OrangePi Zero du transpondeur qui est tombé en panne le 23 Octobre 2023 (avec émission permanente sur 50 & 430MHz, à cause de l’état des GPIO !?) + ajout de 2 scripts bash sur le système SVXLink + downgrade vers Spotnik v3.2


Etat du système (commande DTMF 15#) :
Renvoi l’uptime, la température CPU, l’espace disque et la mémoire disponible.
#!/bin/bash
#
# Status OrangePi Zero pour Svxlink
#
# F4GFZ Juillet 2023
# variables
temp=$( cat /sys/devices/virtual/thermal/thermal_zone0/temp 2> '/dev/null' )
weeks=$( uptime -p |grep -Po '\w+(?=\s+week.+)' )
days=$( uptime -p |grep -Po '\w+(?=\s+day)' )
hours=$( uptime -p |grep -Po '\w+(?=\s+hour)' )
minutes=$( uptime -p |grep -Po '\w+(?=\s+minute)' )
diskusage=$( df |grep mmcb |awk '{print $5+0}' )
freemem=$( free -m |grep Mem|awk '{print int(($4*100)/$2)}' )
# sorties svxlink
echo 'playMsg "Status" "status";'
## uptime
echo 'playMsg "Status" "uptime";'
if [ ! -z $days ]; then
if [ ! -z $weeks ]; then echo 'playNumber '$(($days + ($weeks * 7)))';'; else echo 'playNumber '$(($days))';'; fi
echo 'playMsg "Status" "jours";'
echo 'playMsg "Status" "and";'
fi
if [ ! -z $hours ]; then echo 'playNumber '$(($hours))';'; echo 'playMsg "Status" "hours";'; else echo 'playNumber '$(($minutes))';'; echo 'playMsg "Status" "minutes";'; fi
## temperature
echo 'playMsg "Status" "temperature";'
echo 'playNumber '$(($temp/1000))';'
echo 'playMsg "Status" "unit_degrees";'
## disk space
echo 'playMsg "Status" "freespace";'
echo 'playNumber '$((100-$diskusage))';'
echo 'playMsg "Status" "percent";'
## memory space
echo 'playMsg "Status" "freememory";'
echo 'playNumber '$(($freemem))';'
echo 'playMsg "Status" "percent";'
Vigilance Météo (commande DTMF 12# / message envoyé sur l’AIR toutes les heures, quand au moins une vigilance est déclarée) :
Annonce les alertes vigilance météo générées par Meteo France
#!/bin/bash
#
# Vigilance Meteo pour Svxlink
#
# F4GFZ Aout 2023
dept='38'
active=0
output=''
# Meteo France API KEY (valide pour 3ans)
apikey='*********'
url='https://public-api.meteofrance.fr/public/DPVigilance/v1/cartevigilance/encours'
html=$(curl -X GET ${url} -H "accept: */*" -H "apikey: ${apikey}" 2> '/dev/null')
declare -a vigi_name=(null vent pluie orage crues neige canicule grand_froid avalanches vague_submersion)
declare -a vigi_level_name=(null Vert Jaune Orange Rouge)
for (( i=1; i<10; i++ ));
do
vigi_level=`echo ${html} | jq '.product | .periods[0].timelaps.domain_ids[] | select(.domain_id == "'$dept'") | .phenomenon_items[] | select(.phenomenon_id == "'${i}'") | .phenomenon_max_color_id'`
if [[ $vigi_level -gt 1 ]];then
output+=`printf "playMsg \"VigiMeteo\" \"%s\";\n" ${vigi_level_name[$vigi_level]}`
output+=`printf "playMsg \"VigiMeteo\" \"%s\";\n" ${vigi_name[$i]}`
((active++))
fi
done
if [[ $active != 0 ]]; then
printf "playMsg \"VigiMeteo\" \"introvigi\";\n"
echo ${output}
fi