Portál AbcLinuxu, 5. května 2025 23:21

Dotaz: MQTT Broker

12.2.2021 07:44 Kamil.k
MQTT Broker
Přečteno: 641×
Odpovědět | Admin
Zdravím všechny.

Jsem chtěl vyzkoušet komunikaci mezi raspberry a ESP8266.

https://www.instructables.com/How-to-Use-MQTT-With-the-Raspberry-Pi-and-ESP8266/

Zadam do terminalu mosquitto_sub a vidim v něm jak mi ESP8266 posila data.

Bych potřeboval nasměrovat nebo poradit, jak vytvořit skript, který bude odchytavat přichozi data a ukladat do proměnné, třidění už bych asi zvlad sam.

Děkují.
Nástroje: Začni sledovat (1) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

Gréta avatar 12.2.2021 16:08 Gréta | skóre: 37 | blog: Grétin blogísek | 🇮🇱==❤️ , 🇵🇸==💩 , 🇪🇺==☭
Rozbalit Rozbalit vše Re: MQTT Broker
Odpovědět | | Sbalit | Link | Blokovat | Admin

dyť to jakoby máš nakonci toho kroku 7 v přidaným zdrojáčku pythoním ukázaný :O ;D

hele ;D

vtý funkci/callbacku on_message to máš pokaždý v msg.payload ;D

"""
Python MQTT Subscription client
Thomas Varnish (https://github.com/tvarnish), (https://www.instructables.com/member/Tango172)
Written for my Instructable - "How to use MQTT with the Raspberry Pi and ESP8266"
"""
import paho.mqtt.client as mqtt

# Don't forget to change the variables for the MQTT broker!
mqtt_username = "MQTT Username"
mqtt_password = "MQTT Password"
mqtt_topic = "Your Topic"
mqtt_broker_ip = "Your Broker IP"

client = mqtt.Client()
# Set the username and password for the MQTT client
client.username_pw_set(mqtt_username, mqtt_password)

# These functions handle what happens when the MQTT client connects
# to the broker, and what happens then the topic receives a message
def on_connect(client, userdata, flags, rc):
    # rc is the error code returned when connecting to the broker
    print "Connected!", str(rc)
    
    # Once the client has connected to the broker, subscribe to the topic
    client.subscribe(mqtt_topic)
    
def on_message(client, userdata, msg):
    # This function is called everytime the topic is published to.
    # If you want to check each message, and do something depending on
    # the content, the code to do this should be run in this function
    
    print "Topic: ", msg.topic + "\nMessage: " + str(msg.payload)
    
    # The message itself is stored in the msg variable
    # and details about who sent it are stored in userdata

# Here, we are telling the client which functions are to be run
# on connecting, and on receiving a message
client.on_connect = on_connect
client.on_message = on_message

# Once everything has been set up, we can (finally) connect to the broker
# 1883 is the listener port that the MQTT broker is using
client.connect(mqtt_broker_ip, 1883)

# Once we have told the client to connect, let the client object run itself
client.loop_forever()
client.disconnect()

Zelená energetická soustava založená na obnovitelnejch zdrojích energie versus realnej svět 🤡🇪🇸
12.2.2021 16:34 Kamil.k
Rozbalit Rozbalit vše Re: MQTT Broker
Děkují, vim o něm, ale v python jsem ještě nedělal.

Neumět pořadně zaklady v bash a pouštět se už do python si moc netroufam.
Gréta avatar 12.2.2021 17:16 Gréta | skóre: 37 | blog: Grétin blogísek | 🇮🇱==❤️ , 🇵🇸==💩 , 🇪🇺==☭
Rozbalit Rozbalit vše Re: MQTT Broker

dotoho ti jako nechci kecat ale python mi příde vo moc jednoduší než bash ;D

jak jako ta nějaká zpráva má vypadat a do jaký podoby ji jakoby chceš naparsovat?? :O :O

13.2.2021 05:38 Kamil.k
Rozbalit Rozbalit vše Re: MQTT Broker
Mi stači, aby skript naslouchal a když se připoji nějaký klient a pošle zpravu, abych ji měl v řetězci.

Ten si zpracuji a klient posloucha dal.

PS: I na python přijde ale postupně.
Gréta avatar 13.2.2021 18:51 Gréta | skóre: 37 | blog: Grétin blogísek | 🇮🇱==❤️ , 🇵🇸==💩 , 🇪🇺==☭
Rozbalit Rozbalit vše Re: MQTT Broker

takle ňák?? :O :O

#!/usr/bin/env bash

mosquitto_sub -u uzivatel -P heslo -t topic | while read zprava; 
do 
        echo "mam zpravu: $zprava" 
done
Gréta avatar 13.2.2021 18:54 Gréta | skóre: 37 | blog: Grétin blogísek | 🇮🇱==❤️ , 🇵🇸==💩 , 🇪🇺==☭
Rozbalit Rozbalit vše Re: MQTT Broker

koukám žeto je jakoby pro starej python2 :O :O :/ :/

víc novější ukázkovej kód je u dokumentace tý knihovny hele :O ;D

18.2.2021 18:39 Kamil.k
Rozbalit Rozbalit vše Re: MQTT Broker
@ Gréta - se omlouvám, jsem musel na delši dobu pryč a nestih jsem poděkovat.

Fonguje to, Děkují.
Gréta avatar 23.2.2021 12:48 Gréta | skóre: 37 | blog: Grétin blogísek | 🇮🇱==❤️ , 🇵🇸==💩 , 🇪🇺==☭
Rozbalit Rozbalit vše Re: MQTT Broker

supr ;D

kdybys to eště jakoby chtěl pouštět přes systemd službu tak ve složšce /etc/systemd/system si mužeš vyrobit soubor 'nazev_sluzby.service' a do něj dát text

[Unit]
Description=nejaky popis sluzby

# vodhaduju ze jako mas primo na tom rpi nainstalovanyho mosquitto brokera
# jestli ne tak to mosquitto.service skrtni na vobou radcich
Requires=network.target mosquitto.service
After=network.target mosquitto.service

[Service]
ExecStart=/cesta/ke/skriptu/skript.sh
Restart=always

# uzivatel pod kterym se tamten skript jakoze pousti
User=pi

[Install]
WantedBy=multi-user.target

pak udělat

sudo systemctl daemon-reload
sudo systemctl enable nazev_sluzby
sudo systemctl start nazev_sluzby

a hotovo jako :D ;D

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.