mirror of
https://github.com/IoTManagerProject/IoTManager.git
synced 2026-03-26 22:22:16 +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 _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) {
|
||||
|
||||
@@ -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) {
|
||||
|
||||
@@ -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
|
||||
Reference in New Issue
Block a user