Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/petrovoronov/ecoflow-mqtt-to-svitlobot
A tool to reflect the AC-input status of EcoFlow device to the appropriate SvitloBot address/channel.
https://github.com/petrovoronov/ecoflow-mqtt-to-svitlobot
ecoflow node nodejs svitlobot
Last synced: 2 months ago
JSON representation
A tool to reflect the AC-input status of EcoFlow device to the appropriate SvitloBot address/channel.
- Host: GitHub
- URL: https://github.com/petrovoronov/ecoflow-mqtt-to-svitlobot
- Owner: PetroVoronov
- License: mit
- Created: 2024-09-10T11:26:29.000Z (4 months ago)
- Default Branch: main
- Last Pushed: 2024-10-16T13:55:29.000Z (3 months ago)
- Last Synced: 2024-10-18T14:28:07.465Z (3 months ago)
- Topics: ecoflow, node, nodejs, svitlobot
- Language: JavaScript
- Homepage:
- Size: 598 KB
- Stars: 2
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README-uk.md
- Changelog: CHANGELOG.md
- License: LICENSE
Awesome Lists containing this project
README
# Ecoflow MQTT to SvitloBot
[![GitHub release](https://img.shields.io/github/v/release/PetroVoronov/ecoflow-mqtt-to-svitlobot)](https://github.com/PetroVoronov/ecoflow-mqtt-to-svitlobot/releases)
[![Docker Image Version](https://img.shields.io/docker/v/petrovoronov/ecoflow-mqtt-to-svitlobot)](https://hub.docker.com/r/petrovoronov/ecoflow-mqtt-to-svitlobot)
[![Docker Pulls](https://img.shields.io/docker/pulls/petrovoronov/ecoflow-mqtt-to-svitlobot)](https://hub.docker.com/r/petrovoronov/ecoflow-mqtt-to-svitlobot)
[![GitHub license](https://img.shields.io/github/license/PetroVoronov/ecoflow-mqtt-to-svitlobot)](LICENSE)
[![GitHub last commit](https://img.shields.io/github/last-commit/PetroVoronov/ecoflow-mqtt-to-svitlobot)](https://github.com/PetroVoronov/ecoflow-mqtt-to-svitlobot/commits/main)
[![GitHub issues](https://img.shields.io/github/issues/PetroVoronov/ecoflow-mqtt-to-svitlobot)](https://github.com/PetroVoronov/ecoflow-mqtt-to-svitlobot/issues)
[![GitHub pull requests](https://img.shields.io/github/issues-pr/PetroVoronov/ecoflow-mqtt-to-svitlobot)](https://github.com/PetroVoronov/ecoflow-mqtt-to-svitlobot/pulls)## Про проект
Цей проєкт інтегрує брокер MQTT від Ecoflow з API СвітлоБота для моніторингу та звітування про наявність або відсутність вхідної змінної напруги на пристрої Ecoflow.
## Функції
- Підключення до брокера MQTT від Ecoflow;
- Підписка на теми MQTT для моніторингу параметрів вхідної змінної напруги;
- Журналювання та звітування про зміни статусу вхідної змінної напруги через API СвітлоБота.## Вимоги
- Пристрій Ecoflow: протестовано з Ecoflow DELTA Pro. Має працювати з іншими пристроями Ecoflow, які підтримують MQTT. (Будь ласка, зверніться до [EcoFlow to Prometheus exporter](https://github.com/berezhinskiy/ecoflow_exporter)).
- Встановлений Node.js або Docker.
- Пристрій Ecoflow (серійний номер) та ключ доступа з секретним ключом або облікові дані розробника з [EcoFlow Developer Platform](https://developer.ecoflow.com/).
- Зареєстрований канал [SvitloBot](https://svitlobot.in.ua/) та ключ каналу.## Встановлення
### Встановлення Docker образу
```sh
docker pull petrovoronov/ecoflow-mqtt-to-svitlobot
```### Встановлення Node.js з вихідного коду
1. Клонуйте репозиторій:
```sh
git clone https://github.com/PetroVoronov/ecoflow-mqtt-to-svitlobot.git
cd ecoflow-mqtt-to-svitlobot
```2. Встановіть залежності:
```sh
npm install
```## Передача базових параметрів конфігурації
Базові параметри конфігурації, включно з обліковими даними Ecoflow і СвітлоБота, можуть передаватися як змінні середовища:```sh
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
```або
```sh
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.js
Приклад з усіма можливими параметрами командного рядка:
```sh
node src/index.js -i 60 -k 3 -l 60 -d true
```### Docker
За замовчуванням програма запускається без додаткових параметрів командного рядка.
Через обмеження Docker-середовища програма не зможе інтерактивно запитувати відсутні параметри конфігурації. Саме тому необхідно виконати перший запуск у інтерактивному режимі, щоб надати відсутні параметри.
#### Об'єми Docker
**Необхідно змонтувати каталог даних програми в контейнер:**
- `/app/config` - для даних програми, включаючи конфігурації. Обов'язково для монтування!
Ви можете змонтувати будь-який локальний каталог на хост-системі або об'єм Docker.#### Перше запускання Docker
Отже, перше запускання має виглядати як одне з наведеного нижче:
- для роботи і встановлення всіх основних параметрів конфігурації в інтерактивному режимі, однак за додатковими параметрами командного рядка:
```sh
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
```- для роботи і встановлення основних параметрів конфігурації через змінні середовища для аутентифікації за ім'ям користувача та паролем:
```sh
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
```- для роботи і встановлення основних параметрів конфігурації через змінні середовища для аутентифікації за ключем доступу:
```sh
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
Після першого запуску ви можете запускати застосунок із тими самими параметрами конфігурації, що й під час попереднього запуску, без додаткових параметрів командного рядка.
Щоб запустити застосунок, виконайте наступну команду:
```sh
docker start ecoflow-mqtt-to-svitlobot
```Щоб зупинити застосунок, виконайте наступну команду:
```sh
docker stop ecoflow-mqtt-to-svitlobot
```### Docker Compose
Щоб запустити застосунок за допомогою Docker Compose, створіть файл `docker-compose.yml` з наступним вмістом:
- для аутентифікації за ім'ям користувача та паролем:
```yaml
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
```- для аутентифікації за ключем доступу:
```yaml
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` на фактичний шлях на вашій системі, де ви хочете зберігати дані застосунку.
Потім виконайте наступну команду для запуску застосунку:
```sh
docker-compose up -d
```Це запустить застосунок зі вказаними параметрами конфігурації.
## Ліцензія
Цей проект ліцензовано за ліцензією MIT – див. файл [LICENSE](LICENSE) для деталей.