Инструменты пользователя

Инструменты сайта


конфигурирование

Различия

Показаны различия между двумя версиями страницы.

Ссылка на это сравнение

Предыдущая версия справа и слева Предыдущая версия
Следующая версия
Предыдущая версия
конфигурирование [2021/09/25 04:06]
176.31.125.95 старая версия восстановлена (2020/07/26 15:25)
конфигурирование [2023/10/22 01:27] (текущий)
Admin [Настройка объектов (items)]
Строка 1: Строка 1:
-# Boot sequence:+==== Основные разделы конфигурационного файла ==== 
 +Конфигурационный файл позволяет настроить контроллер lighthub конкретно для выполнения Вашей задачи. Может быть загружен в контроллер разными способами - портал lazyhome.ru/portal, веб-интерфейс контроллера, http API, плагин браузера. 
  
-* Trying to load JSON config from NVRAM. If config is valid JSON structure - start to operating (to avoid dependance from network and allow local control) +Подробности тут [[как_lighthub_работает_с_файлом_конфигурации]]
-* Trying to retrieve MAC address, stored in NVRAM. If ok - using retrieved MAC. If not - using CUSTOM_FIRMWARE_MAC (see compilers directives). If not configured - using hardcoded DEFAULT_FIRMWARE_MAC = {0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0} +
-* Starting LAN with DHCP or with static ip if configured +
-* Trying to load JSON config from  address "http://MY_CONFIG_SERVER/12-12-12-12-12-12.config.json", where "12-12....12" is controller's MAC address and MY_CONFIG_SERVER - compiler's directive. If not configured = lazyhome.ru used +
-* After parsing of loaded config, performing re-initialization of objects, except number of DMX channels. There is possible to store loaded config in NVRAM after some testing using "save" cli command. +
-* Connecting to MQTT server according stored or retrieved config. +
-* Subscribing to OUTTOPIC (/myhome/s_out/# by default) for 5 sec. Retrieving and executing all persistent topic (restore recent values) +
-* Unsubscribe from OUTTOPIC, Subscribe for INTOPIC (/myhome/in/# by default) and start processing normal incoming event flow+
  
-# Operation +Конфигурационный файл имеет формат JSON. На первом уровне файла конфигурации задаются следующие объекты:
-During normal operation, controller:+
  
-* Accepting incoming MQTT message flow and retrieving item name from topic name. For example, /myhome/in/item1 will control "item1" 
-* Controlling items. 
-* Most commands, accepted on INTOPIC passed throw to OUTTOPIC after interpretation. Interpretation is converting of high level commands like ON OFF HALT REST to low-level commands with real values. OUTTOPIC publishing uses "persistent" flag to allow retrieving recent status from MQTT broker after restart of controller 
-* Polling: Normally, Modbus devices and 1-wire thermometers are polled with reasonable interval. Retrieved values are publishing to OUTTOPIC 
  
-# Useful CLI commands:+^имя ^ назначений ^ параметры ^ пример ^ 
 +|mqtt| настройка параметров MQTT|[имя_контроллера,ip_брокера,логин,пароль] см [[работа_с_mqtt]] NB: пароль, также, может быть определен через [[CLI интерфейс]], чтобы не компрометировать в открытом файле конфигурации|"mqtt":["lighthub-07","m2m.eclipse.org"]| 
 +|ow| настройка сенсоров 1-wire|в качестве параметра - JSON объект, содержащий в качестве ключа адрес термометра а в качестве значения - execObj (см ниже), определяющий куда передать показания термометра| [[конфигурирование#настройка_температурных_датчиков_1-wire]]| 
 +|syslog|Настройка логгирования контроллера через UDP syslog на сторонний сервер|первый элемент массива - ip адрес сервера логгирования, второй (опционально) порт|"syslog":["192.168.88.2"]| 
 +|dmx|Настройка DMX выхода|[кол-во каналов], для mega2560 возможна такая настройка: [выходной_pin_DMX, кл-во-каналов]|"dmx":[80],
 +|dmxin|настройка входа DMX|масссив названий каналов типа DMXRGBW|"dmxin":["led5","led6","led7","led8"]| 
 +|artnet|Настройка Artnet шлюза|[начальный DMX канал (соответствует 1-му каналу artnet),конечный DMX канал|"artnet":[48,67]| 
 +|topics|задает настройки топиков MQTT.|root: корневой топик (myhome по умолчанию), bcst: броадкаст топик (in по-умолчанию) | "topics":{"root":"flat2"} см [[работа_с_mqtt#пример_настройки_mqtt_в_json_конфигурации]]| 
 +|modbus|Задает справочник обьектов modbus|описание тут|[[настройка_modbus]]| 
 +|in|задает настройку входов контроллера|описание тут|[[аналоговые_входы]] [[несколько_кнопок_на_одном_входе]]| 
 +|items|Основной раздел конфигурации. Задает список обьектов, их настройку и взаимосвязь||описание ниже|
  
-* mac 11:22:33:44:55:66  - writing custom MAC address to NVRAM 
-* save - writing currently loaded config from RAM to NVRAM 
-* get <servername> - retrieve config from server and store servername to NVRAM (default servername: lazyhome.ru) 
-* ip [ip[ dns[ gw[ subnet]]]] - configure and save to NVRAM static ip. if no parameters - DHCP will be used 
-* load - load config from NVRAM 
-* kill - test watchdog timer (normally, causes reboot) 
  
-CLI commands must be send via serial port with 115200 baud rate / 8N1 params: 8 data bitsno parity bit1 stop bit.+====Что такое {execObj}==== 
 +Прежде чем далее описывать структуру файла настройкинеобходимо определить такое понятие как {execObj}которое довольно часто будет использоваться далее. 
 +Это JSON объект, или массив JSON обьектов, который может принимать на вход какое-либо значение или команду в унифицированном формате контроллера, а далее, предпринимать с этой информацией какие то действия. А именно: 
 +  * Выдавать в MQTT на один или несколько топиков 
 +  * Передавать на вход другим объектам контроллера 
 +  * Передавать по шине CAN (скоро)
  
-Example via shell: +параметры:
-``` +
-> stty -f /dev/cu.usbmodem146101 ispeed 115200 ospeed 115200 -parenb cs8 cstopb +
-> echo "ip" > /dev/cu.usbmodem146101 +
-> cat /dev/cu.usbmodem146101 +
-```+
  
-Same can be done via GUI e.g. from Arduino IDE (serial monitor). Serial port must be configured (MacOSX config file ~/Library/Arduino15/preferences.txt) +  * emit - MQTT топик в который отправить значение из параметра ecmd (если в параметре отсутствует / он будет дополнен слева префиксом статусного топика) 
-``` +  * item - имя локального устройства из items (может содержать суффикс для указания того, какое именно свойство объекта надо изменитьНапример: «lamp/hue» или «lamp/sat»)
-serial.databits=8 +
-serial.stopbits=1 +
-serial.parity=N +
-serial.debug_rate=115200 +
-serial.line_ending=1 +
-```+
  
-The example of config files you can find in config folder +Примеры: 
-Notein real configs comments are not allowed +<code> 
-Below is brief explanation of basic configuration values:+{"emit":"edem/edem3/p_zal3/mode"} 
 +[{"emit":"t_bath3","item":"tbath3"},{"item":"p_bedr3/floor_temp"}] 
 +</code>
  
-```+====Настройка температурных датчиков 1-wire==== 
 +формат: "device#":{execObj} 
 + 
 +Ниже пример конфигурации (в реальном файле конфигурации комментарии не допускаются) 
 +<code>
 { {
   "mqtt":["mqtt_id","host",port,"user","pass"], //ip address/name and client id of mqtt broker. Port, user, pass - are optional    "mqtt":["mqtt_id","host",port,"user","pass"], //ip address/name and client id of mqtt broker. Port, user, pass - are optional 
Строка 59: Строка 52:
         },         },
  
-```+</code> 
 +В данном примере определены два термодатчика. Температура первого будет передаваться в статусный топик myhome/s_out/t_entr, а второго - в топик myhome/s_out/t_bath1 и, кроме того, на внутренний обьект h_bath (по-умолчанию, в суффикс val)
  
-// Every Lighthub's object are "item": lampdimmertermostat, relay, led etc +====Настройка объектов (items)==== 
-// item is accessible via mqtt bus as /myhome/in/itemname+Каждый объект lightHub описывается в разделе items конфигурационного файла в виде JSON массива 
 + 
 +<code> 
 +"itemname":[<#type>,<itemConfig>,<set>,<cmd>
 +</code> 
 + 
 +Только первые два элемента массива -  тип и конфигурация, являются обязательными 
 + 
 +^номер элемента массива ^назначение^ 
 +|1|тип обьекта. Это может быть как число из таблицы ниже так и строка, содержащая аббревиатуру типа|  
 +|2|конфигурация объекта. В зависимости от его типа это может быть как число так и массив параметров (pins, address etc)| 
 +|3|текущая уставка (int or array of presets)| 
 +|4|текущая команда| 
 +  
 + 
 +^# типа ^ аббревиатура типа ^ описание ^ конфигурация объекта ^ 
 +|0| DMX|DMX out 1-5 ch|стартовый номер DMX канала или массив каналов| 
 +|1| DMXRGBW  |DMX out 4 ch|стартовый номер DMX канала| 
 +|2| DMXRGB   |DMX out 3 ch|| 
 +|3| PWM   |PWM output 1-5 каналов|номер пина или массив пинов| 
 +|4| MBUSDIM|Modbus AC Dimmer (legacy)|| 
 +|5| THERMO|Simple ON/OFF thermostat|номер пина| 
 +|6| RELAY |ON_OFF relay output|номер пина| 
 +|7| GROUP |Group pseudochannel|массив строк с названиями каналов в группе| 
 +|8| VCTEMP|Vacom PID thermo - regulator (Ventilation set)|"fm_t":[8,"fm"]| 
 +|9| MBUSVC    |Vacom modbus motor regulator(legacy)|"fm":[9,[10,"a_ext"]]| 
 +|10|ACHAIER|Air Conditioner Haier|"ac_3":[10,[<port#>,{"mode":{"emit":"mode"},"speed":{"emit":"speed"},"temp":{"emit":"set"}}]]}| 
 +|11|SPILED | SPI LED strip|| 
 +|12|MOTOR |Motorized air gateway with feedback resistor|"airgate":[12,[<pwm_pin>,<pin>,<pin_feedback>,<feedbackOffVal>,<feedbackOnVal>,<maxMotorTimeMs>]],
 +|13|PID   |PID regulator|[ [P,I,D,dT,alarmTO, alarmVal, outMin, outMax],{Output execObj},{Cascade execObj}]| 
 +|14|MBUS  |Universal Modbus channel|"t_balk3":[14,[<addr>,<"template">,{<"param1">:{execObj},...}]]| 
 +|15|UARTBRDG |Bridge between 2 UARTS with reporting PDUs to Wireshark via UDP|| 
 +|16|RELAYPWM   |Slow PWM relay to control objects with inertia| 
 +|17|DMXRGBWW  |DMX RGBWW channel (warm&cold white)|| 
 +|18|VENTS |Multiroom ventilation set|| 
 +|19|ELEVATOR |Reserved|| 
 +|20|COUNTER   |Generic counter| "pumpctr":[20,[0.02,1.2]],"gasctr":[20,0]| 
 +|21|HUM  |Humidifier (reserved)|| 
 +|22|MERCURY|Mercury energy meter/RS485 interface|"merc":[22,[<addr>,9600,"8N1",2,[2,2,2,2,2,2],10000]]|
  
-``` 
-#define I_TYPE 0 //Type of item 
-#define I_ARG  1 //Chanel-type depended argument or array of arguments (pin, address etc) 
-#define I_VAL  2 //Latest preset (int or array of presets) 
-#define I_CMD  3 //Latest CMD received 
-#define I_EXT  4 //Chanell-depended extension - array 
-``` 
-There are two mandatory elements in item's array: type and address 
-1-st element of array is item type 
  
-# Item types: 
-``` 
-#define CH_DIMMER 0    //DMX out 1 ch 
-#define CH_RGBW    1   //DMX out 4 ch 
-#define CH_RGB       //DMX out 3 ch 
-#define CH_PWM       //PWM output directly to PIN 
-#define CH_MODBUS  4   //Modbus AC Dimmer 
-#define CH_THERMO  5   //Simple ON/OFF thermostat 
-#define CH_RELAY     //ON_OFF relay output 
-#define CH_GROUP    //Group pseudochannel 
-#define CH_VCTEMP  8  //Vacom PID thermo - regulator (Ventilation set) 
-#define CH_VC      9  //Vacom modbus motor regulator 
-``` 
    
-Address is channel depended. Pin# for relay, DMX address for DMX-512 channel, array for Modbus channel+Address is channel depended. Pin# for relay, DMX address for DMX-512 channel, array for Modbus channel
 +In case of DMX item note that addressees are continuous numbering between decoders and start address of each decoders configurable by jumpers. E.g. if you have two 24-ch decoders and want to control all 48 channels then you must set address "1" on the first decoder and "25" on the second.
  
-``` +<code>  
- "items":{+"items":{
 // Example of array // Example of array
         "all":[7,["h_entr","h_bath1","h_bath2","h_balk1","h_balk2","h_boil1","h_boil2","h_polotenc","spots_en"]]         "all":[7,["h_entr","h_bath1","h_bath2","h_balk1","h_balk2","h_boil1","h_boil2","h_polotenc","spots_en"]]
Строка 100: Строка 111:
         "h_entr" :[5,35,32],         "h_entr" :[5,35,32],
         "h_balk1":[5,25,28],         "h_balk1":[5,25,28],
-        "h_balk2":[5,27,28],+        "h_balk2":["THERMO",27,28],
 // Examples of relay items [type, pin, preset, default command] // Examples of relay items [type, pin, preset, default command]
         "h_boil1":[6,23],             // simple relay on pin 23         "h_boil1":[6,23],             // simple relay on pin 23
-        "h_boil2":[6,28,1,1],         // relay, turned on by default (after reboot)+        "h_boil2":["RELAY",28,1,1],         // relay, turned on by default (after reboot)
         "h_polotenc":[6,26,1,1],         "h_polotenc":[6,26,1,1],
         "spots_en":[6,22,1,1],         "spots_en":[6,22,1,1],
Строка 109: Строка 120:
         "water":[6,36,1,1]         "water":[6,36,1,1]
          },          },
-```+</code>
  
-# Inputs configuration chapter+===== конфигурирование входов =====
  
-```+<code>
 // "in" syntax // "in" syntax
 // "pin": { "T":type, "emit":"out_emit", item:"out_item", "scmd": "ON,OFF,TOGGLE,INCREASE,DECREASE", "rcmd": "ON,OFF,TO$ // "pin": { "T":type, "emit":"out_emit", item:"out_item", "scmd": "ON,OFF,TOGGLE,INCREASE,DECREASE", "rcmd": "ON,OFF,TO$
Строка 147: Строка 158:
          }          }
 } }
-```+</code>
  
-Modbus channel+==== Modbus channel v1 ====
  
-CurrentlyLighthub working with Vacom 10 frequency driver (from Danfos) via Modbus RTU and allows control frequency (item type 9)  and  internal PID controller  (item type used for Temperature control) + 
-Additionally, performing polling parameters from Vacom and publishing in JSON format to status MQTT Topic+данный тип канала устарелдрайвер modbus v2 дает существенно бОльшую гибкость, см [[настройка_modbus]]  
 +Тем не. менее, этот тип канала может использоваться для простых применений, когда надо сделать простой проброс канала в регистр устройства Modbus с линейным пересчетом значения. 
 + 
 +===настройка канала типа №4 Modbus Dimmer===
  
 If you just need to write some Modbus register on MQTT command & poll it back with simple scaling  - you can use item type #4 (Modbus dimmer) If you just need to write some Modbus register on MQTT command & poll it back with simple scaling  - you can use item type #4 (Modbus dimmer)
  
 Config example (refer https://github.com/anklimov/lighthub/wiki/Configuring):    Config example (refer https://github.com/anklimov/lighthub/wiki/Configuring):   
-```+<code>
 { {
   "items": {   "items": {
Строка 164: Строка 178:
   "mqtt":["lighthub-07","m2m.eclipse.org"]   "mqtt":["lighthub-07","m2m.eclipse.org"]
   }   }
-```+</code>
  
 Note: this config example available at URL http://lazyhome.ru/de-ad-be-ef-fe-07.config.json - so just set mac address of device by command “mac de:ad:be:ef:fe:07” for test. Note: this config example available at URL http://lazyhome.ru/de-ad-be-ef-fe-07.config.json - so just set mac address of device by command “mac de:ad:be:ef:fe:07” for test.
Строка 170: Строка 184:
  
 Item notation:  Item notation: 
-* 4 - Modbus dimmer item type +  * 4 - Modbus dimmer item type 
- +  * Param1: = 96 - Decimal address of modbus device 
-* Param1: = 96 - Decimal address of modbus device +  * Param2: = 0 - Modbus register to write (and read while polling) 
-* Param2: = 0 - Modbus register to write (and read while polling) +  * Param3: = 0 - mask (optional. Default value “-1”  - see below for explanations) 
-* Param3: = 0 - mask (optional. Default value “-1”  - see below for explanations) +  * Param4:= 255 - Maximum Value for scaling MQTT input value = 100  to register value  (Optional. Default MaxValue 0x3f. It is equivalent of “100" on input.  If value == 0 - no scaling)
-* Param4:= 255 - Maximum Value for scaling MQTT input value = 100  to register value  (Optional. Default MaxValue 0x3f. It is equivalent of “100" on input.  If value == 0 - no scaling)+
  
 Mask: Mask:
Строка 183: Строка 196:
 if mask == -1 (or parameter omitted) - no register polling  if mask == -1 (or parameter omitted) - no register polling 
      
-Note: Serial line parameters for itemtype 4 is 9600:8N1 (look for “dimPar" and “MODBUS_SERIAL_BAUD” definitions  in  config.h if you need to change it) +Note: Serial line parameters for itemtype 4 is 9600:8N1 (look for “dimPar" and “MODBUS_SERIAL_BAUD” definitions  in  compilation options if you need to change it)  
 + 
 +=== Vacom 10 frequency driver=== 
 +См. также два устаревших типа Modbus каналов: 
 + 
 +Vacom 10 frequency driver (from Danfos) via Modbus RTU and allows control frequency (item type = 9)  and  Vacom internal PID controller  (item type = 8 - used for Temperature control) 
 +Additionally, performing polling parameters from Vacom and publishing in JSON format to status MQTT Topic
конфигурирование.1632532011.txt.gz · Последнее изменение: 2021/09/25 04:06 — 176.31.125.95