Some changes

This commit is contained in:
Dmitry Borisenko
2020-09-30 23:21:46 +03:00
parent 65175e3663
commit 52b8d971d8
11 changed files with 208 additions and 206 deletions

View File

@@ -43,7 +43,7 @@
}, },
{ {
"type": "h4", "type": "h4",
"title": "LittleFS version: 240" "title": "LittleFS version: 241"
}, },
{ {
"type": "hr" "type": "hr"

View File

@@ -160,6 +160,7 @@ class LineParsing {
} }
void createWidgetClass(String descr, String page, String order, String filename, String topic) { void createWidgetClass(String descr, String page, String order, String filename, String topic) {
if (filename != "na") {
String buf = "{}"; String buf = "{}";
if (!loadWidgetClass(filename, buf)) { if (!loadWidgetClass(filename, buf)) {
return; return;
@@ -176,6 +177,7 @@ class LineParsing {
addFileLn("layout.txt", buf); addFileLn("layout.txt", buf);
#endif #endif
} }
}
bool loadWidgetClass(const String& filename, String& buf) { bool loadWidgetClass(const String& filename, String& buf) {
buf = readFile(getWidgetFileClass(filename), 2048); buf = readFile(getWidgetFileClass(filename), 2048);

View File

@@ -2,7 +2,7 @@
//=================Firmeare================= //=================Firmeare=================
#define FIRMWARE_NAME "esp8266-iotm" #define FIRMWARE_NAME "esp8266-iotm"
#define FIRMWARE_VERSION 240 #define FIRMWARE_VERSION 241
#define FLASH_4MB true #define FLASH_4MB true
//=================System=================== //=================System===================
@@ -25,7 +25,7 @@
//#define WEBSOCKET_ENABLED //#define WEBSOCKET_ENABLED
//#define LAYOUT_IN_RAM //#define LAYOUT_IN_RAM
//#define UDP_ENABLED //#define UDP_ENABLED
#define SSDP_EN //#define SSDP_EN
//=========Sensors enable/disable=========== //=========Sensors enable/disable===========
#define TANK_LEVEL_SAMPLES 10 #define TANK_LEVEL_SAMPLES 10

View File

@@ -128,9 +128,9 @@ extern void createChart(String widget_name, String page_name, String page_number
extern void pushControl(); extern void pushControl();
// UDP // UDP
extern void udpInit(); //extern void udpInit();
extern void do_udp_data_parse(); //extern void do_udp_data_parse();
extern void do_mqtt_send_settings_to_udp(); //extern void do_mqtt_send_settings_to_udp();

View File

@@ -44,5 +44,5 @@ extern void bmp280ReadingTemp();
extern void bmp280Press(); extern void bmp280Press();
extern void bmp280ReadingPress(); extern void bmp280ReadingPress();
extern void modbus(); //extern void modbus();
extern void modbusReading(); //extern void modbusReading();

View File

@@ -1,7 +1,7 @@
#pragma once //#pragma once
#include "ESPAsyncUDP.h" //#include "ESPAsyncUDP.h"
extern AsyncUDP asyncUdp; //extern AsyncUDP asyncUdp;
extern void asyncUdpInit(); //extern void asyncUdpInit();
extern String uint8tToString(uint8_t* data, size_t len); //extern String uint8tToString(uint8_t* data, size_t len);
extern bool udpPacketValidation(String& data); //extern bool udpPacketValidation(String& data);
extern void udpPacketParse(String& data); //extern void udpPacketParse(String& data);

View File

@@ -1,83 +1,83 @@
#pragma once //#pragma once
#include <Arduino.h> //#include <Arduino.h>
#include <ModbusMaster.h> //#include <ModbusMaster.h>
#include <SoftwareSerial.h> //#include <SoftwareSerial.h>
//
#include "Class/LineParsing.h" //#include "Class/LineParsing.h"
#include "Global.h" //#include "Global.h"
#include "items/SensorConvertingClass.h" //#include "items/SensorConvertingClass.h"
//
ModbusMaster modbus1; //ModbusMaster modbus1;
SoftwareSerial uart(13, 12); // 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); // uart.begin(9600);
jsonWriteStr(configOptionJson, _key + "_map", _map); // jsonWriteStr(configOptionJson, _key + "_map", _map);
jsonWriteStr(configOptionJson, _key + "_с", _c); // jsonWriteStr(configOptionJson, _key + "_с", _c);
sensorReadingMap += _key + " " + _addr + " " + _reg + ","; // sensorReadingMap += _key + " " + _addr + " " + _reg + ",";
Serial.println(sensorReadingMap); // Serial.println(sensorReadingMap);
} // }
//
void SensorModbusRead(String key, uint8_t slaveAddress, uint16_t regAddress) { // void SensorModbusRead(String key, uint8_t slaveAddress, uint16_t regAddress) {
int 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; // value = reqisterValue;
} else { // } else {
value = NULL; // value = NULL;
} // }
//
int valueFl = this->correction(key, value); // int 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) + ", Slave dev addr: " + String(slaveAddress) + ", Register: " + String(regAddress)); // 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) {
String tmpstr; // String tmpstr;
switch (result) { // switch (result) {
case modbus1->ku8MBSuccess: // case modbus1->ku8MBSuccess:
return true; // return true;
tmpstr += "Ok"; // tmpstr += "Ok";
break; // break;
case modbus1->ku8MBIllegalFunction: // case modbus1->ku8MBIllegalFunction:
tmpstr += "Illegal Function"; // tmpstr += "Illegal Function";
break; // break;
case modbus1->ku8MBIllegalDataAddress: // case modbus1->ku8MBIllegalDataAddress:
tmpstr += "Illegal Data Address"; // tmpstr += "Illegal Data Address";
break; // break;
case modbus1->ku8MBIllegalDataValue: // case modbus1->ku8MBIllegalDataValue:
tmpstr += "Illegal Data Value"; // tmpstr += "Illegal Data Value";
break; // break;
case modbus1->ku8MBSlaveDeviceFailure: // case modbus1->ku8MBSlaveDeviceFailure:
tmpstr += "Slave Device Failure"; // tmpstr += "Slave Device Failure";
break; // break;
case modbus1->ku8MBInvalidSlaveID: // case modbus1->ku8MBInvalidSlaveID:
tmpstr += "Invalid Slave ID"; // tmpstr += "Invalid Slave ID";
break; // break;
case modbus1->ku8MBInvalidFunction: // case modbus1->ku8MBInvalidFunction:
tmpstr += "Invalid Function"; // tmpstr += "Invalid Function";
break; // break;
case modbus1->ku8MBResponseTimedOut: // case modbus1->ku8MBResponseTimedOut:
tmpstr += "Response Timed Out"; // tmpstr += "Response Timed Out";
break; // break;
case modbus1->ku8MBInvalidCRC: // case modbus1->ku8MBInvalidCRC:
tmpstr += "Invalid CRC"; // tmpstr += "Invalid CRC";
break; // break;
default: // default:
tmpstr += "Unknown error: " + String(result); // tmpstr += "Unknown error: " + String(result);
break; // break;
} // }
SerialPrint("I", "Modbus", tmpstr); // SerialPrint("I", "Modbus", tmpstr);
return false; // return false;
} // }
}; //};
extern SensorModbusClass mySensorModbus; //extern SensorModbusClass mySensorModbus;

View File

@@ -43,7 +43,7 @@ void cmd_init() {
sCmd.addCommand("bmp280-temp", bmp280Temp); sCmd.addCommand("bmp280-temp", bmp280Temp);
sCmd.addCommand("bmp280-press", bmp280Press); sCmd.addCommand("bmp280-press", bmp280Press);
sCmd.addCommand("modbus", modbus); //sCmd.addCommand("modbus", modbus);
handle_time_init(); handle_time_init();
} }

View File

@@ -1,71 +1,71 @@
#include "RemoteOrdersUdp.h" //#include "RemoteOrdersUdp.h"
#include <Arduino.h>
#include "Global.h"
AsyncUDP asyncUdp;
void asyncUdpInit() {
//if (asyncUdp.listen(1234)) {
if (asyncUdp.listenMulticast(IPAddress(239, 255, 255, 255), 1234)) {
asyncUdp.onPacket([](AsyncUDPPacket packet) {
//Serial.print("UDP Packet Type: ");
//Serial.print(packet.isBroadcast() ? "Broadcast" : packet.isMulticast() ? "Multicast" : "Unicast");
// //
//Serial.print(", From: "); //#include <Arduino.h>
//Serial.print(packet.remoteIP());
//Serial.print(":");
//Serial.print(packet.remotePort());
// //
//Serial.print(", To: "); //#include "Global.h"
//Serial.print(packet.localIP());
//Serial.print(":");
//Serial.print(packet.localPort());
// //
//Serial.print(", Length: "); //AsyncUDP asyncUdp;
//Serial.print(packet.length());
// //
//Serial.print(", Data: "); //void asyncUdpInit() {
//Serial.write(packet.data(), packet.length()); // //if (asyncUdp.listen(1234)) {
// if (asyncUdp.listenMulticast(IPAddress(239, 255, 255, 255), 1234)) {
String data = uint8tToString(packet.data(), packet.length()); // asyncUdp.onPacket([](AsyncUDPPacket packet) {
Serial.print("[i] [udp] Packet received: '"); //
Serial.print(data); // //Serial.print("UDP Packet Type: ");
if (udpPacketValidation(data)) { // //Serial.print(packet.isBroadcast() ? "Broadcast" : packet.isMulticast() ? "Multicast" : "Unicast");
udpPacketParse(data); // //
//Serial.println("', Packet valid"); // //Serial.print(", From: ");
} else { // //Serial.print(packet.remoteIP());
//Serial.println("', Packet invalid"); // //Serial.print(":");
} // //Serial.print(packet.remotePort());
// //
//reply to the client // //Serial.print(", To: ");
// //Serial.print(packet.localIP());
packet.printf("Got %u bytes of data", packet.length()); // //Serial.print(":");
}); // //Serial.print(packet.localPort());
} // //
} // //Serial.print(", Length: ");
// //Serial.print(packet.length());
String uint8tToString(uint8_t* data, size_t len) { // //
String ret; // //Serial.print(", Data: ");
while (len--) { // //Serial.write(packet.data(), packet.length());
ret += (char)*data++; //
} // String data = uint8tToString(packet.data(), packet.length());
return ret; // Serial.print("[i] [udp] Packet received: '");
} // Serial.print(data);
// if (udpPacketValidation(data)) {
bool udpPacketValidation(String& data) { // udpPacketParse(data);
if (data.indexOf("iotm;") != -1 && data.indexOf(getChipId()) != -1) { // //Serial.println("', Packet valid");
return true; // } else {
} else { // //Serial.println("', Packet invalid");
return false; // }
} //
} // //reply to the client
//
//iotm;chipid;button-out-1_1 // packet.printf("Got %u bytes of data", packet.length());
void udpPacketParse(String& data) { // });
data = selectFromMarkerToMarker(data, ";", 2); // }
data.replace("_", " "); //}
orderBuf += data + ","; //
} //String uint8tToString(uint8_t* data, size_t len) {
// String ret;
// while (len--) {
// ret += (char)*data++;
// }
// return ret;
//}
//
//bool udpPacketValidation(String& data) {
// if (data.indexOf("iotm;") != -1 && data.indexOf(getChipId()) != -1) {
// return true;
// } else {
// return false;
// }
//}
//
////iotm;chipid;button-out-1_1
//void udpPacketParse(String& data) {
// data = selectFromMarkerToMarker(data, ";", 2);
// data.replace("_", " ");
// orderBuf += data + ",";
//}

View File

@@ -1,23 +1,23 @@
#include "items/SensorModbusClass.h" //#include "items/SensorModbusClass.h"
//
#include "ItemsCmd.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]
//========================================================================================================================================= ////=========================================================================================================================================
SensorModbusClass mySensorModbus; //SensorModbusClass mySensorModbus;
//
void modbus() { //void modbus() {
mySensorModbus.update(); // mySensorModbus.update();
String key = mySensorModbus.gkey(); // String key = mySensorModbus.gkey();
sCmd.addCommand(key.c_str(), modbusReading); // sCmd.addCommand(key.c_str(), modbusReading);
mySensorModbus.SensorModbusInit(); // mySensorModbus.SensorModbusInit();
mySensorModbus.clear(); // mySensorModbus.clear();
} //}
void modbusReading() { //void modbusReading() {
String key = sCmd.order(); // String key = sCmd.order();
String addr = sCmd.next(); // String addr = sCmd.next();
String regaddr = sCmd.next(); // String regaddr = sCmd.next();
mySensorModbus.SensorModbusRead(key, addr.toInt(), regaddr.toInt()); // mySensorModbus.SensorModbusRead(key, addr.toInt(), regaddr.toInt());
} //}
//#endif ////#endif

View File

@@ -13,7 +13,7 @@
#include "Utils/Timings.h" #include "Utils/Timings.h"
#include "Utils\WebUtils.h" #include "Utils\WebUtils.h"
#include "items/ButtonInClass.h" #include "items/ButtonInClass.h"
#include "RemoteOrdersUdp.h" //#include "RemoteOrdersUdp.h"
#include "Bus.h" #include "Bus.h"
void not_async_actions(); void not_async_actions();
@@ -72,8 +72,8 @@ void setup() {
SerialPrint("I","Stat","Stat Init"); SerialPrint("I","Stat","Stat Init");
initSt(); initSt();
SerialPrint("I","UDP","Udp Init"); //SerialPrint("I","UDP","Udp Init");
asyncUdpInit(); //asyncUdpInit();
SerialPrint("I","Bus","Bus Init"); SerialPrint("I","Bus","Bus Init");
busInit(); busInit();