현재 온도 센서에서 수집 한 데이터를 내 Raspberry Pi로 보내는 데 문제가 있습니다. Pi는 데이터를받지 못했다고 말합니다. GET과 POST가 어떻게 작동하는지 잘 모르겠습니다. 나는이 물건에 상당히 새롭다. 그래서 어떤 도움이라도 많이 인정 될 것이다.NodeScreen 온도 측정 값을 라즈베리 파이 무선으로 변환
또한 누군가 내가 내 sendTemperatureTS
메서드와 PHP 코드를 검토 할 수 있습니까? 그런데 나는 라스베리 파이의/var/www에있는 PHP 폴더에 PHP 파일을 만들었습니다. 나는 내 코드를 작성하기 위해 PHP 폴더에 명령 sudo nano collectdata.php
을 사용
아두 이노 코드 :.
#include <ESP8266WiFi.h>
#include <OneWire.h>
#include <DallasTemperature.h>
#define myPeriodic 15 //in sec | Thingspeak pub is 15sec
#define ONE_WIRE_BUS 2 // DS18B20 on arduino pin2 corresponds to D4 on physical board
OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature DS18B20(&oneWire);
float prevTemp = 0;
const char* server = "172.168.2.143";
const char* MY_SSID = "AkhuogTkhbbEjhbuvouvr7i2";
const char* MY_PWD = "2pkpmbipsrbeirbp3niag%";
int sent = 0;
void setup() {
Serial.begin(115200);
connectWifi();
}
void loop() {
float temp;
//char buffer[10];
DS18B20.requestTemperatures();
temp = DS18B20.getTempCByIndex(0);
//String tempC = dtostrf(temp, 4, 1, buffer);//handled in sendTemp()
Serial.print(String(sent)+" Temperature: ");
Serial.println(temp);
sendTemperatureTS(temp);
int count = myPeriodic;
while(count--)
delay(1000);
}
void connectWifi() {
Serial.print("Connecting to "+*MY_SSID);
WiFi.begin(MY_SSID, MY_PWD);
while (WiFi.status() != WL_CONNECTED) {
delay(1000);
Serial.print(".");
}
Serial.println("");
Serial.println("Connected");
Serial.println("");
}//end connect
void sendTemperatureTS(float temp) {
WiFiClient client;
if (client.connect(server, 80)) {
Serial.println("WiFi Client connected ");
String postStr = "/php/";
postStr += "?temp=";
postStr += String(temp);
postStr += "\r\n\r\n";
client.print("POST 172.168.2.143/php/collectdata.php HTTP/1.1\n");
client.print("Host: 122.168.2.143\n");
client.print("Connection: close\n");
client.print("Content-Type: application/x-www-form-urlencoded\n");
client.print("Content-Length: ");
client.print(postStr.length());
client.print("\n\n");
client.print(postStr);
delay(1000);
}//end if
sent++;
client.stop();
}
는 PHP 코드 :에서
<?php
$servername = “172.168.2.143”;
$username = “esp8266”;
$password = “Tutorial”;
$dbname = “esp8266”;
$temp = $_POST[‘temp’];
$conn = mysql_connect(“172.168.2.143”,”esp8266”,”Tutorial”);
if(!$conn) {
die(‘Could not connect: ’ . mysql_error());
}
$datenow = date(‘Y-m-d’);
$sql = “INSERT INTO `JSDataTable`(`logdate`,`temperature`) VALUES (\”$datenow\”,\”$temp\”)”;
$result = mysql_query($sql);
if(!result) {
die(‘Invalid query: ‘ . mysql_error());
}
echo “<h1>The data has been sent!</h1>”;
mysql_close($conn);
>
귀하의 PHP 코드가 유효하지 않습니다. 잘못된 따옴표를 사용하고 있습니다. 그리고 더 나은 PHP 튜토리얼을 찾으십시오. mysql_ * API는 7.0.0에서 제거 된 5.5.0부터 사용되지 않습니다. –
또한 [SQL injection] (http://bobby-tables.com/)은 요즘해서는 안됩니다. –