@seeed-studio/meshtastic 0.1.1 → 0.2.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.ja.md ADDED
@@ -0,0 +1,344 @@
1
+ # MeshClaw: OpenClaw Meshtastic チャンネルプラグイン
2
+
3
+ <p align="center">
4
+ <a href="https://www.npmjs.com/package/@seeed-studio/meshtastic">
5
+ <img alt="npm version" src="https://img.shields.io/npm/v/@seeed-studio/meshtastic.svg" />
6
+ </a>
7
+ <a href="https://www.npmjs.com/package/@seeed-studio/meshtastic">
8
+ <img alt="license" src="https://img.shields.io/npm/l/@seeed-studio/meshtastic.svg" />
9
+ </a>
10
+ </p>
11
+
12
+ <!-- LANG_SWITCHER_START -->
13
+ <p align="center">
14
+ <a href="README.md">English</a> | <a href="README.zh-CN.md">中文</a> | <b>日本語</b> | <a href="README.fr.md">Français</a> | <a href="README.pt.md">Português</a> | <a href="README.es.md">Español</a>
15
+ </p>
16
+ <!-- LANG_SWITCHER_END -->
17
+
18
+ MeshClaw は、OpenClaw のチャンネルプラグインで、Meshtastic 経由で AI ゲートウェイがメッセージを送受信できるようにします — インターネットも携帯基地局も不要、使うのは電波だけ。山でも海でも、電力網の届かない場所からでも AI アシスタントと話せます。
19
+
20
+ ⭐ GitHub でスターをお願いします — とても励みになります!
21
+
22
+ > [!IMPORTANT]
23
+ > これは OpenClaw([OpenClaw](https://github.com/openclaw/openclaw))AIゲートウェイ用のチャンネルプラグインであり、単体アプリではありません。利用するには OpenClaw の実行環境(Node.js 22+)が必要です。
24
+
25
+ [ドキュメント][docs] · [ハードウェアガイド](#recommended-hardware) · [バグ報告][issues] · [機能要望][issues]
26
+
27
+ ## 目次
28
+
29
+ - [仕組み](#仕組み)
30
+ - [推奨ハードウェア](#推奨ハードウェア)
31
+ - [特徴](#特徴)
32
+ - [機能とロードマップ](#機能とロードマップ)
33
+ - [デモ](#デモ)
34
+ - [クイックスタート](#クイックスタート)
35
+ - [セットアップウィザード](#セットアップウィザード)
36
+ - [設定](#1-トランスポート)
37
+ - [トラブルシューティング](#2-lora-地域)
38
+ - [開発](#3-ノード名)
39
+ - [貢献](#4-チャネルアクセスgrouppolicy)
40
+
41
+ <a id="how-it-works"></a>
42
+ ## 仕組み
43
+
44
+ ```mermaid
45
+ flowchart LR
46
+ subgraph mesh ["📻 LoRa Mesh Network"]
47
+ N["Meshtastic Nodes"]
48
+ end
49
+ subgraph gw ["⚙️ OpenClaw Gateway"]
50
+ P["Meshtastic Plugin"]
51
+ AI["AI Agent"]
52
+ end
53
+ N -- "Serial (USB)" --> P
54
+ N -- "HTTP (WiFi)" --> P
55
+ N -. "MQTT (Broker)" .-> P
56
+ P <--> AI
57
+ ```
58
+
59
+ このプラグインは、Meshtastic の LoRa デバイスと OpenClaw の AI エージェントを橋渡しします。3つのトランスポートモードをサポートします:
60
+
61
+ - Serial — ローカルの Meshtastic デバイスへ USB で直接接続
62
+ - HTTP — WiFi/ローカルネットワーク経由でデバイスに接続
63
+ - MQTT — Meshtastic の MQTT ブローカーを購読。ローカルハードウェア不要
64
+
65
+ 受信メッセージは、AI に届く前にアクセス制御(DM ポリシー、グループポリシー、メンション必須)を通ります。送信返信は Markdown を除去(LoRa デバイスでは表示不可)し、電波パケットサイズの制限に収まるよう分割されます。
66
+
67
+ <a id="recommended-hardware"></a>
68
+ ## 推奨ハードウェア
69
+
70
+ <p align="center">
71
+ <img src="media/XIAOclaw.png" width="760" alt="Seeed XIAO モジュール搭載の Meshtastic デバイス" />
72
+ </p>
73
+
74
+ | デバイス | 用途 | リンク |
75
+ | -------------------------------- | ------------------------- | ----------------- |
76
+ | XIAO ESP32S3 + Wio-SX1262 キット | 入門向け開発 | [購入][hw-xiao] |
77
+ | Wio Tracker L1 Pro | 携行型フィールドゲートウェイ | [購入][hw-wio] |
78
+ | SenseCAP Card Tracker T1000-E | 小型トラッカー | [購入][hw-sensecap] |
79
+
80
+ ハードウェアがありませんか?MQTT トランスポートならブローカー経由で接続できます — ローカルデバイスは不要です。
81
+
82
+ Meshtastic 互換デバイスならどれでも動作します。
83
+
84
+ <a id="features"></a>
85
+ ## 特徴
86
+
87
+ - AI エージェント統合 — OpenClaw の AI エージェントと Meshtastic の LoRa メッシュネットワークを橋渡し。クラウドに依存しないインテリジェントな通信を実現。
88
+ - 3つのトランスポートモード — Serial(USB)、HTTP(WiFi)、MQTT に対応
89
+ - アクセス制御付きの DM とグループチャネル — DM 許可リスト、チャネル応答ルール、メンション必須設定に対応
90
+ - マルチアカウント対応 — 複数の独立接続を同時稼働
91
+ - 堅牢なメッシュ通信 — 設定可能なリトライ付きの自動再接続。切断にも強い設計。
92
+
93
+ <a id="capabilities--roadmap"></a>
94
+ ## 機能とロードマップ
95
+
96
+ このプラグインは Meshtastic を Telegram や Discord と同等の一級チャンネルとして扱い、インターネットに依存せず、LoRa 無線のみで AI との会話やスキル呼び出しを可能にします。
97
+
98
+ | オフラインで情報を照会 | クロスチャネルブリッジ:オフグリッドから送信し、どこでも受信 | 🔜 次に予定していること |
99
+ | ----------------------------------------------------------- | ------------------------------------------------------------ | ------------------------------------------------------------ |
100
+ | <img src="media/image1.png" alt="オフラインで情報を照会" /> | <img src="media/image2.png" alt="クロスチャネルブリッジ" /> | リアルタイムのノードデータ(GPS 位置、環境センサー、デバイス状態)を OpenClaw のコンテキストに取り込み、ユーザーからの問い合わせを待たずに、AI がメッシュネットワークの健全性を監視して能動的にアラートを配信できるようにする計画です。 |
101
+
102
+ <a id="demo"></a>
103
+ ## デモ
104
+
105
+ <div align="center">
106
+
107
+ https://github.com/user-attachments/assets/837062d9-a5bb-4e0a-b7cf-298e4bdf2f7c
108
+
109
+ </div>
110
+
111
+ 代替: [media/demo.mp4](media/demo.mp4)
112
+
113
+ <a id="quick-start"></a>
114
+ ## クイックスタート
115
+
116
+ ```bash
117
+ # 1. Install plugin
118
+ openclaw plugins install @seeed-studio/meshtastic
119
+
120
+ # 2. Guided setup — walks you through transport, region, and access policy
121
+ openclaw onboard
122
+
123
+ # 3. Verify
124
+ openclaw channels status --probe
125
+ ```
126
+
127
+ <p align="center">
128
+ <img src="media/setup-screenshot.png" width="700" alt="OpenClaw セットアップウィザード" />
129
+ </p>
130
+
131
+ <a id="setup-wizard"></a>
132
+ ## セットアップウィザード
133
+
134
+ `openclaw onboard` を実行すると、各設定手順を案内する対話式ウィザードが起動します。以下は各ステップの意味と選び方です。
135
+
136
+ ### 1. トランスポート
137
+
138
+ ゲートウェイが Meshtastic メッシュへ接続する方法:
139
+
140
+ | オプション | 説明 | 要件 |
141
+ | --------------------- | -------------------------------------------------------- | --------------------------------------------------- |
142
+ | Serial(USB) | ローカルデバイスへ USB で直接接続。利用可能ポートを自動検出。 | Meshtastic デバイスを USB で接続 |
143
+ | HTTP(WiFi) | ローカルネットワーク越しにデバイスへ接続。 | デバイスの IP またはホスト名(例 `meshtastic.local`) |
144
+ | MQTT(ブローカー) | MQTT ブローカー経由でメッシュに接続 — ローカル HW 不要。 | ブローカーのアドレス、認証情報、購読トピック |
145
+
146
+ ### 2. LoRa 地域
147
+
148
+ > Serial と HTTP のみ。MQTT は購読トピックから地域を推定します。
149
+
150
+ デバイスの無線周波数地域を設定します。各国の規制およびメッシュ上の他ノードと一致させる必要があります。主な選択肢:
151
+
152
+ | 地域 | 周波数 |
153
+ | -------- | ----------------- |
154
+ | `US` | 902–928 MHz |
155
+ | `EU_868` | 869 MHz |
156
+ | `CN` | 470–510 MHz |
157
+ | `JP` | 920 MHz |
158
+ | `UNSET` | デバイス既定を維持 |
159
+
160
+ 全リストは [Meshtastic の地域ドキュメント](https://meshtastic.org/docs/getting-started/initial-config/#lora)を参照してください。
161
+
162
+ ### 3. ノード名
163
+
164
+ メッシュ上でのデバイス表示名。グループチャネルでの@メンションのトリガーとしても使用されます(例: `@OpenClaw`)。
165
+
166
+ - Serial / HTTP: 任意 — 空の場合は接続デバイスから自動検出します。
167
+ - MQTT: 必須 — 参照できる物理デバイスがありません。
168
+
169
+ ### 4. チャネルアクセス(`groupPolicy`)
170
+
171
+ メッシュのグループチャネル(例: LongFast, Emergency)で、ボットが応答するか・どのように応答するかを制御します:
172
+
173
+ | ポリシー | 動作 |
174
+ | --------------------- | ------------------------------------------------------------ |
175
+ | `disabled`(既定) | すべてのグループチャネルを無視。DM のみ処理。 |
176
+ | `open` | メッシュ上のあらゆるチャネルで応答。 |
177
+ | `allowlist` | 指定したチャネルでのみ応答。入力時にチャネル名(カンマ区切り、例 `LongFast, Emergency`)を指定。`*` で全一致のワイルドカード。 |
178
+
179
+ ### 5. メンション必須
180
+
181
+ > チャネルアクセスが有効(`disabled` 以外)な場合のみ表示されます。
182
+
183
+ 有効(既定: はい)の場合、グループチャネルでは、誰かがノード名をメンションしたときのみボットが応答します(例: `@OpenClaw 今の天気は?`)。これにより、チャネル内の全メッセージに反応してしまうのを防げます。
184
+
185
+ 無効にすると、許可されたチャネル内のすべてのメッセージに応答します。
186
+
187
+ ### 6. DM アクセスポリシー(`dmPolicy`)
188
+
189
+ 誰がボットにダイレクトメッセージを送れるかを制御します:
190
+
191
+ | ポリシー | 動作 |
192
+ | -------------------- | ------------------------------------------------------------ |
193
+ | `pairing`(既定) | 新しい送信者はペアリング要求をトリガー。承認後にチャット可能。 |
194
+ | `open` | メッシュ上の誰でも自由に DM 可能。 |
195
+ | `allowlist` | `allowFrom` に記載のノードのみ DM を許可。その他は無視。 |
196
+
197
+ ### 7. DM 許可リスト(`allowFrom`)
198
+
199
+ > `dmPolicy` が `allowlist` の場合、またはウィザードが必要と判断した場合に表示されます。
200
+
201
+ DM を送信できる Meshtastic ユーザー ID の一覧。形式: `!aabbccdd`(16進 User ID)。複数指定はカンマ区切り。
202
+
203
+ <p align="center">
204
+ <img src="media/image3.jpg" width="400" />
205
+ </p>
206
+
207
+ ### 8. アカウント表示名
208
+
209
+ > マルチアカウント設定時にのみ表示。任意。
210
+
211
+ アカウントに人間が読みやすい表示名を割り当てます。たとえば ID が `home` のアカウントを「Home Station」と表示できます。省略した場合は元のアカウント ID をそのまま使用。機能には影響しない見た目のみの設定です。
212
+
213
+ <a id="configuration"></a>
214
+ ## 設定
215
+
216
+ ガイド付きセットアップ(`openclaw onboard`)で以下の内容はすべて設定できます。手順は[セットアップウィザード](#setup-wizard)を参照。手動設定する場合は `openclaw config edit` を使用します。
217
+
218
+ ### Serial(USB)
219
+
220
+ ```yaml
221
+ channels:
222
+ meshtastic:
223
+ transport: serial
224
+ serialPort: /dev/ttyUSB0
225
+ nodeName: OpenClaw
226
+ ```
227
+
228
+ ### HTTP(WiFi)
229
+
230
+ ```yaml
231
+ channels:
232
+ meshtastic:
233
+ transport: http
234
+ httpAddress: meshtastic.local
235
+ nodeName: OpenClaw
236
+ ```
237
+
238
+ ### MQTT(ブローカー)
239
+
240
+ ```yaml
241
+ channels:
242
+ meshtastic:
243
+ transport: mqtt
244
+ nodeName: OpenClaw
245
+ mqtt:
246
+ broker: mqtt.meshtastic.org
247
+ username: meshdev
248
+ password: large4cats
249
+ topic: "msh/US/2/json/#"
250
+ ```
251
+
252
+ ### マルチアカウント
253
+
254
+ ```yaml
255
+ channels:
256
+ meshtastic:
257
+ accounts:
258
+ home:
259
+ transport: serial
260
+ serialPort: /dev/ttyUSB0
261
+ remote:
262
+ transport: mqtt
263
+ mqtt:
264
+ broker: mqtt.meshtastic.org
265
+ topic: "msh/US/2/json/#"
266
+ ```
267
+
268
+ <details>
269
+ <summary><b>全オプションリファレンス</b></summary>
270
+
271
+ | キー | 型 | 既定 | 備考 |
272
+ | --------------------- | ------------------------------- | --------------------- | ------------------------------------------------------------ |
273
+ | `transport` | `serial \| http \| mqtt` | `serial` | |
274
+ | `serialPort` | `string` | — | Serial の場合は必須 |
275
+ | `httpAddress` | `string` | `meshtastic.local` | HTTP の場合は必須 |
276
+ | `httpTls` | `boolean` | `false` | |
277
+ | `mqtt.broker` | `string` | `mqtt.meshtastic.org` | |
278
+ | `mqtt.port` | `number` | `1883` | |
279
+ | `mqtt.username` | `string` | `meshdev` | |
280
+ | `mqtt.password` | `string` | `large4cats` | |
281
+ | `mqtt.topic` | `string` | `msh/US/2/json/#` | 購読トピック |
282
+ | `mqtt.publishTopic` | `string` | derived | |
283
+ | `mqtt.tls` | `boolean` | `false` | |
284
+ | `region` | enum | `UNSET` | `US`, `EU_868`, `CN`, `JP`, `ANZ`, `KR`, `TW`, `RU`, `IN`, `NZ_865`, `TH`, `EU_433`, `UA_433`, `UA_868`, `MY_433`, `MY_919`, `SG_923`, `LORA_24`。Serial/HTTP のみ。 |
285
+ | `nodeName` | `string` | 自動検出 | 表示名かつ @メンショントリガー。MQTT では必須。 |
286
+ | `dmPolicy` | `open \| pairing \| allowlist` | `pairing` | DM を送れる範囲。[DM アクセスポリシー](#6-dm-access-policy-dmpolicy)参照。 |
287
+ | `allowFrom` | `string[]` | — | DM 許可リストのノード ID。例 `["!aabbccdd"]` |
288
+ | `groupPolicy` | `open \| allowlist \| disabled` | `disabled` | グループチャネルでの応答ポリシー。[チャネルアクセス](#4-channel-access-grouppolicy)参照。 |
289
+ | `channels` | `Record<string, object>` | — | チャネル単位の上書き: `requireMention`, `allowFrom`, `tools` |
290
+
291
+ </details>
292
+
293
+ <details>
294
+ <summary><b>環境変数での上書き</b></summary>
295
+
296
+ これらはデフォルトアカウントの設定を上書きします(名前付きアカウントは YAML が優先されます):
297
+
298
+ | 環境変数 | 対応する設定キー |
299
+ | -------------------------- | ----------------- |
300
+ | `MESHTASTIC_TRANSPORT` | `transport` |
301
+ | `MESHTASTIC_SERIAL_PORT` | `serialPort` |
302
+ | `MESHTASTIC_HTTP_ADDRESS` | `httpAddress` |
303
+ | `MESHTASTIC_MQTT_BROKER` | `mqtt.broker` |
304
+ | `MESHTASTIC_MQTT_TOPIC` | `mqtt.topic` |
305
+
306
+ </details>
307
+
308
+ <a id="troubleshooting"></a>
309
+ ## トラブルシューティング
310
+
311
+ | 症状 | 確認ポイント |
312
+ | ----------------------- | ------------------------------------------------------------- |
313
+ | Serial に接続できない | デバイスパスは正しいか?ホストの権限は足りているか? |
314
+ | HTTP に接続できない | `httpAddress` に到達できるか?`httpTls` はデバイスと一致か? |
315
+ | MQTT が受信しない | `mqtt.topic` の地域指定は正しいか?ブローカー認証は有効か? |
316
+ | DM に応答しない | `dmPolicy` と `allowFrom` は設定済みか?[DM アクセス](#6-dm-access-policy-dmpolicy)参照。 |
317
+ | グループで応答しない | `groupPolicy` は有効か?チャネルは許可リストにあるか?メンション必須か?[チャネルアクセス](#4-channel-access-grouppolicy)参照。 |
318
+
319
+ バグを見つけましたか?トランスポートの種類、設定(秘密はマスク)、`openclaw channels status --probe` の出力を添えて[Issue を作成][issues]してください。
320
+
321
+ <a id="development"></a>
322
+ ## 開発
323
+
324
+ ```bash
325
+ git clone https://github.com/Seeed-Solution/MeshClaw.git
326
+ cd MeshClaw
327
+ npm install
328
+ openclaw plugins install -l ./MeshClaw
329
+ ```
330
+
331
+ ビルド工程は不要 — OpenClaw は TypeScript のソースを直接読み込みます。`openclaw channels status --probe` で確認してください。
332
+
333
+ <a id="contributing"></a>
334
+ ## 貢献
335
+
336
+ - バグ報告や機能要望は[Issue を作成][issues]
337
+ - プルリク歓迎 — 既存の TypeScript コーディング規約に合わせてください
338
+
339
+ <!-- Reference-style links -->
340
+ [docs]: https://meshtastic.org/docs/
341
+ [issues]: https://github.com/Seeed-Solution/MeshClaw/issues
342
+ [hw-xiao]: https://www.seeedstudio.com/Wio-SX1262-with-XIAO-ESP32S3-p-5982.html
343
+ [hw-wio]: https://www.seeedstudio.com/Wio-Tracker-L1-Pro-p-6454.html
344
+ [hw-sensecap]: https://www.seeedstudio.com/SenseCAP-Card-Tracker-T1000-E-for-Meshtastic-p-5913.html