-
Notifications
You must be signed in to change notification settings - Fork 2
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
add thermalcontrol module #40
base: feature/59016-integrations-package
Are you sure you want to change the base?
add thermalcontrol module #40
Conversation
Module for heating and cooling. Now just deadband control.
Changed titles and off status
* Changed order of controls * Modified logging (format and logging levels) * Changed config.modes from obj to array of strings
Add thermalcontrol module Co-authored-by: Nikolay Korotkiy <[email protected]>
* added resistance to the absence of optional fields in the config * added checks for the required fields
Add Hysteresis field to virtual device
Add persistent storage for setpoint
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Не работает. Инициализирую так по примеру, только поправил скобку в строке 102:
var libtherm = require("thermalcontrol");
config = ({
devName: "climate_kitchen",
devTitle: "Температура на кухне",
modes: ["heating", "cooling"],
temperatureSource: "wb-w1/somesensor",
heatingChannel: "wb-gpio/EXT2_R3A1",
coolingChannel: "wb-gpio/EXT2_R3A2",
setpointrange: {
"min": 6,
"max": 35
},
hysteresis: 1,
degug: true
});
var climate_in_kitchen = new libtherm.ThermalControlDevice(config);
Получаю ошибку в модуле:
Ошибка правила: TypeError: invalid base value
duk_hobject_props.c:2000
anon /usr/share/wb-rules-system/scripts/lib.js:813 preventsyield
anon thermalcontrol:312 construct preventsyield
F /etc/wb-rules/thermostat-test.js:18 preventsyield
Ещё надо статус OFF заменить на DISABLED — это ближе к выключателю ENABLED по смыслу и не будет потом путаницы с OFF_RELAY.
fixed example
Changed 'OFF' status to 'DISABLED'
not everywhere changed "OFF" to "DISABLED", now everywhere
* add default setpoint setting to config * remove persistent storage
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Посмотрел — все ок. Оставил несколько комментариев, надо поправить и будет совсем хорошо.
Надо как можно больше параметров сделать необязательными с описанными в документации значениями: https://wirenboard.com/wiki/Wb-rules-modules#%D0%A1%D0%BE%D0%BA%D1%80%D0%B0%D1%89%D1%91%D0%BD%D0%BD%D0%B0%D1%8F_%D0%B7%D0%B0%D0%BF%D0%B8%D1%81%D1%8C
Давай поправим и вольём, пока я не ушёл в отпуск.
* Add units * Add checks for setpoint * Fixed cofusion with status * Fixed JSDOC example
* Add check of topics exist
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
- Надо описание структуры топиков создаваемого в MQTT устройства. Надо описать возможные значения этих топиков, всякие
SUSPEND
,DISABLED
и т.п. - Может вместо
SUSPEND
писатьIDLE
? Встречал такое в холодильных установках - Кто должен сохранять значения
setpoint
, установленные пользователем? Сейчас при любом перезапуске, они будут сброшены, и будет установлено значение по умолчанию. Это может быть неожиданно. - Я бы всякие однообразные проверки наличия топиков вынес в отдельные функции, чтоб меньше повторений кода было.
- Надо ли обрабатывать ситуации, когда исчезли устройства, выдающие температуру и реализующие управление?
- Надо ли обрабатывать ошибку чтения у устройства, которое выдаёт температуру? Кажется, что стоит отключить нагрев и охлаждение.
- Для обсуждения: возможно, при создании термостата не надо выкидывать исключение, если нужных устройств нет в MQTT. Возможно стоит сигнализировать в топиках ошибкой, а при появлении устройств начинать работать, согласно настройкам?
- Для обсуждения: было бы удобно, если бы конфиг термостатов читался из файлика с диска. Такой конфиг можно было бы делать средствами homeui. Тогда пользователь мог бы настроить его сам без погружения в правила.
modules/thermalcontrol.js
Outdated
}, | ||
setpoint: { | ||
title: "Setpoint", | ||
type: "value", |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Может, range
сделать? В интерфейсе будет красивее выглядеть
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Да мы что-то так и эдак крутили это. А есть способ сделать шаг не в целый градус, а задаваемым?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
есть meta/precision
, не уверен, что wb-rules
это умеют
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Не умеют :(
Оставил пока value, всё-таки его по одному градусу двигать удобней.
Co-authored-by: KraPete <[email protected]>
Co-authored-by: KraPete <[email protected]>
Co-authored-by: KraPete <[email protected]>
* add jsdoc for virtualdevice * minor fixes * remove bindcontrols * fix checks for heatingChannel/coolingChannel exist * changed order
1 - добавил описание |
add description of config.setpoint object
Дальше делает @aadegtyarev |
Решили не делать. Вместо этого будет визуальный конфигуратор. |
Module for heating and cooling.
Now just deadband control.