@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/.github/scripts/translate_readme.py +632 -0
- package/.github/translate/do-not-translate.md +6 -0
- package/.github/translate/glossary/es.md +23 -0
- package/.github/translate/glossary/fr.md +23 -0
- package/.github/translate/glossary/ja.md +23 -0
- package/.github/translate/glossary/pt.md +23 -0
- package/.github/translate/glossary/zh-CN.md +23 -0
- package/.github/translate/languages.json +37 -0
- package/.github/translate/prompts/es.md +16 -0
- package/.github/translate/prompts/fr.md +16 -0
- package/.github/translate/prompts/ja.md +17 -0
- package/.github/translate/prompts/pt.md +16 -0
- package/.github/translate/prompts/zh-CN.md +15 -0
- package/.github/workflows/publish.yml +25 -0
- package/.github/workflows/readme-translate.yml +166 -0
- package/AGENTS.md +172 -0
- package/LICENSE +21 -0
- package/README.es.md +337 -0
- package/README.fr.md +350 -0
- package/README.ja.md +344 -0
- package/README.md +262 -88
- package/README.pt.md +337 -0
- package/README.zh-CN.md +337 -0
- package/package.json +4 -3
- package/src/channel.ts +70 -17
- package/src/client.ts +108 -17
- package/src/config-schema.ts +37 -7
- package/src/inbound.ts +19 -4
- package/src/monitor.ts +131 -104
- package/src/mqtt-client.ts +30 -6
- package/src/normalize.ts +12 -4
- package/src/onboarding.ts +116 -28
- package/src/policy.ts +6 -2
- package/src/send.ts +13 -7
- package/src/types.ts +4 -2
package/README.fr.md
ADDED
|
@@ -0,0 +1,350 @@
|
|
|
1
|
+
# MeshClaw : Plugin de canal OpenClaw pour Meshtastic
|
|
2
|
+
|
|
3
|
+
<p align="center">
|
|
4
|
+
<a href="https://www.npmjs.com/package/@seeed-studio/meshtastic">
|
|
5
|
+
<img alt="version npm" 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="licence" 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> | <a href="README.ja.md">日本語</a> | <b>Français</b> | <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 est un plugin de canal OpenClaw qui permet à votre passerelle IA d’envoyer et recevoir des messages via Meshtastic — sans internet, sans antennes cellulaires, uniquement par ondes radio. Parlez à votre assistant IA depuis la montagne, l’océan, ou partout où le réseau n’existe pas.
|
|
19
|
+
|
|
20
|
+
⭐ Mettez-nous une étoile sur GitHub — ça nous motive beaucoup !
|
|
21
|
+
|
|
22
|
+
> [!IMPORTANT]
|
|
23
|
+
> Ceci est un plugin de canal pour la passerelle IA OpenClaw — ce n’est pas une application autonome. Vous avez besoin d’une instance OpenClaw en cours d’exécution (Node.js 22+) pour l’utiliser.
|
|
24
|
+
|
|
25
|
+
[Documentation][docs] · [Guide matériel](#recommended-hardware) · [Signaler un bug][issues] · [Demander une fonctionnalité][issues]
|
|
26
|
+
|
|
27
|
+
## Table des matières
|
|
28
|
+
|
|
29
|
+
- [Fonctionnement](#fonctionnement)
|
|
30
|
+
- [Matériel recommandé](#matériel-recommandé)
|
|
31
|
+
- [Fonctionnalités](#fonctionnalités)
|
|
32
|
+
- [Capacités et feuille de route](#capacités-et-feuille-de-route)
|
|
33
|
+
- [Démo](#démo)
|
|
34
|
+
- [Démarrage rapide](#démarrage-rapide)
|
|
35
|
+
- [Assistant de configuration](#assistant-de-configuration)
|
|
36
|
+
- [Configuration](#1-transport)
|
|
37
|
+
- [Dépannage](#2-région-lora)
|
|
38
|
+
- [Développement](#3-nom-du-nœud)
|
|
39
|
+
- [Contribuer](#4-accès-aux-canaux-grouppolicy)
|
|
40
|
+
|
|
41
|
+
<a id="how-it-works"></a>
|
|
42
|
+
## Fonctionnement
|
|
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
|
+
Le plugin fait le pont entre les appareils LoRa Meshtastic et l’agent IA d’OpenClaw. Il prend en charge trois modes de transport :
|
|
60
|
+
|
|
61
|
+
- Série — connexion USB directe à un appareil Meshtastic local
|
|
62
|
+
- HTTP — connexion à un appareil via WiFi / réseau local
|
|
63
|
+
- MQTT — abonnement à un broker Meshtastic, sans matériel local
|
|
64
|
+
|
|
65
|
+
Les messages entrants passent par un contrôle d’accès (politique de DM, politique de groupe, obligation de mention) avant d’atteindre l’IA. Les réponses sortantes sont dépouillées du formatage Markdown (les appareils LoRa ne peuvent pas l’afficher) et découpées afin de respecter les limites de taille des paquets radio.
|
|
66
|
+
|
|
67
|
+
<a id="recommended-hardware"></a>
|
|
68
|
+
## Matériel recommandé
|
|
69
|
+
|
|
70
|
+
<p align="center">
|
|
71
|
+
<img src="media/XIAOclaw.png" width="760" alt="Appareil Meshtastic avec module Seeed XIAO" />
|
|
72
|
+
</p>
|
|
73
|
+
|
|
74
|
+
| Appareil | Idéal pour | Lien |
|
|
75
|
+
| ----------------------------- | -------------------------- | ------------------- |
|
|
76
|
+
| Kit XIAO ESP32S3 + Wio-SX1262 | Développement d’entrée de gamme | [Acheter][hw-xiao] |
|
|
77
|
+
| Wio Tracker L1 Pro | Passerelle de terrain portable | [Acheter][hw-wio] |
|
|
78
|
+
| SenseCAP Card Tracker T1000-E | Traceur compact | [Acheter][hw-sensecap] |
|
|
79
|
+
|
|
80
|
+
Pas de matériel ? Le transport MQTT se connecte via un broker — aucun appareil local requis.
|
|
81
|
+
|
|
82
|
+
Tout appareil compatible Meshtastic fonctionne.
|
|
83
|
+
|
|
84
|
+
<a id="features"></a>
|
|
85
|
+
## Fonctionnalités
|
|
86
|
+
|
|
87
|
+
- Intégration d’agent IA — Fait le pont entre les agents IA OpenClaw et les réseaux maillés LoRa Meshtastic. Permet une communication intelligente sans dépendance au cloud.
|
|
88
|
+
|
|
89
|
+
- Trois modes de transport — Série (USB), HTTP (WiFi) et MQTT
|
|
90
|
+
|
|
91
|
+
- Canaux DM et de groupe avec contrôle d’accès — Prise en charge des deux modes de conversation avec des listes d’autorisation pour DM, des règles de réponse par canal et l’obligation de mention
|
|
92
|
+
|
|
93
|
+
- Prise en charge multi-comptes — Exécutez plusieurs connexions indépendantes simultanément
|
|
94
|
+
|
|
95
|
+
- Communication maillée résiliente — Reconnexion automatique avec tentatives configurables. Gère les coupures de connexion en douceur.
|
|
96
|
+
|
|
97
|
+
<a id="capabilities--roadmap"></a>
|
|
98
|
+
## Capacités et feuille de route
|
|
99
|
+
|
|
100
|
+
Le plugin traite Meshtastic comme un canal de première classe — au même titre que Telegram ou Discord — permettant des conversations IA et l’invocation de compétences entièrement via la radio LoRa, sans dépendance à internet.
|
|
101
|
+
|
|
102
|
+
| Interroger des informations hors ligne | Passerelle intercanaux : envoyez hors réseau, recevez partout | 🔜 Prochainement : |
|
|
103
|
+
| -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- |
|
|
104
|
+
| <img src="media/image1.png" alt="Interroger des informations hors ligne" /> | <img src="media/image2.png" alt="Passerelle intercanaux" /> | Nous prévoyons d’ingérer les données temps réel des nœuds (position GPS, capteurs environnementaux, état de l’appareil) dans le contexte d’OpenClaw, afin de permettre à l’IA de surveiller la santé du réseau maillé et de diffuser des alertes proactives sans attendre les requêtes des utilisateurs. |
|
|
105
|
+
|
|
106
|
+
<a id="demo"></a>
|
|
107
|
+
## Démo
|
|
108
|
+
|
|
109
|
+
<div align="center">
|
|
110
|
+
|
|
111
|
+
https://github.com/user-attachments/assets/837062d9-a5bb-4e0a-b7cf-298e4bdf2f7c
|
|
112
|
+
|
|
113
|
+
</div>
|
|
114
|
+
|
|
115
|
+
Alternative : [media/demo.mp4](media/demo.mp4)
|
|
116
|
+
|
|
117
|
+
<a id="quick-start"></a>
|
|
118
|
+
## Démarrage rapide
|
|
119
|
+
|
|
120
|
+
```bash
|
|
121
|
+
# 1. Install plugin
|
|
122
|
+
openclaw plugins install @seeed-studio/meshtastic
|
|
123
|
+
|
|
124
|
+
# 2. Guided setup — walks you through transport, region, and access policy
|
|
125
|
+
openclaw onboard
|
|
126
|
+
|
|
127
|
+
# 3. Verify
|
|
128
|
+
openclaw channels status --probe
|
|
129
|
+
```
|
|
130
|
+
|
|
131
|
+
<p align="center">
|
|
132
|
+
<img src="media/setup-screenshot.png" width="700" alt="Assistant de configuration OpenClaw" />
|
|
133
|
+
</p>
|
|
134
|
+
|
|
135
|
+
<a id="setup-wizard"></a>
|
|
136
|
+
## Assistant de configuration
|
|
137
|
+
|
|
138
|
+
Lancer `openclaw onboard` ouvre un assistant interactif qui vous guide à chaque étape de configuration. Voici ce que signifie chaque étape et comment choisir.
|
|
139
|
+
|
|
140
|
+
### 1. Transport
|
|
141
|
+
|
|
142
|
+
La manière dont la passerelle se connecte au réseau maillé Meshtastic :
|
|
143
|
+
|
|
144
|
+
| Option | Description | Prérequis |
|
|
145
|
+
| ----------------- | ------------------------------------------------------------- | ----------------------------------------------- |
|
|
146
|
+
| Série (USB) | Connexion USB directe à un appareil local. Détection automatique des ports disponibles. | Appareil Meshtastic branché en USB |
|
|
147
|
+
| HTTP (WiFi) | Connexion à un appareil via le réseau local. | IP ou nom d’hôte de l’appareil (ex. `meshtastic.local`) |
|
|
148
|
+
| MQTT (broker) | Connexion au réseau via un broker MQTT — aucun matériel local requis. | Adresse du broker, identifiants et sujet d’abonnement |
|
|
149
|
+
|
|
150
|
+
### 2. Région LoRa
|
|
151
|
+
|
|
152
|
+
> Série et HTTP uniquement. MQTT déduit la région depuis le sujet d’abonnement.
|
|
153
|
+
|
|
154
|
+
Définit la région de fréquence radio sur l’appareil. Doit correspondre à vos réglementations locales et aux autres nœuds du réseau. Choix courants :
|
|
155
|
+
|
|
156
|
+
| Région | Fréquence |
|
|
157
|
+
| -------- | -------------------- |
|
|
158
|
+
| `US` | 902–928 MHz |
|
|
159
|
+
| `EU_868` | 869 MHz |
|
|
160
|
+
| `CN` | 470–510 MHz |
|
|
161
|
+
| `JP` | 920 MHz |
|
|
162
|
+
| `UNSET` | Conserver la valeur par défaut de l’appareil |
|
|
163
|
+
|
|
164
|
+
Voir la documentation Meshtastic sur les régions : https://meshtastic.org/docs/getting-started/initial-config/#lora
|
|
165
|
+
|
|
166
|
+
### 3. Nom du nœud
|
|
167
|
+
|
|
168
|
+
Le nom affiché de l’appareil sur le réseau. Utilisé aussi comme déclencheur de mention @ dans les canaux de groupe — les autres enverront `@OpenClaw` pour parler à votre bot.
|
|
169
|
+
|
|
170
|
+
- Série / HTTP : optionnel — détecté automatiquement depuis l’appareil connecté si laissé vide.
|
|
171
|
+
- MQTT : requis — il n’y a pas d’appareil physique pour lire le nom.
|
|
172
|
+
|
|
173
|
+
<a id="4-channel-access-grouppolicy"></a>
|
|
174
|
+
### 4. Accès aux canaux (`groupPolicy`)
|
|
175
|
+
|
|
176
|
+
Contrôle si et comment le bot répond dans les canaux de groupe du réseau (ex. LongFast, Emergency) :
|
|
177
|
+
|
|
178
|
+
| Politique | Comportement |
|
|
179
|
+
| -------------------- | ------------------------------------------------------------ |
|
|
180
|
+
| `disabled` (par défaut) | Ignore tous les messages des canaux de groupe. Seuls les DM sont traités. |
|
|
181
|
+
| `open` | Répond dans tous les canaux du réseau. |
|
|
182
|
+
| `allowlist` | Répond uniquement dans les canaux listés. Vous serez invité à saisir des noms de canaux (séparés par des virgules, ex. `LongFast, Emergency`). Utilisez `*` comme joker pour tout correspondre. |
|
|
183
|
+
|
|
184
|
+
### 5. Exiger une mention
|
|
185
|
+
|
|
186
|
+
> N’apparaît que lorsque l’accès aux canaux est activé (pas `disabled`).
|
|
187
|
+
|
|
188
|
+
Lorsqu’activé (par défaut : oui), le bot ne répond dans les canaux de groupe que si quelqu’un mentionne son nom de nœud (ex. `@OpenClaw quel temps fait-il ?`). Cela évite que le bot ne réponde à chaque message du canal.
|
|
189
|
+
|
|
190
|
+
Lorsqu’il est désactivé, le bot répond à tous les messages dans les canaux autorisés.
|
|
191
|
+
|
|
192
|
+
<a id="6-dm-access-policy-dmpolicy"></a>
|
|
193
|
+
### 6. Politique d’accès aux DM (`dmPolicy`)
|
|
194
|
+
|
|
195
|
+
Contrôle qui peut envoyer des messages privés (DM) au bot :
|
|
196
|
+
|
|
197
|
+
| Politique | Comportement |
|
|
198
|
+
| ------------------- | ------------------------------------------------------------- |
|
|
199
|
+
| `pairing` (par défaut) | Les nouveaux expéditeurs déclenchent une demande d’appairage qui doit être approuvée avant de pouvoir discuter. |
|
|
200
|
+
| `open` | N’importe quel nœud du réseau peut envoyer un DM librement. |
|
|
201
|
+
| `allowlist` | Seuls les nœuds listés dans `allowFrom` peuvent envoyer un DM. Les autres sont ignorés. |
|
|
202
|
+
|
|
203
|
+
### 7. Liste d’autorisation DM (`allowFrom`)
|
|
204
|
+
|
|
205
|
+
> N’apparaît que lorsque `dmPolicy` vaut `allowlist`, ou lorsque l’assistant détermine qu’elle est nécessaire.
|
|
206
|
+
|
|
207
|
+
Une liste d’identifiants utilisateur Meshtastic autorisés à envoyer des messages privés. Format : `!aabbccdd` (ID utilisateur hexadécimal). Plusieurs entrées sont séparées par des virgules.
|
|
208
|
+
|
|
209
|
+
<p align="center">
|
|
210
|
+
<img src="media/image3.jpg" width="400" />
|
|
211
|
+
</p>
|
|
212
|
+
|
|
213
|
+
### 8. Noms d’affichage des comptes
|
|
214
|
+
|
|
215
|
+
> N’apparaît que pour les configurations multi-comptes. Optionnel.
|
|
216
|
+
|
|
217
|
+
Attribue des noms lisibles aux comptes. Par exemple, un compte avec l’ID `home` peut être affiché comme « Home Station ». Si ignoré, l’ID brut du compte est utilisé. Purement cosmétique, n’affecte pas la fonctionnalité.
|
|
218
|
+
|
|
219
|
+
<a id="configuration"></a>
|
|
220
|
+
## Configuration
|
|
221
|
+
|
|
222
|
+
La configuration guidée (`openclaw onboard`) couvre tout ce qui suit. Voir l’Assistant de configuration pour un pas-à-pas. Pour une configuration manuelle, éditez avec `openclaw config edit`.
|
|
223
|
+
|
|
224
|
+
### Série (USB)
|
|
225
|
+
|
|
226
|
+
```yaml
|
|
227
|
+
channels:
|
|
228
|
+
meshtastic:
|
|
229
|
+
transport: serial
|
|
230
|
+
serialPort: /dev/ttyUSB0
|
|
231
|
+
nodeName: OpenClaw
|
|
232
|
+
```
|
|
233
|
+
|
|
234
|
+
### HTTP (WiFi)
|
|
235
|
+
|
|
236
|
+
```yaml
|
|
237
|
+
channels:
|
|
238
|
+
meshtastic:
|
|
239
|
+
transport: http
|
|
240
|
+
httpAddress: meshtastic.local
|
|
241
|
+
nodeName: OpenClaw
|
|
242
|
+
```
|
|
243
|
+
|
|
244
|
+
### MQTT (broker)
|
|
245
|
+
|
|
246
|
+
```yaml
|
|
247
|
+
channels:
|
|
248
|
+
meshtastic:
|
|
249
|
+
transport: mqtt
|
|
250
|
+
nodeName: OpenClaw
|
|
251
|
+
mqtt:
|
|
252
|
+
broker: mqtt.meshtastic.org
|
|
253
|
+
username: meshdev
|
|
254
|
+
password: large4cats
|
|
255
|
+
topic: "msh/US/2/json/#"
|
|
256
|
+
```
|
|
257
|
+
|
|
258
|
+
### Multi-comptes
|
|
259
|
+
|
|
260
|
+
```yaml
|
|
261
|
+
channels:
|
|
262
|
+
meshtastic:
|
|
263
|
+
accounts:
|
|
264
|
+
home:
|
|
265
|
+
transport: serial
|
|
266
|
+
serialPort: /dev/ttyUSB0
|
|
267
|
+
remote:
|
|
268
|
+
transport: mqtt
|
|
269
|
+
mqtt:
|
|
270
|
+
broker: mqtt.meshtastic.org
|
|
271
|
+
topic: "msh/US/2/json/#"
|
|
272
|
+
```
|
|
273
|
+
|
|
274
|
+
<details>
|
|
275
|
+
<summary><b>Référence de toutes les options</b></summary>
|
|
276
|
+
|
|
277
|
+
| Clé | Type | Valeur par défaut | Remarques |
|
|
278
|
+
| ------------------- | ------------------------------- | --------------------- | ----------------------------------------------------------- |
|
|
279
|
+
| `transport` | `serial \| http \| mqtt` | `serial` | |
|
|
280
|
+
| `serialPort` | `string` | — | Requis pour le mode série |
|
|
281
|
+
| `httpAddress` | `string` | `meshtastic.local` | Requis pour HTTP |
|
|
282
|
+
| `httpTls` | `boolean` | `false` | |
|
|
283
|
+
| `mqtt.broker` | `string` | `mqtt.meshtastic.org` | |
|
|
284
|
+
| `mqtt.port` | `number` | `1883` | |
|
|
285
|
+
| `mqtt.username` | `string` | `meshdev` | |
|
|
286
|
+
| `mqtt.password` | `string` | `large4cats` | |
|
|
287
|
+
| `mqtt.topic` | `string` | `msh/US/2/json/#` | Sujet d’abonnement |
|
|
288
|
+
| `mqtt.publishTopic` | `string` | dérivé | |
|
|
289
|
+
| `mqtt.tls` | `boolean` | `false` | |
|
|
290
|
+
| `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`. Série/HTTP uniquement. |
|
|
291
|
+
| `nodeName` | `string` | auto-détection | Nom d’affichage et déclencheur @mention. Requis pour MQTT. |
|
|
292
|
+
| `dmPolicy` | `open \| pairing \| allowlist` | `pairing` | Qui peut envoyer des messages privés. Voir Politique d’accès aux DM. |
|
|
293
|
+
| `allowFrom` | `string[]` | — | IDs de nœuds pour la liste d’autorisation DM, ex. `["!aabbccdd"]` |
|
|
294
|
+
| `groupPolicy` | `open \| allowlist \| disabled` | `disabled` | Politique de réponse dans les canaux de groupe. Voir Accès aux canaux. |
|
|
295
|
+
| `channels` | `Record<string, object>` | — | Surcharges par canal : `requireMention`, `allowFrom`, `tools` |
|
|
296
|
+
|
|
297
|
+
</details>
|
|
298
|
+
|
|
299
|
+
<details>
|
|
300
|
+
<summary><b>Substitutions par variables d’environnement</b></summary>
|
|
301
|
+
|
|
302
|
+
Ces variables substituent la configuration du compte par défaut (le YAML a priorité pour les comptes nommés) :
|
|
303
|
+
|
|
304
|
+
| Variable | Clé de configuration équivalente |
|
|
305
|
+
| ------------------------- | -------------------------------- |
|
|
306
|
+
| `MESHTASTIC_TRANSPORT` | `transport` |
|
|
307
|
+
| `MESHTASTIC_SERIAL_PORT` | `serialPort` |
|
|
308
|
+
| `MESHTASTIC_HTTP_ADDRESS` | `httpAddress` |
|
|
309
|
+
| `MESHTASTIC_MQTT_BROKER` | `mqtt.broker` |
|
|
310
|
+
| `MESHTASTIC_MQTT_TOPIC` | `mqtt.topic` |
|
|
311
|
+
|
|
312
|
+
</details>
|
|
313
|
+
|
|
314
|
+
<a id="troubleshooting"></a>
|
|
315
|
+
## Dépannage
|
|
316
|
+
|
|
317
|
+
| Symptôme | Vérifier |
|
|
318
|
+
| -------------------- | ------------------------------------------------------------ |
|
|
319
|
+
| La liaison série ne se connecte pas | Chemin de l’appareil correct ? Permissions sur l’hôte ? |
|
|
320
|
+
| La connexion HTTP échoue | `httpAddress` joignable ? `httpTls` correspond à l’appareil ? |
|
|
321
|
+
| MQTT ne reçoit rien | Région correcte dans `mqtt.topic` ? Identifiants du broker valides ? |
|
|
322
|
+
| Pas de réponses en DM | `dmPolicy` et `allowFrom` configurés ? Voir Politique d’accès aux DM. |
|
|
323
|
+
| Pas de réponses en groupe | `groupPolicy` activé ? Canal dans la liste autorisée ? Mention requise ? Voir Accès aux canaux. |
|
|
324
|
+
|
|
325
|
+
Vous avez trouvé un bug ? [Ouvrez un ticket][issues] en indiquant le type de transport, la configuration (masquez les secrets) et la sortie de `openclaw channels status --probe`.
|
|
326
|
+
|
|
327
|
+
<a id="development"></a>
|
|
328
|
+
## Développement
|
|
329
|
+
|
|
330
|
+
```bash
|
|
331
|
+
git clone https://github.com/Seeed-Solution/MeshClaw.git
|
|
332
|
+
cd MeshClaw
|
|
333
|
+
npm install
|
|
334
|
+
openclaw plugins install -l ./MeshClaw
|
|
335
|
+
```
|
|
336
|
+
|
|
337
|
+
Pas d’étape de build — OpenClaw charge directement le code source TypeScript. Utilisez `openclaw channels status --probe` pour vérifier.
|
|
338
|
+
|
|
339
|
+
<a id="contributing"></a>
|
|
340
|
+
## Contribuer
|
|
341
|
+
|
|
342
|
+
- [Ouvrez un ticket][issues] pour les bugs ou les demandes de fonctionnalités
|
|
343
|
+
- Les pull requests sont les bienvenues — alignez le code sur les conventions TypeScript existantes
|
|
344
|
+
|
|
345
|
+
<!-- Liens de référence -->
|
|
346
|
+
[docs]: https://meshtastic.org/docs/
|
|
347
|
+
[issues]: https://github.com/Seeed-Solution/MeshClaw/issues
|
|
348
|
+
[hw-xiao]: https://www.seeedstudio.com/Wio-SX1262-with-XIAO-ESP32S3-p-5982.html
|
|
349
|
+
[hw-wio]: https://www.seeedstudio.com/Wio-Tracker-L1-Pro-p-6454.html
|
|
350
|
+
[hw-sensecap]: https://www.seeedstudio.com/SenseCAP-Card-Tracker-T1000-E-for-Meshtastic-p-5913.html
|