![](https://habrastorage.org/files/6f0/2e6/ae9/6f02e6ae993143edaab4ca297cf9200f.png)
- ã³ã³ãã¥ãŒã¿ãŒäžã®Pythonã«MQTTã¯ã©ã€ã¢ã³ããã€ã³ã¹ããŒã«ããŸãã
- MQTTãããŒã«ãŒã®ã»ããã¢ããã
- Intel CoreãAtomããŸãã¯Quarkããã»ããµãŒã«åºã¥ãã²ãŒããŠã§ã€ã«MQTTã¯ã©ã€ã¢ã³ããã€ã³ã¹ããŒã«ããŸãã
- ã²ãŒããŠã§ã€ãããããŒã«ãŒã«MQTTã¡ãã»ãŒãžãéä¿¡ããã¹ã¯ãªãããäœæããŠå®è¡ããŸãããããŒã«ãŒã¯æçµçã«ã³ã³ãã¥ãŒã¿ãŒã«éä¿¡ãããŸãã
ã²ãŒããŠã§ã€ãMQTTãããŒã«ãŒãããã³ã³ã³ãã¥ãŒã¿ãŒã®çžäºäœçšã®å³ã次ã«ç€ºããŸãã
![](https://habrastorage.org/getpro/habr/post_images/fe6/9dc/054/fe69dc05475d097f8d6b5fb406e71fc5.png)
ã²ãŒããŠã§ã€ãMQTTãããŒã«ãŒãã³ã³ãã¥ãŒã¿ãŒã®çžäºäœçš
MQTT
MQTTã¯ãã²ãŒããŠã§ã€ããããŒã«ã«ãµãŒããŒãŸãã¯ã¯ã©ãŠããµãŒããŒã«ããŒã¿ã転éããããã«äœ¿çšã§ããã¡ãã»ãŒãžã³ã°ãããã³ã«ã§ãã ãµãŒããŒã¯ããµãã¹ã¯ã©ã€ããããªã¢ãŒãã¯ã©ã€ã¢ã³ãã«ããŒã¿ããªãã€ã¬ã¯ãããŸãã
ãŠã£ãããã£ã¢ããMQTTã«ã€ããŠåŠã¶ããšãã§ããŸãããMQTTïŒä»¥åã®MQ Telemetry TransportïŒã¯ãTCP / IPäžã§å®è¡ãããåçŽåããããããã¯ãŒã¯ãããã³ã«ã§ãã ãããªãã·ã£ãŒ/ãµãã¹ã¯ã©ã€ããŒããŒã¹ã§ããã€ã¹éã®ã¡ãã»ãŒãžã³ã°ã«äœ¿çšãããŸãã ãã®ãããã³ã«ã¯ãã³ãŒããã§ããã ãã¹ããŒã¹ããšããªãããšãéèŠãªå Žåããäœåž¯åå¹ ã®ãããã¯ãŒã¯ã§äœæ¥ããå Žåã«ããªã¢ãŒãããã€ã¹ãšã®éä¿¡ãæŽçããããã«èšèšãããŠããŸãã ãããªãã·ã£ãŒ-ãµãã¹ã¯ã©ã€ããŒã€ã³ã¿ã©ã¯ã·ã§ã³ã¹ããŒã ã«ã¯ãéä¿¡åŽãšåä¿¡åŽã®ä»²ä»è ã§ãããããŒã«ãŒãå¿ èŠã§ãã ãããŒã«ãŒã¯ã顧客ãçºè¡ããã¡ãã»ãŒãžãããã¯ãšãµãã¹ã¯ãªãã·ã§ã³ã«åºã¥ããŠããããã®ã¡ãã»ãŒãžã«é¢å¿ã®ãã顧客ã«ã¡ãã»ãŒãžãé ä¿¡ãã責任ããããŸãã
MQTTãããŒã«ãŒãäœæããããã®ãœãããŠã§ã¢ããã±ãŒãžãããã€ããããŸãã ãããã¯äžé£ã®æ©èœãç°ãªããäžéšã®æ©èœã§ã¯æšæºã®MQTTãããã³ã«ã«å ããŠãè¿œå ã®æ©èœãå®è£ ãããŠããŸãã ããã¯ããã€ãã®ãããŒã«ãŒã®æ¯èŒã§ãã
ã¢ã¹ããŒã
Mosquittoã¯ãMQTTãããã³ã«ããŒãžã§ã³3.1ãå®è£ ãããªãŒãã³ãœãŒã¹MQTTãããŒã«ãŒïŒBSDã©ã€ã»ã³ã¹ïŒã§ãã ããã³3.1.1ã ãã®ã¬ã€ãã§ã¯ãMosquittoã䜿çšããŠMQTTãããŒã«ãŒãããŒã«ã«ãããã¯ãŒã¯ã«å±éããæ¹æ³ã«ã€ããŠèª¬æããŸãã
Pythonããã³MQTT
Pythonããã°ã©ãã³ã°èšèªã䜿çšããŠãMQTTã¡ãã»ãŒãžãäœæã§ããŸãã ããšãã°ããã®èšèªã§èšè¿°ãããã³ãŒããã¢ããªã±ãŒã·ã§ã³ã«ç°¡åã«çµã¿èŸŒãããšãã§ããå ŽåããŸãã¯éçºè ãPythonã«ç²ŸéããŠããå Žåãéžæã¯Pythonã§æ£ç¢ºã«è¡ãããŸãã ãã®èšèªã¯ãèšè¿°ãããããã°ã©ã ãã³ã³ãã€ã«ããå¿ èŠããªãããã䜿ããããå ŽåããããŸãã ãããã¯ãå®è¡æã«ã²ãŒããŠã§ã€ã§è§£éãããŸãã
Pythonã€ã³ã¿ãŒããªã¿ãŒã¯ãWind River Linuxãå®è¡ããInternet of Thingsåãã®Intel Gatewaysã«ããªã€ã³ã¹ããŒã«ããããœãããŠã§ã¢ã®æšæºã»ããã®äžéšã§ãã ãã®ãããäœæ¥ç°å¢ãè¿œå æ§æããã«ãPythonã¹ã¯ãªãããã²ãŒããŠã§ã€ã§å®è¡ã§ããŸãã ãããã£ãŠãPython 2.7.2ã¯Wind River Linux 5ããã³Intelligent Device Platform XT 2ã«å«ãŸããŠããŸããWindRiver Linux 7ããã³Intelligent Device Platform XT 3.1ã«ã¯Python 2.7.3ããã³3.3.3ãå«ãŸããŠããŸãã
ãã
Paho Pythonã¯ã©ã€ã¢ã³ãã¯ãPython 2.7ããã³3.1.1ã§MQTT v3.1ããã³v3.1.1ããµããŒãããã¯ã©ã€ã¢ã³ãã¯ã©ã¹ãæäŸããŸãã ããã«ãMQTTã¡ãã»ãŒãžã®çºè¡ãå€§å¹ ã«ç°¡çŽ åãããã«ããŒé¢æ°ãå«ãŸããŠããŸãã
ã³ã³ãã¥ãŒã¿ãŒã®ã»ããã¢ãã
ã€ã³ã¿ãŒãããäžã®MQTTãããŒã«ãŒã§ãã¹ã察象ã®ã¡ãã»ãŒãžããµãã¹ã¯ã©ã€ãããããã«äœ¿çšããäºå®ã®ã³ã³ãã¥ãŒã¿ãŒãã»ããã¢ããããããšãæ€èšããŠãã ããã ã³ã³ãã¥ãŒã¿ãŒããããã¯ããµãã¹ã¯ã©ã€ããããšããã®ãããã¯ã§å ¬éãããã¡ãã»ãŒãžã圌ã«é ä¿¡ãããŸãã
ã³ã³ãã¥ãŒã¿ãŒãã»ããã¢ããããã«ã¯ããŸãPahoãšé¢é£ãœãããŠã§ã¢ãã€ã³ã¹ããŒã«ãã次ã«ãããŒã«ãŒã«æ¥ç¶ããŠã·ã¹ãã ããã¹ãããå¿ èŠããããŸãã
åææ¡ä»¶
- Ubuntu Linux 12.04以éãã³ã³ãã¥ãŒã¿ãŒã«ã€ã³ã¹ããŒã«ãããŠããå¿ èŠããããŸãã
- ã³ã³ãã¥ãŒã¿ãŒã¯ã€ã³ã¿ãŒãããã«æ¥ç¶ãããŠããŸãã
- ã³ã³ãã¥ãŒã¿ãŒã«ã¯ãMQTTãããŒã«ãŒãšã®æ¥ç¶ãå¿ èŠã§ãã
- ãããŒã«ãŒã¯ãããŒã«ã«ãããã¯ãŒã¯ãŸãã¯ã€ã³ã¿ãŒãããã«é 眮ã§ããŸãã
- ãã¡ã€ã¢ãŠã©ãŒã«ã䜿çšããå Žåãã³ã³ãã¥ãŒã¿ãŒã§éããŠããããŒã1883ã8883ã8884ãããã³8885ã䜿çšããåæ¹åã®æ å ±äº€æããããã¯ããªãã§ãã ããã
ããã®ã€ã³ã¹ããŒã«
1. eclipse.orgããææ°ããŒãžã§ã³ã®Pahoãå«ã
tar.gz
ã¢ãŒã«ã€ããããŠã³ããŒãããŸã ã ç§ãã¡ã®å Žåãããã¯
org.eclipse.paho.mqtt.python-1.1.tar.gz
ã§ããã
2.ãã®ãã¡ã€ã«ãéžæãããã£ã¬ã¯ããªã«é 眮ããŸãã
3.ã¢ãŒã«ã€ãã解åããŸãã ããšãã°ã次ã®ã³ãã³ãã§ã¯ïŒ
tar -xf org.eclipse.paho.mqtt.python-1.1.tar.gz
4.ã¢ãŒã«ã€ãã®å 容ã¯ãååãååãšäžèŽãããã©ã«ããŒã«ãããŸãã ãã®ãã©ã«ããŒã«ç§»åããå¿ èŠã«å¿ããŠååãå€æŽããŸãã
cd org.eclipse.paho.mqtt.python-1.1
5.次ã®Pythonã³ãã³ããå®è¡ããŸãã
python setup.py install
ããã§ãPahoãã³ã³ãã¥ãŒã¿ãŒã«ã€ã³ã¹ããŒã«ãããŸããã
ããè©Šéš
Pahoã䜿çšããŠPythonã¹ã¯ãªããããã¹ãããåæã«ã¢ã¯ãã£ããªãããã¯ã«ãµãã¹ã¯ã©ã€ãããŠMQTTãããŒã«ãŒã«æ¥ç¶ããŸãã ããšãã°ãã€ã³ã¿ãŒãããäžã«ãããããŒã«ãŒã«èå³ãããå Žåã¯ããããŒã«ãŒ
test.mosquitto.org
ã䜿çšããŠãã¹ãã§ããŸãã ããã«ããããããã¯ãŒã¯æ¥ç¶ãšãœãããŠã§ã¢ã®åäœã®äž¡æ¹ã確èªã§ããŸãã
1. Pahoã®ãµã³ãã«ããããã£ã¬ã¯ããªã«ç§»åããŸãã
cd org.eclipse.paho.mqtt.python/examples
2.
mqttc.connect
ããã³
mqttc.subscribe
ç·šéããŠã
sub.py
ã¹ã¯ãªãããå€æŽã
mqttc.subscribe
ã
mqttc.connect("test.mosquitto.org", 1883, 60) mqttc.subscribe("#", 0)
次ã®ã³ãã³ããæ€èšããŠãã ããã
Mqttc.connect â test.mosquitto.org: MQTT-, . â 1883: , MQTT-. â 60: -
Mqttc.subscribe â #: , , . â 0: (Quality of Service, QoS).
3.ã¹ã¯ãªãããå®è¡ããŸãã
python sub.py
ãããã¯ãŒã¯æ¥ç¶ãšããã°ã©ã ãæ£åžžã«æ©èœããå ŽåãMQTTãããŒã«ãŒ
test.mosquitto.org
ããã®ã¡ãã»ãŒãžãå°çãå§ããŸãã 圌ãã®ã³ã³ãã³ãã¯ä»ç§ãã¡ã«ã¯èå³ããããŸããã äœã衚瀺ãããªãå Žåã¯ãã€ã³ã¿ãŒãããæ¥ç¶ãš
sub.py
ã¹ã¯ãªããã®ç·šéãããè¡ã確èªããŠãã ããã
4.ã¹ã¯ãªãããåæ¢ããã«ã¯ãããŒããŒã
Ctrl-C
䜿çšããŸãã
MQTTãããŒã«ãŒãšãµãã¹ã¯ãªãã·ã§ã³ãæ§æãã
åã®ã»ã¯ã·ã§ã³ã§ã¯ãPahoãã³ã³ãã¥ãŒã¿ãŒã«ã€ã³ã¹ããŒã«ãããã®åäœããã¹ãããŸããã 次ã«ãMQTTãããŒã«ãŒã®æ©èœãæ€èšããŸãã ç§ãã¡ã®ç®æšã¯ããããªãã·ã£ãŒããã¡ãã»ãŒãžãåä¿¡ãããµãã¹ã¯ã©ã€ããŒã«éä¿¡ã§ããã¯ãŒãã³ã°ãããŒã«ãŒã§ãã ãããŒã«ãŒãšã®ããåããæŽçããããã®ãªãã·ã§ã³ãããã€ããããŸããããããã¯ãã¹ãŠã以äžã§èª¬æããå 容ãåçŸããã®ã«é©ããŠããŸãã
- ããŒã«ã«ãããã¯ãŒã¯äžãŸãã¯ã€ã³ã¿ãŒãããïŒã¯ã©ãŠãå
ïŒã«ããæ§ææžã¿ã®ãããŒã«ãŒã ãã®ã¢ãããŒãã«ãããæ¢åã®ãããŒã«ãŒã䜿çšã§ããŸãã ãã®ãããŒã«ãŒã¯ãã¡ãã»ãŒãžãéåä¿¡ããæºåãã§ããŠããã¯ãã§ãã åæã«ããŸã äœæããŠããªãå Žåã¯ãå¿
èŠãªãããã¯ãäœæã§ããã¯ãã§ãã
- Pahoã䜿çšããŠäœæãããããŒã«ã«ãããã¯ãŒã¯äžã®æ°ãããããŒã«ãŒã ãã®ãããŒã«ãŒã¯ã³ã³ãã¥ãŒã¿ãŒäžã§åäœããŸãã ãã®å Žåãã²ãŒããŠã§ã€ããã¡ãã»ãŒãžãåä¿¡ããã®ãåãã³ã³ãã¥ãŒã¿ãŒã§ããããšãå¥ã®ã³ã³ãã¥ãŒã¿ãŒã§ããããšãç¹å¥ãªåœ¹å²ã¯æãããŸããã ãããŒã«ãŒãäœæããã«ã¯ãPythonçšã®é©åãªPahoã©ã€ãã©ãªã䜿çšã§ããŸãã
- Mosquittoã䜿çšããŠäœæãããããŒã«ã«ãããã¯ãŒã¯äžã®æ°ãããããŒã«ãŒã ãã®ãããªãããŒã«ãŒã¯ã³ã³ãã¥ãŒã¿ãŒã§ãåäœããŸãããäœæããã«ã¯Mosquittoã䜿çšããå¿
èŠããããŸãã
ããŒã«ã«ãããã¯ãŒã¯ã«æ¥ç¶ãããæ¢åã®ãããŒã«ãŒã䜿çšãã
äœããããMQTTãããŒã«ãŒãæ¢ã«ãæã¡ã®å Žåã¯ãã¢ããªã±ãŒã·ã§ã³ã䜿çšããæºåãã§ããŠããŸãã éžæãããããã¯ãŒã¯ã«é 眮ãããã¢ããªã±ãŒã·ã§ã³ã®ã¡ãã»ãŒãžãéåä¿¡ããæºåãã§ããŠããå¿ èŠããããŸããèšå®ã§ããå¿ èŠããããŸãã æ¢ã«ãããŒã«ãŒã䜿çšããæºåãã§ããŠããå Žåã¯ããã®è³æã®ã²ãŒããŠã§ã€ã®æ§æã«é¢ããã»ã¯ã·ã§ã³ã«ããã«é²ãããšãã§ããŸãã
ãããŒã«ãŒããŸã ã»ããã¢ããããŠããªãå Žåãç°¡åãªMQTTãããŒã«ãŒãååŸããŠã¢ããªã±ãŒã·ã§ã³ããã¹ãããæ¹æ³ãããã€ããããŸãã ããã§ããããæ€èšããŸãã ããã§ã¯ããµãŒããŒãŸãã¯ãããã¯ãŒã¯ã®ã»ããã¢ããã®åé¡ã«å¯ŸåŠããŠããªãããšã«æ³šæããŠãã ããã ããã«ãæ¢åã®ãããŒã«ãŒãšé£æºããããã®ä»¥äžã®ãªãã·ã§ã³ãŸãã¯æ°ãããããŒã«ãŒãèšå®ããæ¹æ³ãããå¿ èŠãªãã®ã¯1ã€ã ãã§ãã ãããã£ãŠããããéžæããŠã·ã¹ãã ãã»ããã¢ããããã²ãŒããŠã§ã€ã®æ§æã«é¢ããã»ã¯ã·ã§ã³ã«é²ãããšãã§ããŸãã
PahoïŒã€ã³ã¿ãŒãããçµç±ã§å©çšå¯èœãªæ¢åã®ãããŒã«ãŒãšã®é£æº
ã€ã³ã¿ãŒãããã§ã¯ããã¹ãã«é©ããããã€ãã®MQTTãããŒã«ãŒãèŠã€ããããšãã§ããŸãã ããã§ã¯ã httpïŒ//test.mosquitto.org/ã§å ¥æå¯èœãªãããŒã«ãŒã䜿çšããŸãã ãããã¯ãã¡ãã»ãŒãžã«æ³šæãæããã«ãã·ã¹ãã ã®æ£ããåäœããã¹ãããŠããã§ã«ããã«ã€ããŠè©±ããŸããã ä»ãç§ãã¡ã¯ãããäž¡æ¹ã®ããææ矩ãªä»äºã«äœ¿çšããŠããŸãã
ãã®ãããŒã«ãŒãšå¯Ÿè©±ããæé ã¯ããPahoã®ãã¹ããã»ã¯ã·ã§ã³ã§æ¢ã«ããªãã¿ã§ãã ãã ããããã§ã¯ã
mqttc.subscribe("#", 0)
ã³ãã³ã
mqttc.subscribe("#", 0)
ã§ãã¹ãŠã®ãããã¯ããµãã¹ã¯ã©ã€ããã代ããã«ã
mqttc.subscribe("mytopic", 0)
ã³ãã³ã
mqttc.subscribe("mytopic", 0)
ç¹å®ã®ãããã¯ããµãã¹ã¯ã©ã€ãããŸãã ããã§ã
mytopic
ã¯MQTTããŒãã®ååã§ãã ãããŒã«ãŒã¯ããã®ãããªãããã¯ããŸã ååšããªãå Žåãèªåçã«äœæããŸãã
ã²ãŒããŠã§ã€ïŒãŸãã¯ä»ã®ã³ã³ãã¥ãŒã¿ãŒïŒããããã¯
mytopic
ãå«ãã¡ãã»ãŒãžããããŒã«ãŒã«éä¿¡ãããšããããŒã«ãŒã¯ãã®ã¡ãã»ãŒãžã
sub.py
ã¹ã¯ãªãã
sub.py
ãããã¿ãŒããã«ãŠã£ã³ããŠã«è»¢éããŸãã
Pahoã䜿çšããŠããŒã«ã«ãããã¯ãŒã¯ã«MQTTãããŒã«ãŒãã€ã³ã¹ããŒã«ãã
ã³ã³ãã¥ãŒã¿ãŒãããŒã«ã«ãããã¯ãŒã¯äžã«ããMQTTãããŒã«ãŒã®åœ¹å²ãæããå Žåã¯ããã®æ¹æ³ã䜿çšããŸãã ããã§ã¯ã以åã«ã€ã³ã¹ããŒã«ãããPaho Pythonã©ã€ãã©ãªãå¿ èŠã§ãã äžè¬ã«ãã»ããã¢ããæé ã¯ãã§ã«æ€èšããæé ãšäŒŒãŠããŸãã ãã ããã³ã³ãã¥ãŒã¿ãŒãšã²ãŒããŠã§ã€ã¯åãããŒã«ã«ãããã¯ãŒã¯äžã«ããå¿ èŠãããããããŒã«ãŒãšã®å¯Ÿè©±ã®éå§ïŒ
sub.py
ã¹ã¯ãªããå ïŒã¯æ¬¡ã®ããã«ãªã£ãŠããããšã«æ³šæããå¿ èŠããããŸãã
mqttc.connect("localhost", 1883, 60) mqttc.subscribe("mytopic", 0)
ã€ãŸããã€ã³ã¿ãŒãããäžã®ãµãŒããŒã§ã¯ãªããããŒã«ã«ãã¹ããã³ã³ãã¥ãŒã¿ãŒã®ãå éšã«ãŒããã®ãããã¯ãŒã¯ã€ã³ã¿ãŒãã§ã€ã¹ã«æ¥ç¶ããŠããŸãã éåžžãlocalhostã¯IPã¢ãã¬ã¹127.0.0.1ã®ãšã€ãªã¢ã¹ãšããŠäœ¿çšãããŸãã
ããŒã«ã«ãã¹ãã«é£çµ¡ããŠ
mytopic
ããŒãããµãã¹ã¯ã©ã€ããããšãããŒã«ã«MQTTãããŒã«ãŒãèªåçã«èµ·åããããã®ãããªããŒããäœæãããŸãã ã²ãŒããŠã§ã€ããããã¯
mytopic
ããŠã¡ãã»ãŒãžãçºè¡ããIPã¢ãã¬ã¹ã§ã³ã³ãã¥ãŒã¿ãŒã«æ¥ç¶ãããšããã®ã¡ãã»ãŒãžã¯Linuxã¿ãŒããã«ã«éä¿¡
sub.py
ããã®ãããã¯ã«ãµãã¹ã¯ã©ã€ããã
sub.py
ã¹ã¯ãªããã
sub.py
ãŸãã
Mosquittoã䜿çšããŠããŒã«ã«ãããã¯ãŒã¯ã«MQTTãããŒã«ãŒãã€ã³ã¹ããŒã«ãã
ãã®æ¹æ³ã§ããéçºè ã®ã³ââã³ãã¥ãŒã¿ãŒãããŒã«ã«ãããã¯ãŒã¯äžã®ãããŒã«ãŒãšããŠäœ¿çšããŸãã ããããä»åã¯Mosquittoã䜿çšããŸãã
Mosquittoã®è©³çŽ°ã«ã€ããŠã¯ã ãã¡ããã芧ãã ãã ã ããã«ã
<mosquitto_command> --help
ãããªèšèšã«ããããã®ããã±ãŒãžã®ã³ãã³ãã«é¢ãããã«ããååŸã§ããŸãã ã³ã³ãã¥ãŒã¿ãŒã§MQTTãããŒã«ãŒããã»ã¹ãéå§ããã«ã¯ã次ã®æé ãå®è¡ããŸãã
1.æ°ããLinuxã¿ãŒããã«ãŠã£ã³ããŠãéããŸãã
ãããŒã«ãŒã¯ãã®ãŠã£ã³ããŠã§å®è¡ãããŸãããåãã³ã³ãã¥ãŒã¿ãŒã§ã¯MQTTã¡ãã»ãŒãžãåä¿¡ã§ããŸããããããŒã«ãŒã®ã¿ãå¥ã®ã¿ãŒããã«ãŠã£ã³ããŠã«å°éããŸãã
2. MosquittoããŸã ã€ã³ã¹ããŒã«ããŠããªãå Žåã¯ã€ã³ã¹ããŒã«ããŸãã
sudo apt-get install mosquitto
3.ããŒããäœæãã
mosquitto_sub
ã䜿çšããŠãµãã¹ã¯ã©ã€ãããŸãã
mosquitto_sub -d -h localhost -t mytopic
次ã®ã³ãã³ããæ€èšããŠãã ããã
-d: . -h localhost: â IP- 127.0.0.1. -t mytopic: MQTT-. , .
4.ã³ã³ãã¥ãŒã¿ãŒããã²ãŒããŠã§ã€ãæ¥ç¶ãããŠããã®ãšåãããŒã«ã«ãããã¯ãŒã¯ã«æ¥ç¶ãããŠãããã©ããã確èªããŸãã
ç¹å®ã®ãããã¯ããµãã¹ã¯ã©ã€ããããšãããŒã«ã«MQTTãããŒã«ãŒãèªåçã«èµ·åããŸãã ã²ãŒããŠã§ã€ã¯ãã³ã³ãã¥ãŒã¿ãŒã®IPã¢ãã¬ã¹ã§ãããŒã«ãŒã«é£çµ¡ããããšã«ããã
mosquitto_sub
ã
mosquitto_sub
ãŠããLinux端æ«ã«éä¿¡ããããã®ãããã¯ã®ã¡ãã»ãŒãžãå ¬éã§ããŸãã
ã²ãŒããŠã§ã€ã®ã»ããã¢ãã
ã²ãŒããŠã§ã€ãã»ããã¢ããããŸãããã äž»ãª2ã€ã®æé ãå«ãŸããŸãã
- Pythonã§äœæãããMQTTã¯ã©ã€ã¢ã³ããã²ãŒããŠã§ã€ã«ã€ã³ã¹ããŒã«ããŸãã
- ã²ãŒããŠã§ã€ããã¹ãMQTTãããŒã«ãŒã«æ¥ç¶ããŠããããã¯ãŒã¯æ¥ç¶ãšã¹ã¯ãªããã®æ£ããæäœã確èªããŸãã
åææ¡ä»¶
- ãã®äŸã§ã¯ãWind River Intelligent Device Platform XT 3.1ã§Wind River Linux 7ãå®è¡ããã²ãŒããŠã§ã€ã䜿çšããŸãã ã²ãŒããŠã§ã€ãå¥ã®OSã䜿çšããŠããå Žåãã»ããã¢ããã®ããã»ã¹ã¯ããã§ç€ºãããŠãããã®ãšç°ãªãå ŽåããããŸãã
- ã²ãŒããŠã§ã€ãªãã¬ãŒãã£ã³ã°ã·ã¹ãã ã¯ãèšå®ã§
withtemplate=feature/mqtt
ã䜿çšããŠæ§ç¯ããå¿ èŠããããŸãã 詳现ã¯ãã¡ããã芧ãã ãã ã
- ãããŒã«ãŒãããŒã«ã«ãããã¯ãŒã¯äžã«ããå Žåãã²ãŒããŠã§ã€ã¯MQTTãããŒã«ãŒãšåããããã¯ãŒã¯ã«æ¥ç¶ããå¿
èŠããããŸãã
- ã€ã³ã¿ãŒãããã§ãã¹ããããŠããMQTTãããŒã«ãŒã䜿çšãããã¡ã€ã¢ãŠã©ãŒã«ã䜿çšããå ŽåãããŒã1883ã8883ã8884ãããã³8885ããããã¯ããªãã§ãã ããã
ã²ãŒããŠã§ã€ã«Pahoãã€ã³ã¹ããŒã«ããŸã
ã²ãŒããŠã§ã€ãžã®Pahoã®ã€ã³ã¹ããŒã«ã¯ãã³ã³ãã¥ãŒã¿ãŒãžã®ã€ã³ã¹ããŒã«ãšåãã§ãã ææ°ããŒãžã§ã³ã®Pahoã§ã¢ãŒã«ã€ããããŠã³ããŒããã解åããŠ
python setup.py install
ã³ãã³ããå®è¡ããå¿ èŠããããŸãã
ã€ã³ã¿ãŒãããäžã«ããMQTTãããŒã«ãŒãšã®äœæ¥ã®æ€èšŒ
ã²ãŒããŠã§ã€ãšãããã¯ãŒã¯æ¥ç¶ã«ã€ã³ã¹ããŒã«ãããŠãããœãããŠã§ã¢ã®ç¶æ ã確èªããæé ã¯ãã³ã³ãã¥ãŒã¿ãŒã確èªããæé ãç¹°ãè¿ããŸãã
MQTTã¡ãã»ãŒãžã®éåä¿¡
MQTTãããŒã«ãŒã®æºåãæŽããã³ã³ãã¥ãŒã¿ãŒãšã²ãŒããŠã§ã€ãã»ããã¢ãããããã®ã§ãã¡ãã»ãŒãžã®çºè¡ã«é¢äžããPythonã¹ã¯ãªãããäœæããæºåããã¹ãŠæŽããŸããã
ããã§ã¯ãPahoã®ãµã³ãã«ã³ãŒãã䜿çšããŠãç¹å®ã®ãããžã§ã¯ãã®ããŒãºã«å¿ããŠåŸã§å€æŽã§ããåçŽãªã¹ã¯ãªãããäœæããŸãã ã¹ã¯ãªããã¯ãã²ãŒããŠã§ã€ããã³ã³ã³ãã¥ãŒã¿ãŒã§çŽæ¥äœæã§ããŸãã ã¹ã¯ãªãããã³ã³ãã¥ãŒã¿ãŒäžã§äœæãããŠããå Žåãã²ãŒããŠã§ã€ã«ã³ããŒããŠå®è¡ããå¿ èŠããããŸãã
å®å šæ§
Pythonã¹ã¯ãªãããäœæããã³å®è¡ãããšãã¯ã次ã®èæ ®äºé ãèæ ®ããŠãã ããã
- çµã¿èŸŒã¿ã®Pythonã€ã³ã¿ãŒããªã¿ãŒã䜿çšããå ŽåãIMAã»ãã¥ãªãã£ã¯å¹²æžãããã€ã³ã¿ãŒããªã¿ãŒãæ°ããã¹ã¯ãªãããå®è¡ã§ããŸãã
- Pythonãã«ãã€ã³ã€ã³ã¿ãŒããªã¿ãŒã䜿çšãããåæã«IMAã»ãã¥ãªãã£ãæå¹ã«ãªã£ãŠããå Žåã¯ãå®è¡ããåã«åã¹ã¯ãªããã«çœ²åããå¿
èŠããããŸãã
- McAffee Embedded Controlãã²ãŒããŠã§ã€ã§æå¹ã«ãªã£ãŠããå Žåãã¹ã¯ãªããããã¯ã€ããªã¹ãã«è¿œå ããå¿ èŠããããŸãã
以äžã®äŸã§ã¯ãã²ãŒããŠã§ã€ã®IMAããã¯ã€ããªã¹ããæå¹ã«ãªã£ãŠããªããšæ³å®ããŠããŸãã
MQTTã¡ãã»ãŒãžãå ¬éããããã®Pythonã¹ã¯ãªããã®äœæãšå®è¡
1. Pahoã®ãµã³ãã«ã³ãŒããå«ã
examples
ãã©ã«ããŒã«ç§»åããŸãã
cd org.eclipse.paho.mqtt.python-1.1/examples
2.
pub-single.py
ã¹ã¯ãªãããã³ããŒããŠååãå€æŽããŸãã
cp pub-single.py my-pub.py
3.
my-pub.py
ãã¡ã€ã«ãç·šéããæåŸã®è¡ãå€æŽããŠã¡ãã»ãŒãžãæ¢åã®MQTTãããŒã«ãŒã«éä¿¡ãããããã«ããéä¿¡æã«MQTTã¡ãã»ãŒãžãåä¿¡ããããã³ã³ãã¥ãŒã¿ãŒãã»ããã¢ãããããšãã«èšå®ãããããŒãã䜿çšããŸããïŒãããã¯ã«ååãä»ããŸãããMytopicãïŒïŒ
publish.single("mytopic","Hello", hostname="<broker_location>")
ãã®ã³ãã³ãã®ããã€ã¹ãæ€èšããŠãã ããã
â "mytopic": , . â "Hello": â "<broker_location>": MQTT-.
ã³ã³ãã¥ãŒã¿ãŒããããŒã«ãŒãšããŠäœ¿çšããå Žåã¯ãããŒã«ã«ãããã¯ãŒã¯äžã®IPã¢ãã¬ã¹ã眮ãæããå¿ èŠããããŸãã ããšãã°ã192.168.1.5ã®ãããªãã®ã§ãã ãããŒã«ãŒãã€ã³ã¿ãŒãããäžã«ããå Žåããã®IPã¢ãã¬ã¹ãŸãã¯ãµãŒããŒã®ãã¡ã€ã³åãå¿ èŠã§ãã ããšãã°ã
test.mosquitto.org
ã
4.ã³ã³ãã¥ãŒã¿ãŒã§
my-pub.py
ã¹ã¯ãªãããæºåããŠããå Žåã¯ããããã²ãŒããŠã§ã€ã«ã³ããŒããŸãã
5.ã²ãŒããŠã§ã€ã§
my-pub.py
ãå®è¡ããŠã
mytopic
ããŒãã䜿çšããŠãæå®ãããMQTTãããŒã«ãŒã«ã¡ãã»ãŒãžãéä¿¡ããŸãã
python my-pub.py
ã³ã³ãã¥ãŒã¿ãŒã§MQTTã¡ãã»ãŒãžãåä¿¡ãã
ã²ãŒããŠã§ã€ããããã¯ãå«ãã¡ãã»ãŒãžãçºè¡ãããããŒã«ãŒãã¡ãã»ãŒãžãåä¿¡ãããšããããã¯ã«ãµãã¹ã¯ã©ã€ãããŠãããã¹ãŠã®MQTTã¯ã©ã€ã¢ã³ãã«ã¡ãã»ãŒãžãéä¿¡ããŸãã
ã¹ã¯ãªããã®èšå®ãæå®ããŠå ¬éããã«ã¯ãã²ãŒããŠã§ã€ã§
python my-pub.py
ã³ãã³ããå®è¡ããã ãã§ååã§ãã å®è¡ããããšãã¡ãã»ãŒãžãHelloãããããŒã«ãŒã«éä¿¡ãããã³ã³ãã¥ãŒã¿ãŒããããŒã«ãŒããååŸããŸãã ã³ã³ãã¥ãŒã¿ãŒäžã§ãã¿ãŒããã«ãŠã£ã³ããŠãéããŠãããMQTTãããŒã«ãŒããã®ã¡ãã»ãŒãžãåŸ æ©ããŠããå Žåã次ã®å 容ã®ã¡ãã»ãŒãžãåä¿¡ãããŸãã
mytopic 0 Hello
ãã®æ§é ãèæ ®ããŠãã ããã
mytopic: . 0: Hello:
ãŸãšããšã¢ã€ãã¢
Pythonããã°ã©ãã³ã°èšèªã䜿çšããŠã件åãmytopicããå«ããHelloãMQTTã¡ãã»ãŒãžãããŒã«ã«ãããã¯ãŒã¯ã«ããMQTTãããŒã«ãŒã«éä¿¡ãããã®ãããã¯ã«ãµãã¹ã¯ã©ã€ãããŠããã³ã³ãã¥ãŒã¿ãŒã§ãã®ã¡ãã»ãŒãžãåä¿¡ããŸããã 次ã¯ïŒ ãã®è³æããäŸãéçºããããã®ããã€ãã®ã¢ã€ãã¢ããããŸãã ãããžã§ã¯ãã§MQTTã¡ãã»ãŒãžäº€æã·ã¹ãã ã®äœ¿çšãæ¡å€§ã§ããããšãé¡ã£ãŠããŸãã
- ã·ã¹ãã ã«ã»ã³ãµãŒãããå Žåãã²ãŒããŠã§ã€ã¯èªã¿åãå€ãèªã¿åããMQTTã¡ãã»ãŒãžãšããŠå
¬éã§ããŸãã
- MQTTã¡ãã»ãŒãžã¯ãã¯ã©ãŠããŸãã¯ããŒã«ã«ããŒã¿ããŒã¹ã«ä¿åããããã®ç¹å®ã®æ
å ±ãéä¿¡ããã®ã«é©ããŠããŸãã ãã®ã·ããªãªãäœæ¥äžã®ã·ã¹ãã ãšäžèŽããå Žåã¯ãæ€èšããŠãã ããã
- ããããããè€éãªã¡ãã»ãŒãžæ§é ãšãããã¯ã䜿çšããŠãã¡ãã»ãŒãžãéã¶ãã€ããŒããå¢ãããŸãã
- 1ã€ã®ã³ãã³ãã§è€æ°ã®ã¡ãã»ãŒãžãéä¿¡ã§ããPahoæ©èœãè©ŠããŠãã ããã
- ã¯ã©ã€ã¢ã³ãã®æå·åãèªèšŒããã¯ã€ããªã¹ãã®äœ¿çšããŸãã¯ãã®ä»ã®æ段ã«ãããMQTTã¡ãã»ãŒãžã³ã°ã·ã¹ãã ã®ã»ãã¥ãªãã£ãåäžãããŸãã