mirror of
https://github.com/IoTManagerProject/IoTManager.git
synced 2026-03-30 20:09:14 +03:00
modbus rtu final
This commit is contained in:
@@ -1 +1 @@
|
|||||||
modbus;id;anydata;Modbus;Регистр;order;addr[1];regaddr[0];c[1]
|
modbus;id;anydata;Modbus;Регистр;order;addr[1];reg[0];c[1]
|
||||||
@@ -14,6 +14,7 @@ class LineParsing {
|
|||||||
String _order;
|
String _order;
|
||||||
|
|
||||||
String _addr;
|
String _addr;
|
||||||
|
String _reg;
|
||||||
String _pin;
|
String _pin;
|
||||||
String _map;
|
String _map;
|
||||||
String _c;
|
String _c;
|
||||||
@@ -31,6 +32,7 @@ class LineParsing {
|
|||||||
_descr{""},
|
_descr{""},
|
||||||
_order{""},
|
_order{""},
|
||||||
_addr{""},
|
_addr{""},
|
||||||
|
_reg{""},
|
||||||
_pin{""},
|
_pin{""},
|
||||||
_map{""},
|
_map{""},
|
||||||
_c{""},
|
_c{""},
|
||||||
@@ -79,6 +81,9 @@ class LineParsing {
|
|||||||
if (arg.indexOf("addr[") != -1) {
|
if (arg.indexOf("addr[") != -1) {
|
||||||
_addr = extractInner(arg);
|
_addr = extractInner(arg);
|
||||||
}
|
}
|
||||||
|
if (arg.indexOf("reg[") != -1) {
|
||||||
|
_reg = extractInner(arg);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -127,7 +132,9 @@ class LineParsing {
|
|||||||
String gaddr() {
|
String gaddr() {
|
||||||
return _addr;
|
return _addr;
|
||||||
}
|
}
|
||||||
|
String gregaddr() {
|
||||||
|
return _reg;
|
||||||
|
}
|
||||||
|
|
||||||
void clear() {
|
void clear() {
|
||||||
_key = "";
|
_key = "";
|
||||||
@@ -136,6 +143,7 @@ class LineParsing {
|
|||||||
_descr = "";
|
_descr = "";
|
||||||
_order = "";
|
_order = "";
|
||||||
_addr = "";
|
_addr = "";
|
||||||
|
_reg = "";
|
||||||
_pin = "";
|
_pin = "";
|
||||||
_map = "";
|
_map = "";
|
||||||
_c = "";
|
_c = "";
|
||||||
@@ -143,7 +151,6 @@ class LineParsing {
|
|||||||
_state = "";
|
_state = "";
|
||||||
_db = "";
|
_db = "";
|
||||||
_type = "";
|
_type = "";
|
||||||
_addr = "";
|
|
||||||
}
|
}
|
||||||
|
|
||||||
String extractInnerDigit(String str) {
|
String extractInnerDigit(String str) {
|
||||||
|
|||||||
@@ -8,35 +8,37 @@
|
|||||||
#include "items/SensorConvertingClass.h"
|
#include "items/SensorConvertingClass.h"
|
||||||
|
|
||||||
ModbusMaster modbus1;
|
ModbusMaster modbus1;
|
||||||
SoftwareSerial uart(10, 11); // RX, TX
|
SoftwareSerial uart(13, 12); // RX, TX
|
||||||
|
|
||||||
class SensorModbusClass : public SensorConvertingClass {
|
class SensorModbusClass : public SensorConvertingClass {
|
||||||
public:
|
public:
|
||||||
SensorModbusClass() : SensorConvertingClass(){};
|
SensorModbusClass() : SensorConvertingClass(){};
|
||||||
|
|
||||||
void SensorModbusInit() {
|
void SensorModbusInit() {
|
||||||
|
uart.begin(9600);
|
||||||
jsonWriteStr(configOptionJson, _key + "_map", _map);
|
jsonWriteStr(configOptionJson, _key + "_map", _map);
|
||||||
jsonWriteStr(configOptionJson, _key + "_с", _c);
|
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) {
|
void SensorModbusRead(String key, uint8_t slaveAddress, uint16_t regAddress) {
|
||||||
float value;
|
int value;
|
||||||
|
|
||||||
modbus1.begin(slaveAddress, uart);
|
modbus1.begin(slaveAddress, uart);
|
||||||
uint16_t reqisterValue = modbus1.readHoldingRegisters(regAddress, 1);
|
uint16_t reqisterValue = modbus1.readHoldingRegisters(regAddress, 1);
|
||||||
if (getResultMsg(&modbus1, reqisterValue)) {
|
if (getResultMsg(&modbus1, reqisterValue)) {
|
||||||
reqisterValue = modbus1.getResponseBuffer(0);
|
reqisterValue = modbus1.getResponseBuffer(0);
|
||||||
|
value = reqisterValue;
|
||||||
} else {
|
} else {
|
||||||
|
value = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
value = reqisterValue;
|
int valueFl = this->correction(key, value);
|
||||||
|
|
||||||
float valueFl = this->correction(key, value);
|
|
||||||
eventGen(key, "");
|
eventGen(key, "");
|
||||||
jsonWriteStr(configLiveJson, key, String(valueFl));
|
jsonWriteStr(configLiveJson, key, String(valueFl));
|
||||||
MqttClient::publishStatus(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) {
|
bool getResultMsg(ModbusMaster* modbus1, uint16_t result) {
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
#include "ItemsCmd.h"
|
|
||||||
#include "items/SensorModbusClass.h"
|
#include "items/SensorModbusClass.h"
|
||||||
|
|
||||||
|
#include "ItemsCmd.h"
|
||||||
//#ifdef SensorModbusEnabled
|
//#ifdef SensorModbusEnabled
|
||||||
//=========================================Модуль modbus===================================================================================
|
//=========================================Модуль modbus===================================================================================
|
||||||
//modbus;id;anydata;Сенсоры;Температура;order;addr[1];regaddr[0];c[1]
|
//modbus;id;anydata;Сенсоры;Температура;order;addr[1];regaddr[0];c[1]
|
||||||
@@ -15,6 +16,8 @@ void modbus() {
|
|||||||
}
|
}
|
||||||
void modbusReading() {
|
void modbusReading() {
|
||||||
String key = sCmd.order();
|
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
|
//#endif
|
||||||
Reference in New Issue
Block a user