Skip to content

Структура env.json и env_example.json

env_example.json

Какое функциональное назначание у env_example.json?

Данный файл - это контракт между разработчиком Unit и Pepeunit:

  1. Разработчик гарантирует, что он реализует в функционале Unit все или часть зарезервированных переменных Pepeunit, позволяющих взаимодействовать с Pepeunit
  2. Pepeunit гарантирует возможность Пользователей установить переменные указанные разработчиком
  3. Pepeunit гарантирует, что автоматически установит зарезервированные переменные указанные в файле при первом сохранении со стороны Пользователя.

Структура

json
{
    "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_URLBACKEND_DOMAIN из Backend ENVДоменное имя или ip адрес инстанса Pepeunit
PEPEUNIT_APP_PREFIXBACKEND_APP_PREFIX из Backend ENVПрефикс Backend
PEPEUNIT_API_ACTUAL_PREFIXBACKEND_API_V1_PREFIX из Backend ENVПрефикс актауальной версии API для Backend. Полностью соответствует последней версии API
HTTP_TYPEBACKEND_SECURE из Backend ENVТип соединения https/http с доменным именем или ip адресом Backend в формате https/http
MQTT_URLMQTT_HOST из Backend ENVДоменное имя или ip - адрес инстанса EMQX MQTT Broker
MQTT_PORTMQTT_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_INTERVALBACKEND_STATE_SEND_INTERVAL из Backend ENVЧастота отправки состояния в стандартный топик состояния
MIN_LOG_LEVELDebugМинимальный уровень лога, который будет отправляться по MQTT и сохраняться в файл log.json. Если установить например Warning, то Debug и Info отправляться не будут
MAX_LOG_LENGTH64Максимальное число строк в файле 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:

  1. Unit гарантирует всем сторонам, что будет использовать для соответствующих значений из env_example.json значения из env.json
  2. Pepeunit гарантирует всем сторонам, что при первой установке переменных окружения в env.json, сгенерирует зарезервированные переменные
  3. Pepeunit гарантирует всем сторонам, что Unit сможет пройти авторизацию для топиков и соединений в EMQX MQTT Broker, авторизацию Backend с использованием PEPEUNIT_TOKEN
  4. Pepeunit гарантирует всем сторонам, возможность изменения env.json
  5. Pepeunit гарантирует всем сторонам, что env.json будет храниться в шифрованном виде
  6. Pepeunit гарантирует всем сторонам, что доступ до env.json будет предоставлен только создателю Unit
  7. Aдминистратор гарантирует всем сторонам, что env.json ни в каком виде не будет передан тем кто не явялется стороной данного контракта.

DANGER

Используйте только доверенные инстансы Pepeunit. Следите, чтобы Администратор инстанса Pepeunit выполнял свои контрактные обязательства, связанные с env.json.

Какие основные свойства можно выделить у env.json?

  1. env.json файл секретен, его нельзя передавать кому-либо
  2. env.json файл позволяет удобно конфигурировать и обновлять состояние Unit без полного обновления файлов программы
  3. env.json файл позволяет Unit знать какому инстансу Pepeunit он принадлежит
  4. env.json файл при помощи переменной PEPEUNIT_TOKEN позволяет Pepeunit производить авторизацию для конкретных Unit