Bye Bye Moore

PoCソルジャーな零細事業主が作業メモを残すブログ

AzureのIoT系をつかう その9:Python3 on Windows10からRasPi3B+に命令をおくる

これまではRasPi3B+の上で動くnode.jsに対してやりましたが……今度はWindows10で動くPython3系でRasPiに命令を送る流れをやってみます。
特にWindows依存はないのでDebian系やmacOSでも同じことができる筈です。

実際のところ

Windows用に新規にライブラリが必要なので、以下のコマンドでazure-iot-deviceを入れときましょう

$ pip3 install azure-iot-device

python3スクリプト

import time
import random
from azure.iot.device import IoTHubDeviceClient, Message

# 'connection_string.txt'からプライマリ接続文字列を読み出し
with open('connection_string.txt', 'r') as file:
    CONNECTION_STRING = file.read().replace('\n', '')

# デバイス初期化
device_client = IoTHubDeviceClient.create_from_connection_string(CONNECTION_STRING)
device_client.connect()

# メッセージ生成(過課金をさけるため、上限100で抑える)
for i in range(100): 
    message_value = random.choice(['HIGH', 'LOW'])
    message_id = i
    target_device_id = "RP3"
    
    message_payload = {
        "value": message_value,
        "messageID": message_id,
        "targetDeviceID": target_device_id
    }

    message = Message(str(message_payload))

    # メッセージ送信
    print(f"Sending message: {message}")
    device_client.send_message(message)
    time.sleep(2)

# デバイスを切断する
device_client.disconnect()

参考もと