Python上でのパーツライブラリの使用方法について



  • 今まではJavaScriptから使っておりましたが、せっかくなのでPythonでも使いたいと思い、obnizのPython用ライブラリ(v0.3.0)を初めて試しています。手始めに、このバージョンからサポートされたLEDなどを使いたいと思い、以下のコードを試してみました。

    import asyncio
    from obniz import Obniz
    
    
    async def onconnect(obniz):
        led = obniz.wired("LED", {"anode": 0, "cathode": 1})
    
        def read_state(state):
            if state == "push":
                led.on()
    
            else:
                led.off()
    
        obniz.switch.onchange = read_state
    
    
    obniz = Obniz('0000-0000')
    obniz.onconnect = onconnect
    
    asyncio.get_event_loop().run_forever()
    

    このコードを実行すると、次のようなエラーが表示されました。

    Python 3.7.4 (default, Jul 9 2019, 00:06:43)
    [GCC 6.3.0 20170516] on linux
    WebSocket connection is closed: code = 1000 (OK), no reason
    _call_on_connect
    Task exception was never retrieved
    future: <Task finished coro=<onconnect() done, defined at main.py:5> exception=Exception('unknown parts [LED]')>
    Traceback (most recent call last):
    File "main.py", line 6, in onconnect
    led = obniz.wired("LED", {"anode": 0, "cathode": 1})
    File "/home/runner/.local/share/virtualenvs/python3/lib/python3.7/site-packages/obniz/obniz/obniz_parts.py", line 31, in wired
    parts = ObnizParts.parts(partsname)
    File "/home/runner/.local/share/virtualenvs/python3/lib/python3.7/site-packages/obniz/obniz/obniz_parts.py", line 27, in parts
    raise Exception("unknown parts [" + name + "]")
    Exception: unknown parts [LED]

    恐らく、ライブラリの使い方が間違っているのではないかと思います。もし、何か抜けている手順などありましたら、ご指摘いただけると助かります。どうぞよろしくお願いいたします。

    なお、repl.itではこちらに置いてあります。

    https://repl.it/@kotobuki/ObnizPartsLibTest


  • administrators

    @Shigeru-Kobayashi さん

    ご連絡ありがとうございます。
    確認いたしますので少々お待ち下さい


  • administrators

    @Shigeru-Kobayashi さん

    すみません、調査した結果、pipではうまくパーツライブラリが入っていないことが判明しました。
    バグとなっておりすみません。

    修正したバージョンをリリースしますので、少々お待ち下さい。


  • administrators

    @Shigeru-Kobayashi さん

    obniz.py 0.4.1 にてパーツライブラリの修正を行いました。
    pipにて入れていただければ、LEDその他のパーツが使えます。

    お試しいただけますようお願いいたします。



  • @kido さん

    早速のご対応、ありがとうございました。v0.4.1での動作を確認いたしました!

    https://repl.it/@kotobuki/ObnizLED