MQTTClient Åë½Å µå¶óÀ̹ö

 

MQTTClient Åë½Åµå¶óÀ̹ö´Â MQTT ÇÁ·ÎÅäÄÝÀ» »ç¿ëÇÏ¿© ¸Þ½ÃÁö¸¦ ÁÖ°í¹Þ±â À§ÇÑ Åë½Å µå¶óÀ̺êÀÌ´Ù.

¾Æ·¡ÀÇ Àб⼳Á¤À¸·Î MQTT Subscribe(±¸µ¶) , ¾²±â¼³Á¤À¸·Î MQTT Publish(¹ßÇà) ±â´ÉÀ» Áö¿øÇÑ´Ù.

 

ÁÖÀÇ)   1. paho-mqtt3as.dll ÆÄÀÏÀ» PLC_SCAN.exe °¡ À§Ä¡ÇÑ Æú´õ³ª PROTOCOL Æú´õ¿¡ À§Ä¡½ÃÄÑ¾ß ÇÑ´Ù. (EPL-2.0 ¶óÀ̼¾½º) (Autobase 10.3.6.21 ºÎÅÍ ±âº» ¹èÄ¡)

2. ssleay32.dll, libeay32.dll ÆÄÀÏÀ» PLC_SCAN.exe °¡ À§Ä¡ÇÑ Æú´õ¿¡ À§Ä¡½ÃÄÑ¾ß ÇÑ´Ù. (Autobase 10.3.6.21 ºÎÅÍ ±âº» ¹èÄ¡)

3. msvcp90d.dll ÆÄÀÏÀ» PROTOCOL\Microsoft.VC90.DebugCRT Æú´õ¿¡ À§Ä¡½ÃÄÑ¾ß ÇÑ´Ù. (Autobase 10.3.6.21 ºÎÅÍ ±âº» ¹èÄ¡)

     >> MQTTClient Åë½Åµå¶óÀ̹ö °ü·Ã ¼³Ä¡Æú´õ·Î À̵¿

4. Visual Studio 2015¿ë Visual C++ Àç¹èÆ÷ °¡´É ÆÐŰÁö( vc_redist.x86.exe )¸¦ ¼³Ä¡ÇØ¾ß ÇÑ´Ù.
    https://www.microsoft.com/ko-kr/download/details.aspx?id=48145

1. Àб⠼³Á¤

<±×¸² 1>Àº MQTTClient Åë½Å µå¶óÀ̹ö¸¦ »ç¿ëÇÏ¿© Åë½ÅÆÄÀÏÀ» ÆíÁýÇÑ ¿¹½ÃÀÌ´Ù. 

<±×¸² 1> MQTTClient Åë½Å µå¶óÀ̹öÀÇ Åë½ÅÆÄÀÏ ÆíÁý ¿¹

 

<±×¸² 1>¿¡¼­ MQTTClient Åë½Å µå¶óÀ̹öÀÇ Åë½ÅÆÄÀÏÀ» ¾Æ·¡ Á¤º¸¿¡ ¸Â°Ô ÆíÁýÇÑ´Ù.

µð¹ÙÀ̽º : None.

ÀбâÁÖ±â : ÀбâÁֱ⸶´Ù ¸Þ½ÃÁö¼ö½ÅȽ¼ö °»½Å, ¿¡·¯¹ß»ý ¹× ¿¬°á»óÅ ȮÀÎÀÌ ÀÌ·ç¾îÁö¹Ç·Î ÃÖ´ëÇÑ Âª°Ô ¼³Á¤ÇÑ´Ù. (1ÃÊ ÀÌÇÏ)

     ¸Þ½ÃÁö¼ö½ÅÀº º°µµÀÇ ½º·¹µå¿¡¼­ ÀÌ·ç¾îÁö¹Ç·Î, ÀбâÁÖ±â¿Í °ü°è¾øÀÌ ¼ö½Å ½Ã Áï½Ã ¸Þ¸ð¸®¿¡ ÀúÀåµÈ´Ù.

¾²±âÁÖ±â : ¾²±âÁֱ⸶´Ù ¸Þ½ÃÁö¹ßÇà(Publish) °¡ ÀÌ·ç¾îÁö¹Ç·Î, ÃÖ´ëÇÑ Âª°Ô ¼³Á¤ÇÑ´Ù.

Àбâ½Ã°£Ãʰú : ¿¬°á½ÇÆÐ ½Ã À翬°á ½Ãµµ ÁÖ±âÀ̹ǷÎ, 2ÃÊ ~ 60ÃÊ »çÀÌ·Î ¼³Á¤ÇÑ´Ù.

¾²±â½Ã°£Ãʰú : »ç¿ë¾ÈÇÔ.

¶ÇÇÑ ¿É¼Ç ºÎ¿¡´Â ¿¬°áÇÒ MQTT BrokerÀÇ host, port, SSL »ç¿ë¿©ºÎ ¸¦ ÄÞ¸¶( , )·Î ±¸ºÐÇÏ¿© ÀÔ·ÂÇÑ´Ù.

ÁÖÀÇ) ±âº»°ªÀº broker.mqtt-dashboard.com, 1883, 0, ÀÌ´Ù.

( ÀÌ ÁÖ¼Ò´Â HIVEMQ »çÀÇ °ø°³ MQTT Broker À̹ǷÎ, ÅäÇȰú ¸Þ½ÃÁö ³»¿ëÀÌ ¸ðµÎ °ø°³µÈ´Ù.)

           ( ÀÌ ÁÖ¼Ò´Â Test ¿ëµµ·Î »ç¿ëÇϰí, ÇöÀå¿¡¼­ »ç¿ëÇÏ´Â ¼­¹ö³ª ÀÚüÀûÀ¸·Î ±¸ÃàÇÑ MQTT Broker ÁÖ¼Ò·Î º¯°æÇϵµ·Ï ÇÑ´Ù. )

 

MQTTClient µå¶óÀ̹öÀÇ Àбâ ÀÛ¼º Çü½Ä

MQTTClient Åë½Å µå¶óÀ̹öÀÇ Àбâ¿äû¹®Àº 'READ' ¸¸ ÀÛ¼ºÇÑ´Ù.

 

Àб⠼³Á¤ ¿¹)

READ,

 

<±×¸² 1> ÇÁ·ÎÅäÄÝ ¿É¼ÇºÎÀÇ  ¾ÆÀÌÄÜÀ» Ŭ¸¯Çϸé <±×¸² 2>ÀÇ ´ëÈ­»óÀÚ°¡ ³ªÅ¸³ª´Âµ¥ ¿©±â¼­ ±¸µ¶(Subscribe) ÇÒ ÁÖÁ¦(Topic) ¸ñ·ÏÀ» ÀÛ¼ºÇÒ ¼ö ÀÖ´Ù. 

 

±¸µ¶ ¸ñ·Ï(Subscribe Items)Àº ÁÖÁ¦(Topic), ¼­ºñ½ºÇ°Áú(QoS), ÀúÀåÇÒ Åë½ÅÇÁ·Î±×·¥ À§Ä¡(SaveBufferAddress)¸¦ ÄÞ¸¶( , ) ·Î ±¸ºÐÇÏ¿© ÀÔ·ÂÇÑ´Ù.

ÀÛ¼ºÇÑ ±¸µ¶¸ñ·ÏÀº \SCAN\SUBSCRIBE%03d.txt ÇüÅ·ΠÀúÀåµÇ°í, Åë½Å ½ÃÀÛ ½Ã ÇѲ¨¹ø¿¡ ±¸µ¶ÀÌ ½ÃÀ۵ȴÙ.

±¸µ¶¸ñ·ÏÀÇ ÁÖÁ¦°¡ Áߺ¹µÉ °æ¿ì, ÀÐÀº ¸Þ½ÃÁö´Â ¸ÕÀú ÀÛ¼ºÇÑ ¼ø¼­ÀÇ ¸Þ¸ð¸®ÁÖ¼Ò¿¡ ÀúÀåµÈ´Ù.

¿ÍÀϵåÄ«µå( + , # ) ¹®ÀÚ´Â Áö¿øÇÏÁö ¾Ê´Â´Ù.

 

¶ÇÇÑ, Á¢¼ÓÇÒ MQTT Broker Host, Port, SSL »ç¿ë¿©ºÎ, SSL ÀÎÁõ¼­ °æ·Î(CA File, Cert File, pritvateKey), Username, Password ¸¦ ÀÛ¼ºÇÒ ¼ö ÀÖ´Ù.

Host : ¿¬°áÇÒ MQTT BrokerÀÇ host

Port : ¿¬°áÇÒ MQTT BrokerÀÇ port

Use SSL : TLS/SSL ¿¬°á »ç¿ë¿©ºÎ

CA File : ¼­¹ö¿ë ÀÎÁõ¼­ °æ·Î (»ç¿ëÇÏÁö ¾Ê´Â °æ¿ì, ºñ¿öµÒ.)

Cert File : Ŭ¶óÀÌ¾ðÆ®¿ë ÀÎÁõ¼­ °æ·Î (»ç¿ëÇÏÁö ¾Ê´Â °æ¿ì, ºñ¿öµÒ.)

privateKey : Ŭ¶óÀÌ¾ðÆ®¿ë °³ÀΠŰ °æ·Î (»ç¿ëÇÏÁö ¾Ê´Â °æ¿ì, ºñ¿öµÒ.)

Username : Ŭ¶óÀÌ¾ðÆ® ID (»ç¿ëÇÏÁö ¾Ê´Â °æ¿ì, ºñ¿öµÒ.)

Password : Ŭ¶óÀÌ¾ðÆ® Password (»ç¿ëÇÏÁö ¾Ê´Â °æ¿ì, ºñ¿öµÒ.)

<±×¸² 2> MQTTClient Åë½Å µå¶óÀ̹öÀÇ ¿É¼Ç ´ëÈ­»óÀÚÀÇ

 

MQTTClient Åë½Å µå¶óÀ̹öÀÇ ÀÐÀº °ªÀº WORD/DWORD/FLOAT/DOUBLE/STRING ¸Þ¸ð¸®¿¡ µ¿ÀÏÇÑ °ª(ÀúÀåÇü½Ä¸¸ ´Ù¸§)ÀÌ ÀúÀåµÈ´Ù.

´Ü, ¼ö½ÅµÈ ¸Þ½ÃÁö°¡ 255ÀÚ¸¦ ÃʰúÇÒ °æ¿ì, "[ÇÁ·ÎÁ§Æ®°æ·Î]\SCAN\MQTT\[ÅäÇȸí].txt ÆÄÀÏ¿¡ ¸Þ½ÃÁö°¡ ÀúÀåµÈ´Ù. (ÅäÇȸíÀÇ ½½·¡½Ã ( / ) ¹®ÀÚ´Â ¹ØÁÙ ( _ ) ·Î ġȯµÈ´Ù.)
±×¸®°í ÀúÀåÇÒ ¸Þ¸ð¸®(STRING) À§Ä¡¿¡ ÇØ´ç °æ·Î¸íÀÌ ÀúÀåµÈ´Ù.

 

 

2. ¾²±â ¼³Á¤

MQTTClient µå¶óÀ̹öÀÇ ¾²±â ¼³Á¤À¸·Î MQTT ¹ßÇà(Publish) ±â´ÉÀ» »ç¿ëÇÒ ¼ö ÀÖ´Ù.

 

2-1 . µðÁöÅÐ ¾²±â

µðÁöÅÐ ¾²±â ±â´ÉÀº Áö¿øÇÏÁö ¾Ê´Â´Ù.

 

2-2. ¾Æ³¯·Î±× ¾²±â

¾Æ³¯·Î±× ¾²±â¸¦ À§ÇÑ ¾Æ³¯·Î±× Ãâ·Â ÅÂ±× ¼³Á¤ ³»¿ëÀº ´ÙÀ½°ú °°´Ù.

1) Port           ¿¬°áµÈ Åë½ÅÆ÷Æ® ¹øÈ£. (COM ¹øÈ£°¡ ¾Æ´Ô)

2) Station       retain ±â´É »ç¿ë À¯¹«. ( 0 ¶Ç´Â 1)

3) Address      »ç¿ë¾ÈÇÔ.

4) Extra1        ¹ßÇà(Publish)ÇÒ ÁÖÁ¦¸í(Topic name)

5) Extra2        QoS(Quality of Service)  (0 , 1 , 2 Áß ¼±ÅÃ.)

 

¿¹Á¦ 1)

PORT : 0   STATION : 1  ADDRESS : 0  EXTRA1 : Autobase/gr1/AI_0000  EXTRA2 : 10 À¸·Î ¼³Á¤ÇÏ°í ¾Æ³¯·Î±× Ãâ·ÂÀ» Çϸé ÅäÇÈ : Autobase/gr1/AI_0000, °ª : 10 À» ¹ßÇàÇÑ´Ù. (Retain ON)

 

¿¹Á¦ 2)

@PlcScanWriteWord(0, 1, 0, "my/test/topic1", 0, 1.1);  // ÅäÇÈ : my/test/topic1, °ª : 1.1 À» ¹ßÇàÇÑ´Ù. (Retain ON)

 

¿¹Á¦ 3)

@PlcScanWriteWord(0, 0, 0, "Autobase/gr1/DI_0000", 0, $DI_0000); // ÅäÇÈ : Autobase/gr1/DI_0000, °ª : [$DI_0000 °ª] À» ¹ßÇàÇÑ´Ù. (Retain OFF)

 

2-3. ºí·Ï ¾²±â (¹®ÀÚ¿­ ¸Þ½ÃÁö ¹ßÇà)

ºí·Ï¾²±â´Â ½ºÅ©¸³Æ®ÀÇ @PlcScanWriteBlock ÇÔ¼ö¸¦ »ç¿ëÇÏ¿© ´ÙÀ½°ú °°ÀÌ ¼³Á¤ÇÑ´Ù.

½ºÅ©¸³Æ® À̸§°ú Çü½Ä : @PlcScanWriteBlock(int port, int station, int address, string extra1, int extra2, object array_value, int array_size);

 

MQTTClient ÇÁ·ÎÅäÄÝ¿¡¼­´Â ´ÙÀ½ Çü½ÄÀ¸·Î µ¿ÀÛÇÑ´Ù.

@PlcScanWriteBlock(int port, int retain, 0, string topic, int QoS, object array_value, int array_size);

   

¿¹Á¦ 1)

@strcpy(buf, "Test Value");
size = @strlen(buf);
@PlcScanWriteBlock(0, 1, 0, "my/test/topic1", 0, buf, size);  // ÅäÇÈ : my/test/topic1 , ¸Þ½ÃÁö : Test Value ¸¦ ¹ßÇàÇÑ´Ù. (Retain ON)

 

¿¹Á¦ 2)

@strcpy(buf, $ST_0000);
size = @strlen(buf);
@PlcScanWriteBlock(0, 0, 0, "Autobase/Alarm/msg1", 0, buf, size);   // ÅäÇÈ : Autobase/Alarm/msg1 , ¸Þ½ÃÁö : [¹®ÀÚ¿­ÅÂ±× $ST_0000ÀÇ °ª] À» ¹ßÇàÇÑ´Ù. (Retain ON)