我们用 JavaScript Hack 了家里的咖啡机

除了区块链,物联网或智能家电大约是当下最时髦的话题。若能将已有设备改装成物联网版本,就无需购买智能家电了。我们决定就这么做,用 JavaScript 构建一个网络驱动的咖啡机,并在超文本咖啡壶控制协议Hyper Text Coffee Pot Control Protocol)创建 19 年后的今天,重新使用此协议。
geek-and-poke-iot

讲故事时间

我和室友有几个通过 Amazon Echo Dots 控制的网络驱动设备。虽然很便捷,但还不能做到在床上就能触发咖啡机。

幸运的是,室友有一台闲置的德龙 Latissima 咖啡机,他也舍得此咖啡机;而且此咖啡机有一些电子按钮,整个系统貌似可编程。

为何采用 JavaScript?室友并非开发人员,而我已有三年没写过一行 C++ 代码了。此外,个人觉得 JavaScript 用起来很舒服。硬件和 JavaScript 均是事件驱动,其中心问题均是像“此控件是否被按下?”。但 JavaScript 硬件编程文档很少,这对我们构成一个不小的挑战。

硬件选择

确定采用 JavaScript 进行硬件编程之后,接下来需要考虑的是选取何种硬件:

Espruino

espruino-header

Espruino是一个开源的固件,有了它便可以在 ESP8266,或其它低功耗的微控制器上运行 JavaScript。

Espruino 自带一个基于网页的 IDE,方便程序员编写 JavaScript,并将其部署在硬件上。同时,它还拥有一套类似 Node.js 的模块系统,当然 并不是要让 Node.js 运行在微控制器上。

家里仅有的 Espruino 板是 Espruino Pico,而且不带WiFi,为此我必须焊接一个 ESP8266,不过谁有时间做这些?我们需要的只是咖啡!

Tessel

 

tessel-header

另一个选项是名为 Tessel 的开源硬件项目,此项目中的一部分便是 Tessel 2。硬件不仅能被 JavaScript 所控制,而且完全支持 Node.js 运行,还能存储整个程序,无需与电脑进行连接。
tessel-photo

Johnny-Five

johnny-five-header
第三个选项是 Johnny-Five</