Проблема с отправкой HTTP запроса на сайт
- Войдите на сайт для отправки комментариев
Вс, 06/10/2019 - 00:06
Добрый день. Стоит задача передачи данных с Arduino Uno на веб сервер. Хотел сначала делать через FTP, но потом решил через HTTP. Итак вот скетч:
#include <SPI.h>
#include <Ethernet.h>
byte mac[] = {0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED};
const int analogInPin = A0;
int sensorValue = 0;
char host[] ="www.mysite.ru";
EthernetClient client;
void setup()
{
Serial.begin(9600);
pinMode(LEDPIN, OUTPUT);
Ethernet.begin(mac);
client.connect(host,80);
}
void loop()
{
sensorValue = analogRead(analogInPin);
if(client.connected())
{
client.println("GET /dataupdate.php?");
client.print("d=");
client.print(sensorValue);
client.println("HTTP/1.1");
client.print("Host: ");
client.println(host);
client.println("Connection: keep-alive");
client.println();
client.println();
if(client.available())
{
char c = client.read();
Serial.print(c);
}
}
else{ client.connect(host,80);}
}
На серверной части крутиться php скрипт:
<?php
$fd = fopen("/data.!!!", 'w');
fwrite($fd, $_GET["d"]);
fclose($fd);
?>
Он записывает значения полученные от ардуино в файл. Далее страница html, используя xhr подгружает на страницу эти данные из файла:
<html>
<head>
<title>JS</title>
<script>
function getdata(filepath, id)
{
let xmlhttp = new XMLHttpRequest();
xmlhttp.open("GET", filepath, true);
xmlhttp.send(null);
xmlhttp.onreadystatechange = function(){
document.getElementById(id).innerHTML = xmlhttp.responseText;
}
}
setInterval(getdata, 500, "/data.!!!", "data")
</script>
</head>
<body>
<div id="data"></div>
</body>
</html>
Монитор порта показывает ответ от сервера, что все Ok, код 200. Но данные не перезаписываются. Не могли бы подсказать в чем может быть причина?