Mozilla 最近发布了它的开源IoT平台WebThings,以前叫做Project Things。Mozilla WebThings提供了日志记录、警报和网络等一系列特性。
Mozilla WebThings是W3C新兴的Web of Things标准的开源实现。W3C Web of Things(WoT)是Web of Things Working Group(WoT WG)近期推出的一项计划,旨在减少IoT的碎片化。W3C制定了Web of Things的初始标准,目标是降低开发的成本,降低投资者和客户的风险,进而促进IoT设备和服务市场的指数级增长。
Mozilla WebThings是一个用于监视和控制设备的基于Web的开放平台,由两个核心组件组成:WebThings Gateway是为专注于隐私、安全和互操作性的智能家居网关而设计,WebThings Framework用于帮助开发人员构建自己的Web事物。
WebThings Gateway(网关)
WebThings Gateway是一款让用户能够通过网络监视和控制他们的智能家居的软件。例如,通过使用WebThings Gateway,可以检查门打开/关闭的次数,或者插件设备的能耗。为此,用户需要进入“main menu > Settings > Experiences”,并启用“Logs”选项。
WebThings Gateway现在为烟雾、一氧化碳或防盗报警器等设备提供了新的报警功能。这意味着用户可以检查报警器当前是否处于活动状态,配置规则以便在警报出现时触发通知。
WebThing Gateway 0.8可以通过Web界面重新配置网关的网络设置。另外,用户可以使用动态或静态IP地址配置以太网的端口,或者重新扫描可用的无线网络并更改网关所连接的Wi-Fi接入点。
WebThings Framework(框架)
WebThings Framework是可重用软件组件的集合,目的是帮助开发人员构建自己的Web事物,并且直接开放Web Thing API。Web Things API通过定义简单具体的序列化和协议绑定,来补充W3C WoT WG关于Web of Things的抽象数据模型和API的工作。Web客户端可以通过WebThings的REST API和WebSocket API访问设备的属性,请求动作的执行,以及订阅体现状态变化的事件。
WebThings库官方支持Java、Python、Node.js和Rust等开发语言。下面看看它是如何在Java中实现的。
首先,将以下依赖项添加到项目中:
<dependencies>
<dependency>
<groupId>org.mozilla.iot</groupId>
<artifactId>webthing</artifactId>
<version>LATEST</version>
</dependency>
</dependencies>
现在,创建一个新的Thing:
Thing light = new Thing("My Lamp",
new JSONArray(Arrays.asList("OnOffSwitch", "Light")),
"A web connected lamp");
添加on(开关)的属性:
JSONObject onDescription = new JSONObject();
onDescription.put("@type", "OnOffProperty");
onDescription.put("title", "On/Off");
onDescription.put("type", "boolean");
onDescription.put("description", "Whether the lamp is turned on");
Value<Boolean> on = new Value<>(true,
// Here, you could send a signal to
// the GPIO that switches the lamp
// off
v -> System.out.printf(
"On-State is now %s\n",
v));
light.addProperty(new Property(light, "on", on, onDescription));
现在将新创建的Thins添加到服务器并启动它:
try {
WebThingServer server = new WebThingServer(new SingleThing(light), 8888);
Runtime.getRuntime().addShutdownHook(new Thread() {
public void run() {
server.stop();
}
});
server.start(false);
} catch (IOException e) {
System.out.println(e);
System.exit(1);
}
上面的代码将启动服务器,通过WoT REST API可以让灯工作,并且声明它是本地网络中可发现的资源。
更多详细信息可在Mozilla IoT网站以及WebThings Gateway和WebThings Framework 的开发人员文档中找到。想要为此文档做出贡献的开发人员可以通过GitHub repo来实现。
查看英文原文:Mozilla Revamps WebThings, its Open Source IoT Platform