Étape 2: Code
Il y a quelques choses vous ont ajoutera des informations spécifiques au code pour qu’il fonctionne correctement. Le nom de votre wifi et mot de passe et l’id de périphérique et clé de votre nuage.
#include
#include #include #include #include #include #define WIFI_AP "" #define WIFI_PASSWORD "" #define WIFI_AUTH LWIFI_WPA / / le choix entre LWIFI_OPEN, LWIFI_WPA ou LWIFI_WEP. #define par 50 #define PAR1 3 #define DEVICEID "" / / entrée votre deviceId #define DEVICEKEY "" / / entrée votre deviceKey #define pConfig_site_url « api.mediatek.com »
C LWiFiClient ; unsigned int CCF ; unsigned int CRTL ; unsigned int rtc1 ; unsigned int lrtc1 ; char de port [4] = {0} ; char connection_info [21] = {0} ; char d’ip [21] = {0} ; portnum int ; int val = 0 ; String tcpdata = String(DEVICEID) + «, » + String(DEVICEKEY) + «, 0 » ; String upload_led ; String tcpcmd_led_on = « LED_Controller, 1 » ; String tcpcmd_led_off = « LED_Controller, 0 » ; String tcpcmd_blue_on = « LED_BlueControl, 1 » ; String tcpcmd_blue_off = « LED_BlueControl, 0 » ; String tcpcmd_green_on = « LED_GreenControl, 1 » ; String tcpcmd_green_off = « LED_GreenControl, 0 » ;
LWiFiClient c2 ; HttpClient http(c2) ;
void setup() {LTask.begin() ; LWiFi.begin() ; Serial.Begin(115200) ; while (!. Delay(1000) série) ; / * Commentaire sur cette ligne lors de la série n’est pas présent, c’est à dire. exécuter cette démo sans se connecter au PC * /
Serial.println (« Connecting to AP ») ; tandis que (0 == LWiFi.connect (WIFI_AP, LWiFiLoginInfo (WIFI_AUTH, WIFI_PASSWORD))) {delay(1000);} Serial.println ("appel de connexion") ;
tandis que (! c2.connect (pConfig_site_url, 80)) {Serial.println ("re-connexion au site Web"); delay(1000);} delay(100) ;
pinMode (13, sortie) ; pinMode (sortie 12,) ; pinMode (sortie 11) ; getconnectInfo() ; connectTCP() ; }
void getconnectInfo() {//calling RESTful API pour obtenir c2.print de connexion socket TCP (« GET /mcs/v2/devices / "); c2.print(DEVICEID) ; c2.println ("/connections.csv HTTP/1.1"); c2.print (" hôte: ") ; C2.println(SITE_URL) ; C2.Print ("deviceKey:") ; C2.println(DEVICEKEY) ; C2.println ("Connection : close") ; C2.println() ; Delay(500) ;
int errorcount = 0 ; tandis que (! c2.available()) {Serial.println ("en attente de réponse HTTP:") ; Serial.println(ErrorCount) ; ErrorCount += 1 ; Si (errorcount > 10) {c2.stop() ; return;} delay(100) ; } int err = http.skipResponseHeaders() ;
int bodyLen = http.contentLength() ; Serial.Print ("contenu longueur est:") ; Serial.println(bodyLen) ; Serial.println() ; char c ; int ipcount = 0 ; int count = 0 ; séparateur d’int = 0 ; tout en (c2) {int v = c2.read() ; if (v! = -1) {c = v ; Serial.Print(c) ; connection_info [ipcount] = c ; séparateur de if(c==',') = ipcount ; ipcount ++ ; } else {Serial.println ("pas plus de contenu, déconnecter"); c2.stop() ;
}} Serial.print ("les infos de connexion:") ; Serial.println(connection_info) ; int i ; pour (i = 0; i
} //getconnectInfo
void uploadstatus() {//calling API RESTful Télécharger datapoint dans les pays membres au statut de rapport LED Serial.println ("connexion appelante") ; LWiFiClient c2 ;
tandis que (! c2.connect (pConfig_site_url, 80)) {Serial.println ("re-connexion au site Web"); delay(1000);} delay(100) ; if(digitalRead(13)==1) upload_led = « LED_Display,, 1 » ; else upload_led = « LED_Display,, 0 » ; int thislength = upload_led.length() ; HttpClient http(c2) ; C2.Print ("POST /mcs/v2/devices /") ; C2.Print(DEVICEID) ; C2.println ("/datapoints.csv HTTP/1.1") ; C2.Print ("hôte:") ; C2.println(SITE_URL) ; C2.Print ("deviceKey:") ; C2.println(DEVICEKEY) ; C2.Print ("Content-Length:") ; C2.println(thislength) ; C2.println ("Content-Type : text/csv") ; C2.println ("Connection : close") ; C2.println() ; C2.println(upload_led) ; Delay(500) ;
int errorcount = 0 ; tandis que (! c2.available()) {Serial.print ("en attente de réponse HTTP:") ; Serial.println(ErrorCount) ; ErrorCount += 1 ; Si (errorcount > 10) {c2.stop() ; return;} delay(100) ; } int err = http.skipResponseHeaders() ;
int bodyLen = http.contentLength() ; Serial.Print ("contenu longueur est:") ; Serial.println(bodyLen) ; Serial.println() ; tout en (c2) {int v = c2.read() ; if (v! = -1) {Serial.print(char(v));} else {Serial.println ("pas plus de contenu, déconnecter"); c2.stop() ;
} } }
void connectTCP() {//establish connexion TCP avec le serveur TCP avec désigné IP et le Port des c.stop() ; Serial.println (« Connecting to TCP ») ; Serial.println(IP) ; Serial.println(portnum) ; tandis que (0 == c.connect (ip, portnum)) {Serial.println ("re-connexion TCP"); delay(1000);} Serial.println ("envoyer TCP connect") ; c.println(tcpdata) ; c.println() ; Serial.println ("en attente de réponse TCP:");} connectTCP
void heartBeat() {Serial.println ("envoi TCP heartBeat"); c.println(tcpdata) ; c.println();} //heartBeat
conduit //Red void loop() {//Check pour commande de socket TCP de MCS Server String tcpcmd = ""; tout en (c.available()) {int v = c.read() ; if (v! = -1) {Serial.print((char)v) ; tcpcmd += (char) v; si (tcpcmd.substring(40).equals(tcpcmd_led_on)) {digitalWrite (13, HIGH) ; Serial.Print ("Switch LED sur") ; tcpcmd = "" ; } else if(tcpcmd.substring(40).equals(tcpcmd_led_off)) {digitalWrite (13, faible) ; Serial.Print ("éteindre LED") ; tcpcmd = "" ; } else if(tcpcmd.substring(40).equals(tcpcmd_blue_on)) {digitalWrite (12, HIGH) ; Serial.Print ("Switch LED sur") ; tcpcmd = "" ; } else if(tcpcmd.substring(40).equals(tcpcmd_blue_off)) {digitalWrite (12, faible) ; Serial.Print ("éteindre LED") ; tcpcmd = "" ; } else if(tcpcmd.substring(40).equals(tcpcmd_green_on)) {digitalWrite (11, haute) ; Serial.Print ("Switch LED sur") ; tcpcmd = "" ; } else if(tcpcmd.substring(40).equals(tcpcmd_green_off)) {digitalWrite (11, faible) ; Serial.Print ("éteindre LED") ; tcpcmd = "" ; } } }
LDateTime.getRtc(&rtc); if ((rtc - lrtc) >= per) { heartBeat(); lrtc = rtc; } //Check for report datapoint status interval LDateTime.getRtc(&rtc1); if ((rtc1 - lrtc1) >= per1) { uploadstatus(); lrtc1 = rtc1; } }