triple/double log data

3 years 3 months ago #1680 by lesjaw
i just notice this and make my automation run wierd..

at first boot, easyIoT server still running correctly..here is the log screen shoot..



as you can see..all node still reporting once a time to server, but after i press on off in node n14s0 which is a relay node, all node reporting triple time in a time..



i have debug all node, and they are all send data only once a time..

and relay node who cause this issue is an example tutorial from this web..

here is the code inside relay node..
/*
 *  This sketch demonstrates how to set up a simple HTTP-like server.
 *  The server will set a GPIO pin depending on the request
 *    http://server_ip/gpio/0 will set the GPIO2 low,
 *    http://server_ip/gpio/1 will set the GPIO2 high
 *  server_ip is the IP address of the ESP8266 module, will be 
 *  printed to Serial when the module is connected.
 */

#include <ESP8266WiFi.h>

const char* ssid = "Bolt";
const char* password = "nexusdroit";

// Create an instance of the server
// specify the port to listen on as an argument
WiFiServer server(80);

void setup() {
  Serial.begin(115200);
  delay(10);

  // prepare GPIO2
  pinMode(2, OUTPUT);
  digitalWrite(2, 0);
  
  // 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.println(WiFi.localIP());
}

void loop() {
  // Check if a client has connected
  WiFiClient client = server.available();
  if (!client) {
    return;
  }
  
  // Wait until the client sends some data
  Serial.println("new client");
  while(!client.available()){
    delay(1);
  }
  
  // Read the first line of the request
  String req = client.readStringUntil('\r');
  Serial.println(req);
  client.flush();
  
  // Match the request
  int val;
  if (req.indexOf("/gpio/0") != -1)
    val = 0;
  else if (req.indexOf("/gpio/1") != -1)
    val = 1;
  else {
    Serial.println("invalid request");
    client.stop();
    return;
  }

  // Set GPIO2 according to the request
  digitalWrite(2, val);
  
  client.flush();

  // Prepare the response
  String s = "HTTP/1.1 200 OK\r\nContent-Type: text/html\r\n\r\n<!DOCTYPE HTML>\r\n<html>\r\nGPIO is now ";
  s += (val)?"high":"low";
  s += "</html>\n";

  // Send the response to the client
  client.print(s);
  delay(1);
  Serial.println("Client disonnected");

  // The client will actually be disconnected 
  // when the function returns and 'client' object is detroyed
}

and here is the code of automation of that relay in server side
const String ESP8266_IP_ADDRESS = "192.168.5.174";

const String MODULE_ADDRESS = "N14S0"; 

/*

  This code is running one time when program is enabled

*/

public void Setup(){

//  System.Diagnostics.Process.Start("CMD.exe","");  

  EventHelper.ModuleChangedHandler((o, m, p) =>    {

    Console.WriteLine(m.Domain +" "+ m.Address + " in program id "+ Program.ProgramId.ToString()+ " property "+ p.Property + " value " + p.Value); 

      if (m.Domain == "Virtual" && m.Address == MODULE_ADDRESS && p.Property == "Sensor.DigitalValue")

        sendCommand(p.Value);
        
        return true;

    });

}


/*

  This code is running periodicaly when program is enabled. 

  Cron job detirmine running period.

*/

public void Run(){

}


private void sendCommand(string value){

  sendToServer("/gpio/"+value);

}


private void sendToServer(String message){

  try

  {

  //Console.WriteLine("TCP client command:" + message);

  

   Int32 port = 80;

   System.Net.Sockets.TcpClient client = new System.Net.Sockets.TcpClient( ESP8266_IP_ADDRESS, port);

   Byte[] data = System.Text.Encoding.ASCII.GetBytes(message); 

   System.Net.Sockets.NetworkStream stream = client.GetStream();

   stream.Write(data, 0, data.Length);

   // Close everything.

   stream.Close();         

   client.Close();

  }

  catch(Exception e)

  {

    Console.WriteLine(e.StackTrace);

  }

}
Attachments:

Please Log in or Create an account to join the conversation.

3 years 3 months ago #1681 by EasyIoT

Please Log in or Create an account to join the conversation.

3 years 3 months ago - 3 years 3 months ago #1682 by lesjaw

EasyIoT wrote: Did you read this thread?

iot-playground.com/forum/bug-reports/197...ation-enable-disable


yes..is there any correlation between cdj problrm and mine?

i have update the EasyIoT.exe in cdj thread..but it doesn't fix my problem..

all node still send data three or four time ..




btw i have disable that motion sensor automation and restart EasyIoT.exe..
Attachments:

Please Log in or Create an account to join the conversation.

3 years 3 months ago #1683 by lesjaw
and this is another log from another node..


Attachments:

Please Log in or Create an account to join the conversation.

3 years 3 months ago #1684 by EasyIoT
You have
Console.WriteLine(m.Domain +" "+ m.Address + " in program id "+ Program.ProgramId.ToString()+ " property "+ p.Property + " value " + p.Value); 
in EventHelper.ModuleChangedHandler before you filter event for particular node. If you have three programs with this, then you see three output messages for one event. Everything seems ok.

Please Log in or Create an account to join the conversation.

3 years 3 months ago #1685 by lesjaw

EasyIoT wrote: You have

Console.WriteLine(m.Domain +" "+ m.Address + " in program id "+ Program.ProgramId.ToString()+ " property "+ p.Property + " value " + p.Value); 
in EventHelper.ModuleChangedHandler before you filter event for particular node. If you have three programs with this, then you see three output messages for one event. Everything seems ok.


I see... Ok... Yes i have 4 program with that... Ok then..

So there is something wrong with my automation code... I should filter them first?

Thank you

Please Log in or Create an account to join the conversation.

Time to create page: 0.509 seconds