nayakajit87
Member level 5
I am using nodemcu and Modbus RTU device. I am getting data from modbus RTU and trying to display over the client IP
With Below code i could able to get data from modbus rtu device . But could not able to display the same parameter on client IP address. It always print 0.00.where as Serial data read the value properly and prints data.
Here is my example code
Code:
#include <ModbusMaster232.h>
#include <SoftwareSerial.h>
#include <ESP8266WiFi.h>
#include <BlynkSimpleEsp8266.h>
#include "Tasker.h"
Tasker tasker;
unsigned int data[100];
ModbusMaster232 node(1);// change device address here.
// Define one address for reading
#define address 1
// Define the number of bits to read
#define bitQty 30
const char* ssid = "HOT SPOT";
const char* password = "airtel123";
int ledPin = 13; // GPIO13
WiFiServer server(80);
void setup() {
Serial.begin(9600);
node.begin(9600);
delay(10);
pinMode(ledPin, OUTPUT);
digitalWrite(ledPin, LOW);
// Connect to WiFi network
Serial.println();
Serial.println();
Serial.print("Connecting to ");
Serial.println(ssid);
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println("");
Serial.println("WiFi connected");
// Start the server
server.begin();
Serial.println("Server started");
// Print the IP address
Serial.print("Use this URL to connect: ");
Serial.print("http://");
Serial.print(WiFi.localIP());
Serial.println("/");
// timer.setInterval(1000, ModBusRead); // Update Time Check every 10 seconds
//tasker.setInterval(client_update, 2000);
}
void loop()
{
int result = node.readHoldingRegisters(address, bitQty);
data[0] = node.getResponseBuffer(0);// holds value of Frequency
data[1] = node.getResponseBuffer(1);
data[2] = node.getResponseBuffer(2);// holds value of VRph
data[3] = node.getResponseBuffer(3);
data[4] = node.getResponseBuffer(4);// holds value of VYph
data[5] = node.getResponseBuffer(5);
data[6] = node.getResponseBuffer(6);// holds value of VBph
data[7] = node.getResponseBuffer(7);
data[8] = node.getResponseBuffer(8);// holds value of VRph-VYph
data[9] = node.getResponseBuffer(9);
data[10] = node.getResponseBuffer(10);// holds value of Vyph-Vbph
data[11] = node.getResponseBuffer(11);
data[12] = node.getResponseBuffer(12);// holds value of VBph-VYph
data[13] = node.getResponseBuffer(13);
data[14] = node.getResponseBuffer(14);// hold value of IRCurrent
data[15] = node.getResponseBuffer(15);
data[16] = node.getResponseBuffer(16);// hold value of IYCurrent
data[17] = node.getResponseBuffer(17);
data[18] = node.getResponseBuffer(18);// hold value of IBCurrent
data[19] = node.getResponseBuffer(19);
data[20] = node.getResponseBuffer(20);// hold value of PFR
data[21] = node.getResponseBuffer(21);
data[22] = node.getResponseBuffer(22);// hold value of PFY
data[23] = node.getResponseBuffer(23);
data[24] = node.getResponseBuffer(24);// hold value of PFB
data[25] = node.getResponseBuffer(25);
data[26] = node.getResponseBuffer(26);// hold value of TP
data[27] = node.getResponseBuffer(27);
data[28] = node.getResponseBuffer(28);// hold value of ACTPOWR
data[29] = node.getResponseBuffer(29);
data[30] = node.getResponseBuffer(30);// hold value of ACTPOWY
data[31] = node.getResponseBuffer(31);
data[32] = node.getResponseBuffer(32);// hold value of ACTPOWB
data[33] = node.getResponseBuffer(33);
data[34] = node.getResponseBuffer(34);// hold value of TotalACTPOWR
data[35] = node.getResponseBuffer(35);
data[36] = node.getResponseBuffer(36);// hold value of ACTENERR
data[37] = node.getResponseBuffer(37);
data[38] = node.getResponseBuffer(38);//hold value of ACTENERY
data[39] = node.getResponseBuffer(39);
data[40] = node.getResponseBuffer(40);//hold value of ACTENERB
data[41] = node.getResponseBuffer(41);
data[42] = node.getResponseBuffer(42);//hold value of Total Active power
data[43] = node.getResponseBuffer(43);
data[44] = node.getResponseBuffer(44);
data[45] = node.getResponseBuffer(45);
data[46] = node.getResponseBuffer(46);
data[47] = node.getResponseBuffer(47);
data[48] = node.getResponseBuffer(48);
data[49] = node.getResponseBuffer(49);
data[50] = node.getResponseBuffer(50);
data[51] = node.getResponseBuffer(51);
data[52] = node.getResponseBuffer(52);
data[53] = node.getResponseBuffer(53);
data[54] = node.getResponseBuffer(54);
data[55] = node.getResponseBuffer(55);
data[56] = node.getResponseBuffer(56);
data[57] = node.getResponseBuffer(57);
data[58] = node.getResponseBuffer(58);
data[59] = node.getResponseBuffer(59);
for (int i = 0; i < 15; i++)
{
Serial.println(data[i]);
}
Serial.println("........................");
//delay(1000);
// Read the first line of the request
WiFiClient client = server.available();
if (!client) {
return;
}
Serial.println("new client");
while (!client.available()) {
client_update();
delay(1);
}
String request = client.readStringUntil('\r');
Serial.println(request);
client.flush();
client.println("HTTP/1.1 200 OK");
client.println("Content-Type: text/html");
client.println(""); // do not forget this one
client.println("<!DOCTYPE HTML>");
client.println("<html>");
client.println(" ENERGY METER READING ");
client.println("<br><br>");
client.println("Frequency: ");
client.println((data[0] / 10.0)); client.println("<br><br>");
client.println("Rphase voltage: ");
client.println((data[2] / 10.0)); client.println("<br><br>");
client.println("Yphase voltage: ");
client.println((data[4] / 10.0)); client.println("<br><br>");
client.println("Bphase voltage: ");
client.println((data[6] / 10.0));
client.println("<br><br>");
client.println("VR-VY voltage: ");
client.println((data[8] / 10.0)); client.println("<br><br>");
client.println("VY-VB voltage: ");
client.println((data[10] / 10.0)); client.println("<br><br>");
client.println("VB-VR voltage: ");
client.println((data[12] / 10.0)); client.println("<br><br>");
client.println("IR voltage: ");
client.println((data[14] / 10.0)); client.println("<br><br>");
client.println("IY voltage: ");
client.println( data[16] / 10.0); client.println("<br><br>");
client.println("IB voltage: ");
client.println( data[18] / 10.0); client.println("<br><br>");
client.println("PF R phase: ");
client.println( data[20] / 10.0); client.println("<br><br>");
client.println("PF Y phase: ");
client.println( data[22] / 10.0); client.println("<br><br>");
client.println("PF B phase: ");
client.println( data[24] / 10.0); client.println("<br><br>");
client.println("Total PF: ");
client.println( data[26] / 10.0); client.println("<br><br>");
client.println("<br><br>");
// tasker.loop();
delay(1);
Serial.println("Client disonnected");
Serial.println("");
}
void client_update()
{
//WiFiClient client = server.available();
}