Skip to content

sevrugin/modemcu-item

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

44 Commits
 
 
 
 

Repository files navigation

Nodemcu-Item - Модульная IN/OUT система

Wi-fi. Конфигурация

При конфигурации по умолчанию (либо при невозможности подключиться к Wi-fi сети) модуль создает SOFTAP точку доступа с именем "{node-name}|node-{chipid()}" и паролем "123456" для переконфигурации.

IP ноды по умолчанию: "10.0.0.1"

Прием-передача данных осуществляется через mqtt-протокол либо через http-POST запросы на 80 порт в json-формате

  topic: {node-location}{node-name}{command} # home/livingroom/temperature/STATUS
  message:
  {
        "command": "heap|ping|restart", # "ON", "OFF", "GET", "SET", "STATUS", "INFO" - constant
        "value": "{value}",
        "data": "{json}" # custom data
  }

Общие комманды подписаны на {node-location}+{command} но + проверяется на {node-name} или "all" [command-system.lua]

  ping - Вернуть chip-id и название ноды [success,nodename]
  restart - рестарт ноды
  heap - размер свободной памяти
  chipid - chip-id платы
  collectgarbage - почистить память

Настройки ноды [command-config.lua] - /home/livingroom/node-1234/node-name

  node-name - сохранить название ноды (уникальный транслит)
  node-description - сохранить описание ноды (любой текст)

Настройки Wifi [command-config.lua]

  wifi-ssid - установить SSID wi-fi точки
  wifi-password - установить пароль wi-fi точки

Работа с файлами [command-file.lua] - /home/livingroom/node-1234/wifi-ssid

  file-get {filename} - скачать файл
  file-set {filename} - загрузить файл
  file-compile {filename.lua} - скомпилировать файл
  file-list - список файлов

Настройка модулей [command-module.lua]

  module-list - список всех модулей
  module-types - возвращает все поддерживаемые типы модулей
  module-exists {modulename} - существует ли модуль с таким именем
  module-get {modulename} - возвращает все настройки модуля (json). если модуль не существует возвращает success:false
  module-create {modulename} {moduletype} - создает модуль. если модуль с таким именем существует возвращает success:false
  module-edit {modulename} {module_config} - сохраняет настройки модуля. если модуль не существует возвращает success:false
  module-reload {modulename} - инициализация модуля (например после редактирования конфига)
  module-remove {modulename} - удаляет модуль. если модуль не существует возвращает success:false

Управление модулями (пр. "home/modulename")

  ON - если модуль поддерживает SET ставит его в max положение
  OFF - если модуль поддерживает SET ставит его в min положение
  GET - если модуль поодерживает GET возвращает текущее значение 
  SET - если модуль поодерживает SET устанавливает текущее значение (число или ON/OFF)
  STATUS - просит модуль заброадкастить свое состояние
  INFO - устанавливается модулем когда он отсылает броадкаст-сообщение о состоянии. такие сообщения анализируются подписками

Если модуль не может выполнить комманду возвращает {success:false}

Поддерживаемые модули имеют маску [module-{type}.lua]

  # Интерфейс каждого модуля
  bool init(config) - инициализация модуля
  obj get() - получить данные датчика: {value: 25}, {temperature: 26, unit: "C"}
  bool set(value) - установить значение
  bool status() - заказать броадкаст статуса

Файлы конфигураций

Пример главного конфигурационного файла [config.json]

  {
        "node-name": "home-zal",
        "node-description": "Гостиная",
        "wifi-ssid": "",
        "wifi-password": ""
  }

Примеры конфигураций для модулей

[config-dgt-sensor.json]

  # Цифровой сенсор 1/0. Отправляет броадкаст при смене статуса (если delay>0)
  # get - {"result": "succes", "value": 0/1}
  # status - {"module": "home-zal/dgt-sensor", "value": 0/1}
  {
        "description": "Цифрофой сенсор 0/1",
        "module": "dgt-sensor",
        "pin": "1",
        "delay": 0, # Периодичность мониторинга и проверки смены статуса+отправка. 0-никогда
        "onchange": "broadcast" # броадкаст статуса при смене
  }

[config-analog-sensor.json]

  # Аналоговый сенсор 0-1023. Броадкастит свой статус при delay>0
  # get - {"result": "succes", "value": 0-1023}
  # status - {"module": "home-zal/analog-sensor", "value": 0-1023}
  {
        "description": "Аналоговый сенсор 0-1023",
        "module": "analog-sensor",
        "pin": "0",
        "min": 0,
        "max": 255,
        "mapping-min": 0,
        "mapping-max": 100,
        "unit": "%"
        "delay": 0, # Периодичность мониторинга и проверки смены статуса+отправка. 0-никогда
        "onchange": "broadcast" # броадкаст статуса при смене
  }

[config-temperature.json]

  # Датчик температуры-влажности dht22 с броадкастом состояния (если delay>0)
  # get - {"result": "succes", "temperature": 10, "humidity": 76, "unit-temperature": "C", "unit-hummidity": "%"}
  # status - {"module": "home-zal/temperature", "temperature": 10, "humidity": 76, "unit-temperature": "C", "unit-hummidity": "%"}
  {
        "description": "Температура в гостиной",
        "module": "dht22",
        "unit-temperature": "C",
        "unit-hummidity": "%"
        "pin": "1",
        "delay": 0 # Частота отправки. 0-никогда
  }

[config-switch-led.json]

  # get - {"result": "succes", "value": "ON/OFF"}
  # status|set - {"module": "home-zal/switch", "value": "ON/OFF"}
  {
        "description": "Выключатель"
        "module": "switch",
        "pin": "2",
        "min": 0,
        "max": 1023,
        "delay": "0", # Плавность включения,
        "onchange": false # Броадкаст статуса при смене значения
  }

[config-dimmer-led.json]

  # get - {"result": "succes", "value": "{percent}"}
  # status|set - {"module": "home-zal/dimer", "value": "{percent}"}
  {
        "description": "Диммер"
        "module": "dimmer",
        "pin": "3",
        "min": 0,
        "max": 255,
        "mapping-min": 0,
        "mapping-max": 100,
        "onchange": "broadcast" # Броадкаст статуса при смене значения
  }

Подписка на события

Модуль может быть подписан на броадкаст-события от других модулей

  subscribe-list - список всех подписок
  subscribe-get {name} - конфиг подписки или false
  subscribe-create {name} - создать подписку или false если уже есть
  subscribe-edit {name} {json-data} - залить конфиг подписки или false если нету
  subscribe-remove - удалиьт подписку

Конфигурации хранятся в файлах вида [subscribe-{name}.json]

Пример: влючить свет если сработал модуль движения (на выключение нужна отдельная настройка)

  {
        "name": "on_motion_detected", # уникальное название подписки
        "ifmodule": "node-name/motion", # за кем следим
        "op": "=", # =, !=, <, > - условие сверки
        "ifvalue": 1, # значение сверки
        "domodule": "light", # модуль нашей ноды currentnode/light
        "setvalue": "ON" # установить значение
  }

##Donation: Every support is welcome: PayPal – The safer, easier way to pay online.
Especially if need to buy new modules for testing.

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors