BT

最新技術を追い求めるデベロッパのための情報コミュニティ

寄稿

Topics

地域を選ぶ

InfoQ ホームページ ニュース MozillaがオープンソースIoTプラットフォームのWebThinghsを改良

MozillaがオープンソースIoTプラットフォームのWebThinghsを改良

原文(投稿日:2019/05/22)へのリンク

Mozillaは先頃、これまでProject Thingsと呼ばれていたオープンソースIoTプラットフォームを、WebThingsとしてリリースした。ロギング、アラーム、ネットワークなど、一連の機能を提供する。

Mozilla WebThingsは、新たにW3Cが作成したWeb of Things標準の、オープンソースによる実装である。W3CのWeb of Thingsは、最近設立されたWeb of Thingsワーキンググループを通じて、IoTの断片化低減を目指すイニシアティブである。W3Cは、Web of Things標準の開発に着手するに際して、開発コストの削減、投資家と顧客双方のリスク軽減、IoTデバイスとサービスの市場における急成長の促進を目標に置いている。

Mozilla WebThingsは、デバイスをWeb上で監視し制御する、オープンプラットフォームである。スマートホームゲートウェイ用にプライバシ、セキュリティ、相互運用性を重視して設計されたWebThings Gatewayと、開発者が独自のWeb of Thingsを構築するためのWebThings Frameworkという、2つのコアコンポーネントから構成されている。

WebThings Gateway

WebThings Gatewayは、ユーザがWeb経由でスマートホームを監視および制御するためのソフトウェアである。WebThings Gatewayを使用することで、例えば、ドアが何度開閉されたか、プラグインされた電気器具がどれだけの電力を消費しているか、といったことを確認できる。これを実行するには、[main menu] > [Setting] > [Experiments] の順に進み、[Logs]オプションを有効にする必要がある。

WebThings Gatewayでは、新たに煙探知機や一酸化炭素警報機、盗難警報機などの警報機能をデバイスに提供するようになった。これにより、アラームが現在アクティブになっているかを確認し、アラーム発生時に通知するように、ルールを設定することが可能になる。

WebThing Gateway 0.8では、Webインターフェースからゲートウェイネットワーク設定を再設定することが可能だ。さらに、イーサネットポートを動的ないし静的IPアドレスで設定したり、あるいは利用可能なワイヤレスネットワークを再スキャンしてゲートウェイが接続されているWi-Fiアクセスポイントを変更することもできる。

WebThings Framework

WebThings Frameworkは、Web Thing APIを直接公開する独自Web Thingsの開発支援のために設計された、再利用可能なソフトウェアコンポーネントのコレクションである。Web Things APIは、単純かつ具体的なシリアライゼーションとプロトコルを定義することにより、Web of Thingsの抽象データモデルおよびAPIに関するThings Working Groupの成果を補完することを目的としている。Web Thing REST APIWeb Thing WebSocket APIによって、Webクライアントは、デバイスのプロパティへのアクセス、アクション実行の要求、状態変化を示すイベントのサブスクライブが可能になる。

WebThingsライブラリは、JavaPythonNode.jsRustなどの言語で公式に利用可能だ。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、brightnessという2つのプロパティを追加する。

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));

後は、新たに生成したThingをサーバに追加して起動すればよい。

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 Webサイトと、WebThings GatewayとWebThings Frameworkに関する開発者向け資料で確認できる。このドキュメンテーションに貢献したい開発者は、GitHubレポジトリ経由で参加が可能だ。

この記事に星をつける

おすすめ度
スタイル

BT