Compare commits

..

3 Commits

Author SHA1 Message Date
Flavien Haas
13f9e7517b make the code compatible with UNOs 2018-06-22 15:47:22 +02:00
Flavien Haas
e619cc16a3 FINAL 2018-06-22 15:35:13 +02:00
Flavien Haas
44eb2060f5
Merge pull request #5 from flavienhaas/jdmassard-patch-1
Update name
2018-06-20 14:18:49 +02:00
3 changed files with 58 additions and 41 deletions

View File

@ -13,6 +13,7 @@ void setup() {
} }
void loop() { void loop() {
//SerialUSB.println("Frame received");
int packetSize = thisLoRa.parsePacket(); int packetSize = thisLoRa.parsePacket();
if (packetSize > 0) if (packetSize > 0)
{ {

View File

@ -3,17 +3,19 @@
#include <CModemLoRa.h> #include <CModemLoRa.h>
#include <CProtocol12Bytes.h> #include <CProtocol12Bytes.h>
//#define Serial SerialUSB
CProtocol12Bytes protocol; CProtocol12Bytes protocol;
CModemLoRa thisLoRa; CModemLoRa thisLoRa;
uint16_t incrTS=0x0000; uint16_t incrTS=0x0000;
void setup() { void setup() {
SerialUSB.begin(9600); Serial.begin(9600);
SerialUSB.println("LoRa Sender"); Serial.println("LoRa Sender");
thisLoRa.begin(); thisLoRa.begin();
protocol.codeFrame(0x0B,0x00,0x0000,0x00FF,0x5BA2,0x0D4C,0x9299); // Name : LORA-TEST1 or 0x929A for *2 protocol.codeFrame(0x0A,0x00,0x0000,0x00FF,0x5BA2,0x0D4C,0x929A); // Name : LORA-TEST1 or 0x929A for *2
LoRa.beginPacket(); LoRa.beginPacket();
LoRa.write((uint8_t*)&protocol, 12); // Send name LoRa.write((uint8_t*)&protocol, 12); // Send name
@ -28,27 +30,27 @@ void loop()
incrTS = protocol.getTimestampMessage()+1; incrTS = protocol.getTimestampMessage()+1;
protocol.setTimestampMessage(incrTS); protocol.setTimestampMessage(incrTS);
SerialUSB.print("ID = "); Serial.print("ID = ");
SerialUSB.print(protocol.getStationId(),HEX); Serial.print(protocol.getStationId(),HEX);
SerialUSB.println(protocol.getGatewayId(),HEX); Serial.println(protocol.getGatewayId(),HEX);
SerialUSB.print("TS = "); Serial.print("TS = ");
SerialUSB.println(protocol.getTimestampMessage(),HEX); Serial.println(protocol.getTimestampMessage(),HEX);
SerialUSB.print("DT = "); Serial.print("DT = ");
SerialUSB.println(protocol.getDataType(),HEX); Serial.println(protocol.getDataType(),HEX);
SerialUSB.print("D1 = "); Serial.print("D1 = ");
SerialUSB.println(protocol.getDataOne(),HEX); Serial.println(protocol.getDataOne(),HEX);
SerialUSB.print("D2 = "); Serial.print("D2 = ");
SerialUSB.println(protocol.getDataTwo(),HEX); Serial.println(protocol.getDataTwo(),HEX);
SerialUSB.print("D3 = "); Serial.print("D3 = ");
SerialUSB.println(protocol.getDataThree(),HEX); Serial.println(protocol.getDataThree(),HEX);
for(int i=0; i<3; i++){ for(int i=0; i<3; i++){
SerialUSB.println("Frame sent !"); Serial.println("Frame sent !");
LoRa.beginPacket(); LoRa.beginPacket();
LoRa.write((uint8_t*)&protocol, 12); LoRa.write((uint8_t*)&protocol, 12);
LoRa.endPacket(); LoRa.endPacket();
SerialUSB.println("-----------------------------"); Serial.println("-----------------------------");
delay(4000); delay(4000);
} }
delay(10000); delay(10000);

View File

@ -16,12 +16,7 @@ CProtocol12Bytes protocol; // create object to
//File webFile; // variable for the file containing the webpage //File webFile; // variable for the file containing the webpage
String postData; String postData;
String tsarray; String row;
String oldpostData;
//Pour comparer les timestamps
uint16_t tstamp_old;
uint16_t tstamp_now;
byte mac[] = {0xFA, 0xE3, 0x40, 0xEF, 0xFF, 0xFD}; // set the mac address byte mac[] = {0xFA, 0xE3, 0x40, 0xEF, 0xFF, 0xFD}; // set the mac address
//IPAddress ip(192, 1, 1, 150); // set the IP address for the ethernet shield, overwise the librairy use DHCP //IPAddress ip(192, 1, 1, 150); // set the IP address for the ethernet shield, overwise the librairy use DHCP
@ -70,8 +65,8 @@ void loop() {
if(protocol.getTimestampMessage() == saveIDandTS[numCase]) if(protocol.getTimestampMessage() == saveIDandTS[numCase])
{} {}
else{ else{
tstamp_now = protocol.getTimestampMessage();
saveIDandTS[numCase] = protocol.getTimestampMessage(); saveIDandTS[numCase] = protocol.getTimestampMessage();
row += "<tr><td>" + String(protocol.getStationId())+"</td><td>"+String(protocol.getGatewayId())+"</td><td>"+String(protocol.getTimestampMessage())+"</td><td>" + String(protocol.getDataType())+"</td><td>" + String(protocol.getDataOne())+"</td><td>" + String(protocol.getDataTwo())+"</td><td>" + String(protocol.getDataThree())+"</td></tr>";
//post to server //post to server
EthernetClient postClient; EthernetClient postClient;
postData = "ID="+String(protocol.getStationId())+"&IDp="+String(protocol.getGatewayId())+"&TS="+String(protocol.getTimestampMessage())+"&DT="+String(protocol.getDataType())+"&D1="+String(protocol.getDataOne())+"&D2="+String(protocol.getDataTwo())+"&D3="+String(protocol.getDataThree()); postData = "ID="+String(protocol.getStationId())+"&IDp="+String(protocol.getGatewayId())+"&TS="+String(protocol.getTimestampMessage())+"&DT="+String(protocol.getDataType())+"&D1="+String(protocol.getDataOne())+"&D2="+String(protocol.getDataTwo())+"&D3="+String(protocol.getDataThree());
@ -86,12 +81,28 @@ void loop() {
postClient.print(postData); // to send the concatenated frame postClient.print(postData); // to send the concatenated frame
SerialUSB.println("Post to server sent"); // to display the sent frame SerialUSB.println("Post to server sent"); // to display the sent frame
SerialUSB.println(postData); SerialUSB.println(postData);
delay(4000); delay(10);
} }
else{ else{
SerialUSB.println("Post failed"); SerialUSB.println("Post failed");
SerialUSB.println(" New attempt to POST");
if (postClient.connect("btslimayrac.ovh", 80)){
postClient.print("POST /weather/formulaire/formulaireCollecteLORA.php HTTP/1.1\n");
postClient.print("Host: btslimayrac.ovh\n"); // specifies the Internet host and port number of the resource being requested
postClient.print("Connection: close\n"); // header option to signal that the connection will be closed after completion of the response
postClient.print("Content-Type: application/x-www-form-urlencoded\n"); // values are encoded in key-value separated by '&', with a '=' between the key and the value
postClient.print("Content-Length: "); // indicates the size of the entity-body, in decimal number of bytes
postClient.print(postData.length()); // to retrieve the size and send it
postClient.print("\n\n");
postClient.print(postData); // to send the concatenated frame
SerialUSB.println("Post to server sent"); // to display the sent frame
SerialUSB.println(postData);
delay(10);
} }
delay(100); else{
SerialUSB.println("Post miserably failed, can't connect to btslimayrac.ovh, check your network's settings");
}//end of secnd else
}//end of first else
SerialUSB.println("New frame recieved : "); SerialUSB.println("New frame recieved : ");
SerialUSB.print("ID = "); SerialUSB.print("ID = ");
SerialUSB.print(protocol.getStationId(),HEX); SerialUSB.print(protocol.getStationId(),HEX);
@ -106,6 +117,8 @@ void loop() {
SerialUSB.println(protocol.getDataTwo(),HEX); SerialUSB.println(protocol.getDataTwo(),HEX);
SerialUSB.print("D3 = "); SerialUSB.print("D3 = ");
SerialUSB.println(protocol.getDataThree(),HEX); SerialUSB.println(protocol.getDataThree(),HEX);
SerialUSB.print("You can see the web interface at :");
SerialUSB.println(Ethernet.localIP());
} }
}//if (packetSize > 0) }//if (packetSize > 0)
@ -127,7 +140,7 @@ void loop() {
serverGateway.println("<!DOCTYPE HTML>"); serverGateway.println("<!DOCTYPE HTML>");
serverGateway.println("<html>"); serverGateway.println("<html>");
serverGateway.print("<head>"); serverGateway.print("<head>");
serverGateway.print("<meta http-equiv=\"refresh\" content=\"30\">"); serverGateway.print("<meta http-equiv=\"refresh\" content=\"15\">");
serverGateway.print("<meta charset=\"utf-8\" />"); serverGateway.print("<meta charset=\"utf-8\" />");
serverGateway.print("<link href=\"data:image/x-icon;base64,AAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAQAABILAAASCwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAZWZmAHV2dgKNjo4Rent7A3JzcwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADhIrAL+/wgCnqKw3zMvMvayoqD0AAAACFRMaAMwAAAAAAAAAAAAAAAAAAAAAAAAA0stPANLLTwLTzFAi08xQPNPMUD3Sy0g6ycWOiq6+tP00gorYHHV1mLO2UDfd01AL08xQAM3ITAAAAAAA0stPANLLTgLTzFBm08xQ3tPMUPTTzFD108xQ9NTKTvZfr4X+ALjJ/zypl/3IxFDw1M1QptPMTxnTzE8AAAAAANPMUADTzFAt08xQ5dPMUP/TzFD/08xQ/9PMUP/UzE//or1g/2O6m/+sx8L/zch6/9LLTv/TzFB80cxUANnNRgDTzFAA08xQTdPMUPvTzFD/08xQ/9PMUP/TzFD/08xQ/9XMTv/RyGH/zMie/8nEbf/TzE//yslZsk+l1AoqmvkK08xQANPMUCvTzFDj08xQ/9PMUP/TzFD/08xQ/9PMUP/TzFD/0stQ/9DJUP/UzE7/1MxP/8HGYogjl/w1KJj2KtLMTwDSy04C08xQYtPMUOLTzFD/08xQ/9PMUP/TzFD/08xQ/9PMUP/UzFD/yc1Z/4TPk/8tv+SjKJf8IymZ9hsAAAAA08xPANPMUgDTzFBS08xQ9dPMUP/TzFD/08xQ/9PMUP/TzFD/1cxO/27Rpf8G1vv/Bs3+8h2p+EwnlPUgAAAAAAAAAADSy1AA0stPCtPMUHPTzFCi08xQ29PMUP/TzFD/1sxO/7/NYf8r1Nz/ANf//wbO/vIZrfhEJZP2JgAAAAAAAAAAAAAAANHKTwDRyk4At6ozANPMUD7UzE+608xQ47HJbfJH0cX/A9b+/wTS/voOwfuUL5z1Jiya9RUAAAAAAAAAAAAAAAAAAAAAAAAAANLLTwA6nuIAW6jDKXiwqkg+rthcC739rgvD/LkUufpoLJ72KTKd9jkxnfYPAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGpP8AB+V+hMblP0NKJf4FiuU9TAnlPUoKZf1OyeY9RonmPYSLJv2CwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAI5b2ACSW9gkklvUTH5X2ASKW9h4ml/UGKJn1AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//8AAP4/AAD+HwAAwAcAAIADAACAAwAAgAAAAIAAAACAAAAA4AAAAOAAAADwAAAA/gAAAP4AAAD/gwAA//8AAA==\" rel=\"icon\" type=\"image/x-icon\" />"); serverGateway.print("<link href=\"data:image/x-icon;base64,AAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAQAABILAAASCwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAZWZmAHV2dgKNjo4Rent7A3JzcwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADhIrAL+/wgCnqKw3zMvMvayoqD0AAAACFRMaAMwAAAAAAAAAAAAAAAAAAAAAAAAA0stPANLLTwLTzFAi08xQPNPMUD3Sy0g6ycWOiq6+tP00gorYHHV1mLO2UDfd01AL08xQAM3ITAAAAAAA0stPANLLTgLTzFBm08xQ3tPMUPTTzFD108xQ9NTKTvZfr4X+ALjJ/zypl/3IxFDw1M1QptPMTxnTzE8AAAAAANPMUADTzFAt08xQ5dPMUP/TzFD/08xQ/9PMUP/UzE//or1g/2O6m/+sx8L/zch6/9LLTv/TzFB80cxUANnNRgDTzFAA08xQTdPMUPvTzFD/08xQ/9PMUP/TzFD/08xQ/9XMTv/RyGH/zMie/8nEbf/TzE//yslZsk+l1AoqmvkK08xQANPMUCvTzFDj08xQ/9PMUP/TzFD/08xQ/9PMUP/TzFD/0stQ/9DJUP/UzE7/1MxP/8HGYogjl/w1KJj2KtLMTwDSy04C08xQYtPMUOLTzFD/08xQ/9PMUP/TzFD/08xQ/9PMUP/UzFD/yc1Z/4TPk/8tv+SjKJf8IymZ9hsAAAAA08xPANPMUgDTzFBS08xQ9dPMUP/TzFD/08xQ/9PMUP/TzFD/1cxO/27Rpf8G1vv/Bs3+8h2p+EwnlPUgAAAAAAAAAADSy1AA0stPCtPMUHPTzFCi08xQ29PMUP/TzFD/1sxO/7/NYf8r1Nz/ANf//wbO/vIZrfhEJZP2JgAAAAAAAAAAAAAAANHKTwDRyk4At6ozANPMUD7UzE+608xQ47HJbfJH0cX/A9b+/wTS/voOwfuUL5z1Jiya9RUAAAAAAAAAAAAAAAAAAAAAAAAAANLLTwA6nuIAW6jDKXiwqkg+rthcC739rgvD/LkUufpoLJ72KTKd9jkxnfYPAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGpP8AB+V+hMblP0NKJf4FiuU9TAnlPUoKZf1OyeY9RonmPYSLJv2CwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAI5b2ACSW9gkklvUTH5X2ASKW9h4ml/UGKJn1AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//8AAP4/AAD+HwAAwAcAAIADAACAAwAAgAAAAIAAAACAAAAA4AAAAOAAAADwAAAA/gAAAP4AAAD/gwAA//8AAA==\" rel=\"icon\" type=\"image/x-icon\" />");
serverGateway.print("</head>"); serverGateway.print("</head>");
@ -135,10 +148,11 @@ void loop() {
serverGateway.println("html{font-family:\"Trebuchet MS\";text-align:center;background-color:white;color:black}"); serverGateway.println("html{font-family:\"Trebuchet MS\";text-align:center;background-color:white;color:black}");
serverGateway.println("h1{text-align:center;color:red;font-size:72px}"); serverGateway.println("h1{text-align:center;color:red;font-size:72px}");
serverGateway.println("h2{text-align:center;color:red;font-size:36px}"); serverGateway.println("h2{text-align:center;color:red;font-size:36px}");
serverGateway.println("p{text-align:center;font-size:36px}"); serverGateway.println("p{text-align:center;font-size:25px}");
serverGateway.println("table,th,td{border:2px outset black;font-size:56px}"); serverGateway.println("table,th,td{border:2px outset black;font-size:25px}");
serverGateway.println("</style>"); serverGateway.println("</style>");
serverGateway.println("<h1>IHM Web Passerelle</h1>"); serverGateway.println("<h1>IHM Web Passerelle</h1>");
serverGateway.println("<p>Dernière trame envoyée</p>");
serverGateway.println("<p>ID station : "); serverGateway.println("<p>ID station : ");
serverGateway.print(protocol.getStationId()); serverGateway.print(protocol.getStationId());
serverGateway.print("<br />"); serverGateway.print("<br />");
@ -160,19 +174,19 @@ void loop() {
serverGateway.println("Données 3 :"); serverGateway.println("Données 3 :");
serverGateway.print(protocol.getDataThree()); serverGateway.print(protocol.getDataThree());
serverGateway.print("</p>"); serverGateway.print("</p>");
serverGateway.print("<br /> <br /> <br /> <br />"); serverGateway.print("<br/><br/>");
serverGateway.print("<h2>20 dernières trames reçues :</h2>"); serverGateway.print("<h2>Historique des dernières trames envoyées :</h2>");
serverGateway.print("<table style=\"width:100%\">"); serverGateway.print("<table style=\"width:100%\">");
serverGateway.print("<tr>"); serverGateway.print("<tr>");
serverGateway.print("<th>ID</th>"); serverGateway.print("<th>Identifiant station</th>");
serverGateway.print("<th>IDp</th>"); serverGateway.print("<th>Identifiant passerelle</th>");
serverGateway.print("<th>TS</th>"); serverGateway.print("<th>TimeStamp</th>");
serverGateway.print("<th>DT</th>"); serverGateway.print("<th>Type de données</th>");
serverGateway.print("<th>D1</th>"); serverGateway.print("<th>Donnée 1</th>");
serverGateway.print("<th>D2</th>"); serverGateway.print("<th>Donnée 2</th>");
serverGateway.print("<th>D3</th>"); serverGateway.print("<th>Donnée 3</th>");
serverGateway.print("</tr>"); serverGateway.print("</tr>");
//serverGateway.print(tsarray); serverGateway.print(row);
serverGateway.print("</table>"); serverGateway.print("</table>");
serverGateway.println("</html>"); serverGateway.println("</html>");
break; break;