Если добавлять поддержку прямо в драйвер - то на сях, да.
Если работать через RPC - то достаточно начального знания JS.
Вот, отправка в шину и получение ответа:
MQTT RPC пример
var pathRPC = "/rpc/v1/wb-mqtt-serial/port/Load/";
var modbusPort = "/dev/ttyRS485-2";
var modbusSpeed = 9600;
var modbusParity = "N";
var modbusStopbit = 2;
var clientID = "testRPC";
function requestRPC(modbusPort, modbusSpeed, modbusParity, modbusStopbit, clientID, requiestID, messageType, message, responseSize){
//Формируем JSON запрос
//Должно быть что-то такое:
//{"params": {"response_size": 8, "format": "HEX", "path": "/dev/ttyRS485-2", "baud_rate": 9600, "parity" : "N", "data_bits" : 8, "stop_bits" : 2, "msg": "0A03008000018499"}, "id" : 1}
var strJson = JSON.stringify({params: {response_size: responseSize, format: messageType, path: modbusPort, "baud_rate": modbusSpeed, parity: modbusParity, "data_bits" : 8, "stop_bits" : modbusStopbit, "msg": "0A03008000018499"}, "id" : 1})
//var strJson = JSON.stringify({ state: "ON" });
log.info("strJson =", strJson)
publish(pathRPC+clientID, strJson, 2, false);
}
function modbusRequest(devAddr, command, regStart, regCount){
//Сформируем набор байт команды
//0A03008000018499
//var tmp=
}
var ruleName = trackMqtt(pathRPC+clientID+"/reply", function(message){
log.info("name: {}, value: {}".format(message.topic, message.value))
});
log.info("ruleName:", ruleName)
requestRPC(modbusPort, modbusSpeed, modbusParity, modbusStopbit, clientID, 1, "HEX", "0A03008000018499", 8)