עבודה עם שרת מרוחק
ערכה: קורס ערכת למידה 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;
}