arduino webclient - может кто знает
- Войдите на сайт для отправки комментариев
Ср, 31/01/2018 - 23:50
Добрый день!
имеется ардуина + w5100, удаленный сервер. может кто нибудь знает как с удаленного сервера отправить данные на арадуину (например кнопка включения реле на php.)
Добрый день!
имеется ардуина + w5100, удаленный сервер. может кто нибудь знает как с удаленного сервера отправить данные на арадуину (например кнопка включения реле на php.)
Если у ардуины есть белый IP - то с PHP-скрипта на сервере отправить HTTP-запрос на ардуину, на стороне дуньки распарсить запрос и выдать ответ.
Если у ардуины нет белого IP - периодически с ардуины опрашивать скрипт на сервере, который будет выдавать дуньке команды. Опрашивать - также путём отсыла HTTP-запроса на сервер, но уже с дуньки.
Упоминая HTTP - речь идёт о веб-сервере, т.к. "кнопка включения реле на php".
Допустим 1й вариант - "Если у ардуины есть белый IP - то с PHP-скрипта на сервере отправить HTTP-запрос на ардуину, на стороне дуньки распарсить запрос и выдать ответ."
есть прмер такого запроса?
Есть пример, только непонятно, что он вам даст: http://my-arduino-ip/action?relay1=on
Есть пример, только непонятно, что он вам даст: http://my-arduino-ip/action?relay1=on
ардуина в этом случае работает как сервер?
Ардуина в этом случае работает так, как вы ее запрограммируете.
Допустим, вот скетч клиента
#include <SimpleDHT.h> int pinDHT11 = 2; SimpleDHT11 dht11; #include <Wire.h> #include <Adafruit_BMP085.h> Adafruit_BMP085 bmp; #include <ESP8266WiFi.h> const char* ssid = "xxxxxxxxxx"; const char* password = "yourpasswd"; const int httpPort = 80; const char* host = "192.168.1.35"; byte t = 0; byte h = 0; float t1; float p; float m; long previousMillis = 0; long interval = 120000*5; void setup() { Serial.begin(115200); bmp.begin(); delay(10); // We start by connecting to a WiFi network Serial.println(); Serial.println(); Serial.print("Connecting to "); Serial.println(ssid); WiFi.begin(ssid, password); while (WiFi.status() != WL_CONNECTED) { delay(500); Serial.print("."); } Serial.println(""); Serial.println("WiFi connected"); Serial.println("IP address: "); Serial.println(WiFi.localIP()); } void loop() { unsigned long currentMillis = millis(); if (currentMillis - previousMillis > interval) { sendSensor(); // put your main code here, to run repeatedly: WiFiClient client; if (!client.connect(host, httpPort)) { Serial.println("connection failed"); return; } String url = "/esp8266.php?"; url += "id=1"; url += "&t="; url += t; url += "&h="; url += h; url += "&t1="; url += t1; url += "&p="; url += p; url += "&m="; url += m; client.print(String("GET ") + url + " HTTP/1.1\r\n" + "Host: " + host + "\r\n" + "Connection: close\r\n\r\n"); Serial.println(String("GET ") + url + " HTTP/1.1\r\n" + "Host: " + host + "\r\n" + "Connection: close\r\n\r\n"); previousMillis = currentMillis; } } void sendSensor() { //byte t = 0; //byte h = 0; //float c = 133.3; dht11.read(pinDHT11, &t, &h, NULL); Serial.print("Sample OK: "); t1 = bmp.readTemperature(); p = bmp.readSealevelPressure(); m = (p/133.3); //Serial.print(t); //Serial.print(" ,"); //Serial.println(h); //Serial.print(t1); //Serial.print(" ,"); //Serial.print(p); //Serial.print(" ,"); //Serial.println(m); }как мы в там случае можем обработать Ваш запрос?
Никак. Во-первых скетч не под w5100, во-вторых - он сам отправляет запрос. Ищите другой.
Никак. Во-первых скетч не под w5100, во-вторых - он сам отправляет запрос. Ищите другой.
разницы нет под w5100 или под esp. алгоритм отправки запроса на сервер одинаков.
второе - мой косяк, забыл упомянуть что я шлю гет запрос с данными (ардуина клиент) на удаленный сервер
Никак. Во-первых скетч не под w5100, во-вторых - он сам отправляет запрос. Ищите другой.
разницы нет под w5100 или под esp. алгоритм отправки запроса на сервер одинаков.
второе - мой косяк, забыл упомянуть что я шлю гет запрос с данными (ардуина клиент) на удаленный сервер
Тогда это вариант номер 2. На стороне сервера отдавайте ардуине ответ с задачами, ардуина их разбирает и понимает, чего от неё попросили. На сервере задачи можно хранить в БД, и выдавать дуньке, как только она их запросит, удалять - по подтверждению выполнения с дуньки.