I try to pass values from MQTT to Kivy dashboard with a navigation drawler.
Can someone give me a hint how I can change the variables? Here is my sample code. MQTT is working. I use Python 3.6.6 and 1.10.1.
mainmenu.py
from kivy.app import App
from kivy.uix.boxlayout import BoxLayout
from kivy.uix.button import Button
from kivy.garden.navigationdrawer import NavigationDrawer
from kivy.properties import StringProperty
import paho.mqtt.client as mqtt
class Drawer(NavigationDrawer):
vartext1 = StringProperty("Button")
vartext2 = StringProperty("Text")
class MainMenuApp(App):
def build(self):
return Drawer()
def on_start(self):
topic = "kivy/#"
def onConnect(client, userdata, flags, rc):
mqttc.subscribe(topic, 0)
def onMessage(client, userdata, msg):
msg.payload = msg.payload.decode("utf-8")
print ("[INFO ] [MQTT ] topic: " + msg.topic +" msg: "+ msg.payload)
if msg.topic == "kivy/button":
vartext1 = msg.payload
if msg.topic == "kivy/text":
vartext2 = msg.payload
mqttc = mqtt.Client(client_id="kivy-client", clean_session=True)
mqttc.on_connect = onConnect
mqttc.on_message = onMessage
mqttc.connect("10.0.0.104", 1883, keepalive=60, bind_address="")
mqttc.loop_start() # start loop to process callbacks! (new thread!)
if __name__ == "__main__":
MainMenuApp().run()
mainmenu.kv
<Drawer>:
# Side panel
BoxLayout:
padding: 30
Button:
text: root.vartext1
# Main panel
BoxLayout:
padding: 30
Label:
text: root.vartext2