2

我目前有一个 MySQL 数据库,我希望用它来存储来自连接到 Internet 的温度传感器的定期更新数据。

我目前有一个页面,当打开时,它将获取当前温度和当前时间戳并将其作为条目添加到数据库中,但我正在寻找一种方法来做到这一点,而无需每 5 秒刷新一次页面。

详细信息:数据来自 Arduino 以太网,发布到 IP 地址。目前,我正在使用 cURL 从 IP 中获取数据,添加时间戳并将其保存到数据库中。显然只有在页面刷新时才会更新(它使用 PHP)。

这是数据的实时提要 - http://wetdreams.org.uk/ChrisProject/UI/live_graph_two.html

TL;DR - 基本上我需要一个中间人从 IP 中获取数据并将其发布到 MySQL

编辑:感谢所有建议。可能会有一点混乱,我正在寻找一个(理想情况下)根本不需要计算机(除了包含数据库的服务器)的解决方案。由于我希望在很长一段时间(几周)内存储数据,我想设置它并在服务器(或 Arduino)上运行一个脚本,该脚本获取临时并将其发布到数据库。

在我的脑海中,我想在服务器上有一个页面自动(无需打开任何浏览器,或除计时器之外的任何其他提示)调用 PHP 脚本。

希望这能说明问题!

4

5 回答 5

2

you can post directly to web server from your arduino using ArduinoEtherenetClient (click link to get example)

POST /insertData.php - in insertData.php use $_POST["tempCaptured"] to get the temp value and insert that in db.

Good article on using ArduinoEthernetClient http://interactive-matter.eu/how-to/arduino-http-client-library/

于 2012-04-04T10:49:03.920 回答
1

编写一个代码(ping.php),以固定的时间间隔 ping 这个 url。

现在,设置一个以固定间隔运行此代码的cronjob 。

你的 cron 可以是0 */2 * * * PATH_TO_{ping.php} // will run every 2 hours

您的 ping.php 文件将连接到实时提要,获取数据并将结果存储到数据库。:

于 2012-04-04T10:50:28.240 回答
0

在这种情况下,最好的解决方案是使用 Arduino 将请求发布到 PHP 脚本,该脚本完成它的工作并将检索到的值添加到数据库中。我刚才运行它的方式(为简单起见)是使用 EthernetClient 来自 Arduino 的 GET 请求。

代码:

char server[] = "www.example.com";

if(client.connect(server, 80)){
  client.println("GET /test.php?input_val=99 HTTP/1.0");
  client.println("HOST: www.example.com");
}

然而,由于我已经围绕数据发布到独立服务器/IP* 的事实构建了我的网站,所以我选择使用 cron 来安排任务。在这种情况下,我想每 5 到 10 秒更新一次数据库。但是,我正在搭载其他人的服务器,所以我联系了服务器所有者并要求他们设置一个 cron 作业,每分钟调用一次“/mysubdir/cron_update.php”(最快的 cron 可以调用)。从那里我做了一些'ScriptCeption'并在PHP脚本中,在完成脚本之前每10秒完成我的调用一分钟。

感谢所有帮助我的人,我在这里发布这个作为完整的答案和解释,因为从技术上讲每个人都是正确的。

于 2012-04-05T07:36:14.793 回答
0

You can use JavaScript to auto refresh the page

<script type="text/javascript">
    function timedRefresh(timeoutPeriod) {
        setTimeout("location.reload(true);", timeoutPeriod);
}
</script>

A better solution would be ajax and send the date regulary in the background to the database.

Another way is to use a PHP-CLI script and to schedule it with cron jobs that gets the values from your sensor automatically.

于 2012-04-04T10:48:20.660 回答
0

如果我理解这个问题。您只需要更换每 5 秒刷新一次网页吗?
没有得到数据?

我会设置一个 ajax 连接,并让 php 在一种无限循环中运行。将新数据回显到您的 javascript 以更新图表。PHP 循环必须进行超时检查才能最终关闭脚本。

于 2012-04-04T10:49:51.580 回答