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,21 +160,23 @@ 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) {
String buf = "{}"; if (filename != "na") {
if (!loadWidgetClass(filename, buf)) { String buf = "{}";
return; if (!loadWidgetClass(filename, buf)) {
} return;
}
jsonWriteStr(buf, "page", page); jsonWriteStr(buf, "page", page);
jsonWriteStr(buf, "order", order); jsonWriteStr(buf, "order", order);
jsonWriteStr(buf, "descr", descr); jsonWriteStr(buf, "descr", descr);
jsonWriteStr(buf, "topic", prex + "/" + topic); jsonWriteStr(buf, "topic", prex + "/" + topic);
#ifdef LAYOUT_IN_RAM #ifdef LAYOUT_IN_RAM
all_widgets += widget + "\r\n"; all_widgets += widget + "\r\n";
#else #else
addFileLn("layout.txt", buf); addFileLn("layout.txt", buf);
#endif #endif
}
} }
bool loadWidgetClass(const String& filename, String& buf) { bool loadWidgetClass(const String& filename, String& buf) {

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