Просто примеры из сввоих записей:
OpenHasp
Переключить страницу
mosquitto_pub -t hasp/plate199/command/page -m '2'
Создать контрол
mosquitto_pub -t hasp/plate199/command/jsonl -m '{"page":2, "obj":"btn","id":14,"x":120,"y":140,"w":70,"h":40,"text_font":"2","text":"Test","text_color":"white","bg_opa":0,"border_width":0}'
Создать контрол “лампочка”
mosquitto_pub -t hasp/plate199/command/jsonl -m '{"page":1,"id":40,"obj":"btn","x":20,"y":260,"w":105,"h":90,"toggle":true,"text":"\uE335","text_font":32,"mode":"break","align":1}'
Подсветка отдельно:
mosquitto_pub -t hasp/plate199/command/backlight -m '{"state":"on","brightness":128}'
mosquitto_pub -t hasp/plate199/command/backlight -m '{"state":"off","brightness":100}'
Активация и переключение на страницу
mosquitto_pub -t hasp/plate199/command/json -m '["idle off", "page 1"]'
mosquitto_pub -t hasp/plate199/command/json -m '["idle off", "page 2"]'
mosquitto_pub -t hasp/plate199/command/json -m '["idle short", "page 1"]'
Яркость
mosquitto_pub -t hasp/plate199/command/json -m '["page 1", "backlight {\"state\": \"on\", \"brightness\":99}"]'
Ну и простенький пример:
log.info("OpenHasp started");
function makeNewVirtualControl(vdName, nameControl, typeControl){
//log.info("GetDevice", getDevice("vdName"))
if (getDevice(vdName) === undefined) {
log.info("Define new")
defineVirtualDevice(vdName, {
title: vdName,
cells: {},
})
}
//Тут проверим есть ли уже контрол и если нет - создадим.
if (!getDevice(vdName).isControlExists(nameControl)) {
log.debug("Контрола "+nameControl+" нет, создаем.")
getDevice(vdName).addControl(nameControl, typeControl);
}
}
function makeRule(sourceTopick, destTopick, additional){
defineRule(destTopick, {
whenChanged: sourceTopick,
then: function (newValue, devName, cellName) {
if (additional){
publish(destTopick, additional+(newValue ? "1" : "0"));
}
else{
publish(destTopick, newValue);
}
}
});
}
//Создаем контролs для устройства
var namePanel = "MainPanel";
var rootTopick = "hasp/plate199";
var commandJsonl = "/jsonl";
var commandTopick = "/command";
//makeNewVirtualControl(nameGate, "position", {type: "range", value: 0, min: 0, max: 100, readonly: true});
//makeNewVirtualControl(namePanel, "ruleEnable", {type: "switch", value: "false", readonly: false});
makeNewVirtualControl(namePanel, "Temperature", {type: "value", value: 0, readonly: false}); //Создаем топик в виртуальном устройстве
makeRule(namePanel+"/"+"Temperature", rootTopick+"/command/p1b5.text");//Правило, которое по изменению топика в виртуальном устройстве - публикует его значение в топик устройства
makeNewVirtualControl(namePanel, "Light2", {type: "switch", value: false, readonly: false}); //Создаем топик в виртуальном устройстве
//Опубликуем для этого контрола на панели сам элемент. На странице 2.
publish(rootTopick+commandTopick+commandJsonl, '{"page":2,"id":41,"obj":"btn","x":20,"y":260,"w":105,"h":90,"toggle":true,"text":"\uE3352","text_font":32,"mode":"break","align":1}', 1);
//переключимс на страницу 2 панель
publish(rootTopick+commandTopick, '["page 2"]', 1);
//2do подпишемся на топик и будем устанавливать контрол в его состояние.
//при изменении топика витруального устройства - оправляем команду на изменение топика панели.
makeRule(namePanel+"/Light2", rootTopick+commandTopick, "p2b41.val=")
//makeNewVirtualControl(nameGate, "open", {type: "pushbutton", readonly: false});
//makeNewVirtualControl(nameGate, "close", {type: "pushbutton", readonly: false});
//makeNewVirtualControl(nameGate, "full_closed", {type: "switch", value: "false", readonly: true});
//makeNewVirtualControl(nameGate, "full_opened", {type: "switch", value: "false", readonly: true});
var ruleId = trackMqtt("/devices/wb-adc/controls/Vin", function(message) {
//log.info("name: {}, value: {}".format(message.topic, message.value));
});
log.info("ruleId=", ruleId)
Про подключение - есть с Ethernet (видел) - но распространенными прошивками не поддерживаются и стоят негуманно.
А питание - в части в подрозетник стоит БП 220->5.
5 вольт (не выше!) с достаточным током можно подавать откуда угодно.