Moffus пишет:
Hint (для Vera)
luup.call_action('urn:micasaverde-com:serviceId:ZWaveNetwork1','SendData',{Node=Nod, Data=Dat},1)
-- Command class multilevel - x31
-- Sensor Multilevel report - x5
-- Sensor type air - x1 (8 bit)
-- precesion - x2 (3 bit)
-- Scale Celsius - x0 (2 bit)
-- size - x1 (3 bit)
-- value (8 bit)
--
Сорри, не успел дописать
Связка
Local Node=<номер узла, (altid) термостата, сконфигурированного на нюханье внешней t>
local Dat = string.format("x31 x5 x41 %d",math.floor(temp*100))
luup.call_action('urn:micasaverde-com:serviceId:ZWaveNetwork1','SendData',{Node=Nod, Data=Dat},1)
Где: x41 - precesion=2, scale=Celsius,Size=1byte
temp - температура с точностью до 1/100 градуса (например 13.10)
Ну, господа...
Никто и не пытался чтоль? Мало того, что синтаксичес невероен - пишем Node, используем Nod, сам нарисовал аргумент "тип сенсора - воздух" - и не включил.
Короче, вчера притарил Спирит, давно собирался улучшить отопление - механический регулятор Данфосс с выносным градусником тупит и тормозит. В результате гостииная то перегрета (когда работает хардкорная плазма, галогеновый сает 450Вт тепла и т.д, то недогрета.
Короче:
Спирит работает по показаниям Ремотек 120, находящегося в центре помещения.
Работает вот так:
local function getLowByte16( value )
local high_value = math.floor(value/256)
high_value = high_value*256
local low_value = value - high_value
return low_value
end
local function getHighByte16( value )
local high_value = math.floor(value/256)
return high_value
end
local Nod = <altid Спирит>
local temp = luup.variable_get("urn:upnp-org:serviceId:TemperatureSensor1", "CurrentTemperature", <devid градусника>)
-- Подразумеваем, что температура в переменной лежит в виде DD.DD, с точностью до сотых, что пофиг, т.к. тупой ремотек измеряет до целого градуса
local ntemp=math.floor(temp*100)
local Dat = string.format("0x31 0x05 0x01 0x42 0x%02x 0x%02x",getHighByte16( ntemp ), getLowByte16( ntemp ))
luup.call_action('urn:micasaverde-com:serviceId:ZWaveNetwork1','SendData',{Node=Nod, Data=Dat},1)
Обратите внимание, размерность значения температуры - 2 байта, а не 1, как я раньше писал. (0x42, а не 0x41) и тип сенсора тоже (0x01)
Усё работает замечательно.
Разве что Спирит анонсирует таки показания собственного градусника.