Salut à tous !
Pour un projet de terminale sur une ruche intelligente, nous avons besoin de transmettre des données de la ruche à un serveur qui va ensuite traiter les informations.
Nous devons utiliser le shield GPRS v1.2 de Seeed Studio mis à disposition par le lycée. Voici notre problème : comment peut-on faire une requête HTTP POST
avec ce shield ?
En fait, sur le wiki du fabricant, il propose un code mais uniquement pour faire une requête GET
. Il nous faudrait alors pouvoir faire une requête complète avec nos arguments. Nous avons essayé le code suivant mais il ne fonctionne pas.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 | #include <SoftwareSerial.h> #include <String.h> String pwd = "0000", host = "ruchepi.pythonanywhere.com"; SoftwareSerial GSM(7, 8); void setup() { GSM.begin(19200); Serial.begin(19200); delay(500); GSM.println("AT+CPIN=\"" + pwd + "\""); delay(1000); ShowSerialData(); GSM.println("AT+CIPMUX=0"); GSM.println("AT+CIPMODE=0"); GSM.println("AT+CIPSHUT"); } void loop() { GSM.println("AT+CIPSTART=TCP," + host + ",80"); delay(10000); ShowSerialData(); GSM.println("AT+CIPSEND"); GSM.print("POST /api/ruches/1 HTTP/1.1\r\n"); GSM.println("Host: " + host + "\r\n"); GSM.print("Connection: close\r\n\r\n"); delay(10000); ShowSerialData(); GSM.println("AT+CIPCLOSE"); GSM.println("AT+CIPSHUT"); delay(10000); ShowSerialData(); } void ShowSerialData() { while(GSM.available() != 0) Serial.write(GSM.read()); } |
Le shield ne nous renvoie pas d'erreurs précises. Savez-vous pourquoi ce code ne fonctionne pas ? Quelqu'un a-t-il déjà essayé de faire une telle requête ?
Merci d'avance et bonne journée.