Closed taurushappy closed 4 years ago
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
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"
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);
}
------------------ 原始邮件 ------------------ 发件人: "Renzo Mischianti"<notifications@github.com>; 发送时间: 2019年12月16日(星期一) 下午5:26 收件人: "xreef/LoRa_E32_Series_Library"<LoRa_E32_Series_Library@noreply.github.com>; 抄送: "AJ-AJ"<564509167@qq.com>;"Author"<author@noreply.github.com>; 主题: Re: [xreef/LoRa_E32_Series_Library] How to Send Message use JSON Format ? (#1)
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
— You are receiving this because you authored the thread. Reply to this email directly, view it on GitHub, or unsubscribe.
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("----------------------------------------");
}
I tested and works correctly, I close issue but I wait feedback. Thanks and bye Renzo
Thanks your help solve the problem with send message use json ! I am a Chinese student,and I want to know :
Hi taurushappy, Why don't you want to use 4.7k resistors? You can try with similar different value, but datasheet advise 4.7k. The price isn't relevant, I don't sell the shield, I give the possibility to buy from productor of PCB the PCB with my schema. I add the link here on github, but It exist already on my site. Bye Renzo
Thanks ! If I want to make data terminal unit product in lot project , i couldn't use breadboard , it is too large! so I need small and convenience pcb instead !
---Original--- From: "Renzo Mischianti"<notifications@github.com> Date: Mon, Feb 10, 2020 14:56 PM To: "xreef/LoRa_E32_Series_Library"<LoRa_E32_Series_Library@noreply.github.com>; Cc: "taurushappy"<564509167@qq.com>;"Author"<author@noreply.github.com>; Subject: Re: [xreef/LoRa_E32_Series_Library] How to Send Message use JSON Format ? (#1)
Hi taurushappy, Why don't you want to use 4.7k resistors? You can try with similar different value, but datasheet advise 4.7k. The price isn't relevant, I don't sell the shield, I give the possibility to buy from productor of PCB the PCB with my schema. I add the link here on github, but It exist already on my site. Bye Renzo
— You are receiving this because you authored the thread. Reply to this email directly, view it on GitHub, or unsubscribe.
Ok, if you need some help for your project ask me. Bye Renzo
How to Send Message use JSON Format ? Hello , Can you help me ? How to solve this Question ?