返回顶部
m

micropython-skills

>

作者: admin | 来源: ClawHub
源自
ClawHub
版本
V 1.0.0
安全检测
已通过
102
下载量
1
收藏
概述
安装方式
版本历史

micropython-skills

# micropython-skills AI Agent programmable co-processor skill collection. You (the Agent) generate MicroPython code, push it to devices via REPL, parse structured output, and iterate — turning hardware into your extended capability. ## Quick Start > **Python command**: Use `python3` on macOS/Linux, `python` on Windows. > On Windows, `python3` is often a Microsoft Store stub that silently fails (exit code 49). > On macOS/Linux, `python` may not exist or may point to Python 2. Every interaction follows this flow: 1. **Probe** — Run `python3 {SKILL_DIR}/scripts/device_probe.py` to discover connected devices - `status: "ok"` → Device has MicroPython, proceed to step 2 - `status: "no_firmware"` → ESP chip detected but no MicroPython. Ask user to confirm, then flash: `python3 {SKILL_DIR}/scripts/firmware_flash.py --port PORT --yes` - `status: "no_device"` → No device connected. Guide user to connect hardware. - `status: "permission_denied"` → Serial port not accessible. On Linux: `sudo chmod 666 /dev/ttyACM0`. On Windows: check Device Manager for driver issues. 2. **Connect** — Default: USB via mpremote. Optional: WiFi via WebREPL (user must request) 3. **Execute** — Generate MicroPython code and push to device 4. **Parse** — Scan stdout for tagged lines (RESULT:/ERROR:/STATUS:/LOG:) 5. **Iterate** — Adjust code based on results, repeat steps 3-5 Where `{SKILL_DIR}` is the directory containing this SKILL.md file. ## Connection Management ### Default: USB (mpremote) Always start by probing for devices: ```bash python3 {SKILL_DIR}/scripts/device_probe.py ``` Execute code on device: ```bash mpremote exec "import machine; print('RESULT:' + str(machine.freq()))" ``` Run a script file: ```bash mpremote run script.py ``` For multi-line code, write a temporary `.py` file locally, then `mpremote run /path/to/task.py`. Serial port names vary by platform: | Platform | Port Format | Example | |----------|------------|---------| | Linux | /dev/ttyUSB0, /dev/ttyACM0 | `mpremote connect /dev/ttyACM0` | | macOS | /dev/cu.usbserial-*, /dev/cu.usbmodem* | `mpremote connect /dev/cu.usbmodem14101` | | Windows | COM3, COM4, ... | `mpremote connect COM3` | The scripts auto-detect the port — you rarely need to specify it manually. ### Optional: WiFi (WebREPL) Only switch to WiFi when the user explicitly requests it. The switch flow: 1. Ask user for WiFi SSID and password 2. Push WiFi + WebREPL config to device via USB: ```bash python3 {SKILL_DIR}/scripts/wifi_setup.py --ssid "SSID" --password "PASS" --webrepl-password "repl123" ``` 3. Note the IP address from the output 4. From now on, execute code over WiFi: ```bash python3 {SKILL_DIR}/scripts/webrepl_exec.py --host 192.168.1.100 --password repl123 --code "print('hello')" ``` 5. USB cable can be disconnected For detailed command reference, read `./references/connections.md`. ## Sub-skill Router Based on user intent, read the corresponding sub-skill for domain-specific templates: | User Intent Keywords | Sub-skill Path | Safety Tier | |---------------------|----------------|-------------| | temperature, humidity, DHT, BME280, pressure, IMU, accelerometer, ADC, analog, ultrasonic, light sensor, photoresistor, read sensor | `./skills/sensor/SKILL.md` | Safe | | GPIO, LED, blink, PWM, servo, motor, stepper, relay, NeoPixel, WS2812, buzzer, output, control, drive | `./skills/actuator/SKILL.md` | Cautious | | WiFi, MQTT, HTTP, BLE, Bluetooth, NTP, WebSocket, AP mode, network, connect internet, publish, subscribe | `./skills/network/SKILL.md` | Cautious | | PID, filter, Kalman, state machine, scheduler, data logging, moving average, control loop, algorithm | `./skills/algorithm/SKILL.md` | Safe | | scan I2C, scan SPI, device info, memory, filesystem, diagnose, health check, benchmark, pin state, what's connected | `./skills/diagnostic/SKILL.md` | Safe | | save to device, 保存到设备, 开机自启, auto start, 下次还能用, persist, 断电保存 | See "Program Persistence" section below | Cautious/Dangerous | | flash firmware, burn firmware, install MicroPython, no firmware, 烧录, 刷固件, 刷机 | `scripts/firmware_flash.py` | Dangerous | | recovery, not responding, stuck, boot.py, main.py, reflash, brick | `./references/safety.md` | Dangerous | When a task spans multiple domains (e.g., "read sensor and publish via MQTT"), read all relevant sub-skills. ## Structured Output Protocol All MicroPython code you generate for the device MUST use tagged output lines: | Tag | Purpose | Example | |-----|---------|---------| | `RESULT:` | Success data (JSON) | `RESULT:{"temp":23.5,"hum":61}` | | `ERROR:` | Error info | `ERROR:OSError: [Errno 19] ENODEV` | | `STATUS:` | Status indicator | `STATUS:ok` | | `LOG:` | Debug info | `LOG:sampling at 100Hz` | Code template — every snippet you generate should follow this pattern: ```python import json from machine import Pin try: # ... your operation here ... print("RESULT:" + json.dumps({"key": value})) except Exception as e: print("ERROR:" + str(e)) ``` Parse rules: - Scan device stdout line by line - Extract lines starting with `RESULT:`, `ERROR:`, `STATUS:`, `LOG:` - Ignore all other output (MicroPython boot messages, REPL prompts, etc.) - If `ERROR:` is found, diagnose and retry with adjusted code ## Safety Rules | Tier | Operations | Agent Behavior | |------|-----------|----------------| | Safe | Sensor read, I2C/SPI scan, memory check, pin read, diagnostics | Execute directly | | Cautious | GPIO output, PWM, WiFi connect, file write on device | Inform user what you're about to do, then execute | | Dangerous | Overwrite boot.py/main.py, format filesystem, OTA update, flash firmware | **Must get explicit user confirmation**. Always backup first: `mpremote fs cp :boot.py /tmp/boot.py.bak` | Hard constraints: - Never hardcode WiFi passwords in scripts saved to device — use variables or prompt user - All loops must have iteration limits or timeouts — never generate infinite loops without exit conditions - Before overwriting boot.py or main.py, always backup the existing file first - Before controlling high-current devices (motors, relays), ask user to confirm wiring For complete recovery procedures, read `./references/safety.md`. ## Workflow As the Agent operating this co-processor, follow this mental model: 1. **Understand intent** — What does the user want to achieve with the hardware? 2. **Check connection** — Run device_probe.py if you haven't yet. Know your device's platform and capabilities. 3. **Route to sub-skill** — Read the relevant sub-skill SKILL.md for code templates and domain knowledge 4. **Generate code** — Write MicroPython code following the output protocol. Adapt pin numbers and parameters to the target platform. 5. **Push and capture** — Execute via mpremote or WebREPL, capture full stdout 6. **Parse results** — Extract RESULT:/ERROR: lines, parse JSON data 7. **Decide next step** — If ERROR, diagnose and adjust. If RESULT, present to user or use for next operation. 8. **Maintain state** — Remember which pins are in use, which peripherals are initialized, what the device's platform is 9. **Offer persistence** — After a program runs successfully, ask the user if they want to save it to the device or set it to auto-start on boot ## Program Persistence After a program runs successfully, offer the user two options: ### Option 1: Save to Device (for later manual use) Save the script to the device's filesystem so it can be run anytime without re-uploading: ```bash # Save script to device mpremote fs cp local_script.py :my_program.py # List saved scripts on device mpremote fs ls # Run a saved script mpremote exec "exec(open('my_program.py').read())" ``` This is a **Cautious** operation — inform the user before writing files to the device. ### Option 2: Auto-start on Boot (write to main.py) If the user wants the program to run automatically every time the device powers on: 1. **Always ask first** — "要设置为开机自动运行吗?注意:如果程序有问题可能导致设备无法正常连接。" 2. **Backup existing main.py** (if any): ```bash mpremote fs cp :main.py ./main.py.bak ``` 3. **Upload as main.py**: ```bash mpremote fs cp local_script.py :main.py ``` 4. **Important**: For auto-start scripts, wrap the main logic in a try/except and add a short startup delay so the user can interrupt if needed: ```python import time time.sleep(2) # 2s window for Ctrl-C interrupt # ... main logic ... ``` This is a **Dangerous** operation — require explicit user confirmation. ### Disable Auto-start If the device becomes hard to access due to a problematic main.py: ```bash # Rename to disable (if mpremote can still connect) mpremote exec "import os; os.rename('main.py', 'main.py.disabled')" mpremote reset # Or delete it mpremote exec "import os; os.remove('main.py')" mpremote reset ``` If the device is completely unresponsive, follow the recovery steps in `./references/safety.md`. ## Platform Adaptation After probing, adapt code to the detected platform: | Platform | Key Capabilities | |----------|-----------------| | esp32 / esp32s3 | WiFi, BLE, Touch Pad, Deep Sleep, ULP, Hall Sensor | | rp2040 | PIO state machines, dual core, no WiFi (unless Pico W) | | stm32 | More timers, CAN bus, DAC | | Generic | Standard `machine` module API only | For ESP32-specific pin maps and APIs, read `./references/esp32.md`. ## Reference Files Read these on demand — not every interaction needs them: | File | When to Read | |------|-------------| | `./references/connections.md` | Troubleshooting connection issues, mpremote advanced usage, WebREPL protocol details | | `./references/esp32.md` | ESP32-specific pin maps, strapping pin warnings, deep sleep, NVS, BLE/WiFi API details | | `./references/safety.md` | Device recovery, boot.py restore, filesystem repair, electrical safety | ## Dependencies Agent-side requirements: - `mpremote` — `pip install mpremote` (required for USB connection) - `esptool` — `pip install esptool` (required for chip detection and firmware flashing) - `pyserial` — `pip install pyserial` (required on **Windows** for COM port auto-detection; recommended on all platforms) - `websocket-client` — `pip install websocket-client` (only needed for WiFi/WebREPL mode) - Python 3.8+ > **Windows notes**: > - Use `python` instead of `python3` to run scripts. On many Windows systems, `python3` is a Microsoft Store stub that returns exit code 49. On macOS/Linux, use `python3`. > - Without `pyserial`, the scripts fall back to parsing the `mode` command output for COM port detection, which provides less detail (no VID/PID info). Install `pyserial` for best results. Device-side requirements: - MicroPython firmware v1.19+ (v1.22+ recommended) — auto-installed by `firmware_flash.py` if missing - USB connection or WiFi reachability ## External Endpoints This skill accesses external services during specific operations: | Endpoint | When Accessed | Purpose | Required? | |----------|--------------|---------|-----------| | `https://micropython.org/download/{board}/` | Firmware flashing only (`firmware_flash.py`) | Download latest stable MicroPython firmware binary for the detected chip | Only when flashing firmware | | `https://micropython.org/resources/firmware/...` | Firmware flashing only | Direct firmware `.bin` download URL | Only when flashing firmware | No telemetry, analytics, or data is sent to any external service. The skill operates entirely locally except for firmware downloads. ## Security & Privacy - **No data collection**: This skill does not collect, transmit, or store any user data - **No telemetry**: No usage analytics, crash reports, or tracking of any kind - **Local-only operation**: All device communication happens over local USB serial or local WiFi (WebREPL). No cloud relay or proxy is used - **WiFi credentials**: When provided by the user, WiFi credentials are passed directly to the device via `mpremote` and written to the device's `boot.py`. They are never logged, stored on the host machine, or transmitted to external services - **Firmware source**: Firmware binaries are downloaded exclusively from `micropython.org`, the official MicroPython project site - **File system access**: Helper scripts only access serial ports and the system temp directory (for firmware caching). No other host files are read or modified ## Trust & Verification - **Open source**: Full source code is available at the homepage repository - **No obfuscation**: All Python scripts and Markdown files are human-readable - **Auditable**: The `scripts/` directory contains 4 self-contained Python scripts with no external dependencies beyond `mpremote`, `esptool`, `pyserial`, and `websocket-client` - **Evals included**: The `evals/evals.json` file contains 5 test scenarios covering device probe, sensor read, actuator control, diagnostics, and recovery

标签

skill ai

通过对话安装

该技能支持在以下平台通过对话安装:

OpenClaw WorkBuddy QClaw Kimi Claude

方式一:安装 SkillHub 和技能

帮我安装 SkillHub 和 micropython-skills-1776022950 技能

方式二:设置 SkillHub 为优先技能安装源

设置 SkillHub 为我的优先技能安装源,然后帮我安装 micropython-skills-1776022950 技能

通过命令行安装

skillhub install micropython-skills-1776022950

下载 Zip 包

⬇ 下载 micropython-skills v1.0.0

文件大小: 40.32 KB | 发布时间: 2026-4-13 11:02

v1.0.0 最新 2026-4-13 11:02
Initial release of micropython-skills v1.0.0:

- Enables AI-driven MicroPython code generation and execution for a wide range of embedded boards (ESP32 series, ESP8266, RP2040, STM32, etc.).
- Includes scripts for device probing, firmware flashing, WiFi/WebREPL setup, code deployment, and board diagnostics.
- Structured system for safe hardware interaction: clearly defined “Safe”, “Cautious”, and “Dangerous” operation tiers with strong safety and confirmation rules.
- Modular sub-skill routing for sensors, actuators, networking, algorithms, and diagnostics.
- Requires Python 3, mpremote, and esptool; supports Linux, macOS, and Windows.
- Implements a standardized tagged output protocol for reliable parsing and automation.

Archiver·手机版·闲社网·闲社论坛·羊毛社区· 多链控股集团有限公司 · 苏ICP备2025199260号-1

Powered by Discuz! X5.0   © 2024-2025 闲社网·线报更新论坛·羊毛分享社区·http://xianshe.com

p2p_official_large
返回顶部