Структура 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
}
Переменные можно разделить на две категории - зарезервированные
и переменные разработчика
Зарезервированные переменные 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 | Частота отправки состояния в стандартный топик состояния |
COMMIT_VERSION | - | Hash коммита. Отображает текущую таргет версию Unit. Имеет уникальный функционал, её нельзя изменить вручную в меню изменения env.json, она будет игнорироваться при сохранении |
Переменные окружения разработчика Unit
Разработчик Unit может создавать любые переменные окружения, которые отличаются по названию от стандартных. При этом значения указанные в переменных, будут отображаться как значения по умолчанию в интерфейсе Пользователей.
DANGER
Так как Пользователь имеет возможность заполнять значение переменных окружения, очень желательно заполнить Readme репозитория, который вы создаёте.
Пользовательский опыт
При первой попытке Пользователя установить переменные окружения, он изначально видит только переменные которые добавил разработчик Unit через env_example.json.
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