2023年1月8日 星期日

Python 以 LINE Notify 自動傳送訊息 (MQTT Broker + Node-Red)

 





import paho.mqtt.client as mqtt

import requests

from datetime import datetime

message=""

flag=0

# 當地端程式連線伺服器得到回應時,要做的動作

def on_connect(client, userdata, flags, rc):

    print("Connected with result code "+str(rc))


    # 將訂閱主題寫在on_connet中

    # 如果我們失去連線或重新連線時 

    # 地端程式將會重新訂閱

    #client.subscribe("alex9ufo/MQTT/Test")


    client.subscribe([("alex9ufo/Weather/Taichung/message1",1),("alex9ufo/Weather/Taichung/message2",1),("alex9ufo/Weather/Taichung/message3",0),("alex9ufo/Weather/Taichung/message4",0)])


# 當接收到從伺服器發送的訊息時要進行的動作

def on_message(client, userdata, msg):

    # 轉換編碼utf-8才看得懂中文

    now = datetime.now()

    current_time = now.strftime("%H:%M:%S")

    print("Current Time =", current_time)

    

    print(msg.topic+" "+ msg.payload.decode('utf-8'))

    message=msg.payload.decode('utf-8')

    flag=1

    print("\n")

    if (flag==1) :

        # LINE Notify 權杖

        token = 'aCEUhpodLRGJGqyjrtswnGfg1fn52mcpAWYp909JBwA'

        # 要發送的訊息

        #message = '這是用 Python 發送的訊息'

        print (message)

        # HTTP 標頭參數與資料

        headers = { "Authorization": "Bearer " + token }

        data = { 'message': message }

        # 以 requests 發送 POST 請求

        requests.post("https://notify-api.line.me/api/notify",headers = headers, data = data)


# 連線設定

# 初始化地端程式

client = mqtt.Client()


# 設定連線的動作

client.on_connect = on_connect




# 設定接收訊息的動作

client.on_message = on_message


# 設定登入帳號密碼

client.username_pw_set("alex9ufo","alex9981")


# 設定連線資訊(IP, Port, 連線時間)

client.connect("broker.mqtt-dashboard.com", 1883, 60)

# 開始連線,執行設定的動作和處理重新連線問題

# 也可以手動使用其他loop函式來進行連接


client.loop_forever()




>>> %Run Subscribe_Taichung_weather_MQTT.py

Connected with result code 0

Current Time = 21:21:46

alex9ufo/Weather/Taichung/message1 多雲山區局部短暫雨,稍有寒意至舒適,請適時做好保暖



多雲山區局部短暫雨,稍有寒意至舒適,請適時做好保暖

Current Time = 21:21:47

alex9ufo/Weather/Taichung/message2 臺中地區今天(8日)晴時多雲;臺中公園及一中商圈氣溫16.3~25.8℃,梧棲氣溫15.6~19.5℃。



臺中地區今天(8日)晴時多雲;臺中公園及一中商圈氣溫16.3~25.8℃,梧棲氣溫15.6~19.5℃。

Current Time = 21:21:47

alex9ufo/Weather/Taichung/message3 臺中市明天(9日)受華南雲雨區東移影響,為多雲的天氣,山區有局部短暫雨,晚起平地亦有零星短暫雨;氣溫18-23℃,稍有寒意至舒適,請適時做好保暖。易有局部霧或低雲影響能見度,請注意。



臺中市明天(9日)受華南雲雨區東移影響,為多雲的天氣,山區有局部短暫雨,晚起平地亦有零星短暫雨;氣溫18-23℃,稍有寒意至舒適,請適時做好保暖。易有局部霧或低雲影響能見度,請注意。

Current Time = 21:21:47

alex9ufo/Weather/Taichung/message4 明天(9日)臺中沿海地區平均風力4至5陣風7級,船隻或沿岸活動,請注意安全。



明天(9日)臺中沿海地區平均風力4至5陣風7級,船隻或沿岸活動,請注意安全。


沒有留言:

張貼留言

Messaging API作為替代方案

  LINE超好用功能要沒了!LINE Notify明年3月底終止服務,有什麼替代方案? LINE Notify將於2025年3月31日結束服務,官方建議改用Messaging API作為替代方案。 //CHANNEL_ACCESS_TOKEN = 'Messaging ...