Подключение счетчика Энергомера CE307 R33.145.ОA.N

Если добавлять поддержку прямо в драйвер - то на сях, да.
Если работать через 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)

1 лайк