diff --git a/data/items/modbus.txt b/data/items/modbus.txt index 89ad0d56..8abc8d5b 100644 --- a/data/items/modbus.txt +++ b/data/items/modbus.txt @@ -1 +1 @@ -modbus;id;anydata;Modbus;Регистр;order;addr[1];regaddr[0];c[1] \ No newline at end of file +modbus;id;anydata;Modbus;Регистр;order;addr[1];reg[0];c[1] \ No newline at end of file diff --git a/include/Class/LineParsing.h b/include/Class/LineParsing.h index 02b1d1ce..5e2607d2 100644 --- a/include/Class/LineParsing.h +++ b/include/Class/LineParsing.h @@ -14,6 +14,7 @@ class LineParsing { String _order; String _addr; + String _reg; String _pin; String _map; String _c; @@ -31,6 +32,7 @@ class LineParsing { _descr{""}, _order{""}, _addr{""}, + _reg{""}, _pin{""}, _map{""}, _c{""}, @@ -79,6 +81,9 @@ class LineParsing { if (arg.indexOf("addr[") != -1) { _addr = extractInner(arg); } + if (arg.indexOf("reg[") != -1) { + _reg = extractInner(arg); + } } } @@ -127,7 +132,9 @@ class LineParsing { String gaddr() { return _addr; } - + String gregaddr() { + return _reg; + } void clear() { _key = ""; @@ -136,6 +143,7 @@ class LineParsing { _descr = ""; _order = ""; _addr = ""; + _reg = ""; _pin = ""; _map = ""; _c = ""; @@ -143,7 +151,6 @@ class LineParsing { _state = ""; _db = ""; _type = ""; - _addr = ""; } String extractInnerDigit(String str) { diff --git a/include/items/SensorModbusClass.h b/include/items/SensorModbusClass.h index b42089dc..bfc0e689 100644 --- a/include/items/SensorModbusClass.h +++ b/include/items/SensorModbusClass.h @@ -8,35 +8,37 @@ #include "items/SensorConvertingClass.h" ModbusMaster modbus1; -SoftwareSerial uart(10, 11); // RX, TX +SoftwareSerial uart(13, 12); // RX, TX class SensorModbusClass : public SensorConvertingClass { public: SensorModbusClass() : SensorConvertingClass(){}; void SensorModbusInit() { + uart.begin(9600); jsonWriteStr(configOptionJson, _key + "_map", _map); jsonWriteStr(configOptionJson, _key + "_с", _c); - sensorReadingMap += _key + ","; //" " + _addr + " " + _regaddr + sensorReadingMap += _key + " " + _addr + " " + _reg + ","; + Serial.println(sensorReadingMap); } void SensorModbusRead(String key, uint8_t slaveAddress, uint16_t regAddress) { - float value; + int value; modbus1.begin(slaveAddress, uart); uint16_t reqisterValue = modbus1.readHoldingRegisters(regAddress, 1); if (getResultMsg(&modbus1, reqisterValue)) { reqisterValue = modbus1.getResponseBuffer(0); + value = reqisterValue; } else { + value = NULL; } - value = reqisterValue; - - float valueFl = this->correction(key, value); + int valueFl = this->correction(key, value); eventGen(key, ""); jsonWriteStr(configLiveJson, key, String(valueFl)); MqttClient::publishStatus(key, String(valueFl)); - Serial.println("I sensor '" + key + "' data: " + String(valueFl)); + Serial.println("I sensor '" + key + "' data: " + String(valueFl) + ", Slave dev addr: " + String(slaveAddress) + ", Register: " + String(regAddress)); } bool getResultMsg(ModbusMaster* modbus1, uint16_t result) { diff --git a/src/items/SensorModbusClass.cpp b/src/items/SensorModbusClass.cpp index 821e608b..eb45157b 100644 --- a/src/items/SensorModbusClass.cpp +++ b/src/items/SensorModbusClass.cpp @@ -1,5 +1,6 @@ -#include "ItemsCmd.h" #include "items/SensorModbusClass.h" + +#include "ItemsCmd.h" //#ifdef SensorModbusEnabled //=========================================Модуль modbus=================================================================================== //modbus;id;anydata;Сенсоры;Температура;order;addr[1];regaddr[0];c[1] @@ -15,6 +16,8 @@ void modbus() { } void modbusReading() { String key = sCmd.order(); - mySensorModbus.SensorModbusRead(key, 1, 0); + String addr = sCmd.next(); + String regaddr = sCmd.next(); + mySensorModbus.SensorModbusRead(key, addr.toInt(), regaddr.toInt()); } //#endif \ No newline at end of file