
¡¡¡¡Ëæ×ÅÐÐÒµµÄ¿ìËٳɳ¤£¬Êý¾Ý¾ÓªºÍ½ÓÊÕËùÐèµÄÉ豸ÊýÁ¿Ò²ÔÚÔö¼Ó¡£ÎªÁ˽â¾öÖÚ¶àÉ豸֮¼äµÄͨÐÅÎÊÌâÒÔ¼°µ¥¸öÍøÂçÖÐÉ豸×éºÏµÄÎÊÌ⣬ÒѾ´´½¨ÁËÎïÁªÍø(IoT)¸ÅÄî-»ùÓÚijЩ¹¦Äܵĵ¥¸öÍøÂçÖÐÉ豸µÄ×éºÏ»òÌØÐÔ£¬´ËÍøÂç½øÒ»²½ÓëÀàËÆÍøÂç×éºÏÔÚÒ»Æð£¬´Ó¶ø´´½¨¸ü´óµÄÍøÂ磬ÒÀ´ËÀàÍÆ¡£
¡¡¡¡ÔÚÕâÑùµÄÍøÂçÖУ¬É豸ͨ¹ý¸÷ÖÖ½Ó¿ÚºÍͨÐÅÐÒé±Ë´Ë½»»¥¡£µ±·¢¹ú¼ÊÌìÉúÓ®¼ÒÒ»´¥¼´·¢ÕýÔÚ¿¼ÂÇÎïÁªÍø¸ÅÄîµÄ¹¤ÒµÊµÏÖʱ£¬Ó¦Ê¹ÓþßÓÐ×Ô¼ºµÄÐÒéºÍÓ²¼þµÄ¹¤ÒµÉ豸£¬È÷¢¹ú¼ÊÌìÉúÓ®¼ÒÒ»´¥¼´·¢¿ªÊ¼Ì½ÌÖIIoT¸ÅÄî(¹¤ÒµÎïÁªÍø)¡£
¡¡¡¡ÎªÁ˽øÐÐͨÐÅ£¬É豸¿ÉÒÔʹÓø÷ÖÖ¹¤ÒµÐÒ顣Ϊ´Ë£¬MQTTºÜÊÜ»¶Ó¡£
¡¡¡¡Ê²Ã´ÊÇMQTT?
¡¡¡¡MQTT»òÏûÏ¢¶ÓÁÐÒ£²â´«ÊäÊÇÒ»ÖÖÇáÇɵĿª·ÅʽÏûÏ¢´«µÝÐÒ飬ÓÃÓÚÔÚÒªÇó¡°´úÂëÕ¼ÓÃÁ¿Ð¡¡±»òÍøÂç´ø¿íÊÜÏÞµÄÔ¶³ÌλÖýøÐÐÊý¾Ý´«Êä¡£ÕâЩÓÅÊÆÔÊÐíÔÚM2Mϵͳ(»úÆ÷¶Ô»úÆ÷)ºÍIIoTϵͳ(¹¤ÒµÎïÁªÍø)ÖÐʵÏÖ´ËÐÒé¡£
¡¡¡¡»¹´æÔÚÒ»ÖÖÐÒé±äÌåMQTT-SN(ÓÃÓÚ´«¸ÐÆ÷ÍøÂçµÄMQTT)£¬ÒÔǰ³ÆÎªMQTT-S£¬ÆäÉè¼ÆÓÃÓÚ²»Ö§³ÖTCP / IPÍøÂçµÄǶÈëʽÎÞÏßÉ豸£¬ÀýÈçZigBee¡£
¡¡¡¡MQTTÐÒéµÄ¹¦ÄÜ
¡¡¡¡MQTTÐÒéµÄÊ×Òª¹¦ÄÜ£º
¡¡¡¡¡ñ Òì²½ÐÒé
¡¡¡¡¡ñ ½ô´ÕµÄÏûÏ¢
¡¡¡¡¡ñ ÔÚÊý¾Ý´«ÊäÏßÁ¬½Ó²»Îȶ¨µÄÇé¿öÏÂÔËÐÐ
¡¡¡¡¡ñ Ö§³Ö¶à¸ö·þÎñÖÊÁ¿(QoS)¼¶±ð
¡¡¡¡¡ñ ÇáËɼ¯³ÉÐÂÉ豸
¡¡¡¡ÔÚÓ¦ÓóÌÐò²ãÉÏ£¬MQTTÐÒéÔÚTCP / IPÐÒéÖ®ÉϹ¤×÷£¬²¢ÇÒĬÈÏʹÓö˿Ú1883(Èç¹ûͨ¹ýSSLÁ¬½ÓÔòʹÓö˿Ú8883)¡£
¡¡¡¡ÔÚMQTTÐÒéÖУ¬ÏûÏ¢½»»»Ôڹ˿ͶË(¿ÉÄÜÊÇÏûÏ¢·¢²¼Õß»òÏûÏ¢¶©ÔÄÕß)ÓëÏûÏ¢´úÀí(ÀýÈçMosquitto MQTT)Ö®¼ä½øÐС£
¡¡¡¡·¢²¼ÕßÔÚMQTT BrokerÉÏ·¢ËÍÊý¾Ý£¬²¢ÔÚÏûÏ¢ÖÐÖ¸¶¨ÁËÃ÷È·µÄÖ÷Ìâ¡£¶©ÔÄÕß¿ÉÒÔ¸ù¾Ý¶ÔÏàÓ¦Ö÷ÌâµÄ¶©ÔÄ£¬´Ó¶à¸ö·¢²¼Õß½ÓÊÕ¸÷ÖÖÊý¾Ý¡£
¡¡¡¡MQTTÉ豸ʹÓÃÈ·¶¨ÀàÐ͵ÄÏûÏ¢À´Óë´úÀí½øÐÐͨÐÅ¡£Ê×ÒªÀàÐÍÈçÏ£º
¡¡¡¡¡ñ Á¬½Ó¨C½¨Á¢ÓëMessage BrokerµÄÁ¬½Ó
¡¡¡¡¡ñ ¶Ï¿ªÁ¬½Ó¨C¶Ï¿ªÓëÏûÏ¢´úÀíµÄÁ¬½Ó
¡¡¡¡¡ñ ·¢²¼¨CÔÚMessage BrokerÖз¢²¼ÓйØÖ÷ÌâµÄÊý¾Ý
¡¡¡¡¡ñ ¶©ÔĨC¶©ÔÄÏûÏ¢´úÀíÉϵÄÖ÷Ìâ
¡¡¡¡¡ñ Í˶©¨CÍ˶©Ö÷Ìâ
¡¡¡¡ÏûÏ¢µÄ½á¹¹
¡¡¡¡MQTTÏûÏ¢°üº¬ÒÔϼ¸²¿·Ö£º
¡¡¡¡¡ñ ¹Ì¶¨µÄ±êÍ·(³öÏÖÔÚËùÓÐÏûÏ¢ÖÐ)
¡¡¡¡¡ñ ¿É±ä±êÍ·(³öÏÖÔÚijЩÏûÏ¢ÖÐ)
¡¡¡¡¡ñ Êý¾Ý£¬ÓÐЧ¸ºÔØ(´æÔÚÓÚijЩÏûÏ¢ÖÐ)
¡¡¡¡¹Ì¶¨Í·
¡¡¡¡ÏûÏ¢ÀàÐÍ-ÀýÈ磺CONNECT£¬SUBSCRIBE£¬PUBLISHµÈ¡£
¡¡¡¡Ã¿¸öMQTTÊý¾Ý°üÌØÓеıêÖ¾¨CÕâ4λÓÃÓÚ¸¨Öú±êÖ¾£¬¸¨Öú±êÖ¾µÄ´æÔÚºÍ״̬ȡ¾öÓÚÏûÏ¢ÀàÐÍ¡£
¡¡¡¡Ê£Ó೤¶È¨Cµ±Ç°ÏûÏ¢³¤¶È(¿É±ä±¨Í·+Êý¾Ý)£¬´óСΪ1µ½4¸ö×Ö½Ú¡£
¡¡¡¡×ÜÌå¶øÑÔ£¬MQTTÐÒéÖÐÓÐ15ÖÖÏûÏ¢ÀàÐÍ£º
ѶϢÀàÐÍ | Öµ | Á÷Ïò | ÃèÊö |
---|---|---|---|
ÒÑÔ¤Áô | 0000£¨0£© | ½ûÖ¹µÄ | ÒÑÔ¤Áô |
Á¬½Ó | 0001£¨1£© | C *-> S ** | ¹Ë¿Í¶ËÇëÇóÁ¬½Óµ½·þÎñÆ÷ |
¿µÄÉ¿Ë | 0010£¨2£© | C <- | Á¬½ÓÈ·ÈÏ |
·¢²¼ | 0011£¨3£© | C <-S£¬C-> S | ·¢²¼Ñ¶Ï¢ |
»ØËÍ | 0100£¨4£© | C <-S£¬C-> S | ·¢²¼È·ÈÏ |
PUBREC | 0101£¨5£© | C <-S£¬C-> S | ·¢²¼ÊÕµ½ |
¹«¿ª | 0110£¨6£© | C <-S£¬C-> S | ·¢²¼·¢ÐÐ |
PUBCOMP | 0111£¨7£© | C <-S£¬C-> S | ·¢²¼Íê³É |
¶©ÔÄ | 1000£¨8£© | C-> S | ¹Ë¿Í¶©ÔÄÇëÇó |
ºóÍË | 1001£¨9£© | C <- | ¶©ÔÄÈ·ÈÏ |
È¡Ïû¶©ÔÄ | 1010£¨10£© | C-> S | Í˶©ÇëÇó |
È¡Ïû¶©ÔÄ | 1011£¨11£© | C <- | Í˶©È·ÈÏ |
PINGREQ | 1100£¨12£© | C-> S | PINGÇëÇó |
ƽRESP | 1101£¨13£© | C <- | PING»ØÓ¦ |
¶Ï¿ª | 1110£¨14£© | C-> S | ¹Ë¿Í¶Ë¶Ï¿ªÁ¬½Ó |
ÒÑÔ¤Áô | 1111£¨15£© | ½ûÖ¹µÄ | ÒÑÔ¤Áô |
¡¡¡¡±êÖ¾
¡¡¡¡¹Ì¶¨±êÍ·µÄǰ4¸ö×î¸ßÓÐЧλÓÃ×÷ÌØ¶¨±êÖ¾£º
¡¡¡¡DUP ¨Cµ±¹Ë¿Í¶Ë»òMQTT´úÀíÌá½»ÖØ·¢µÄÊý¾Ý°ü(ÔÚPUBLISH£¬SUBSCRIBE£¬UNSUBSCRIBE£¬PUBRELÖÐʹÓÃ)ʱ£¬½«ÉèÖÃDuplicate¡£Èç¹ûÉèÖÃÁ˸ñêÖ¾£¬Ôò±äÁ¿Í·±ØÐë°üº¬ÏûÏ¢ID(ÏûÏ¢±êʶ·û)¡£
¡¡¡¡QoS ¨C·þÎñÖÊÁ¿(0,1,2)
¡¡¡¡±£Áô-·¢²¼´øÓб£Áô±êÖ¾µÄÊý¾Ýʱ£¬´úÀí½«¶ÔÆä½øÐд洢¡£½¨Á¢¶Ô¸ÃÖ÷ÌâµÄж©Ôĺ󣬴úÀí½«Á¢¼´·¢ËÍ´øÓд˱êÖ¾µÄÏûÏ¢¡£½öÔÚPUBISHÀàÐ͵ÄÏûÏ¢ÖÐʹÓá£
¡¡¡¡¿É±ä±êÌâ
¡¡¡¡Ä³Ð©±êÍ·ÖдæÔڿɱä±êÍ·¡£
¡¡¡¡Ëü°üº¬ÒÔÏÂÊý¾Ý£º
¡¡¡¡¡ñ Êý¾Ý°ü±êʶ·û¨C´æÔÚÓÚËùÓÐÀàÐ͵ÄÏûÏ¢ÖУ¬µ«ÒÔÏÂÇé¿ö³ýÍ⣺CONNECT£¬CONNACK£¬PUBLISH(§ãQoS <1)£¬PINGREQ£¬PINGRESP£¬DISCONNECT
¡¡¡¡¡ñ ÐÒéÃû³Æ¨C½öÔÚCONNECTÏûÏ¢ÀàÐÍÖÐÏÔʾ
¡¡¡¡¡ñ ÐÒé°æ±¾¨C½öÔÚCONNECTÏûÏ¢ÀàÐÍÖдæÔÚ
¡¡¡¡¡ñ Á¬½Ó±êÖ¾¨CÖ¸¶¨Á¬½ÓÆÚ¼ä¹Ë¿Í¶ËÐÐΪµÄ±êÖ¾
¡¡¡¡¿Í‘ôÃû¨CÈç¹ûÉèÖÃÁ˸ñêÖ¾£¬ÔòÓÐЧ¸ºÔØÖбØÐë´æÔÚÒ»¸ö¿Í‘ôÃû(ÓÃÓڹ˿ͶËÉí·ÝÑéÖ¤)
¡¡¡¡ÃÜÂë¨CÈç¹ûÉèÖÃÁ˴˱êÖ¾£¬ÔòÓÐЧ¸ºÔØÖбØÐë´æÔÚÃÜÂë(ÓÃÓڹ˿ͶËÉí·ÝÑéÖ¤)
¡¡¡¡½«»á±£Áô-Èç¹û¸Ã±êÖ¾ÉèÖÃΪ1£¬Ôò´úÀí½«´æ´¢Ò»¸öÒâÔ¸ÏûÏ¢¡£
¡¡¡¡Will QoS ¨C Will MessageµÄ·þÎñÖÊÁ¿¡£Èç¹ûÉèÖÃÁËÒâÔ¸±ê¼Ç£¬Ôò±ØÐë´æÔÚÒâÔ¸QoSºÍÒâÔ¸±£Áô¡£
¡¡¡¡ÒâÖ¾±êÖ¾-Èç¹ûÉèÖÃÁ˸ñêÖ¾£¬ÔòÔڹ˿Ͷ˶Ͽª´úÀí¶ø²»·¢ËÍDISCONNECTÃüÁî(Èç¹û·¢Éú²»¿ÉÔ¤ÖªµÄ¹Ø±Õ£¬Ê§°ÜµÈÇé¿ö)Ö®ºó£¬´úÀí½«Í¨¹ýËùνµÄÒâÖ¾ÏûϢ֪ͨËùÓÐÒÑÁ¬½ÓµÄ¹Ë¿Í¶Ë¡£
¡¡¡¡¸É¾»»á»°-Èç¹û½«¸Ã±êÖ¾ÉèÖÃΪ0£¬Ôò´úÀí´æ´¢Ò»¸ö»á»°£¬ËùÓй˿Ͷ˶©Ôͼ½«Í¨¹ý¹Ë¿Í¶ËµÄÏÂÒ»¸öÁ¬½Ó·¢ËÍ£¬²¢ÇÒÔڹ˿Ͷ˶ϿªÁ¬½Óʱ£¬´úÀí½«½ÓÊÕÀ´×ÔQoS1ºÍQoS2µÄËùÓÐÏûÏ¢¡£Òò´Ë£¬Èç¹û¸Ã±êÖ¾ÉèÖÃΪ1£¬Ôòµ½ÏÂÒ»¸öÁ¬½Ó£¬¹Ë¿Í¶Ë±ØÐëÔٴζ©ÔÄËùÓÐÖ÷Ìâ¡£
¡¡¡¡¡ñ »á»°´æÔÚ¨CÔÚCONNACKÀàÐ͵ÄÏûÏ¢ÖÐÓ¦Óá£Èç¹ûBroker½ÓÊܽ«Clean SessionÉèÖÃΪ1µÄÁ¬½Ó£¬Ôò±ØÐ뽫Session Present(SP)ÉèÖÃΪ0¡£Èç¹ûBroker½ÓÊÜClean SessionÉèÖÃΪ0µÄÁ¬½Ó£¬ÔòSPÖÐÉèÖõÄֵȡ¾öÓÚBrokerÊÇ·ñÒÑ´æ´¢´Ë¹Ë¿Í¶ËµÄ»á»°×´Ì¬(Èç¹ûÊÇ£¬Ôò±ØÐ뽫SPÉèÖÃΪ1£¬·´Ö®ÒàÈ»)¡£»á»°´æÔÚ±ê־ʹ¹Ë¿Í¶ËÄܹ»È·¶¨ÊÇ·ñÒѾ´æ´¢Á˻Ự״̬¡£
¡¡¡¡¡ñ Á¬½Ó·µ»ØÂë¨CÈç¹û´úÀí³öÓÚijÖÖÔÒòÎÞ·¨´Ó¹Ë¿Í¶Ë½ÓÊÕ¸ñʽÕýÈ·µÄCONNACKÊý¾Ý°ü£¬Ôò±ØÐëÔÚϱíµÄCONNACKÊý¾Ý°üµÄµÚ¶þ¸ö×Ö½ÚÖÐÉèÖÃÊʵ±µÄÖµ£º
Öµ | ·µ»ØÂëÏìÓ¦ | ÃèÊö |
---|---|---|
0 | 0x00½ÓÊÜÁ¬½Ó | ½ÓÊÜÁ¬½Ó |
1¸ö | 0x01Á¬½Ó±»¾Ü¾ø£¬ÐÒé°æ±¾²»¿É½ÓÊÜ | ´úÀí²»Ö§³Ö¹Ë¿Í¶ËÇëÇóµÄÐÒé°æ±¾ |
2 | 0x02Á¬½Ó±»¾Ü¾ø£¬±êʶ·û±»¾Ü¾ø | ÓÃÓÚÁ¬½ÓµÄ¹Ë¿Í¶ËµÄ¹Ë¿Í¶ËID²»ÔÚ¾ßÓÐÔÊÐíIDµÄÁбíÖÐ |
3 | 0x03Á¬½Ó±»¾Ü¾ø£¬·þÎñÆ÷²»¿ÉÓà | Òѽ¨Á¢ÍøÂçÁ¬½Ó£¬µ«MQTT·þÎñ²»¿ÉÓà |
4 | 0x04Á¬½Ó±»¾Ü¾ø£¬¿Í‘ôÃû»òÃÜÂë´íÎó | ¿Í‘ôÃû»òÃÜÂëÖеÄÊý¾Ý¸ñʽ´íÎó |
5 | 0x05Á¬½Ó±»¾Ü¾ø£¬Î´ÊÚȨ | ¹Ë¿Í¶ËÎÞȨÁ¬½Ó |
6-255 | ±£ÁôÒÔ±¸½«À´Ê¹Óà |
¡¡¡¡Êý¾Ý£¬ÓÐÐ§ÔØºÉ
¡¡¡¡Í¨¹ýMQTTÏûÏ¢´«ÊäµÄÊý¾ÝµÄÄÚÈݺ͸ñʽÔÚÉ豸Öж¨Òå¡£¿ÉÒÔͨ¹ý´ÓÊ£Ó೤¶ÈÖмõÈ¥±äÁ¿Í·µÄ³¤¶ÈÀ´¼ÆËãÊý¾Ý´óС¡£
¡¡¡¡·µ»ØÄ¿Â¼
¡¡¡¡MQTTÐÒé(QoS)ÖеķþÎñÖÊÁ¿
¡¡¡¡·¢ËÍÏûϢʱ£¬MQTTÖ§³ÖÈý¸ö¼¶±ðµÄ·þÎñÖÊÁ¿(QoS)¡£
¡¡¡¡QoS 0×î¶àÒ»´Î¡£Ôڴ˼¶±ðÉÏ£¬·¢²¼ÕßÒ»´ÎÏò´úÀí·¢ËÍÒ»ÌõÏûÏ¢£¬²¢ÇÒ²»µÈ´ýÈκÎÏìÓ¦£¬¼´·¢ËͲ¢Íü¼ÇËü¡£
¡¡¡¡QoS 1ÖÁÉÙÒ»´Î¡£´Ë¼¶±ð¿ÉÈ·±£½«ÏûÏ¢´«µÝµ½´úÀí£¬µ«ÊÇ¿ÉÒÔ´Ó·¢²¼Õ߸´ÖÆÏûÏ¢¡£Ò»µ©ÊÕµ½¸±±¾£¬´úÀí½«Ôٴν«´ËÏûÏ¢·¢Ë͸ø¶©ÔÄ·þÎñÆ÷£¬²¢½«ÏûÏ¢½ÓÊÕÈ·ÈÏת·¢¸ø·¢²¼·þÎñÆ÷¡£Èç¹û·¢²¼Õßδ´Ó´úÀí»ñÈ¡PUBACKÏûÏ¢£¬Ëü½«³¢ÊÔÖØÐ´«µÝ´ËÊý¾Ý°ü£¬½«DUPÉèÖÃΪ1¡£
¡¡¡¡QoS 2Ç¡ºÃÒ»´Î¡£Ôڴ˼¶±ðÉÏ£¬¿ÉÒÔÈ·±£½«ÏûÏ¢´«µÝµ½¹Ë¿Í¶Ë£¬²¢ÇÒ²»¿ÉÄÜÖØ¸´¸±±¾¡£
¡¡¡¡·¢²¼ÕßÏò´úÀí·¢ËÍÏûÏ¢¡£¸ÃÏûÏ¢°üº¬Î¨Ò»µÄÊý¾Ý°üID£¬QoS = 2ºÍDUP = 0¡£·¢²¼Õߴ洢δ¾È·ÈϵÄÏûÏ¢£¬³ý·ÇËü´Ó´úÀí»ñµÃPUBRECÏìÓ¦¡£´úÀí»Ø¸´°üº¬Ïàͬ·Ö×éIDµÄPUBRECÏûÏ¢¡£ÊÕµ½´ËÏûÏ¢ºó£¬·¢²¼Õß·¢Ë;ßÓÐÏàͬÊý¾Ý°üIDµÄPUBREL¡£´úÀí±ØÐë´æ´¢ÏûÏ¢¸±±¾£¬Ö±µ½»ñµÃPUBREL¡£´úÀíÊÕµ½PUBRELºó£¬Ëü½«É¾³ýÏûÏ¢¸±±¾£¬²¢½«ÓйØÒÑÍê³ÉµÄÊÂÎñµÄPUBCOMPÏûÏ¢·¢Ë͸ø·¢²¼Õß¡£