Структура env.json и env_example.json
env_example.json
Какое функциональное назначание у env_example.json?
Данный файл - это контракт между разработчиком Unit и Pepeunit:
- Разработчик гарантирует, что он реализует в функционале Unit все или часть зарезервированных переменных Pepeunit, позволяющих взаимодействовать с Pepeunit
- Pepeunit гарантирует возможность Пользователей установить переменные указанные разработчиком
- Pepeunit гарантирует, что автоматически установит зарезервированные переменные указанные в файле при первом сохранении со стороны Пользователя.
Структура
{
"WIFI_SSID": "My_Perfect_Wifi_SSID",
"WIFI_PASS": "Strong_Password",
"PUBLISH_SEND_INTERVAL": 10,
"DUTY_MIN": 8192,
"DUTY_MAX": 65535,
"TEMP_MIN": 30,
"TEMP_MAX": 60,
"PEPEUNIT_URL": "unit.example.com",
"PEPEUNIT_APP_PREFIX": "/pepeunit",
"PEPEUNIT_API_ACTUAL_PREFIX": "/api/v1",
"HTTP_TYPE": "https",
"MQTT_URL": "emqx.example.com",
"MQTT_PORT": 1883,
"PEPEUNIT_TOKEN": "jwt_token",
"SYNC_ENCRYPT_KEY": "32_bit_encrypt_key",
"SECRET_KEY": "32_bit_secret_key",
"PING_INTERVAL": 30,
"STATE_SEND_INTERVAL": 300,
"MIN_LOG_LEVEL": "Debug",
"MAX_LOG_LENGTH": 64
}Переменные можно разделить на две категории - зарезервированные и переменные разработчика
Зарезервированные переменные Pepeunit
Pepeunit резервирует под нужды связи и стандартные процедуры следующий набор переменных окружения Unit:
| Переменная | Значение | Зачем нужна? |
|---|---|---|
PEPEUNIT_URL | BACKEND_DOMAIN из Backend ENV | Доменное имя или ip адрес инстанса Pepeunit |
PEPEUNIT_APP_PREFIX | BACKEND_APP_PREFIX из Backend ENV | Префикс Backend |
PEPEUNIT_API_ACTUAL_PREFIX | BACKEND_API_V1_PREFIX из Backend ENV | Префикс актауальной версии API для Backend. Полностью соответствует последней версии API |
HTTP_TYPE | BACKEND_SECURE из Backend ENV | Тип соединения https/http с доменным именем или ip адресом Backend в формате https/http |
MQTT_URL | MQTT_HOST из Backend ENV | Доменное имя или ip - адрес инстанса EMQX MQTT Broker |
MQTT_PORT | MQTT_PORT из Backend ENV | Порт для взаимодействия с EMQX MQTT Broker, по умолчанию 1883 |
PEPEUNIT_TOKEN | - | Вечный jwt токен доступа Unit к инстансу Pepeunit. Данный токен позволяет пройти авторизацию на подписку и публикацию у топиков EMQX MQTT Broker |
SYNC_ENCRYPT_KEY | - | 32 байтовый ключ в формате base64. Уникальный для каждого Unit. Удобно использовать при шифровании чего-либо |
SECRET_KEY | - | 32 байтовый ключ в формате base64. Уникальный для каждого Unit. Удобно использовать для подписи или генерации jwt |
PING_INTERVAL | - | Частота MQTT пинга в секундах, 30 секунд для всех |
STATE_SEND_INTERVAL | BACKEND_STATE_SEND_INTERVAL из Backend ENV | Частота отправки состояния в стандартный топик состояния |
MIN_LOG_LEVEL | Debug | Минимальный уровень лога, который будет отправляться по MQTT и сохраняться в файл log.json. Если установить например Warning, то Debug и Info отправляться не будут |
MAX_LOG_LENGTH | 64 | Максимальное число строк в файле log.json, удаляются строки из начала файла, сохрняются в конец. |
COMMIT_VERSION | - | Hash коммита. Отображает текущую таргет версию Unit. Имеет уникальный функционал, её нельзя изменить вручную в меню изменения env.json, она будет игнорироваться при сохранении |
Переменные окружения от разработчика Unit
Разработчик Unit может создавать любые переменные окружения, которые отличаются по названию от стандартных. При этом значения указанные в переменных, будут отображаться как значения по умолчанию в интерфейсе Пользователей.
DANGER
Так как Пользователь в итоге будет заполнять переменные в ручную, очень желательно заполнить Readme репозитория, который вы создаёте.
DANGER
Заполнение env.json пользовтелем происходит на основе: Механизм генерации ENV
env.json
Файлы окружения, такие как env.json или Backend ENV, представляют собой механизм индивидуализации общего кода под конкретное устройство или экземпляр приложения.
Какое функциональное назначание у env.json?
Данный файл - это четырёхсторонний контракт между Unit, Pepeunit, Пользователем и Администратором инстанса Pepeunit:
- Unit гарантирует всем сторонам, что будет использовать для соответствующих значений из env_example.json значения из env.json
- Pepeunit гарантирует всем сторонам, что при первой установке переменных окружения в env.json, сгенерирует зарезервированные переменные
- Pepeunit гарантирует всем сторонам, что Unit сможет пройти авторизацию для топиков и соединений в EMQX MQTT Broker, авторизацию Backend с использованием
PEPEUNIT_TOKEN - Pepeunit гарантирует всем сторонам, возможность изменения env.json
- Pepeunit гарантирует всем сторонам, что env.json будет храниться в шифрованном виде
- Pepeunit гарантирует всем сторонам, что доступ до env.json будет предоставлен только создателю Unit
- Aдминистратор гарантирует всем сторонам, что env.json ни в каком виде не будет передан тем кто не явялется стороной данного контракта.
DANGER
Используйте только доверенные инстансы Pepeunit. Следите, чтобы Администратор инстанса Pepeunit выполнял свои контрактные обязательства, связанные с env.json.
Какие основные свойства можно выделить у env.json?
- env.json файл секретен, его нельзя передавать кому-либо
- env.json файл позволяет удобно конфигурировать и обновлять состояние Unit без полного обновления файлов программы
- env.json файл позволяет Unit знать какому инстансу Pepeunit он принадлежит
- env.json файл при помощи переменной PEPEUNIT_TOKEN позволяет Pepeunit производить авторизацию для конкретных Unit