EByte e32 How to Send Message use JSON Format?

Home Forums The libraries hosted on the site EByte LoRa e32 UART devices sx1262/sx1268 EByte e32 How to Send Message use JSON Format?

Tagged: 

Viewing 3 reply threads
  • Author
    Posts
    • #4412
      taurushappy

        How to Send Message use JSON Format ?
        Hello , Can you help me ? How to solve this Question ?

      • #4413
        Renzo Mischianti
        Keymaster

          Hi taurushappy,
          you can use ArduinoJSON library, (I’m going to publish a post on how to use It).

          You can

            DynamicJsonDocument doc(512);
          
            // Set the values in the document
            doc["energyLifetime"] = 21698620;
            doc["energyYearly"] = 1363005;
          
          String buf;
          serializeJson(doc, buf);
          
          ResponseStatus rs = e32ttl.sendMessage(buf);

          Remember you have a size limit on message size of the lora E32.

          The code is untested, but I think It can be usefully to understand.

          Tell me if It’s ok.

          Bye Renzo

        • #4414
          taurushappy

            HI !
            first, thanks for your help !
            I try this ,the code can work ,but I don’t know it have some problem in my test ,it only work one time,send Message one time ,then stoped!
            this is my test code :

             #include "Arduino.h"
            #include "LoRa_E32.h"
            
            #include <DHT.h>
            #include <ArduinoJson.h>
            
            #define DHTPIN 4
            #define DHTTYPE DHT11
            
            DHT dht(DHTPIN, DHTTYPE);
            
            DynamicJsonDocument doc(512);
            
            // ---------- esp8266 pins --------------
            //LoRa_E32 e32ttl(D2, D3, D5, D7, D6);
            //LoRa_E32 e32ttl(D2, D3); // Config without connect AUX and M0 M1
            
            //#include <SoftwareSerial.h>
            //SoftwareSerial mySerial(D2, D3); // RX, TX
            //LoRa_E32 e32ttl(&mySerial, D5, D7, D6);
            // -------------------------------------
            
            // ---------- Arduino pins --------------
            //LoRa_E32 e32ttl(2, 3, 5, 7, 6);
            LoRa_E32 e32ttl100(2, 3); // Config without connect AUX and M0 M1
            
            //#include <SoftwareSerial.h>
            //SoftwareSerial mySerial(2, 3); // RX, TX
            //LoRa_E32 e32ttl(&mySerial, 5, 7, 6);
            // -------------------------------------
            
            void setup() {
              
             Serial.begin(9600);
             delay(500);
            
             // Startup all pins and UART
             e32ttl100.begin();
             dht.begin();
            
             Serial.println("Hi, I'm going to send message!");
            
             // Send message
             ResponseStatus rs = e32ttl100.sendMessage("Hello, Taurus!");
             // Check If there is some problem of succesfully send
             Serial.println(rs.getResponseDescription());
            }
            
            int i = 0;
            
            void loop() {
            
             float h = dht.readHumidity();
             // Read temperature as Celsius (the default)
             float t = dht.readTemperature();
             // Read temperature as Fahrenheit (isFahrenheit = true)
             float f = dht.readTemperature(true);
            
             // Check if any reads failed and exit early (to try again).
             if (isnan(h) || isnan(t) || isnan(f)) {
              Serial.println(F("Failed to read from DHT sensor!"));
              return;
             }
            
             // Compute heat index in Fahrenheit (the default)
             float hif = dht.computeHeatIndex(f, h);
             // Compute heat index in Celsius (isFahreheit = false)
             float hic = dht.computeHeatIndex(t, h, false);
            
             Serial.print(F("Humidity: "));
             Serial.print(h);
             Serial.print(F("% Temperature: "));
             Serial.print(t);
             Serial.print(F("°C "));
             Serial.print(f);
             Serial.print(F("°F Heat index: "));
             Serial.print(hic);
             Serial.print(F("°C "));
             Serial.print(hif);
             Serial.println(F("°F"));
            
              
             
             delay(1000);
               
            
              doc["temperature"]=t;
              doc["humidity"]=h;
              String buf;
              serializeJson(doc,buf);
              ResponseStatus rs = e32ttl100.sendMessage(buf);
            
              
             Serial.println(rs.getResponseDescription());
            
             delay(1000);
            
            }
          • #4415
            Renzo Mischianti
            Keymaster

              Hi I check your sketch and seems quite ok.

              But I think you must add AUX pin or put a pull up resistor on It, with no AUX not work for me, but with aux I have a correct send.

              And Arduino Json have some problem on serialize on String

              #include "Arduino.h"
              #include "LoRa_E32.h"
              
              #include <DHT.h>
              #include <ArduinoJson.h>
              
              #define DHTPIN 4
              #define DHTTYPE DHT11
              int freeRame () {
              #ifdef ESP8266
              	return Esp.getFreeHeap();
              #else
              	extern int __heap_start, *__brkval;
              	int v;
              	return (int) &v - (__brkval == 0 ? (int) &__heap_start : (int) __brkval);
              #endif // ESP8266
              }
              
              DHT dht(DHTPIN, DHTTYPE);
              
              DynamicJsonDocument doc(512);
              
              // ---------- esp8266 pins --------------
              //LoRa_E32 e32ttl(D2, D3, D5, D7, D6);
              //LoRa_E32 e32ttl(D2, D3); // Config without connect AUX and M0 M1
              
              //#include <SoftwareSerial.h>
              //SoftwareSerial mySerial(D2, D3); // RX, TX
              //LoRa_E32 e32ttl(&mySerial, D5, D7, D6);
              // -------------------------------------
              
              // ---------- Arduino pins --------------
              //LoRa_E32 e32ttl(2, 3, 5, 7, 6);
              LoRa_E32 e32ttl100(4, 5, 3); // Config without connect AUX and M0 M1
              
              //#include <SoftwareSerial.h>
              //SoftwareSerial mySerial(2, 3); // RX, TX
              //LoRa_E32 e32ttl(&mySerial, 5, 7, 6);
              // -------------------------------------
              void printParameters(struct Configuration configuration) {
              	Serial.println("----------------------------------------");
              
              	Serial.print(F("HEAD BIN: "));  Serial.print(configuration.HEAD, BIN);Serial.print(" ");Serial.print(configuration.HEAD, DEC);Serial.print(" ");Serial.println(configuration.HEAD, HEX);
              	Serial.println(F(" "));
              	Serial.print(F("AddH BIN: "));  Serial.println(configuration.ADDH, BIN);
              	Serial.print(F("AddL BIN: "));  Serial.println(configuration.ADDL, BIN);
              	Serial.print(F("Chan BIN: "));  Serial.print(configuration.CHAN, DEC); Serial.print(" -> "); Serial.println(configuration.getChannelDescription());
              	Serial.println(F(" "));
              	Serial.print(F("SpeedParityBit BIN    : "));  Serial.print(configuration.SPED.uartParity, BIN);Serial.print(" -> "); Serial.println(configuration.SPED.getUARTParityDescription());
              	Serial.print(F("SpeedUARTDataRate BIN : "));  Serial.print(configuration.SPED.uartBaudRate, BIN);Serial.print(" -> "); Serial.println(configuration.SPED.getUARTBaudRate());
              	Serial.print(F("SpeedAirDataRate BIN  : "));  Serial.print(configuration.SPED.airDataRate, BIN);Serial.print(" -> "); Serial.println(configuration.SPED.getAirDataRate());
              
              	Serial.print(F("OptionTrans BIN       : "));  Serial.print(configuration.OPTION.fixedTransmission, BIN);Serial.print(" -> "); Serial.println(configuration.OPTION.getFixedTransmissionDescription());
              	Serial.print(F("OptionPullup BIN      : "));  Serial.print(configuration.OPTION.ioDriveMode, BIN);Serial.print(" -> "); Serial.println(configuration.OPTION.getIODroveModeDescription());
              	Serial.print(F("OptionWakeup BIN      : "));  Serial.print(configuration.OPTION.wirelessWakeupTime, BIN);Serial.print(" -> "); Serial.println(configuration.OPTION.getWirelessWakeUPTimeDescription());
              	Serial.print(F("OptionFEC BIN         : "));  Serial.print(configuration.OPTION.fec, BIN);Serial.print(" -> "); Serial.println(configuration.OPTION.getFECDescription());
              	Serial.print(F("OptionPower BIN       : "));  Serial.print(configuration.OPTION.transmissionPower, BIN);Serial.print(" -> "); Serial.println(configuration.OPTION.getTransmissionPowerDescription());
              
              	Serial.println("----------------------------------------");
              
              }
              
              void setup() {
              	Serial.begin(9600);
              	delay(500);
              
              	// Startup all pins and UART
              	e32ttl100.begin();
              	dht.begin();
              
              //		ResponseStructContainer c;
              //		c = e32ttl100.getConfiguration();
              //		struct Configuration configuration = *(Configuration*) c.data;
              //		printParameters(configuration);
              //
              //		configuration.ADDL = 0x01;
              //		configuration.ADDH = 0x00;
              //		configuration.CHAN = 0x04;
              //
              //		configuration.OPTION.fixedTransmission = FT_TRANSPARENT_TRANSMISSION;
              //		configuration.OPTION.wirelessWakeupTime = WAKE_UP_750;
              //
              //		    configuration.OPTION.fec = FEC_1_ON;
              //		    configuration.OPTION.ioDriveMode = IO_D_MODE_PUSH_PULLS_PULL_UPS;
              //		    configuration.OPTION.transmissionPower = POWER_20;
              //
              //		    configuration.SPED.airDataRate = AIR_DATA_RATE_010_24;
              //		    configuration.SPED.uartBaudRate = UART_BPS_9600;
              //		    configuration.SPED.uartParity = MODE_00_8N1;
              //
              //
              //		    e32ttl100.setConfiguration(configuration, WRITE_CFG_PWR_DWN_SAVE);
              //			printParameters(configuration);
              
              	Serial.println("Hi, I'm going to send message!");
              
              	Serial.println(freeRame());
              	// Send message
              	ResponseStatus rs = e32ttl100.sendMessage("Hello, Taurus!");
              	Serial.println(freeRame());
              	// Check If there is some problem of succesfully send
              	Serial.println(rs.getResponseDescription());
              }
              
              int i = 0;
              
              void loop() {
              	Serial.println(freeRame());
              	float h = dht.readHumidity();
              	// Read temperature as Celsius (the default)
              	float t = dht.readTemperature();
              	// Read temperature as Fahrenheit (isFahrenheit = true)
              	float f = dht.readTemperature(true);
              
              	// Check if any reads failed and exit early (to try again).
              	if (isnan(h) || isnan(t) || isnan(f)) {
              		Serial.println(F("Failed to read from DHT sensor!"));
              //		return;
              	}
              
              	// Compute heat index in Fahrenheit (the default)
              	float hif = dht.computeHeatIndex(f, h);
              	// Compute heat index in Celsius (isFahreheit = false)
              	float hic = dht.computeHeatIndex(t, h, false);
              	Serial.println(freeRame());
              	h = random(90);
              	t = random(40);
              	f = 1.0;
              	hif = 2.0;
              	hic = 2.0;
              
              	Serial.print(F("Humidity: "));
              	Serial.print(h);
              	Serial.print(F("% Temperature: "));
              	Serial.print(t);
              	Serial.print(F("°C "));
              	Serial.print(f);
              	Serial.print(F("°F Heat index: "));
              	Serial.print(hic);
              	Serial.print(F("°C "));
              	Serial.print(hif);
              	Serial.println(F("°F"));
              	Serial.println(freeRame());
              	delay(1000);
              
              	doc["temperature"] = t;
              	doc["humidity"] = h;
              	Serial.println(freeRame());
              
              	int size = measureJson(doc)+1;
              
              	char buf[size];
              	serializeJson(doc, buf, size);
              	Serial.println(buf);
              	Serial.println(measureJson(doc));
              	ResponseStatus rs = e32ttl100.sendMessage(buf, size);
              
              //	String buf;
              //	serializeJson(doc, buf);
              //	Serial.println(buf);
              //	Serial.println(buf.length());
              //	ResponseStatus rs = e32ttl100.sendMessage(buf);
              
              	Serial.println(freeRame());
              	Serial.println(rs.getResponseDescription());
              	Serial.println(freeRame());
              
              	delay(2000);
              
              }
              #include "Arduino.h"
              #include "LoRa_E32.h"
              #include <ArduinoJson.h>
              
              #define E32_TTL_100
              LoRa_E32 e32ttl(4, 5, 3); // Config without connect AUX and M0 M1
              
              //#include <SoftwareSerial.h>
              //SoftwareSerial mySerial(D2, D3); // RX, TX
              //E32_TTL e32ttl(&mySerial, D5, D7, D6);
              
              void printParameters(struct Configuration configuration);
              void printModuleInformation(struct ModuleInformation moduleInformation);
              //The setup function is called once at startup of the sketch
              void setup()
              {
              	Serial.begin(9600);
              	while (!Serial) {
              	    ; // wait for serial port to connect. Needed for native USB
                  }
              	delay(400);
              
              	e32ttl.begin();
              
              //			ResponseStructContainer c;
              //			c = e32ttl.getConfiguration();
              //			struct Configuration configuration = *(Configuration*) c.data;
              //			printParameters(configuration);
              //
              //			configuration.ADDL = 0x01;
              //			configuration.ADDH = 0x00;
              //			configuration.CHAN = 0x04;
              //
              //			configuration.OPTION.fixedTransmission = FT_TRANSPARENT_TRANSMISSION;
              //			configuration.OPTION.wirelessWakeupTime = WAKE_UP_750;
              //
              //			configuration.OPTION.fec = FEC_1_ON;
              //			configuration.OPTION.ioDriveMode = IO_D_MODE_PUSH_PULLS_PULL_UPS;
              //			configuration.OPTION.transmissionPower = POWER_20;
              //
              //			configuration.SPED.airDataRate = AIR_DATA_RATE_010_24;
              //			configuration.SPED.uartBaudRate = UART_BPS_9600;
              //			configuration.SPED.uartParity = MODE_00_8N1;
              //
              //
              //			e32ttl.setConfiguration(configuration, WRITE_CFG_PWR_DWN_SAVE);
              //			printParameters(configuration);
              
              //	ResponseContainer c;
              //	c = e32ttl.getConfiguration();
              //	Configuration configuration = *(Configuration*) c.data;
              //	Serial.println(configuration.SPED.getUARTBaudRate());
              //	Serial.println(c.status.getResponseDescription());
              //
              //	printParameters(configuration);
              //
              //	ResponseContainer cMi;
              //	cMi = e32ttl.getModuleInformation();
              //	ModuleInformation mi = *(ModuleInformation*)cMi.data;
              //
              //	Serial.println(cMi.status.getResponseDescription());
              //	Serial.println(cMi.status.code);
              //
              //	printModuleInformation(mi );
              //
              //	configuration.CHAN = configuration.CHAN-1;
              //	e32ttl.setConfiguration(configuration, WRITE_CFG_PWR_DWN_SAVE);
              //
              //	ResponseContainer cNext;
              //	cNext = e32ttl.getConfiguration();
              //	Configuration configurationNext = *(Configuration*) cNext.data;
              //	Serial.println(configurationNext.SPED.getUARTBaudRate());
              //	Serial.println(cNext.status.getResponseDescription());
              //	printParameters(configurationNext);
              
              }
              DynamicJsonDocument doc(512);
              
              // The loop function is called in an endless loop
              void loop()
              {
              	if (e32ttl.available()  > 1){
              //		struct Messaggione {
              //			char message[8];
              //			bool mitico;
              //		};
              //
              //		char type[5];
              //		ResponseContainer rs = e32ttl.receiveInitialMessage(sizeof(type));
              //		memcpy ( type, rs.data.c_str(), sizeof(type) );
              ////		ResponseContainer rs = e32ttl.receiveInitialMessage(5);
              ////		char type[5] = {rs.data.c_str()};
              //
              //		Serial.println("READ TYPE: ");
              //		Serial.println(rs.status.getResponseDescription());
              //		Serial.println(type);
              //
              //		ResponseStructContainer rsc = e32ttl.receiveMessage(sizeof(Messaggione));
              //		struct Messaggione messaggione = *(Messaggione*) rsc.data;
              
              		ResponseContainer rs = e32ttl.receiveMessage();
              		String message = rs.data;
              
              		Serial.println(rs.status.getResponseDescription());
              
              		Serial.println(message);
              		deserializeJson(doc, message);
              
              		Serial.print("humidity --> ");
              		Serial.println((float)doc["humidity"]);
              
              //		Serial.println(messaggione.message);
              //		Serial.println(messaggione.mitico);
              
              	}
              }
              
              //void printParameters(struct Configuration configuration) {
              //	Serial.println("----------------------------------------");
              //
              //	Serial.print(F("HEAD BIN: "));  Serial.print(configuration.HEAD, BIN);Serial.print(" ");Serial.print(configuration.HEAD, DEC);Serial.print(" ");Serial.println(configuration.HEAD, HEX);
              //	Serial.println(F(" "));
              //	Serial.print(F("AddH BIN: "));  Serial.println(configuration.ADDH, BIN);
              //	Serial.print(F("AddL BIN: "));  Serial.println(configuration.ADDL, BIN);
              //	Serial.print(F("Chan BIN: "));  Serial.print(configuration.CHAN, HEX); Serial.print(" -> "); Serial.println();
              //	Serial.println(F(" "));
              //	Serial.print(F("SpeedParityBit BIN    : "));  Serial.print(configuration.SPED.uartParity, BIN);Serial.print(" -> "); Serial.println();
              //	Serial.print(F("SpeedUARTDataRate BIN : "));  Serial.print(configuration.SPED.uartBaudRate, BIN);Serial.print(" -> "); Serial.println();
              //	Serial.print(F("SpeedAirDataRate BIN  : "));  Serial.print(configuration.SPED.airDataRate, BIN);Serial.print(" -> "); Serial.println();
              //
              //	Serial.print(F("OptionTrans BIN       : "));  Serial.print(configuration.OPTION.fixedTransmission, BIN);Serial.print(" -> "); Serial.println();
              //	Serial.print(F("OptionPullup BIN      : "));  Serial.print(configuration.OPTION.ioDriveMode, BIN);Serial.print(" -> "); Serial.println();
              //	Serial.print(F("OptionWakeup BIN      : "));  Serial.print(configuration.OPTION.wirelessWakeupTime, BIN);Serial.print(" -> "); Serial.println();
              //	Serial.print(F("OptionFEC BIN         : "));  Serial.print(configuration.OPTION.fec, BIN);Serial.print(" -> "); Serial.println();
              //	Serial.print(F("OptionPower BIN       : "));  Serial.print(configuration.OPTION.transmissionPower, BIN);Serial.print(" -> "); Serial.println();
              //
              //	Serial.println("----------------------------------------");
              //
              //}
              void printParameters(struct Configuration configuration) {
              	Serial.println("----------------------------------------");
              
              	Serial.print(F("HEAD BIN: "));  Serial.print(configuration.HEAD, BIN);Serial.print(" ");Serial.print(configuration.HEAD, DEC);Serial.print(" ");Serial.println(configuration.HEAD, HEX);
              	Serial.println(F(" "));
              	Serial.print(F("AddH BIN: "));  Serial.println(configuration.ADDH, BIN);
              	Serial.print(F("AddL BIN: "));  Serial.println(configuration.ADDL, BIN);
              	Serial.print(F("Chan BIN: "));  Serial.print(configuration.CHAN, DEC); Serial.print(" -> "); Serial.println(configuration.getChannelDescription());
              	Serial.println(F(" "));
              	Serial.print(F("SpeedParityBit BIN    : "));  Serial.print(configuration.SPED.uartParity, BIN);Serial.print(" -> "); Serial.println(configuration.SPED.getUARTParityDescription());
              	Serial.print(F("SpeedUARTDataRate BIN : "));  Serial.print(configuration.SPED.uartBaudRate, BIN);Serial.print(" -> "); Serial.println(configuration.SPED.getUARTBaudRate());
              	Serial.print(F("SpeedAirDataRate BIN  : "));  Serial.print(configuration.SPED.airDataRate, BIN);Serial.print(" -> "); Serial.println(configuration.SPED.getAirDataRate());
              
              	Serial.print(F("OptionTrans BIN       : "));  Serial.print(configuration.OPTION.fixedTransmission, BIN);Serial.print(" -> "); Serial.println(configuration.OPTION.getFixedTransmissionDescription());
              	Serial.print(F("OptionPullup BIN      : "));  Serial.print(configuration.OPTION.ioDriveMode, BIN);Serial.print(" -> "); Serial.println(configuration.OPTION.getIODroveModeDescription());
              	Serial.print(F("OptionWakeup BIN      : "));  Serial.print(configuration.OPTION.wirelessWakeupTime, BIN);Serial.print(" -> "); Serial.println(configuration.OPTION.getWirelessWakeUPTimeDescription());
              	Serial.print(F("OptionFEC BIN         : "));  Serial.print(configuration.OPTION.fec, BIN);Serial.print(" -> "); Serial.println(configuration.OPTION.getFECDescription());
              	Serial.print(F("OptionPower BIN       : "));  Serial.print(configuration.OPTION.transmissionPower, BIN);Serial.print(" -> "); Serial.println(configuration.OPTION.getTransmissionPowerDescription());
              
              	Serial.println("----------------------------------------");
              
              }
              void printModuleInformation(struct ModuleInformation moduleInformation) {
              	Serial.println("----------------------------------------");
              	Serial.print(F("HEAD BIN: "));  Serial.print(moduleInformation.HEAD, BIN);Serial.print(" ");Serial.print(moduleInformation.HEAD, DEC);Serial.print(" ");Serial.println(moduleInformation.HEAD, HEX);
              
              	Serial.print(F("Model no.: "));  Serial.println(moduleInformation.model, HEX);
              	Serial.print(F("Version  : "));  Serial.println(moduleInformation.version, HEX);
              	Serial.print(F("Features : "));  Serial.println(moduleInformation.features, HEX);
              	Serial.println("----------------------------------------");
              
              }
          Viewing 3 reply threads
          • You must be logged in to reply to this topic.
          Exit mobile version