Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/289.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 从MySQL获取输入变量并将输出发送到Arduino_Php_Post_Arduino_Get - Fatal编程技术网

Php 从MySQL获取输入变量并将输出发送到Arduino

Php 从MySQL获取输入变量并将输出发送到Arduino,php,post,arduino,get,Php,Post,Arduino,Get,我正在将传感器数据保存到phpMyAdmin数据库中,我想使用该数据(最后一个条目)作为用PHP编写的模糊函数的输入变量 我是否可以将fuzzy的输出变量发送回我的Arduino?我如何在线路板上配置请求 <?php require_once ('./fuzzy-logic-class.php'); // Include data base connect class $filepath = realpath (dirname(__FILE__)); require_once($file

我正在将传感器数据保存到phpMyAdmin数据库中,我想使用该数据(最后一个条目)作为用PHP编写的模糊函数的输入变量

我是否可以将fuzzy的输出变量发送回我的Arduino?我如何在线路板上配置请求

<?php
require_once ('./fuzzy-logic-class.php');

// Include data base connect class
$filepath = realpath (dirname(__FILE__));
require_once($filepath."/db_connect.php");

// Connecting to database 
$db = new DB_CONNECT();

// Actual Values
$sql = mysql_query("SELECT `temp`,`hum`,`moist` FROM `t_measure` ORDER BY id_measure desc LIMIT 1;");
$actual = $conn->query($sql);
if ($actual->num_rows > 0) {
// output data of each row
while($row = $actual->fetch_assoc()) {
    $acttemp = number_format($row["temp"],0);
    $acthum = number_format($row["humidity"],0);
    $actsoil = number_format($row["soil"],0);
}
} else {
echo "0 results";
}

/*----------------Fuzzy Parameters----*/
$x = new Fuzzy_Logic();
$x->clearMembers();
/* ---------- set input members ---------*/
$x->setInputNames(array('TEMP','HUMIDITY', 'SOIL'));
$x->addMember($x->getInputName(0),'COLD',  0,  8, 25   ,LINFINITY);
$x->addMember($x->getInputName(0),'WARM', 20, 35, 100  ,RINFINITY);
$x->addMember($x->getInputName(1),'LOW', 0  ,40 ,60    ,LINFINITY);
$x->addMember($x->getInputName(1),'HIGH',50 ,70 ,100   ,RINFINITY);
$x->addMember($x->getInputName(2),'WET', 0,   400 ,650  ,LINFINITY);
$x->addMember($x->getInputName(2),'DRY',550, 800 ,1025 ,RINFINITY);

/* ---------- set output members ---------*/
$x->setOutputNames(array('OUT'));
$x->addMember($x->getOutputName(0),'LOWER',-10, -5 ,0 ,LINFINITY);
$x->addMember($x->getOutputName(0),'RAISE',0, 5 ,10 ,RINFINITY);

/* ---------- set rule table ------------ */
$x->clearRules();
$x->addRule('IF TEMP.WARM OR SOIL.DRY OR HUMIDITY.LOW THEN OUT.RAISE');
$x->addRule('IF TEMP.COLD OR SOIL.WET OR HUMIDITY.HIGH THEN OUT.LOWER');


/*---------- Get values from database and calculate output ----*/
$x->SetRealInput('TEMP',    $acttemp);
$x->SetRealInput('HUMIDITY' ,$acthum);
$x->SetRealInput('SOIL' ,   $actsoil);
$fuzzy_arr = $x->calcFuzzy();
$Fuzzy = $fuzzy_arr['OUT'];
echo $Fuzzy;

使用HTTP,可以像让Arduino上的HTTPClient向服务器/phpfile发出GET请求并读取响应一样简单。互联网上的例子比比皆是;用于此操作的库取决于您使用的Arduino

PHP的响应应该类似于:

HTTP/1.1 200 OK\n
Connection: close\n
Content-Type: text/plain; charset=utf-8\n\n
[Your string in $Fuzzy]\n

如果您想让服务器主动发送模糊值,事情会变得更复杂。

使用HTTP,可以让Arduino上的HTTPClient向服务器/phpfile发出get请求并读取响应。互联网上的例子比比皆是;用于此操作的库取决于您使用的Arduino

PHP的响应应该类似于:

HTTP/1.1 200 OK\n
Connection: close\n
Content-Type: text/plain; charset=utf-8\n\n
[Your string in $Fuzzy]\n

如果你想让服务器主动发送模糊值,事情会变得更复杂。

因此,我把两个文件的组合搞砸了。更正了这一部分后,api就可以正常工作了

       $servername = "---";
$username = "---";
$password = "---";
$dbname = "---";

// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);
// Check connection
if ($conn->connect_error) {
    die("Connection failed: " . $conn->connect_error);
}
$Fuzzy = $_GET['val'];

// Actual Values
 $sql= "SELECT `temp`,`hum`,`moist` FROM `t_measure` ORDER BY id_measure desc LIMIT 1;";
$actual = $conn->query($sql);
要在Arduino端接收数据,这是必需的代码

void setup() {

Serial.begin(115200);
WiFi.begin("ssid", "pass");   //WiFi connection
while (WiFi.status() != WL_CONNECTED) {  //Wait for the WiFI connection completion
delay(500);
Serial.println("Waiting for connection");

}

}

void loop() {

if(WiFi.status()== WL_CONNECTED){   //Check WiFi connection status
HTTPClient http;  
http.begin("http://.....");  //api location
http.addHeader("Content-Type", "text/plain"); 
String payload = http.getString(); //reading from api
Serial.println(payload);
http.end(); 
}else{
Serial.println("Error in WiFi connection");   

}

所以,结果是我把两个文件的组合搞砸了。更正了这一部分后,api就可以正常工作了

       $servername = "---";
$username = "---";
$password = "---";
$dbname = "---";

// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);
// Check connection
if ($conn->connect_error) {
    die("Connection failed: " . $conn->connect_error);
}
$Fuzzy = $_GET['val'];

// Actual Values
 $sql= "SELECT `temp`,`hum`,`moist` FROM `t_measure` ORDER BY id_measure desc LIMIT 1;";
$actual = $conn->query($sql);
要在Arduino端接收数据,这是必需的代码

void setup() {

Serial.begin(115200);
WiFi.begin("ssid", "pass");   //WiFi connection
while (WiFi.status() != WL_CONNECTED) {  //Wait for the WiFI connection completion
delay(500);
Serial.println("Waiting for connection");

}

}

void loop() {

if(WiFi.status()== WL_CONNECTED){   //Check WiFi connection status
HTTPClient http;  
http.begin("http://.....");  //api location
http.addHeader("Content-Type", "text/plain"); 
String payload = http.getString(); //reading from api
Serial.println(payload);
http.end(); 
}else{
Serial.println("Error in WiFi connection");   

}

谢谢你的回答。你能告诉我是否有什么我需要添加到PHP代码或只是在Arduino方面吗?我会让PHP输出我在答案中输入的内容,而不是简单的$Fuzzy;其余的工作都是在Arduino端使用HTTPClient完成的。它可以在不改变PHP的情况下工作;然后,它将只响应一个包含$Fuzzy的字符串。我曾经用这种方式做过一些事情,但它并不漂亮,在某些情况下可能不起作用。谢谢你的努力,但我想我太落后了,无法实现这一点。我将尝试掌握基本知识,然后尝试此解决方案。谢谢您的回答。你能告诉我是否有什么我需要添加到PHP代码或只是在Arduino方面吗?我会让PHP输出我在答案中输入的内容,而不是简单的$Fuzzy;其余的工作都是在Arduino端使用HTTPClient完成的。它可以在不改变PHP的情况下工作;然后,它将只响应一个包含$Fuzzy的字符串。我曾经用这种方式做过一些事情,但它并不漂亮,在某些情况下可能不起作用。谢谢你的努力,但我想我太落后了,无法实现这一点。我将尝试掌握基本知识,然后尝试此解决方案。