Divoom Times Gate API 開発者ガイド

Divoom Times Gate API 開発者ガイド

Divoom Times Gateを開封し、電源を入れると、5つのLCD画面に株価ティッカー、天気、ピクセルアートのアニメーションが表示されます。アプリは問題なく動作します。しかし、あなたは考え続けます:自分のデータをこれらの画面に送信できるだろうか?画面3にカスタムダッシュボードを表示しつつ、画面1には時計を表示し続けるスクリプトを書けるだろうか?

簡単に言うと、はい、可能です — ただし予想とは異なる方法で。DivoomはTimes Gateの公式APIドキュメントを公開していません。代わりに開発者コミュニティがデバイスのローカルネットワークAPIをリバースエンジニアリングし、Python、Rust、C#のライブラリを作成し、Home Assistantなどのプラットフォームに組み込んでいます。このガイドでは、Times Gateが実際にどのように通信するか、そのローカルLAN APIで何ができるか、そしてどのツールを使えば最速で開発できるかを解説します。

DivoomのYouTubeチャンネルによる公式Times Gateセットアップウォークスルー。

Times Gateがネットワークと通信する仕組み

コードを一行も書く前に、ほとんどの開発者が最初に戸惑う重要な点を理解する必要があります:Times Gateは電源を入れた瞬間にローカルAPIを公開しません。デバイスが起動すると、MQTTを使ったリアルタイムメッセージングとHTTPSによるデータ同期のためにDivoomのクラウドサーバーに接続します。その初回のクラウドハンドシェイクが完了して初めて、ローカルHTTPエンドポイントがネットワーク上で利用可能になります。

これは、よりシンプルなローカルデバイスとして動作するPixoo-64とは異なるアーキテクチャです。もしPixoo-64のREST APIを使ったことがあるなら(当社のPixoo-64 API初心者ガイドで解説しています)、Times Gateはより急な学習曲線があると予想してください。クラウド依存のため、セットアップ時にはインターネット接続可能なWi-Fiが必要で、デバイスがクラウドリンクを失うとローカルAPIは利用できなくなります。

なぜこれが重要なのでしょうか?それは、デバイスの制御方法に関するあらゆる決定に影響を与えるからです。インターネット障害時にも動作し続けるスマートホームダッシュボードを構築する場合、フォールバック戦略が必要になります。デスクからスクリプトを実行するだけなら、クラウドとのハンドシェイクは一度きりのセットアップ手順で、その後はローカルAPIがスムーズに動作します。

Divoom Times Gateがデスク上で5つの独立したLCD画面に株式、暗号通貨、天気、時計データを表示している様子
5つの128×128 LCD画面それぞれが独立したコンテンツを表示できます — 株式、暗号通貨、天気、ソーシャル統計、またはカスタムピクセルアート。

Times Gateは単一画面のデバイスにAPIを追加したものではありません。5つの画面を持つダッシュボードであり、使い方を理解すれば完全にプログラム可能です。

ローカルLAN API:直接制御できること

Times GateがWi-Fiに接続されクラウドとのハンドシェイクを完了すると、ローカルネットワーク上にHTTP APIを公開します。コミュニティの開発者たちは実験とリバースエンジニアリングを通じて主な機能を解明しました。以下がそのエンドポイントで実際にできることです:

  • 画面のチャンネルを切り替える — 5つの画面それぞれに異なるチャンネル(時計、天気、株価ティッカー、ソーシャル統計、カスタムアート)を表示させます。
  • カスタムピクセルアートをプッシュする — 特定の画面に生のピクセルデータを送信し、128×128のグリッドに収まる任意の画像を表示できます。
  • 明るさと音量を制御する — 表示の明るさと音声出力をプログラムで調整します。
  • デバイスの状態を照会する — 各画面の現在の状態、アクティブなチャンネル、接続情報を読み取ります。

APIは標準のHTTPで通信するため、Python、JavaScript、Rust、Go、さらにはcurlを使ったシェルスクリプトなど、ネットワークリクエストが可能な言語なら何でも利用できます。ローカルリクエストには認証トークンやAPIキーは不要で、同じローカルネットワーク上のものはすべて信頼されます。

RedditのDivoomコミュニティのある開発者が、多くの新しいTimes Gate所有者と同じ質問をしました:「モバイルアプリだけでなく、プログラムで制御したいのですが、APIがあるか知っている人はいますか?」このスレッドで、Divoomによる公式ドキュメントはないものの、ローカルAPIは確かに動作していて応答することが明らかになりました。

セットアップのヒント

APIコールを書く前に、Times Gateが開発マシンと同じWi-Fiネットワークに接続され、完全に起動していることを確認してください(画面には読み込み状態ではなくライブデータが表示されているはずです)。ローカルAPIエンドポイントが応答しない場合は、デバイスを再起動し、インターネット接続があることを確認してください。

カスタムウィジェットを5つの画面にプッシュする

ここがTimes Gateの面白いところです。単一画面のピクセルディスプレイとは異なり、5つの独立した128×128グリッドを扱えます。つまり、本格的なデスクトップダッシュボードを作れます。画面1にリアルタイム株価、画面2に暗号チャート、画面3に天気ウィジェット、画面4にYouTubeの登録者数、画面5にカスタムのピクセルアートアニメーションを表示できます。

カスタムコンテンツを送信する手順は、どの画面を対象にしても同じです。データを128×128ピクセルのビットマップにレンダリングし、APIが期待する形式(通常は生のRGBまたは圧縮形式)にエンコードし、画面インデックスを指定してローカルエンドポイントにHTTP POSTで送信します。デバイスは即座に表示を更新します。

実用的な実装では、ほとんどの開発者が軽量グラフィックスライブラリ(PythonのPillowが一般的)を使ってサーバー側でデータをレンダリングし、そのビットマップをタイマーでTimes Gateに送信します。無料APIから株価を取得し、128×128キャンバスにテキストとミニチャートとして描画し、60秒ごとに画面1に送信するシンプルなPythonスクリプトは、午後のうちに作れるプロジェクトです。

12種類のカスタマイズ可能なRGB効果を持つデュアルエッジのアンビエントライトもAPIで制御可能ですが、画面制御エンドポイントに比べてプログラム的な照明制御のコミュニティサポートはまだ発展途上です。

Times Gate開発のためのコミュニティツール

すべてを一から作る必要はありません。Divoomデバイスの開発者コミュニティは、生のHTTP APIをより使いやすくラップした複数のライブラリやツールを作成しています。以前にPixoo-64 APIを使ったことがあるなら、これらのツールのいくつかは見覚えがあるでしょう。多くは元々Pixoo用に作られ、その後Times Gateのエンドポイントをサポートするよう拡張されました。

ツール 言語 機能 最適な用途
pixoo-rest Python(RESTサーバー) DivoomのHTTP APIをラップしたローカルRESTサーバーを実行。ピクセル、線、長方形、テキストの描画や画像の自動ダウンロードをサポート アプリとデバイスの間にRESTミドルウェア層を望む開発者向け
divoom-cli Rust コマンドラインツールとライブラリ。LANデバイスの検出、チャンネル切り替え、生のピクセル送信を含みます Rust開発者およびサーバーを書くよりCLIスクリプトを好む方へ
Divoom.Api C# / .NET DivoomデバイスAPIをラップする.NETライブラリ。元々はTimeboxデバイス用に作られました .NETエコシステムのC#開発者向け
divoom-gateway RESTゲートウェイ(Swagger UI) OpenAPI仕様とSwagger UIを備えたスタンドアロンのREST APIゲートウェイ。あらゆる言語向けに生のDivoom HTTP APIをラップしています ドキュメント化され、言語に依存しないAPIレイヤーと組み込みの探索UIを求めるチーム向け

各ツールは異なるアプローチを取っています。Pixoo-restはプロトコルの詳細を処理し、次のようなクリーンなエンドポイントを提供するため、Python開発者にとって最も人気のある出発点です。 /api/draw/text または /api/draw/rectangleRustベースのdivoom-cliは、シェルスクリプトやcronジョブから呼び出せるコンパイル済みバイナリが欲しい場合に最適です。Divoom.Apiは.NET側をカバーしています。そしてdivoom-gatewayは、多言語対応の何かを構築し、Swaggerドキュメントをすぐに利用したい場合に適しています。

Rustエコシステムは特に注目に値します。なぜならpixoo-restプロジェクトとRustのdivoomクレートの両方にデバイス検出APIが含まれており、1つの関数を呼び出すだけでLAN上のすべてのDivoomデバイスを見つけられるからです。複数のディスプレイを持っている場合や、ルーターの再起動後にデバイスのIPアドレスが変わる場合に非常に便利です。

Home Assistant統合

Home Assistantを使っている場合、Times Gateを制御するためにカスタムアプリケーションを書く必要はありません。ローカルHTTP APIはHome AssistantのRESTコマンド統合を通じて直接アクセス可能であり、任意の自動化の一部としてAPIコールを送信できます。

セットアップは簡単です。configuration.yamlに、Times GateのローカルIPアドレスと呼び出したいAPIエンドポイントを指すRESTコマンドを定義します。次に、そのコマンドを任意の自動化からトリガーします — ボタンの押下、時間トリガー、他のセンサーの状態変化、または音声コマンドなどです。Divoomデバイスに関するHome Assistantコミュニティのディスカッションには、画面チャンネルの切り替え、カスタム画像のプッシュ、周囲光センサーに基づく明るさ調整を行うRESTコマンド設定の実例が含まれています。

Times GateのオーナーがHome Assistantで構築した実用的な自動化アイデアには、ポモドーロタイマーが始まると5つの画面すべてを「集中モード」の時計に切り替えること、嵐警報が発動した際に天気警報を表示すること、誰かがドアベルを鳴らしたときにカスタムピクセルアニメーション付きの通知を表示すること、ライブ配信中に数分ごとにソーシャルメディアの統計を切り替えることなどがあります。

覚えておくべきことの一つは、Times GateはローカルAPIが利用可能になる前に最初のクラウド接続が必要なため、Home Assistantの自動化にデバイスが応答可能かどうかを確認する条件を追加すべきだということです。単純なpingチェックを行うことで、インターネットが切断された場合にエラーログが溜まるのを防げます。

APIがまだできないこと

制限を正直に伝えることは、良い開発者ガイドの一部です。Times GateのコミュニティAPIは強力ですが、実際に知っておくべき制約があります。これらを理解した上で本番システムを構築してください。

第一に、公式APIドキュメントは存在しません。コミュニティが知っていることはすべてリバースエンジニアリングによるものであり、ファームウェアの更新でAPIが予告なく変更される可能性があります。ローカルAPIの上に重要なものを構築する場合は、フォールバックプランを用意してください。たとえそれがファームウェア更新後にスクリプトがまだ動作するか確認するだけでも構いません。

第二に、クラウド依存は必須条件です。Home Assistantのサブレディットのあるユーザーは、インターネットアクセスのない隔離されたVLANでDivoomデバイスを動かそうとした際にこれを痛感しました。REST APIは、デバイスが最初にDivoomのクラウドサーバーに接続できるようにするまで応答しませんでした。完全にエアギャップされたスマートホーム環境を計画している場合、Times Gateはその環境に適していないかもしれません。

第三に、Times Gate専用のコミュニティツールの対応はまだ成長中です。多くのライブラリは元々Pixoo-64やTimebox向けに書かれており、Times Gateのエンドポイントをサポートするよう拡張されていますが、すべての機能がすべてのデバイスモデルで検証されているわけではありません。Times Gate向けに元々設計されていないライブラリを使用する場合は、信頼する前に各API呼び出しを個別にテストしてください。

ファームウェア更新の安全性

Times Gateのファームウェアを更新した後は、すべてが正常に動作していると仮定する前に、APIスクリプトの簡単なテストを実行してください。安定した自動化パイプラインがあり、それを壊せない場合は、ファームウェアのバージョンを固定してください。

よくある質問

Times Gateには公式APIがありますか?

いいえ。DivoomはTimes Gateの公式APIドキュメントを公開していません。しかし、開発者コミュニティはローカルHTTP APIをリバースエンジニアリングし、Python、Rust、C#でライブラリを作成しており、これによりデバイスをプログラムで制御することが実用的になっています。

インターネット接続なしでタイムズゲートを操作できますか?

完全ではありません。タイムズゲートはローカルLAN APIが利用可能になる前に、MQTTとHTTPSを介した初期のクラウド接続が必要です。そのハンドシェイクが完了すると、ローカルAPI呼び出しは継続的なインターネット接続なしで動作しますが、デバイスが再起動または電源を失うと、再びローカルAPIが応答する前にDivoomのクラウドサーバーに再接続する必要があります。

どのプログラミング言語にコミュニティライブラリがありますか?

Python(pixoo-rest)、Rust(divoom-cliとdivoomクレート)、C#(.NET用Divoom.Api)があります。また、divoom-gatewayというスタンドアロンのREST APIゲートウェイもあり、Swagger UIを備え、HTTPリクエストが可能な任意の言語で動作します。

Home Assistantはタイムズゲートをサポートしていますか?

はい、Home AssistantのRESTコマンド統合を通じて可能です。RESTコマンドを定義してタイムズゲートのローカルAPIエンドポイントを指し、任意のオートメーションからトリガーします。Home AssistantコミュニティにはDivoomデバイス統合の実例があります。

個別の画面にカスタムウィジェットを送れますか?

はい。5つの128×128 LCDスクリーンそれぞれが独立したコンテンツを表示できます。APIの画面インデックスパラメータを使って特定の画面にカスタムピクセルアート、テキスト、またはレンダリングされたデータを送信できます。

ここからの進め方

すでにタイムズゲートをお持ちの場合は、まずローカルAPIに対して簡単なcurlコマンドを実行して画面チャンネルを切り替えてみてください。これがあなたの「ハローワールド」体験です。そこから、好みの言語に合ったコミュニティツールを選び、小さなプロジェクトを作成しましょう:株価ティッカー、天気ダッシュボード、またはカスタム通知アニメーションなど。タイムズゲートは実験を奨励しており、一つの画面でカスタム表示ができれば、他の4つも自然に続きます。

Pixoo-64の世界から来た場合は、当社のPixoo-64 API初心者ガイドが、Pixooが使用するよりシンプルなローカルREST APIモデルをカバーしています。これは、タイムズゲートのクラウド接続アーキテクチャの変更を理解するのに役立つコンテキストです。ハードウェアのセットアップと公式製品ドキュメントについては、Divoom製品マニュアルページに最新のガイドがあります。

Divoom タイムズゲート 5画面ピクセルアート情報ディスプレイ

Divoom タイムズゲート

5つの独立した128×128のLCDスクリーン、Wi-Fi接続、ローカルAPIとコミュニティツールを通じて完全にプログラム可能。株式、暗号通貨、天気、ソーシャル統計のための組み込みウィジェット付き。

タイムズゲートを見る
Pixoo-64 + Home Assistant:ドット絵のスマートホームダッシュボードを構築する App Guide Pixoo-64 + Home Assistant:ドット絵のスマートホームダッシュボードを構築する Divoom Pixoo-64は、Home Assistantコミュニティで特に人気の高いディスプレイの1つです。このガイドでは、HACS統合のインストール、YAMLでのペー... Divoomディスプレイ用ピクセルアートのアニメーション方法(フレームごとのガイド) animate pixel art divoom Divoomディスプレイ用ピクセルアートのアニメーション方法(フレームごとのガイド) Divoomディスプレイ用のフレームごとのピクセルアートアニメーションの作り方を学びましょう。ツールを選び、フレームレートを設定し、フレームを描き、GIFをエクスポートしてデ... Divoomの天気が間違っている:場所、タイムゾーン、更新の問題を修正する方法 App Guide Divoomの天気が間違っている:場所、タイムゾーン、更新の問題を修正する方法 Divoomの天気ウィジェットの問題を解決する方法:誤った都市、古いデータ、更新されない場合の対処法。Pixoo-64、Times Gate、Ditooでの位置情報の許可、タ...
ブログに戻る
コメントを残す

コメントは公開される前に承認が必要であることにご注意ください。