如何将C ++值实时传递给JS / jQuery?

时间:2016-06-22 09:04:29

标签: javascript jquery c++ esp8266

我有一个" Esp8266 nodeMCU"在面包板上的wifi模块(类似于Arduino)与usb连接到官方" Arduino IDE"。 enter image description here 现在我想将来自模块的值(C ++)转换为我的JavaScript代码(Arduino IDE中的可见值"串行监视器")。

例如,当我释放/按下面包板上连接的按钮时,零/一信号通过我的模块发送到Arduino的IDE ......从那时起我希望能够访问通过我的网页实时获取该值。enter image description here

我听说我可能会通过模块的WiFi部分将值发送到所谓的#Rabbit; RabbitMQ"消息客户端,然后进入本地的Raspberry Pi,进入本地服务器,最后进入我的电脑......哇! 对于一个初级网络开发者而言,这是一条漫长而坎坷的道路,只需将糖果送到商店XD

...任何"更容易"建议?

更新!!!

以下更具体的信息(根据' user3392724'的要求):

  • 我没有为这个项目编写自己的代码(现在),我使用的是Arduino IDE中内置的现有代码(基于Arduino(C ++))。

    < / LI>
  • 我的设置现在是Esp8266 +面包板+ macbook pro(Mac上的Arduino IDE)和mac我有AMPPS。

  • 现在我在Apache服务器上运行我的所有javascript项目(AMPPS localhost),这个项目已经足够运行了,但以后在实时站点上达到C ++值也会很酷。

    < / LI>
  • 作为第一阶段,我将只拥有家庭网络上的所有内容。

  • 我将是这个&#34;实验&#34;的唯一用户。截至目前,如果成功,我将尝试扩大我的视野;)

1 个答案:

答案 0 :(得分:1)

现在回答更新两次,首先是在澄清问题之后,第二次我意识到事实中提到了一些细节(例如,使用了一个按钮)。

当您说您正在使用Arduino IDE中的“现有代码”时,我认为您的意思是阅读按钮的示例草图。

我理解你想要的是,这个读取数据最终在网页中,使用JavaScript获取/更新页面中的数据。此网页应托管在服务器上,而不是ESP。

这意味着第一个问题是通过哪个路径/步骤来移动数据。 它可以通过服务器(例如您的Apache服务器)或通过多个服务器(如RabbitMQ选项)移动。涉及服务器的优点是客户端(您的Web浏览器)只需要与服务器通信。然后服务器与ESP对话。这意味着您可以从任何可以到达服务器的地方使用此解决方案。

但在你的情况下,我会选择“更简单”的选项,直接从ESP获取数据。您的服务器提供网页/ JavaScript。网页中的JavaScript直接从ESP(从Web浏览器内部)获取数据。这样做的缺点是它只有在ESP和服务器都可以通过浏览器访问时才有效。

另一个重要的选择是这个数据是推送还是拉动,ESP是否推送每个读数,或者服务器/浏览器是否从ESP中提取数据。这取决于结果应该是“实时”的。在这个传感器中,按钮有点棘手,因为“点击”可能非常短。虽然有几种方法可以解决这个问题,例如保持计数器每次点击都会上升,然后“慢慢”检索该值。 在你的情况下拉声音更容易,因为你可以在你的JavaScript中有一个计时器,它从ESP请求值,而ESP只需要用当前值响应请求。推送会更难,因为无法推送Web浏览器,您将不得不涉及某种处理推送的服务器,存储该值,然后允许通过Web浏览器的JavaScript检索它。所以现在我假设拉。

最后要考虑的是用户数量。 ESP在它可以处理的同时连接数量上是非常有限的(我认为5),只有一个用户这应该不是问题。对于许多用户,它将无法处理请求,这意味着上述选项将无法工作。相反,您需要让服务器从ESP获取数据,存储它,然后将其提供给所有用户,这要复杂得多:)

现在'最简单'的选项是在ESP上安装一个小型Web服务器,只需在每个请求上读取您的值(传感器,点击计数器等),然后返回该值。您应该能够通过JavaScript调用此Web服务器,可能还需要在计时器上调用。

我希望这些是在Arduino上执行此操作的许多代码示例。 我发现了两个可能的,但由于我在代理后面而无法检查: http://www.instructables.com/id/The-Super-Simple-Arduino-Weather-Web-Server/ http://www.instructables.com/id/Measure-temperature-on-the-web-with-Arduino-Ethern/

如果此选项不符合您的要求,请根据要求更新您的问题,我会看看是否可以提出其他建议;)

祝你好运!