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
}

Переменные можно разделить на две категории - зарезервированные и переменные разработчика

Зарезервированные переменные 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Частота отправки состояния в стандартный топик состояния
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:

  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