[{"data":1,"prerenderedAt":887},["Reactive",2],{"VEb9Nnn1YX":3,"blog-post-en-mqttx-script-function-tutorial":26,"blog-posts-en":666},{"items":4,"meta":23},[5,8,11,14,17,20],{"title":6,"titleUrl":7},"MQTT QoS 0、1、2 のクイックスタート","introduction-to-mqtt-qos",{"title":9,"titleUrl":10},"MQTT TopicとWildcardの初心者向けガイド","advanced-features-of-mqtt-topics",{"title":12,"titleUrl":13},"MQTT Broker：原理、人気のオプション、クイックスタート","the-ultimate-guide-to-mqtt-broker-comparison",{"title":15,"titleUrl":16},"ESP32におけるMQTT活用入門ガイド","esp32-connects-to-the-free-public-mqtt-broker",{"title":18,"titleUrl":19},"CAN Bus：機能、利点と課題、高速ローカル処理チュートリアル","can-bus-how-it-works-pros-and-cons",{"title":21,"titleUrl":22},"Python言語の「Paho」MQTTクライアントの使用法","how-to-use-mqtt-in-python",{"count":24,"limit":24,"page":25},6,1,{"slug":27,"title":28,"description":29,"date":30,"category":31,"cover":32,"version":-1,"coverWidth":-1,"coverHeight":-1,"updated":-1,"tags":33,"readingTime":36,"doc":37},"mqttx-script-function-tutorial","MQTTX Script Function Tutorial","MQTT X has added a script function since v1.4.2. This article will introduce the use of the script function with two simple instances.","2021-03-01","guides","https://assets.emqx.com/images/188cd490ad41a00c2eb797256cd3145a.png",[34,35],"Script","Desktop",5,{"_path":38,"_dir":39,"_draft":40,"_partial":40,"_locale":41,"title":28,"description":29,"date":42,"category":31,"tags":43,"cover":32,"body":44,"_type":659,"_id":660,"_source":661,"_file":662,"_extension":663,"readingTime":36,"sitemap":664},"/blog/en/mqttx-script-function-tutorial","en",false,"","2021-03-01T00:00:00.000Z",[34,35],{"type":45,"children":46,"toc":649},"root",[47,56,121,131,142,154,165,176,182,217,259,266,271,276,288,317,325,348,383,396,404,417,425,445,453,466,472,484,496,505,532,540,545,553,594,602,608,622,636],{"type":48,"tag":49,"props":50,"children":52},"element","h2",{"id":51},"overview",[53],{"type":54,"value":55},"text","Overview",{"type":48,"tag":57,"props":58,"children":59},"p",{},[60,67,69,78,80,87,89,95,97,107,109,119],{"type":48,"tag":61,"props":62,"children":64},"a",{"href":63},"/",[65],{"type":54,"value":66},"MQTTX",{"type":54,"value":68}," is a cross-platform ",{"type":48,"tag":61,"props":70,"children":75},{"href":71,"rel":72,"target":74},"https://www.emqx.com/en/blog/introduction-to-mqtt-5",[73,73],"noopener","_blank",[76],{"type":54,"value":77},"MQTT 5.0",{"type":54,"value":79}," desktop test client provided by the ",{"type":48,"tag":61,"props":81,"children":84},{"href":82,"rel":83,"target":74},"https://www.emqx.com/en",[73,73],[85],{"type":54,"value":86},"EMQ",{"type":54,"value":88},", the world's leading provider of ",{"type":48,"tag":90,"props":91,"children":92},"strong",{},[93],{"type":54,"value":94},"open source IoT middleware",{"type":54,"value":96},", and supports macOS, Linux, and Windows. The user interface of MQTTX simplifies the operation logic of pages with the help of a chat software format that allows users to quickly create multiple simultaneous online ",{"type":48,"tag":90,"props":98,"children":99},{},[100],{"type":48,"tag":61,"props":101,"children":104},{"href":102,"rel":103,"target":74},"https://www.emqx.com/en/blog/mqtt-client-tools",[73,73],[105],{"type":54,"value":106},"MQTT clients",{"type":54,"value":108},", and facilitate testing the connection/publish/subscribe function of MQTT/TCP, MQTT/TLS, MQTT/WebSocket and other ",{"type":48,"tag":90,"props":110,"children":111},{},[112],{"type":48,"tag":61,"props":113,"children":116},{"href":114,"rel":115,"target":74},"https://www.emqx.com/en/blog/the-easiest-guide-to-getting-started-with-mqtt",[73,73],[117],{"type":54,"value":118},"MQTT protocol",{"type":54,"value":120}," features.",{"type":48,"tag":57,"props":122,"children":123},{},[124,126],{"type":54,"value":125},"MQTTX Website: ",{"type":48,"tag":61,"props":127,"children":128},{"href":63},[129],{"type":54,"value":130},"https://mqttx.app",{"type":48,"tag":57,"props":132,"children":133},{},[134,136],{"type":54,"value":135},"Download MQTTX v1.5.2: ",{"type":48,"tag":61,"props":137,"children":140},{"href":138,"rel":139,"target":74},"https://github.com/emqx/MQTTX/releases/tag/v1.5.2",[73,73],[141],{"type":54,"value":138},{"type":48,"tag":57,"props":143,"children":144},{},[145,147],{"type":54,"value":146},"Mac users can download from the APP Store: ",{"type":48,"tag":61,"props":148,"children":151},{"href":149,"rel":150,"target":74},"https://apps.apple.com/cn/app/mqttx/id1514074565?mt=12",[73,73],[152],{"type":54,"value":153},"https://apps.apple.com/us/app/mqttx/id1514074565?mt=12",{"type":48,"tag":57,"props":155,"children":156},{},[157,159],{"type":54,"value":158},"Linux users can download from the Snapcraft: ",{"type":48,"tag":61,"props":160,"children":163},{"href":161,"rel":162,"target":74},"https://snapcraft.io/mqttx",[73,73],[164],{"type":54,"value":161},{"type":48,"tag":57,"props":166,"children":167},{},[168],{"type":48,"tag":169,"props":170,"children":175},"img",{"alt":171,"src":172,"loading":173,"decoding":174},"mqttxpreview.png","https://assets.emqx.com/images/fdeeaa3093e114157fdbf46fd18bcd32.png?x-image-process=image/resize,w_1520/format,webp","lazy","async",[],{"type":48,"tag":49,"props":177,"children":179},{"id":178},"script-function",[180],{"type":54,"value":181},"Script Function",{"type":48,"tag":57,"props":183,"children":184},{},[185,190,192,199,201,206,208,215],{"type":48,"tag":90,"props":186,"children":187},{},[188],{"type":54,"value":189},"After the v1.4.2 version, the script function has been added to the MQTTX.",{"type":54,"value":191}," It allows users to use a script to customize converting ",{"type":48,"tag":193,"props":194,"children":196},"code",{"className":195},[],[197],{"type":54,"value":198},"Payload",{"type":54,"value":200},", and can be used to simulate custom test scenarios. The scripting language is currently supported in JavaScript. The following article will use two simple instances to introduce the use of the script function. ",{"type":48,"tag":90,"props":202,"children":203},{},[204],{"type":54,"value":205},"Please note that in v1.4.2, the scripting feature is an open test feature, so the use process, security, and functionality will need to be improved.",{"type":54,"value":207}," You are also welcome to discuss this in detail in the MQTTX ",{"type":48,"tag":61,"props":209,"children":212},{"href":210,"rel":211,"target":74},"https://github.com/emqx/MQTTX/issues",[73,73],[213],{"type":54,"value":214},"GitHub issue",{"type":54,"value":216}," section, which we will review and respond to.",{"type":48,"tag":57,"props":218,"children":219},{},[220,222,228,230,236,238,243,245,250,252,257],{"type":54,"value":221},"In the edit script function, there is only an ",{"type":48,"tag":193,"props":223,"children":225},{"className":224},[],[226],{"type":54,"value":227},"execute",{"type":54,"value":229}," API globally, and the user needs to write a custom function that takes a ",{"type":48,"tag":193,"props":231,"children":233},{"className":232},[],[234],{"type":54,"value":235},"value",{"type":54,"value":237}," parameter, ",{"type":48,"tag":193,"props":239,"children":241},{"className":240},[],[242],{"type":54,"value":198},{"type":54,"value":244},", in which the ",{"type":48,"tag":193,"props":246,"children":248},{"className":247},[],[249],{"type":54,"value":235},{"type":54,"value":251}," can be modified and transformed in a custom way. Finally, the function is passed as a parameter to ",{"type":48,"tag":193,"props":253,"children":255},{"className":254},[],[256],{"type":54,"value":227},{"type":54,"value":258}," to execute the custom-written function.",{"type":48,"tag":260,"props":261,"children":263},"h3",{"id":262},"the-first-example",[264],{"type":54,"value":265},"The first example",{"type":48,"tag":57,"props":267,"children":268},{},[269],{"type":54,"value":270},"Simulation of temperature and humidity data reporting in cooperation with the timer sending function.",{"type":48,"tag":57,"props":272,"children":273},{},[274],{"type":54,"value":275},"For example, when a user is using EMQX, they need to save data to the database using the rules engine function. Once configured, you can use MQTTX to connect to EMQX and test it using the script function. Assuming that the user needs to save the reported temperature and humidity data in JSON format, we can simulate the data using the following script.",{"type":48,"tag":277,"props":278,"children":283},"pre",{"className":279,"code":281,"language":282,"meta":41},[280],"language-javascript","/**\n * Simulated temperature and humidity reporting\n * @return Return a simulated temperature and humidity JSON data - { \"temperature\": 23, \"humidity\": 40 }\n * @param value, MQTT Payload - {}\n */\n\nfunction random(min, max) {\n  return Math.round(Math.random() * (max - min)) + min\n}\n\nfunction handlePayload(value) {\n  let _value = value\n  if (typeof value === 'string') {\n    _value = JSON.parse(value)\n  }\n  _value.temperature = random(10, 30)\n  _value.humidity = random(20, 40)\n  return JSON.stringify(_value, null, 2)\n}\n\nexecute(handlePayload)\n","javascript",[284],{"type":48,"tag":193,"props":285,"children":286},{"__ignoreMap":41},[287],{"type":54,"value":281},{"type":48,"tag":57,"props":289,"children":290},{},[291,293,299,301,307,309,315],{"type":54,"value":292},"At this time, you can copy this code into the code edit box on the script page, and click on the ",{"type":48,"tag":193,"props":294,"children":296},{"className":295},[],[297],{"type":54,"value":298},"Save",{"type":54,"value":300}," button in the top right corner, set the script name to TempAndHum, and save it. We enter a ",{"type":48,"tag":193,"props":302,"children":304},{"className":303},[],[305],{"type":54,"value":306},"{}",{"type":54,"value":308}," in the Input box as the initial data. Click on the ",{"type":48,"tag":193,"props":310,"children":312},{"className":311},[],[313],{"type":54,"value":314},"Test",{"type":54,"value":316}," button to see the results in the Output box and if the results are as expected, you can then use the script normally.",{"type":48,"tag":57,"props":318,"children":319},{},[320],{"type":48,"tag":169,"props":321,"children":324},{"alt":322,"src":323,"loading":173,"decoding":174},"mqttxhumtemp.png","https://assets.emqx.com/images/e8c56a968c89ae76bb6fb684ca73027b.png?x-image-process=image/resize,w_1520/format,webp",[],{"type":48,"tag":57,"props":326,"children":327},{},[328,330,337,339,346],{"type":54,"value":329},"We use the ",{"type":48,"tag":61,"props":331,"children":334},{"href":332,"rel":333,"target":74},"https://www.emqx.com/en/mqtt/public-mqtt5-broker",[73,73],[335],{"type":54,"value":336},"Free public MQTT broker",{"type":54,"value":338}," provided by the EMQX to create a new connection. This service is created based on EMQX's ",{"type":48,"tag":61,"props":340,"children":343},{"href":341,"rel":342,"target":74},"https://www.emqx.com/en/cloud",[73,73],[344],{"type":54,"value":345},"MQTT IoT cloud platform",{"type":54,"value":347},". The broker access information is as follows:",{"type":48,"tag":349,"props":350,"children":351},"ul",{},[352,363,373],{"type":48,"tag":353,"props":354,"children":355},"li",{},[356,358],{"type":54,"value":357},"Broker: ",{"type":48,"tag":90,"props":359,"children":360},{},[361],{"type":54,"value":362},"broker.emqx.io",{"type":48,"tag":353,"props":364,"children":365},{},[366,368],{"type":54,"value":367},"TCP Port: ",{"type":48,"tag":90,"props":369,"children":370},{},[371],{"type":54,"value":372},"1883",{"type":48,"tag":353,"props":374,"children":375},{},[376,378],{"type":54,"value":377},"Websocket Port: ",{"type":48,"tag":90,"props":379,"children":380},{},[381],{"type":54,"value":382},"8083",{"type":48,"tag":57,"props":384,"children":385},{},[386,388,394],{"type":54,"value":387},"Once connected, click on the drop-down menu in the top right corner and select ",{"type":48,"tag":193,"props":389,"children":391},{"className":390},[],[392],{"type":54,"value":393},"Use Script",{"type":54,"value":395},". In the pop-up window, select the TempAndHum script you have just saved, then select the application type as Published and click the Confirm button to enable the script function.",{"type":48,"tag":57,"props":397,"children":398},{},[399],{"type":48,"tag":169,"props":400,"children":403},{"alt":401,"src":402,"loading":173,"decoding":174},"mqttxuse1.png","https://assets.emqx.com/images/0cdc5685eec2832049534beaf258fa57.png?x-image-process=image/resize,w_1520/format,webp",[],{"type":48,"tag":57,"props":405,"children":406},{},[407,409,415],{"type":54,"value":408},"Once the script is on, we will continue to set up the timed sending function. Click on the drop-down function menu in the top right corner and select ",{"type":48,"tag":193,"props":410,"children":412},{"className":411},[],[413],{"type":54,"value":414},"Timed messages",{"type":54,"value":416},", here we set the sending frequency to 1 second, click on confirm and the timed message function will be enabled.",{"type":48,"tag":57,"props":418,"children":419},{},[420],{"type":48,"tag":169,"props":421,"children":424},{"alt":422,"src":423,"loading":173,"decoding":174},"mqttxtimed.png","https://assets.emqx.com/images/8cf5eaf54e3ab5596c03500012463cd7.png?x-image-process=image/resize,w_1520/format,webp",[],{"type":48,"tag":57,"props":426,"children":427},{},[428,430,435,437,443],{"type":54,"value":429},"Once you are ready, you can enter the initial ",{"type":48,"tag":193,"props":431,"children":433},{"className":432},[],[434],{"type":54,"value":198},{"type":54,"value":436}," and the ",{"type":48,"tag":193,"props":438,"children":440},{"className":439},[],[441],{"type":54,"value":442},"Topic",{"type":54,"value":444}," you want to send to, click on Send, and once you have successfully sent a message, you will see that MQTTX will automatically send the simulation data once per second.",{"type":48,"tag":57,"props":446,"children":447},{},[448],{"type":48,"tag":169,"props":449,"children":452},{"alt":450,"src":451,"loading":173,"decoding":174},"mqttxhumtempsuccess.png","https://assets.emqx.com/images/695bfda6171514106492d3543d884686.png?x-image-process=image/resize,w_1520/format,webp",[],{"type":48,"tag":57,"props":454,"children":455},{},[456,458,464],{"type":54,"value":457},"This avoids the need for the user to manually enter and modify the data, and the simulated data can be controlled when using the script, with the simulated data interval set in the ",{"type":48,"tag":193,"props":459,"children":461},{"className":460},[],[462],{"type":54,"value":463},"random",{"type":54,"value":465}," function of the script. It is easier and more user-friendly if there is a need for visual graphical testing of saved data, or if a certain amount of data needs to be added to the data for testing.",{"type":48,"tag":260,"props":467,"children":469},{"id":468},"the-second-example",[470],{"type":54,"value":471},"The second example",{"type":48,"tag":57,"props":473,"children":474},{},[475,477,482],{"type":54,"value":476},"Convert the timestamp in the recieved ",{"type":48,"tag":193,"props":478,"children":480},{"className":479},[],[481],{"type":54,"value":198},{"type":54,"value":483}," to normal time",{"type":48,"tag":57,"props":485,"children":486},{},[487,489,494],{"type":54,"value":488},"In some testing scenarios, the ",{"type":48,"tag":193,"props":490,"children":492},{"className":491},[],[493],{"type":54,"value":198},{"type":54,"value":495}," received by the user may contain timestamp information. If you need to observe and test more time-sensitive data, you may need to copy the data and then convert the timestamp to time, which is troublesome. In this case, a script can be used to automatically convert the received data to make it easier for the user to observe the data. We can use the following script to convert the data. Again, assume that the data received is of JSON type and contains a time field.",{"type":48,"tag":277,"props":497,"children":500},{"className":498,"code":499,"language":282,"meta":41},[280],"/**\n * Convert timestamp to normal time.\n * @return Return the UTC time - { \"time\": \"2020-12-17 14:18:07\" }\n * @param value, MQTT Payload - { \"time\": 1608185887 }\n */\n\nfunction handleTimestamp(value) {\n  let _value = value\n  if (typeof value === 'string') {\n    _value = JSON.parse(value)\n  }\n  // East Eight District needs an additional 8 hours\n  const date = new Date(_value.time * 1000 + 8 * 3600 * 1000)\n  _value.time = date.toJSON().substr(0, 19).replace('T', ' ')\n  return JSON.stringify(_value, null, 2)\n}\n\nexecute(handleTimestamp)\n",[501],{"type":48,"tag":193,"props":502,"children":503},{"__ignoreMap":41},[504],{"type":54,"value":499},{"type":48,"tag":57,"props":506,"children":507},{},[508,510,515,517,523,525,530],{"type":54,"value":509},"At this point, you can copy this code into the code edit box on the script page, click the ",{"type":48,"tag":193,"props":511,"children":513},{"className":512},[],[514],{"type":54,"value":298},{"type":54,"value":516}," button in the top right corner, set the script name to Time, and save it. We enter a ",{"type":48,"tag":193,"props":518,"children":520},{"className":519},[],[521],{"type":54,"value":522},"{ \"time\": 1608365158 }",{"type":54,"value":524}," in the Input box as the initial data. Click the ",{"type":48,"tag":193,"props":526,"children":528},{"className":527},[],[529],{"type":54,"value":314},{"type":54,"value":531}," button to see the results in the Output box and if the results are as expected, the script will then work as expected.",{"type":48,"tag":57,"props":533,"children":534},{},[535],{"type":48,"tag":169,"props":536,"children":539},{"alt":537,"src":538,"loading":173,"decoding":174},"mqttxtime.png","https://assets.emqx.com/images/145b3c4b24a42bd52f44923fb0e272f9.png?x-image-process=image/resize,w_1520/format,webp",[],{"type":48,"tag":57,"props":541,"children":542},{},[543],{"type":54,"value":544},"At this point, we still create a new connection, and use the method described above to enable this script. Note that when selecting the application type, you need to select Received.",{"type":48,"tag":57,"props":546,"children":547},{},[548],{"type":48,"tag":169,"props":549,"children":552},{"alt":550,"src":551,"loading":173,"decoding":174},"mqttxuse2.png","https://assets.emqx.com/images/0d3d705ee8a79eecb483cb30ecd15c71.png?x-image-process=image/resize,w_1520/format,webp",[],{"type":48,"tag":57,"props":554,"children":555},{},[556,558,563,565,571,573,578,580,585,587,592],{"type":54,"value":557},"Once the script function is enabled, we add a ",{"type":48,"tag":193,"props":559,"children":561},{"className":560},[],[562],{"type":54,"value":442},{"type":54,"value":564}," of ",{"type":48,"tag":193,"props":566,"children":568},{"className":567},[],[569],{"type":54,"value":570},"testtopic/time",{"type":54,"value":572}," and we send a ",{"type":48,"tag":193,"props":574,"children":576},{"className":575},[],[577],{"type":54,"value":198},{"type":54,"value":579}," with a timestamp message to that ",{"type":48,"tag":193,"props":581,"children":583},{"className":582},[],[584],{"type":54,"value":442},{"type":54,"value":586},". We then look at the received ",{"type":48,"tag":193,"props":588,"children":590},{"className":589},[],[591],{"type":54,"value":198},{"type":54,"value":593}," message and see that the timestamp has been automatically converted to normal time.",{"type":48,"tag":57,"props":595,"children":596},{},[597],{"type":48,"tag":169,"props":598,"children":601},{"alt":599,"src":600,"loading":173,"decoding":174},"mqttxtimesuccess.png","https://assets.emqx.com/images/eee40a6a899c8c9912ee55ae9efbd56b.png?x-image-process=image/resize,w_1520/format,webp",[],{"type":48,"tag":49,"props":603,"children":605},{"id":604},"summary",[606],{"type":54,"value":607},"Summary",{"type":48,"tag":57,"props":609,"children":610},{},[611,613,620],{"type":54,"value":612},"So far, we have completed the tutorial on the use of the MQTTX script instance. This feature is scalable and flexible, so you will need to use it according to your needs. Examples of scripts can be found in the ",{"type":48,"tag":61,"props":614,"children":617},{"href":615,"rel":616,"target":74},"https://github.com/emqx/MQTTX/tree/main/scripts-example",[73,73],[618],{"type":54,"value":619},"/script-example",{"type":54,"value":621}," folder of the GitHub repository, and two built-in scripts are currently available, timestamp conversion and temperature and humidity data simulation. If you have a better, more useful script in your use, please submit your code here so that more people can use it.",{"type":48,"tag":57,"props":623,"children":624},{},[625,627,634],{"type":54,"value":626},"The project is fully open source, so you can submit any issues you encounter during use on ",{"type":48,"tag":61,"props":628,"children":631},{"href":629,"rel":630,"target":74},"https://github.com/emqx/MQTTX/issues?q=is%3Aissue+is%3Aopen+sort%3Aupdated-desc",[73,73],[632],{"type":54,"value":633},"GitHub",{"type":54,"value":635},", or submit a revised PR to us after forking MQTTX, we will review and address it in time. We would also like to thank all the users in the community for their contributions and feedback.",{"type":48,"tag":57,"props":637,"children":638},{},[639,641,647],{"type":54,"value":640},"If you think this project is still helpful to you, please give us a Star on ",{"type":48,"tag":61,"props":642,"children":645},{"href":643,"rel":644,"target":74},"https://github.com/emqx/MQTTX",[73,73],[646],{"type":54,"value":633},{"type":54,"value":648}," to encourage us to do better! :)",{"title":41,"searchDepth":650,"depth":650,"links":651},2,[652,653,658],{"id":51,"depth":650,"text":55},{"id":178,"depth":650,"text":181,"children":654},[655,657],{"id":262,"depth":656,"text":265},3,{"id":468,"depth":656,"text":471},{"id":604,"depth":650,"text":607},"markdown","content:blog:en:mqttx-script-function-tutorial.md","content","blog/en/mqttx-script-function-tutorial.md","md",{"loc":665,"lastmod":30},"/blog/mqttx-script-function-tutorial",[667,675,682,688,695,702,709,715,722,729,736,743,750,756,763,770,777,784,790,797,804,811,818,825,832,839,845,852,858,865,866,873,880],{"slug":668,"title":669,"description":670,"date":671,"category":672,"cover":673,"version":674},"mqttx-1-13-2-released","MQTTX 1.13.2 Released: MQTTX Agent and Dashboard","MQTTX 1.13.2 uses MQTTX Agent to automate MQTT tests, compare messages, and investigate failures, with independent Dashboard views for telemetry.","2026-10-26","release-notes","/images/blog/mqttx-1-13-2-released.webp","1.13.2",{"slug":676,"title":677,"description":678,"date":679,"category":680,"cover":681,"version":-1},"introducing-mqttx-ai-agent-skill","Introducing the MQTTX AI Agent Skill","MQTTX CLI now ships with an Agent Skill that teaches AI coding agents to run MQTT checks, benchmarks, and simulations correctly.","2026-09-20","product","/images/blog/introducing-mqttx-ai-agent-skill.webp",{"slug":683,"title":684,"description":685,"date":679,"category":672,"cover":686,"version":687},"mqttx-1-13-1-released","MQTTX 1.13.1 Released: AI Agent Skill & MQTT 5.0 Subscription Properties","MQTTX 1.13.1 adds a CLI Agent Skill, MQTT 5.0 subscription user properties, and improvements to data export, rendering security, and everyday debugging.","/images/blog/mqttx-1-13-1-released.webp","1.13.1",{"slug":689,"title":690,"description":691,"date":692,"category":672,"cover":693,"version":694},"mqttx-1-13-0-released","MQTTX 1.13.0 Released: Payload Inspector & UI Improvements","This version introduces the new Payload Inspector feature, including Diff View and JSON Tree View, making message debugging more intuitive and efficient.","2026-02-03","https://assets.emqx.com/images/0e14974014915e21f0789dcb39bfe0c1.png","1.13.0",{"slug":696,"title":697,"description":698,"date":699,"category":672,"cover":700,"version":701},"mqttx-1-12-1-release-notes","MQTTX 1.12.1 Released: SCRAM Authentication & Enhanced Security","MQTTX 1.12.1 brings SCRAM authentication, XSS vulnerability fixes, 2025 AI model updates, and major stability enhancements for secure, reliable performance.","2025-10-14","https://assets.emqx.com/images/949f66c444b9b00f5f5e0a865609987d.png","1.12.1",{"slug":703,"title":704,"description":705,"date":706,"category":672,"cover":707,"version":708},"mqttx-1-12-0-release-notes","MQTTX 1.12.0 Released: Copilot 2.0 & Native MCP Integration","MQTTX 1.12.0 lands with Copilot 2.0 (Gemini 2.5 Pro, Claude-4, GPT-4.1, o3/o4-mini, Azure OpenAI) and native MCP integration for instant AI workflows.","2025-07-03","https://assets.emqx.com/images/121f632a5da928c70d8e2868e3a09b1c.jpg","1.12.0",{"slug":710,"title":711,"description":712,"date":713,"category":680,"cover":714,"version":-1},"enhancing-mqtt-toolbox-with-ai-capabilities","MQTTX + MCP: Enhancing MQTT Toolbox with AI Capabilities","MQTTX, the most popular MQTT client toolbox, has enhanced its capabilities in 1.12.0 beta by integrating the Model Context Protocol (MCP) into its Copilot AI feature.","2025-04-09","https://assets.emqx.com/images/863b289a14550fa39793fb8414837c04.jpg",{"slug":716,"title":717,"description":718,"date":719,"category":672,"cover":720,"version":721},"mqttx-1-11-1-release-notes","MQTTX 1.11.1 Released: Enhanced Visualization","This release enhances MQTTX's visualization capabilities with improved Topic Tree features and real-time traffic monitoring.","2024-12-19","https://assets.emqx.com/images/878e3b58243c4f4e50034ad5604a8951.jpg","1.11.1",{"slug":723,"title":724,"description":725,"date":726,"category":672,"cover":727,"version":728},"mqttx-1-11-0-release-notes","MQTTX 1.11.0 Released: Topic Tree and Avro Schema","This release introduces Topic Tree visualization, a powerful new way to organize and monitor MQTT topics hierarchically.","2024-10-29","https://assets.emqx.com/images/dba4e395e4043265d635384c6670c206.jpg","1.11.0",{"slug":730,"title":731,"description":732,"date":733,"category":672,"cover":734,"version":735},"mqttx-1-10-1-release-notes","MQTTX 1.10.1 Released: One-Click CLI Installation via Desktop","This release focuses on enhancing the user experience with several key updates. The highlight is the one-click installation for MQTTX CLI via the Desktop application.","2024-07-24","https://assets.emqx.com/images/7a7961ab5f29584b8b157b967e6fe0b2.jpg","1.10.1",{"slug":737,"title":738,"description":739,"date":740,"category":672,"cover":741,"version":742},"mqttx-1-10-0-release-notes","MQTTX 1.10.0 Released: Advanced File Management and Configuration in CLI","This release significantly enhances file management and configuration capabilities, particularly in the CLI version.","2024-06-17","https://assets.emqx.com/images/fd939c89609cdc8af6cdc93346ce58da.jpg","1.10.0",{"slug":744,"title":745,"description":746,"date":747,"category":672,"cover":748,"version":749},"mqttx-1-9-10-release-notes","MQTTX 1.9.10 Released: Enhanced Diagnostic Insights","This release features crucial Faker.js updates, better diagnostic insights for disconnections and subscription issues, and new CLI and UI enhancements. It aims to simplify user workflows and enhance troubleshooting.","2024-04-15","https://assets.emqx.com/images/c6a16836537c82bc580e738ca0534d5c.jpg","1.9.10",{"slug":751,"title":752,"description":753,"date":754,"category":31,"cover":755,"version":-1},"how-to-publish-and-receive-protobuf-messages-within-mqtt","How to Publish and Receive Protobuf Messages within MQTT?","This article will demonstrate how to define, publish, and receive Protobuf messages with MQTTX client.","2024-03-25","https://assets.emqx.com/images/8c5e5764795a2b500deb4f429b1f7f64.jpg",{"slug":757,"title":758,"description":759,"date":760,"category":672,"cover":761,"version":762},"mqttx-1-9-9-release-notes","MQTTX 1.9.9 Released: Debug Logging and UI Flexibility","MQTTX 1.9.9 is now available with critical updates: improved connection events, CBOR data format support, customizable log levels for debugging, and enhanced UI flexibility.","2024-03-04","https://assets.emqx.com/images/b1f147c49bded5c95a52d2a4d212fb59.png","1.9.9",{"slug":764,"title":765,"description":766,"date":767,"category":672,"cover":768,"version":769},"mqttx-1-9-8-release-notes","MQTTX 1.9.8 Released: CLI Debug Mode and Copilot Enhancements","MQTTX 1.9.8 is now available, introducing a new CLI Debug Mode. This feature greatly enhances developers' troubleshooting and analysis capabilities.","2024-01-15","https://assets.emqx.com/images/7598cdfaaad358b469b840dd93d95893.png","1.9.8",{"slug":771,"title":772,"description":773,"date":774,"category":672,"cover":775,"version":776},"mqttx-1-9-7-release-notes","MQTTX 1.9.7: Introducing Copilot - Your AI-Powered MQTT Assistant","A significant highlight of this release is the introduction of MQTTX Copilot, our innovative MQTT AI assistant, specially designed to offer crucial convenience to users.","2023-12-18","https://assets.emqx.com/images/8f8d0aa2b0e70f2c28b71f846e21f68b.png","1.9.7",{"slug":778,"title":779,"description":780,"date":781,"category":672,"cover":782,"version":783},"mqttx-v-1-9-6-release-notes","MQTTX 1.9.6 Released: ALPN Protocol Support, Optimized Publish Options Interface","This update prioritizes the improvement of connection protocols and user interface for a better experience.","2023-09-30","https://assets.emqx.com/images/2f2554241e1fbe1e6d11a066e5e61a20.png","1.9.6",{"slug":785,"title":786,"description":787,"date":788,"category":31,"cover":789,"version":-1},"demonstrate-mqtt-5-0-features-using-mqttx-cli","Explore New Features of MQTT 5.0: Usage Examples Based on MQTTX CLI","This blog will introduce each new feature introduced in 5.0 in turn, and use the MQTTX CLI tool to demonstrate how we can use these features in EMQX.","2023-09-07","https://assets.emqx.com/images/c566cf1994ec1e29c6fea3b33270f535.png",{"slug":791,"title":792,"description":793,"date":794,"category":672,"cover":795,"version":796},"mqttx-1-9-5-released-json-message-highlighting-and-more","MQTTX 1.9.5 Released: JSON Message Highlighting and More!","In this version, we have mainly enhanced the error message prompts for JSON syntax in the desktop client and added support for JSON highlighting in messages.","2023-08-17","https://assets.emqx.com/images/beefc011aa3bda44261a33f7adaef669.png","1.9.5",{"slug":798,"title":799,"description":800,"date":801,"category":672,"cover":802,"version":803},"mqttx-v-1-9-4-release-notes","MQTTX 1.9.4: Empowering High-Frequency MQTT Testing with Protobuf Integration","This update brings significant improvements to user experience, including more efficient support for Protobuf message transmission and optimized automatic update functionality.","2023-07-19","https://assets.emqx.com/images/6d6aab33de33c914d87f7fd6a4d86153.png","1.9.4",{"slug":805,"title":806,"description":807,"date":808,"category":672,"cover":809,"version":810},"mqttx-1-9-3-introduces-powerful-iot-scenario-data-simulation-feature","Boosting Development Efficiency: MQTTX 1.9.3 Introduces Powerful IoT Scenario Data Simulation","MQTTX 1.9.3 introduced a valuable enhancement to its command-line client: It empowers developers to simulate IoT scenario data, catering to their specific testing needs.","2023-05-29","https://assets.emqx.com/images/657ba5a04f29a7b318206a642223db8f.png","1.9.3",{"slug":812,"title":813,"description":814,"date":815,"category":672,"cover":816,"version":817},"mqttx-v-1-9-2-release-notes","MQTTX 1.9.2 Released: The Best MQTT Client Toolbox Is Even Better","v1.9.2 supports the output mode of the command-line tool, allowing users to customize data pipelines according to their needs and thus more conveniently and efficiently process output data.","2023-04-27","https://assets.emqx.com/images/44cad865821d28706395fd74e8bd766a.png","1.9.2",{"slug":819,"title":820,"description":821,"date":822,"category":672,"cover":823,"version":824},"mqttx-v-1-9-1-release-notes","MQTTX 1.9.1 is Released: Resource Utilization Reduced by 80%, and Stability Greatly Improved","MQTT X 1.9.1 has significantly reduced CPU and memory usage by 80% compared to the previous version, resulting in greatly optimized overall performance and reduced risk of system crashes.","2023-02-16","https://assets.emqx.com/images/754c43fbfce927d7b9f41f98e9c47338.png","1.9.1",{"slug":826,"title":827,"description":828,"date":829,"category":672,"cover":830,"version":831},"mqttx-v-1-9-0-release-notes","MQTTX 1.9.0 released with an Out-of-the-box bench command, making your MQTT test even easier","Recently, MQTT X 1.9.0 has been released. For the command-line client, the bench command has been added to help users easily complete MQTT service performance testing.","2022-11-15","https://assets.emqx.com/images/8381cbe50e0aa19dcf36020b11de6fba.png","1.9.0",{"slug":833,"title":834,"description":835,"date":836,"category":672,"cover":837,"version":838},"mqttx-v-1-8-3-release-notes","MQTTX v1.8.3 Release Notes","Recently, MQTT X released the latest version 1.8.3, The main optimization of function usage and the various problems encountered in the process of use are fixed.","2022-11-01","https://assets.emqx.com/images/ad183ef26fc1dfaf6c33b46256c04e16.png","1.8.3",{"slug":840,"title":841,"description":842,"date":843,"category":680,"cover":844,"version":-1},"powerful-and-easy-to-use-mqtt-5-command-line-tool","MQTTX CLI: A Powerful and Easy-to-Use MQTT CLI","In order to provide more choices and convenience for users to implement MQTT connection tests, MQTT X v1.8.0 adds the command line as a form of interaction - the MQTT X CLI.","2022-08-11","https://assets.emqx.com/images/5cd78ca578543888ebfc50ced158dcd0.png",{"slug":846,"title":847,"description":848,"date":849,"category":672,"cover":850,"version":851},"mqttx-v-1-7-1-release-notes","MQTTX v1.7.1 Release Note","MQTT X v1.7.1 release note: Support MQTT 5.0 subscription Identifier, expose more MQTT 5.0 properties on display.","2022-01-28","https://assets.emqx.com/images/0fd941ba646695f51f019da65a693087.png","1.7.1",{"slug":853,"title":854,"description":855,"date":849,"category":672,"cover":856,"version":857},"mqttx-v-1-7-2-release-notes","MQTTX v1.7.2 Release Note","MQTT X v1.7.2 release note: Shared subscriptions support topic color markers, add more ARM builds.","https://assets.emqx.com/images/8cedad1520b432cc23fe3cf73df87586.png","1.7.2",{"slug":859,"title":860,"description":861,"date":862,"category":672,"cover":863,"version":864},"mqttx-v-1-7-0-release-notes","MQTTX v1.7.0 released: the desktop client that supports MQTT 5.0 most","Recently, MQTT X v1.7.0 was officially released, from this version, MQTT X will further support many new features of MQTT 5.0.","2022-01-04","https://assets.emqx.com/images/b670f636cd22144ede7d122af5127319.png","1.7.0",{"slug":27,"title":28,"description":29,"date":30,"category":31,"cover":32,"version":-1},{"slug":867,"title":868,"description":869,"date":870,"category":672,"cover":871,"version":872},"mqttx-v-1-4-2-release-notes","MQTTX v1.4.2 released with script features","MQTT X v1.4.2 released with script features, automatically append a timestamp to Client ID and optimize some functions.","2021-01-27","https://assets.emqx.com/images/06011d34d8e9b805d2d03b3a546648ee.png","1.4.2",{"slug":874,"title":875,"description":876,"date":877,"category":672,"cover":878,"version":879},"mqttx-v-1-3-1-release-notes","MQTTX v1.3.1 release notes - MQTT 5.0 client tool","MQTT 5.0 client tool - MQTT X v1.3.1, which adds an enable item of strictly validating certificate and supports for more attributes of MQTT 5.0.","2020-05-21","https://assets.emqx.com/images/240e432d5797596aa555d2fdf9640dd5.png","1.3.1",{"slug":881,"title":882,"description":883,"date":884,"category":672,"cover":885,"version":886},"mqttx-v1-3-0-was-officially-released-an-elegant-cross-platform-mqtt5-desktop-test-client","MQTTX v1.3.0 was officially released - Cross-platform MQTT 5.0 desktop test client","MQTT X is a cross-platform MQTT 5.0 desktop test client provided by the world's leading open source IoT middleware provider EMQ , which supports macOS, Linux, Windows. The user interface of MQTT X simplifies the operation logic of the page with the pattern of chatting software. Users can quickly create multiple simultaneous-online MQTT clients to test the connection/publish/subscribe functions of MQTT/TCP, MQTT/TLS and other MQTT protocol features.","2020-03-19","https://assets.emqx.com/images/dbb7d0024d3462edf7ad617978679fbb.png","1.3.0",1793585632587]