✨はじめに
前回の記事では、ESP32-S3 IO デバイスを USB / Wi‑Fi の両方で制御できる IoT デバイス として紹介しました。
👉 前回の記事(デバイス本体の紹介)
https://qiita.com/Noritama-Lab/items/6ef83d4e0636bb77aeb2
👉 デバイスのファームウェア(GitHub)
https://github.com/noritama-lab/esp32io-firmware
今回は、このデバイスを Python からもっと簡単に扱えるようにするため、Python API(esp32io-api)を Wi‑Fi 対応させて PyPI に公開しました。
👉 Python API(GitHub)
https://github.com/noritama-lab/esp32io-api
👉 PyPI(pip install できます)
https://pypi.org/project/esp32io/
🚀インストール(pip だけでOK)
pip install esp32io
USB でも Wi‑Fi でも 同じ API で扱えます。
✨できること
この Python API は、デバイスの JSON コマンドを Python メソッドとして扱えるようにしたものです。
- ping(疎通確認)
- デジタル入力 / 出力
- ADC(アナログ入力)
- PWM(周波数・分解能・Duty)
- RGB LED(色・明るさ・モード)
- システム情報取得
- USB / Wi‑Fi の両対応
🔌USB(シリアル)で使う
from esp32io import ESP32S3IOSerial
# COM4は環境に合わせて修正
dev = ESP32S3IOSerial(port="COM4")
print(dev.ping())
dev.set_do(0, 1)
print(dev.read_adc(0))
📡Wi‑Fi(HTTP)で使う
from esp32io import ESP32S3IONet
# XXXXXXは環境に合わせて修正
dev = ESP32S3IONet(ip_address="ESP32_S3_IO_XXXXXX.local")
# dev = ESP32S3IONet(ip_address="192.168.X.X") # IPアドレスも可
print(dev.ping())
dev.set_do(0, 1)
print(dev.read_adc(0))
🧩内部構造(簡単に)
API は以下の2つのクラスで構成されています。
-
ESP32S3IONet(HTTP 経由) -
ESP32S3IOSerial(USB シリアル経由)
どちらも共通の基底クラス ESP32S3IOBase を継承し、
command() → JSON → デバイス → JSON → Python dict
という流れで通信します。
🧾Python API のメソッド一覧
ESP32-S3 IO デバイスの JSON API に対応した高レベルメソッドです。
🔌 デジタル IO
-
read_di(pin_id)— デジタル入力を読む -
set_do(pin_id, value)— デジタル出力を設定
📡 アナログ入力(ADC)
-
read_adc(pin_id)— ADC 値を取得
🔄 PWM
-
set_pwm(pin_id, duty)— PWM デューティ設定 -
get_pwm_config()— PWM 設定取得 -
set_pwm_config(freq, res_bit)— PWM 周波数・分解能設定
🌈 RGB LED
-
set_rgb(r, g, b, brightness=None)— RGB LED を点灯 -
led_off()— LED を消灯 -
set_led_mode(mode)— LED モード切替 -
get_led_state()— LED 状態取得
🧩 システム
-
ping()— 生存確認 -
get_status()— 稼働時間・メモリ・IP など取得 -
get_io_state()— 全 I/O 状態をまとめて取得 -
help()— デバイスがサポートするコマンド一覧を取得
🔗GitHub / PyPI
-
デバイスのファームウェア
https://github.com/noritama-lab/esp32io-firmware -
Python API(GitHub)
https://github.com/noritama-lab/esp32io-api
📝今後の予定
- Python ロギングアプリ
- GUI ツール(Tkinter / PySide)
✅まとめ
ESP32-S3 IO デバイスを Python から扱うための公式 API を公開しました。
Pythonで動かす場合、USB でも WiFi でも同じコマンドが使えるようになるので、ESP32-S3 に直接コマンド送信するより扱いやすくなると思います。
よかったら使ってみてください。