저는 Python과 MQTT에서 새롭습니다. 브로커에 연결된 센서 데이터를 게시하기 위해 파이썬 작업 코드를 작성할 수 있었지만 지금은 하나 이상의 주제를 구독하고 모든 페이로드를 라즈베리에 연결된 LCD 20x4에 쓰고 싶습니다.MQTT/Python 라즈베리 LCD에 여러 주제를 등록하고 페이로드를 작성하십시오.
사실 저는 한 주제를 구독하고 LCD에 페이로드를 작성하는 Python을 작성했습니다. 문제 없습니다, 작동합니다. 동일한 파이썬에 다른 주제를 포함하고 페이로드를 LCD에 쓰는 방법은 없습니다.
"그냥"하나의 주제에 대한 제 작업 Python 코드를 찾을 수 있습니다.
#!/usr/bin/python
# -*- coding: utf-8 -*-
#
# RPi-S-LCD.py
# Created on 8/1/2017
#
# Python program that write payloads on LCD 20x4
#
import time
import sys
import os
import paho.mqtt.client as paho
sys.path.append("/home/pi/Adafruit_Python_CharLCD")
import Adafruit_CharLCD as LCD
import Adafruit_GPIO.MCP230xx as MCP
### Define MCP pins connected to LCD
lcd_rs = 6
lcd_en = 4
lcd_d4 = 3
lcd_d5 = 2
lcd_d6 = 1
lcd_d7 = 0
lcd_backlight = None
### Define LCD type
lcd_columns = 20
lcd_rows = 4
### Initialize MCP23017 for LCD
gpiomcp = MCP.MCP23017(0x20, busnum=1)
### Initialize LCD panel parameters
lcd = LCD.Adafruit_CharLCD(lcd_rs, lcd_en, lcd_d4, lcd_d5, lcd_d6, lcd_d7, lcd_columns, lcd_rows, lcd_backlight, gpio=gpiomcp)
lcd.show_cursor(False)
lcd.blink(False)
lcd.clear()
### Read data from MQTT broker
def on_subscribe(client, userdata, mid, granted_qos):
print("Subscribed to the broker "+str(mid)+" "+str(granted_qos))
### Print topic data to LCD
def on_message1(client, userdata, msg):
lcd.set_cursor(0,0)
lcd.message(msg.payload)
client = paho.Client()
client.on_subscribe = on_subscribe
client.on_message = on_message1
client.connect("10.0.2.10", 1883, 30)
client.subscribe("iDomus/Time",2)
client.loop_forever()
이 언어/기술에 익숙하지 않지만 독자가 코드에 새로운 기능을 추가하도록 요청하는 것처럼 들립니다 (여러 항목 지원). 그렇다면 너무 광범위 할 수 있습니다. 당신의 목표를 달성하기 위해 어떤 전략이 필요합니까? 너 뭐하니? – halfer
필요한 다른 주제에'client.subscribe ("...", 2)'줄을 추가하기 만하면됩니다. 그러면 메세지는 같은'on_message1' 함수에 의해 처리 될 것입니다. – hardillb
나는 내 포스트에서 파이썬과 mqtt의 뉴비라고 말했다. 페이로드가 어떻게 인터넷을 통해 전송되는지 이해하기 위해 mqtt.fx를 사용하기 시작했습니다. 어쨌든 나의 가난한 파이썬 지식은 나를 위해 도움이되지 않을 것이다. 나는 좋은 파이썬 책을 읽을 시간이있다. – Marco