Адаптировал автоматизацию от VadimPechorin под custom-устройства, например, полученные через BLE 2 HOMEd. Использовал ChatGPT, также пинок в нужном направлении дал AVAKS.
{
"actions": [
{
"command": "#Тут можно настроить уровень срабатывания\n\n\n#Минимальный уровень заряда батареи в процентах при котором будет происходить оповещение\n#Выставить желаемый уровень срабатывания необходимо в переменной alert_level\nalert_level=130\n\n\n#Выполнение запроса\njq -r --slurpfile db /opt/homed-custom/database.json '\n ($db[0].devices | map(select(.id != null) | {key: .id, value: .name}) | from_entries) as $names\n | to_entries[]\n | select(.key != null and (.value | type) == \"object\") # Игнорируем null-ключи и пустые объекты\n | select(.value.battery?) # Берём только те, у кого есть battery\n | .key as $addr\n | .value.battery as $battery\n | [$addr, $battery]\n | .[0] = ($names[.[0]] // .[0])\n | @tsv\n' /opt/homed-custom/properties.json | sed 's/[][_*`]/\\&/g' | awk -F'\\t' -v level=$alert_level '$2 < level {print \"🪫 \"$0\"%\"}'",
"type": "shell"
},
{
"conditions": [
{
"equals": "_NULL_",
"pattern": "{{shellOutput}}",
"type": "pattern"
}
],
"else": [
{
"message": "{{shellOutput}}",
"type": "telegram"
}
],
"then": [
{
"message": "Выводить нечего",
"triggerName": "telegram",
"type": "telegram"
}
],
"type": "condition"
}
],
"note": "Автоматизация для оповещения в Telegram о низком заряде батареи всех батарейных custom-устройств.\n\nВ разделе \"Actions - shell\" находится переменная alert_level с помощью которой можно настроить минимальный уровень заряда батареи в процентах. \nЕсли у устройств текущее значение будет ниже установленного в этой автоматизации, произойдёт оповещение.\n\nВыполняется по настроенному интервалу времени или при отправке telegram-боту ключевого слова \"батарейки\".",
"restart": false,
"triggers": [
{
"message": "батарейки",
"name": "telegram",
"type": "telegram"
},
{
"interval": 720,
"type": "interval"
}
],
"conditions": []
}
Upd: поправил код по рекомендации