HASFOB — это сервис, который получает данные из Home Assistant и публикует их в виде простой HTML-страницы и JSON API.
Проект предназначен для просмотра информации в старых браузерах, которые не поддерживают современный веб-интерфейс Home Assistant.
Сервис периодически опрашивает Home Assistant, сохраняет только указанные в конфигурации датчики и переключатели и предоставляет:
- простую веб-страницу;
- JSON API;
- обновление данных без перезагрузки страницы (Server-Sent Events);
- возможность переключения настроенных выключателей.
Перед запуском необходимо отредактировать файл configuration.xml и указать основные параметры.
| Параметр | Описание |
|---|---|
| homeAssistantServer | Адрес сервера Home Assistant (например http://192.168.1.10) |
| homeAssistantPort | Порт Home Assistant (обычно 8123) |
| homeAssistantTokenFile | Путь к файлу с Long-Lived Access Token |
| servicePort | Порт, на котором будет работать HASFOB |
Необходимо указать хотя бы один датчик.
Пример:
<sensors>
<sensor>
<entityId>sensor.outdoor_temperature</entityId>
<friendlyName>Температура на улице</friendlyName>
<decimalPlaces>1</decimalPlaces>
</sensor>
<sensor>
<entityId>sensor.humidity</entityId>
</sensor>
</sensors>Параметры датчика:
| Параметр | Описание |
|---|---|
| entityId | Entity ID датчика в Home Assistant |
| friendlyName | Отображаемое имя |
| decimalPlaces | Количество знаков после запятой |
Тип датчика - шкала:
Дополнительно в блок sensor можно добавить указание типа датчика:
<type>Scale</type>
<min>0</min>
<max>100</max>Данный тип означает, что веб страница будет интерпритировать показания от датчика в виде шкалы, разделённой на три равных сегмента: красный, жёлты и зелёный. Минимальное и максимальное значение для шкалы так же можно задать вышеописанным способом. Минимальное значение по умолчанию - 0. Максимальное значение по умолчанию - 100. Указание типа не является обязательным.
Если необходимо управлять выключателями через веб-интерфейс, добавьте их в раздел:
<switches>
<switch>
<entityId>switch.light_room</entityId>
<friendlyName>Освещение</friendlyName>
</switch>
</switches><updateIntervalSeconds>30</updateIntervalSeconds>Минимально допустимое значение — 10 секунд.
<logRetentionDays>30</logRetentionDays>Количество дней хранения файлов лога.
<showAreaNames>Y</showAreaNames>
<showDeviceNames>Y</showDeviceNames>Возможные значения:
- Y — отображать;
- N — скрыть.
Файл, указанный в homeAssistantTokenFile, должен содержать только Long-Lived Access Token Home Assistant без дополнительных символов и комментариев.
После запуска сервис начинает периодически получать данные из Home Assistant и открывает HTTP-сервер.
Сервис предоставляет следующие HTTP-запросы:
| Метод | Адрес | Назначение |
|---|---|---|
| GET | / | HTML-страница |
| GET | /api/all | Все данные |
| GET | /api/sensors | Только датчики |
| GET | /api/switches | Только выключатели |
| POST | /api/switch/toggle | Переключение выключателя |
| GET | /api/events | Server-Sent Events для обновления данных |
В папке сервиса находится файл WebPage.html. Именно этот файл отвечает за внешний вид веб страницы. При необходимости, его содержимое можно изменить. Обязательно сделайте резервную копию этого файла перед внесением изменений!
В Windows приложение может работать как обычная программа или быть установлено в качестве службы Windows.
Для установки службы запустите командную строку от имени администратора и выполните:
HasfobService.exe --install
или
HasfobService.exe -i
После установки служба будет создана с именем HASFOB и настроена на автоматический запуск при загрузке системы.
Для удаления службы выполните:
HasfobService.exe --uninstall
или
HasfobService.exe -u
Для запуска приложения без установки, достаточно запустить файл HasfobService.exe без параметров.
Перейдите в каталог сервиса и выполните эти две команды:
chmod +x HasfobService ./HasfobService
Для вызова справки, запустите приложение с параметром -h
Программные требования:
Среда выполнения: .NET 8 Runtime (или .NET 8 SDK для сборки)
ОС: Windows 10 / Windows Server 2016+ или Linux (Debian, Ubuntu и др. с systemd)
Внешняя интеграция: Home Assistant (REST API, Long-Lived Access Token)
Аппаратные требования (Hardware):
Процессор: 1 ГГц или быстрее (x64 / ARM64)
Оперативная память (RAM): 1 ГБ (Linux) / 2 ГБ (Windows)
Дисковое пространство: ~150 МБ (под .NET Runtime и приложение)