ESP8266 + JavaScript 操作系统 Mongoose OS 制作物联网项目

Mongoose OS,这是一款支持 JavaScript 的硬件开源操作系统。它能提供一个 Web UI 界面(包含 IDE 和设备管理功能)、可以直接运行在 ESP8266 上。文章介绍了如何编译、烧录 Mongosse OS 与 Mongosse OS Losant 应用,并上传数据到 Losant 后台。

由于 JavaScript 充满活力的社区,它已经通过诸如 Johnny-Five,Espruino 和 JerryScript 这样的项目进入了硬件领域。在今年早些时候,Cesanta 宣布推出 Mongoose OS,这是一款支持 JavaScript 的硬件开源操作系统。

Mongoose OS 在构建可靠设备固件方面,是一个很棒的工具链。当它与 Losant 一起使用时,您可以通过强大的数据处理、可视化、仪表板和云集成等,来扩展设备的覆盖面。

在本文中,我们将介绍 Mongoose OS 的一些功能,以及如何将其与 Losant 集成。

步骤0:Mongoose OS

Mongoose OS 中最棒的功能之一是 Web UI 工具。该 Web 界面是一个完整的 IDE 和设备配置管理器,可让您构建和烧录固件。

Mongoose 操作系统还支持 JavaScript。但是,Mongoose OS JavaScript,即mJS,它仅实现了语言的一部分。这样做的目的是,保证其程序占用的内存足够低。由于内存占用空间小,在诸如 ESP8266 等低内存设备上的 TLS,变得更容易实现。

下面是一个使用 JavaScript 编写的、简单的 Mongoose OS 操作系统应用程序示例,用于开关 LED:

load('api_gpio.js'); // load is a special function in Mongoose OS
load('api_timer.js');

let led = 4;

// Blink built-in LED every second
GPIO.set_mode(led, GPIO.MODE_OUTPUT);
Timer.set(1000 /* 1 sec */ , true /* repeat */ , function() {
 print("Toggling LED");
  let value = GPIO.toggle(led);
  }, null);

如果您熟悉 JavaScript,这可能看起来有点奇怪。Mongoose OS 暴露了一个加载函数用于包含(引入,include)文件,这与 Node.js 中的 require 类似。除此,Mongoose OS 还暴露了其他有用的对象和功能,如 GPIO、打印(print)和定时器(Timer)。

最后,Mongoose OS 附带了一个名为 mos 的完整 CLI 工具。Web UI 是围绕 CLI 工具构建的。mos CLI 工具为您提供了与硬件交互的终端界面。

步骤1:开始

既然,你已经对 Mongoose 操作系统有了基本的了解。那么,让我们配合 Losant 一起来使用它。

开始之前:

  • 您将需要一个基于ESP8266的设备。
  • 您必须安装mos 工具。 有关更多信息,请参阅 mos安装说明

克隆 LOSANT APP

为了简单起见,我们为 Losant 创建了一个 Mongoose 应用程序。这个 Mongoose OS 应用程,可以序作为您的项目的样板模板。该示例应用程序可在 GitHub 下载:

$ git clone https://github.com/Losant/losant-mqtt-mongoose-os.git

步骤2:更新配置

Mongoose OS 支持运行时多层(multi-layer)配置。这意味着,您可以提供多个编号的配置文件,并且操作系统将根据优先级合并,并正确地对它们进行排序。在这个程序中,我们提供了 conf1.json。如下所示:

{
   "wifi": {
     "sta": {
     "enable": true,
     "ssid": "WIFI_SSID",
     "pass": "WIFI_PASSWORD"
   }
  },
  "device": {
     "id": "LOSANT_DEVICE_ID"
  },
  "debug": {
     "stdout_topic": "",
     "stderr_topic": ""
  },
  "mqtt": {
     "enable": true,
     "client_id": "LOSANT_DEVICE_ID",
     "user": "LOSANT_ACCESS_KEY",
     "pass": "LOSANT_ACCESS_SECRET",
     "ssl_ca_cert": "ca.pem"
  }
}

接着,替换下面的值:

  • LOSANT_DEVICE_ID
  • LOSANT_ACCESS_KEY
  • LOSANT_ACCESS_SECRET
  • WIFI_SSID
  • WIFI_PASSWORD

你需要从 Losant 获取 LOSANT_DEVICE_ID、LOSANT_ACCESS_KEY 和 LOSANT_ACCESS_SECRET。如果您还没有,请在 Losant 中创建一个帐户和一个应用程序。接下来,添加一个设备到您项目的Losant应用程序中。然后,您将可以获得访问密钥和密码。

步骤3:代码

我们来看看 Losant Mongoose 模板应用程序中包含的主要代码:

load('api_config.js');
load('api_gpio.js');
load('api_mqtt.js');
load('api_sys.js');
load('api_timer.js');

// Helper C function get_led_gpio_pin() in src/main.c returns built-in LED GPIO
let led = ffi('int get_led_gpio_pin()')();

let getInfo = function() {
    return JSON.stringify({data:{ total_ram: Sys.total_ram(), free_ram: Sys.free_ram() }});
};

// Blink built-in LED every second
GPIO.set_mode(led, GPIO.MODE_OUTPUT);
Timer.set(1000 /* 1 sec */ , true /* repeat */ , function() {
    let value = GPIO.toggle(led);
    print(value ? 'Tick' : 'Tock', 'uptime:', Sys.uptime(), getInfo());
}, null);

// Publish to MQTT topic on a button press. Button is wired to GPIO pin 0
GPIO.set_button_handler(0, GPIO.PULL_UP, GPIO.INT_EDGE_NEG, 200, function() {
    let topic = '/losant/' + Cfg.get('device.id') + '/state';
    let message = getInfo();
    let ok = MQTT.pub(topic, message, 1);
    print('Published:', ok ? 'yes' : 'no', 'topic:', topic, 'message:', message);
}, null);

首先,上述的代码每秒闪烁一次 LED,类似于我们在上面的示例代码中看到的。接下来,每次按下按钮,它会向 Losant 发送消息。此消息中包含的是 ESP8266 的 total_ramfree_ram

步骤3:构建固件

我们下载了应用程充,更新了配置,并对代码进行了审核。

现在,我们现在可以构建固件。执行:

$ mos build --arch esp8266

Mongoose OS 构建

步骤4:烧录固件

一旦固件建成,我们能烧录固件到设备上。

$ mos flash esp8266

Mongoose OS Flash

步骤5:STREAM LOGS

一旦烧录完成,固件将立即运行。Mongoose OS 操作系统带有很多有用的日志记录。您可以通过在终端中运行下面的命令查看:

$ mos console

步骤6:打开 WEB UI

正如我之前提到的,Mongoose 的 Web UI 界面是非常棒。您可以使用终端中运行命令,就可以使用 Web UI 界面。要启动它,运行:

$ mos

步骤7:测试

要测试,可以转到 Losant 的主应用页面。你应该看到你的通讯日志。如果按下ESP8266上的按钮,您将看到一条消息。如下:

Lostant 通讯日志

您刚刚成功地烧录您的设备,并将其连接到云端。 你太棒了。

下一步?

您应该在 Losant 文档中查看许多的项目、教程。 将设备连接到Losant后,您可以构建工作流和仪表板,并将您的设备集成到几乎所有的云服务中,其可能性是无止境的。

相关链接:

原文:https://www.losant.com/blog/getting-started-with-mongoose-os-esp8266-and-losant

尚未评分
您的评分将帮助我们做出更好的玩法

观光\评论区

Copyright © 2017 玩点什么. All Rights Reserved.