ממשיכים להגיע אליכם עד הבית!
משלוח חינם

עבודה עם שרת מרוחק

ערכה: קורס ערכת למידה IOT

פעמים רבות נרצה לחבר את הארדואינו שלנו אל שרת מרוחק.

חיבור שכזה מאפשר לנו לשלוט מרחוק במכשיר שלנו, אך דורש חיבור של WIFI חיצוני למכשיר שדרכו ניתן יהיה להתחבר אל האינטרנט

 

נגדיר את הספריות שאיתן נעבוד:

    
			#include <ESP8266WiFi.h>
            #include <WiFiClient.h>
            #include <WiFiUdp.h>
            
            #include <ESP8266HTTPClient.h>
  

נגדיר את נתוני הרשת המקומית

SSID - שם הרשת

PSWD - הסיסמה לרשת (אם נדרש)

    
		const char* ssid = "Kinneret College";
        const char* pswd = "55555333";
  

ניצור אובייקט לעבודה

    
		WiFiClient client;
        int server_port = 80;//http
  

בפונקצית האתחול נשתמש רק ב-SSID אם זו רשת פתוחה, או שנוסף גם סיסמה אם נדרשת

הפונקציה הבאה מנסה להתחבר עד שהיא מצליחה

    
		void wifi_Setup() {
            Serial.println("wifiSetup");
            WiFi.begin(ssid);
        //    WiFi.begin(ssid,pswd);
        
            while (WiFi.status() != WL_CONNECTED) {
                Serial.println("trying ...");
                delay(100);
            }
            Serial.println("Connected to network");
        }
  

לשם עבודה מול השרת אנו יכולים לשלוח מידע ולקבל מידע

נעבוד עם שרת ההדגמות שלנו 

נגדיר את מספר המכשיר ומספר הערוץ עבורם נרצה לעבוד, וכך ניצור את הכתובת שאיתה נעבוד

זו תהיה הפונקציה לשליחת מידע אל השרת

    
		void SendData(int val) {
            HTTPClient http;
            String dataURL = "";
            dataURL += "ACT=SET&DEV=1121&CH=1";
            dataURL += "&VAL="+String(val);
            http.begin(client,"http://api.kits4.me/GEN/api.php?" + dataURL);
            int httpCode = http.GET();
            Serial.println(httpCode);
            http.end();
        }
  

והפונקציה הזו מקבלת מידע מהשרת ומחזירה אותו כמספר

    
		int GetData() {
            int ret = -1;
            HTTPClient http;
            String dataURL = "";
            dataURL += "ACT=GET&DEV=1121&CH=1";
            http.begin(client, "http://api.kits4.me/GEN/api.php?" + dataURL);
            int httpCode = http.GET();
            Serial.println(httpCode);
            if (httpCode == HTTP_CODE_OK) {
                Serial.print("HTTP response code ");
                Serial.println(httpCode);
                String Res = http.getString();
                Serial.println(Res);
                ret = Res.toInt();
            }
            http.end();
        
            return ret;
        }
  

ובעזרת הערך הזה נוכל להפעיל דברים שונים בתוכנית

 

והנה כל הקוד ביחד

    
			#include <ESP8266WiFi.h>
            #include <WiFiClient.h>
            #include <WiFiUdp.h>
            
            #include <ESP8266HTTPClient.h>
            
            const char* ssid = "Kinneret College";
            const char* pswd = "55555333";
            
            WiFiClient client;
            int server_port = 80;//http
            
            void wifi_Setup() {
                Serial.println("wifiSetup");
                WiFi.begin(ssid);
            //    WiFi.begin(ssid, pswd);
            
                while (WiFi.status() != WL_CONNECTED) {
                    Serial.println("trying ...");
                    delay(100);
                }
                Serial.println("Connected to network");
            }
            
            void SendData(int val) {
                HTTPClient http;
                String dataURL = "";
                dataURL += "ACT=SET&DEV=1121&CH=1";
                dataURL += "&VAL="+String(val);
                http.begin(client,"http://api.kits4.me/GEN/api.php?" + dataURL);
                int httpCode = http.GET();
                Serial.println(httpCode);
                http.end();
            }
            
            int GetData() {
                int ret = -1;
                HTTPClient http;
                String dataURL = "";
                dataURL += "ACT=GET&DEV=1121&CH=1";
                http.begin(client, "http://api.kits4.me/GEN/api.php?" + dataURL);
                int httpCode = http.GET();
                Serial.println(httpCode);
                if (httpCode == HTTP_CODE_OK) {
                    Serial.print("HTTP response code ");
                    Serial.println(httpCode);
                    String Res = http.getString();
                    Serial.println(Res);
                    ret = Res.toInt();
                }
                http.end();
            
                return ret;
            }
            
  

תגובות גולשים