2025年3月4日火曜日

Raspberry pi pico w :: mqtt sub pub

 https://mqttx.app/web-client#/recent_connections/32a3a13e-7aef-4224-8ddc-6226007aa6caでtest/topic1をつくる

https://github.com/micropython/micropython-lib/blob/master/micropython/umqtt.simple/umqtt/simple.pyをumqtt.pyとしてインスト

https://tech-and-investment.com/raspberrypi-picow-6-mqtt/ にある以下のコードに成功

import time
import network
from umqtt import MQTTClient
import machine
from picozero import pico_temp_sensor,

import sys

#
# Wi-Fi ルーターのSSIDとパスワードです。
# お使いの設定に書き換えてください。
#
ssid = 'NAME OF YOUR WIFI NETWORK'
password = 'YOUR SECRET PASSWORD'

#
#  Wi-Fiに接続する関数です
#
def connect():
    #Connect to WLAN
    wlan = network.WLAN(network.STA_IF)
    wlan.active(True)
        
    wlan.connect(ssid, password)
    while wlan.isconnected() == False:
        print('Waiting for connection...')
        time.sleep(1)
    ip = wlan.ifconfig()[0]
    print(f'Connected on {ip}')
    return ip

#
# 受信(Subscribe)したメッセージを表示する関数です
#
def printMessage(topic, message):
    
    # 受信データはbytes型なのでUTF-8の文字列に変換してから表示します
    print("topic:" + topic.decode("utf-8") )
    print("message:" + message.decode("utf-8") )

#
# メインの処理部です
#

# ブローカーのIPやトピック名を定義します。
mqttBroker = '192.168.10.9'
myId = 'esu'
topic= b'test/topic1'

# MQTTのオブジェクト(変数)を定義します
client = MQTTClient(myId, mqttBroker, keepalive=3600)

# 受信(Subscribe)した時に呼ぶ関数を設定します
client.set_callback(printMessage)

# Wi-Fiに接続します
connect()

try:
    # ブローカーに接続します
    client.connect()
    # Subscribeするトピックを登録します。(注:接続前はエラー)
    client.subscribe(topic)
    
except:
    # ブローカーへの接続に失敗した場合は、プログラムを終了します
    print("Could not connect to mqtt server.")
    sys.exit()
    
print("mqqtt connect done ")

#
# 温度センサの情報を3秒ごとにPublishします
#
while True:
    # Pico W 本体の温度情報を取得します
    temp =  pico_temp_sensor.temp

    # 送信(Publish)用のメッセージに温度を代入します
    msg = " \"temp\":" + str(temp)

    # 送信(Publish)します。
    client.publish(topic, msg)

    # ブローカーからのPublishをチェックします。
    client.check_msg()
    # test/topic1に"on"を書くとmessage:onとでる!
    time.sleep(3)

0 件のコメント:

コメントを投稿