Tdata sending and receiving complex structure

Home Forums The libraries hosted on the site EByte LoRa e32 UART devices sx1262/sx1268 Tdata sending and receiving complex structure

Tagged: 

Viewing 1 reply thread
  • Author
    Posts
    • #13856
      craig stock

        Does anybody have a example or experience in sending tdata array using E32 lora module and library. I think with tdata i can get all my values into 1 message.

        I’m trying to send two values from my each Node (5 nodes in total) and receive them at my server and split the data back up so i can store in modbus registers.

        I think I have the node code working as below but can’t work out how to receive it and split it back up

        Node sending code.

        
        float tdata[10];
        
        // The loop function is called in an endless loop
        void loop()
        
        //attempt for tdata battery node setup
        Serial.print("T2=");
        tdata[2]=l_hour;
        Serial.println(tdata[2]);
        Serial.print("T3=");
        tdata[3]=volt;// future battery voltage monitor
        Serial.println(tdata[3]);
        
        ResponseStatus rs = e32ttl.sendFixedMessage(0,3,4,(uint8_t*)&tdata, sizeof(tdata));
        Serial.println(rs.getResponseDescription());
        

        Some of my server receive code is:

        
        float tdata[10];
        float rtdata[40];
        
        // The loop function is called in an endless loop
        void loop() {
        
        if (e32ttl.available() > 1) {
        	ResponseContainer rs = e32ttl.receiveInitialMessage(sizeof(tdata));
        	// ResponseStructContainer rsc = e32ttl.receiveMessage(sizeof(Message));
        	struct Message message = *(tdata*) rt.data;
        	Serial.println(message.type);
        
        	memcpy( type, rt.data.c_str(), sizeof(type) );
        
        	for (byte i = 2; i < 3; i++)// if you change i=0 to i=1 you get the second value, <2 is the number of rows so if sending more values need to increase at the moment it has 2 rows
        
        	if (from==2)// adding an if statement to try and seperate clients
        	{
        		Serial.print("T");
        		Serial.print(i);
        		Serial.print(": ");
        		Serial.println(word(rtdata[i])); // T2 will be flow and T3 will be for battery voltage
        		regBank.set(40003, (word)(rtdata[i]));// flow reading
        	}
        
        	for (byte i = 3; i < 4; i++) // if you change i=0 to i=1 you get the second value, <2 is the number of rows so if sending more values need to increase at the moment it has 2 rows
        
        	if (from==2)// adding an if statement to try and separate clients
        	{
        		Serial.print("T");
        		Serial.print(i);
        		Serial.print(": ");
        		Serial.println(word(rtdata[i])); // T2 will be flow and T3 will be for battery voltage
        		regBank.set(40004, (word)(rtdata[i]));// flow reading
        	}
        }
        
      • #13860
        Renzo Mischianti
        Keymaster

          Hi Craig,
          I think this is a more simple approach
          Ebyte LoRa E32 device for Arduino, esp32 or esp8266: power saving and sending structured data – Part 5

          but in your sketch you write

          
          	struct Message message = *(tdata*) rt.data;
          	Serial.println(message.type);
          

          but in tdata not exist type it an array, you can access It via index.

          Bye Renzo

      Viewing 1 reply thread
      • You must be logged in to reply to this topic.
      Exit mobile version