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

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


использование_преобразований_map

Различия

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

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

Предыдущая версия справа и слева Предыдущая версия
Следующая версия
Предыдущая версия
использование_преобразований_map [2025/04/06 17:45]
Admin
использование_преобразований_map [2025/04/06 23:02] (текущий)
Admin [Шаблон "cmd":"fan"]
Строка 7: Строка 7:
 Для этого существует механизм преобразований, который может производить как конвертацию значений так и переобразования между командами и значениями Для этого существует механизм преобразований, который может производить как конвертацию значений так и переобразования между командами и значениями
  
-Первое место, где используются преобразования - это интеграция Modbus v2. это обьясняется тем, что в Modbus все взаимодействие с устройством происходит через регистры, в которые пишутся, либо, из которых считываются числовые значения.+Первое место, где используются преобразования - это интеграция Modbus v2. см [[настройка_modbus]] это обьясняется тем, что в Modbus все взаимодействие с устройством происходит через регистры, в которые пишутся, либо, из которых считываются числовые значения.
  
 +==== Типы преобразований ====
 Предусмотрено два типа преобразований - **преобразования команды** и **преобразование значения** Предусмотрено два типа преобразований - **преобразования команды** и **преобразование значения**
  
Строка 54: Строка 55:
 любые другие значения будут проигнорированы. Преобразование при этом будет считаться не успешным. и будет выполнен "сценарий по умолчанию", заданный в параметре "def" обьекта "map" любые другие значения будут проигнорированы. Преобразование при этом будет считаться не успешным. и будет выполнен "сценарий по умолчанию", заданный в параметре "def" обьекта "map"
  
 +==== Сценарии преобразования по умолчанию ====
 Этот параметр (используется только для обратных преобразований modbus) применяется в том случае, если для считанного из регистра значения не удалось применить преобразование. В этом случае, можно использовать значение, считанное из иного регистра.  Этот параметр (используется только для обратных преобразований modbus) применяется в том случае, если для считанного из регистра значения не удалось применить преобразование. В этом случае, можно использовать значение, считанное из иного регистра. 
  
Строка 78: Строка 80:
 В примере ниже, если значение coil 0 равно нулю - обратное преобразование сразу вернет команду OFF В примере ниже, если значение coil 0 равно нулю - обратное преобразование сразу вернет команду OFF
  
-Иначе, контроллер посмотрит ранее считанное значение регистра 1, из параметра описанного в acmode, применит все указанные для регистра acmode преобразования и их результат вернет для параметра pwr  +Иначе, так как преобразование в число отменено (val=null), преобразование для параметра pwr будет считаться не успешным и контроллер посмотрит ранее считанное значение регистра 1, из параметра описанного в acmode, применит все указанные для регистра acmode преобразования и их результат вернет для параметра pwr  
  
 важно: параметр acmode должен быть описан в разделе items, даже если сам по себе он ни для каких действий более не используется. достаточно в данном описании поставить пустой JSON обьект - именно в нем контроллер сохраняет ранее считанные значения) важно: параметр acmode должен быть описан в разделе items, даже если сам по себе он ни для каких действий более не используется. достаточно в данном описании поставить пустой JSON обьект - именно в нем контроллер сохраняет ранее считанные значения)
Строка 88: Строка 90:
 "acmode":{"reg":1,"map":{"cmd":[["FAN_ONLY",4],["HEAT",2],["COOL",1],["DRY",3],["AUTO",5]],"val":null},"id":1}, "acmode":{"reg":1,"map":{"cmd":[["FAN_ONLY",4],["HEAT",2],["COOL",1],["DRY",3],["AUTO",5]],"val":null},"id":1},
 </code> </code>
 +
 +
 +===== Ограничения диапазона при линейном преобразовании значений =====
 +
 +В простейшем случае, в параметре val задается массив, содержащий 4 значения
  
 <code> <code>
-"on":{"reg":41,"type":"u8l","id":1,"map":{"cmd":[["OFF",0],["ON",1],["AUTO",1],["HEAT",1],["FAN_ONLY",1]]}},+"val":[вход_минвход_максвыход_минвыход_макс] 
 +</code>
  
-"fanoff":{"coil":0,"map":{"cmd":[1,["OFF",0]],"val":[0,0,0,0,1,1,null,null], "id":7}},+например 
 + 
 +<code> 
 +"val":[1, 5, 1, 255]
 </code> </code>
 +В случае прямого преобразования, числа 1,2,3,4,5 будут преобразованы к 1, 64, 128, 195, 255
 +В случае обратного - числа из интервала 1-64 к 1, 65-128 к 2, 129-195 к 3, 196-254 к 4 и 255 к 5
 +
 +NEW
 +если входное значение не укладывается в указанные границы - преобразование считается не успешным. То есть в примере выше, если на вход преобразования придет число 0 или 6 то оно не сработает.
 +
 +можно определить значения, которые будут являться результатом преобразования если. входное значение меньше минимума или больше максимума диапазона преобразования 
  
 <code> <code>
-"fanspeed":{"reg":42,"type":"u8l","id":7,"map":{"cmd":"fan"}}+"val":[вход_минвход_максвыход_минвыход_макс, вход<мин_прямое, вых<мин_обратное, вход>макс_прямоевых>макс_обратное]
 </code> </code>
  
-<code>   +соответственно, используя данный синтаксис, можно доработать пример выше таким образом, что значение 0 будет транслироваться в 0 как в прямом так и в обратном направлении  
-"$rain":{"reg":67,"type":"u8l""map":{"cmd":[null,["OFF",10],["ON",11]],"val":null}},                         + 
 + 
 +<code> 
 +"val":[15125500]
 </code> </code>
  
 +Параметры подставляемые при срабатывании ограничений не обязательны. Если какие-то требуется пропустить - можно указать null
  
 +===== Предопределенные шаблоны преобразований =====
 +
 +==== Шаблон "cmd":"fan" ====
 +
 +данный шаблон в случае прямого преобразования позволяет провести трансляцию стандартных команд OFF, LOW, MEDIUM, HIGH в значения 0, 20, 128, 255 соответственно 
 +
 +Для обратного преобразования: 
 +Значения 0, 1-127, 128-254, 255 преобразуются в OFF, LOW, MEDIUM, HIGH
 +
 +
 +
 +<code>
 +"fanspeed":{"reg":42,"type":"u8l","id":7,"map":{"cmd":"fan"}}, 
 +</code>
  
использование_преобразований_map.1743950738.txt.gz · Последнее изменение: 2025/04/06 17:45 — Admin