Цей проєкт інтегрує брокер MQTT від Ecoflow з API СвітлоБота для моніторингу та звітування про наявність або відсутність вхідної змінної напруги на пристрої Ecoflow.
- Підключення до брокера MQTT від Ecoflow;
- Підписка на теми MQTT для моніторингу параметрів вхідної змінної напруги;
- Журналювання та звітування про зміни статусу вхідної змінної напруги через API СвітлоБота.
- Пристрій Ecoflow: протестовано з Ecoflow DELTA Pro. Має працювати з іншими пристроями Ecoflow, які підтримують MQTT. (Будь ласка, зверніться до EcoFlow to Prometheus exporter).
- Встановлений Node.js або Docker.
- Пристрій Ecoflow (серійний номер) та ключ доступа з секретним ключом або облікові дані розробника з EcoFlow Developer Platform.
- Зареєстрований канал SvitloBot та ключ каналу.
docker pull petrovoronov/ecoflow-mqtt-to-svitlobot
-
Клонуйте репозиторій:
git clone https://github.com/PetroVoronov/ecoflow-mqtt-to-svitlobot.git cd ecoflow-mqtt-to-svitlobot
-
Встановіть залежності:
npm install
Базові параметри конфігурації, включно з обліковими даними Ecoflow і СвітлоБота, можуть передаватися як змінні середовища:
export ECOFLOW_USERNAME=your_ecoflow_username
export ECOFLOW_PASSWORD=your_ecoflow_password
export ECOFLOW_DEVICE_SN=your_ecoflow_device_sn
export SVITLOBOT_CHANNEL_KEY=your_svitlobot_channel_key
або
export ECOFLOW_ACCESS_KEY=your_ecoflow_access_key
export ECOFLOW_SECRET_KEY=your_ecoflow_secret_key
export ECOFLOW_DEVICE_SN=your_ecoflow_device_sn
export SVITLOBOT_CHANNEL_KEY=your_svitlobot_channel_key
або ви можете пропустити цей крок, і програма попросить вас ввести їх інтерактивно.
Після першого запуску ці параметри будуть збережені в каталозі config
і будуть використовуватися для наступних запусків.
Таким чином, вас попросять ввести параметри лише один раз (або ви повинні передати їх як змінні середовища лише під час першого запуску).
Важливе зауваження: якщо ви хочете змінити параметри, вам потрібно знову передати їх як змінні середовища в будь-який час.
Програму можна налаштувати за допомогою таких параметрів командного рядка:
Опція | Скорочення | Опис | Тип | За замовчуванням | Обов'язково |
---|---|---|---|---|---|
--api-url |
-a |
URL API Ecoflow | Рядок | https://api.ecoflow.com |
Ні |
--svitlobot-update-interval |
-i |
Оновлювати статус SvitloBot кожні X секунд | Число | 60 |
Ні |
--keep-alive |
-k |
Перевіряти, чи клієнт MQTT живий кожні Y інтервали оновлення | Число | 3 |
Ні |
--log-ping |
Логувати статус "ping" API SvitloBot | Булевий | false |
Ні | |
--log-alive-status-interval |
-l |
Логувати статус живого клієнта MQTT кожні Z хвилин | Число | 0 |
Ні |
--errors-count-max |
-e |
Максимальна кількість помилок для ping SvitloBot | Число | 5 |
Ні |
--auth-via-access-key |
Використовувати ключ доступу для аутентифікації API Ecoflow | Булевий | false |
Ні | |
--auth-via-username-password |
Використовувати ім'я користувача та пароль для аутентифікації API Ecoflow | Булевий | false |
Ні | |
--test-only |
-t |
Запускати без надсилання повідомлень до API SvitloBot | Булевий | false |
Ні |
--debug |
-d |
Рівень налагодження логування | Булевий | false |
Ні |
Приклад з усіма можливими параметрами командного рядка:
node src/index.js -i 60 -k 3 -l 60 -d true
За замовчуванням програма запускається без додаткових параметрів командного рядка.
Через обмеження Docker-середовища програма не зможе інтерактивно запитувати відсутні параметри конфігурації. Саме тому необхідно виконати перший запуск у інтерактивному режимі, щоб надати відсутні параметри.
Необхідно змонтувати каталог даних програми в контейнер:
/app/config
- для даних програми, включаючи конфігурації. Обов'язково для монтування! Ви можете змонтувати будь-який локальний каталог на хост-системі або об'єм Docker.
Отже, перше запускання має виглядати як одне з наведеного нижче:
-
для роботи і встановлення всіх основних параметрів конфігурації в інтерактивному режимі, однак за додатковими параметрами командного рядка:
docker run -it --name ecoflow-mqtt-to-svitlobot \ -v /path/to/your/config:/app/config \ petrovoronov/ecoflow-mqtt-to-svitlobot:latest\ --svitlobot-update-interval 60 --keep-alive 3 --log-alive-status-interval 60
-
для роботи і встановлення основних параметрів конфігурації через змінні середовища для аутентифікації за ім'ям користувача та паролем:
docker run -d --name ecoflow-mqtt-to-svitlobot \ -v /path/to/your/config:/app/config \ -e ECOFLOW_USERNAME=your_ecoflow_username \ -e ECOFLOW_PASSWORD=your_ecoflow_password \ -e ECOFLOW_DEVICE_SN=your_ecoflow_device_sn \ -e SVITLOBOT_CHANNEL_KEY=your_svitlobot_channel_key \ petrovoronov/ecoflow-mqtt-to-svitlobot:latest
-
для роботи і встановлення основних параметрів конфігурації через змінні середовища для аутентифікації за ключем доступу:
docker run -d --name ecoflow-mqtt-to-svitlobot \ -v /path/to/your/config:/app/config \ -e ECOFLOW_ACCESS_KEY=your_ecoflow_access_key \ -e ECOFLOW_SECRET_KEY=your_ecoflow_secret_key \ -e ECOFLOW_DEVICE_SN=your_ecoflow_device_sn \ -e SVITLOBOT_CHANNEL_KEY=your_svitlobot_channel_key \ petrovoronov/ecoflow-mqtt-to-svitlobot:latest
Важлива примітка: вкажіть усі потрібні пізніше параметри командного рядка під час першого запуску!
Після першого запуску застосунок збереже параметри конфігурації та додаткову інформацію - будь ласка, зупиніть контейнер, натиснувши Ctrl+C
, і запустіть його знову за допомогою команд із наступного розділу.
Після першого запуску ви можете запускати застосунок із тими самими параметрами конфігурації, що й під час попереднього запуску, без додаткових параметрів командного рядка.
Щоб запустити застосунок, виконайте наступну команду:
docker start ecoflow-mqtt-to-svitlobot
Щоб зупинити застосунок, виконайте наступну команду:
docker stop ecoflow-mqtt-to-svitlobot
Щоб запустити застосунок за допомогою Docker Compose, створіть файл docker-compose.yml
з наступним вмістом:
-
для аутентифікації за ім'ям користувача та паролем:
version: '3' services: ecoflow-mqtt-to-svitlobot: image: petrovoronov/ecoflow-mqtt-to-svitlobot:latest volumes: - /path/to/your/config:/app/config environment: - ECOFLOW_USERNAME=your_ecoflow_username - ECOFLOW_PASSWORD=your_ecoflow_password - ECOFLOW_DEVICE_SN=your_ecoflow_device_sn - SVITLOBOT_CHANNEL_KEY=your_svitlobot_channel_key command: --svitlobot-update-interval 60 --keep-alive 3 --log-alive-status-interval 60
-
для аутентифікації за ключем доступу:
version: '3' services: ecoflow-mqtt-to-svitlobot: image: petrovoronov/ecoflow-mqtt-to-svitlobot:latest volumes: - /path/to/your/config:/app/config environment: - ECOFLOW_ACCESS_KEY=your_ecoflow_access_key - ECOFLOW_SECRET_KEY=your_ecoflow_secret_key - ECOFLOW_DEVICE_SN=your_ecoflow_device_sn - SVITLOBOT_CHANNEL_KEY=your_svitlobot_channel_key command: --svitlobot-update-interval 60 --keep-alive 3 --log-alive-status-interval 60
Замініть /path/to/your/config
на фактичний шлях на вашій системі, де ви хочете зберігати дані застосунку.
Потім виконайте наступну команду для запуску застосунку:
docker-compose up -d
Це запустить застосунок зі вказаними параметрами конфігурації.
Цей проект ліцензовано за ліцензією MIT – див. файл LICENSE для деталей.