IoEHub MQTT MCP Server logo

IoEHub MQTT MCP Server

by ioehub

The IoEHub MQTT MCP Server facilitates communication between a client and IoT devices using MQTT and JSON-RPC. It acts as a translator between JSON-RPC requests from the client and MQTT protocols for device interaction.

View on GitHub

Last updated: N/A

��#� �I�o�E�H�u�b� �M�Q�T�T� �M�C�P� ���� � � � �#�#� �1�.� ���� � � � �t� �8���� �M�Q�T�T�|� ���t� �(�ij �<�� �p�t�0�|� �}�� �L�E�D�|� �ȴ�XՔ� �M�C�P�(�M�o�d�e�l� �C�o�n�t�e�x�t� �P�r�o�t�o�c�o�l�)� ����|� �$���i�Ȳ�.� �t� ������ �F�a�s�t�M�C�P� �������l�|� �0��<�\� �X�p�,� �J�S�O�N�-�R�P�C� ��\���\�D� �����X��� �����i�Ȳ�.� � � � � � �#�#�#� �1�.�1� �l�p�ij � �<�s�v�g� �v�i�e�w�B�o�x�=�"�0� �0� �8�0�0� �6�0�0�"� �x�m�l�n�s�=�"�h�t�t�p�:�/�/�w�w�w�.�w�3�.�o�r�g�/�2�0�0�0�/�s�v�g�"�>� � � � �<�!�-�-� �M�C�P� �C�l�i�e�n�t� �B�o�x� �-�-�>� � � � �<�r�e�c�t� �x�=�"�5�0�"� �y�=�"�1�0�0�"� �w�i�d�t�h�=�"�2�0�0�"� �h�e�i�g�h�t�=�"�1�2�0�"� �r�x�=�"�5�"� �r�y�=�"�5�"� �f�i�l�l�=�"�w�h�i�t�e�"� �s�t�r�o�k�e�=�"�b�l�a�c�k�"� �s�t�r�o�k�e�-�w�i�d�t�h�=�"�2�"�/�>� � � � �<�t�e�x�t� �x�=�"�1�5�0�"� �y�=�"�1�4�0�"� �t�e�x�t�-�a�n�c�h�o�r�=�"�m�i�d�d�l�e�"� �f�o�n�t�-�f�a�m�i�l�y�=�"�A�r�i�a�l�"� �f�o�n�t�-�s�i�z�e�=�"�1�6�"� �f�o�n�t�-�w�e�i�g�h�t�=�"�b�o�l�d�"�>�M�C�P� �C�l�i�e�n�t�<�/�t�e�x�t�>� � � � �<�t�e�x�t� �x�=�"�1�5�0�"� �y�=�"�1�6�5�"� �t�e�x�t�-�a�n�c�h�o�r�=�"�m�i�d�d�l�e�"� �f�o�n�t�-�f�a�m�i�l�y�=�"�A�r�i�a�l�"� �f�o�n�t�-�s�i�z�e�=�"�1�4�"�>�(�C�l�a�u�d�e� �A�I�)�<�/�t�e�x�t�>� � � � � � �<�!�-�-� �M�C�P� �S�e�r�v�e�r� �B�o�x� �-�-�>� � � � �<�r�e�c�t� �x�=�"�5�5�0�"� �y�=�"�1�0�0�"� �w�i�d�t�h�=�"�2�0�0�"� �h�e�i�g�h�t�=�"�1�2�0�"� �r�x�=�"�5�"� �r�y�=�"�5�"� �f�i�l�l�=�"�w�h�i�t�e�"� �s�t�r�o�k�e�=�"�b�l�a�c�k�"� �s�t�r�o�k�e�-�w�i�d�t�h�=�"�2�"�/�>� � � � �<�t�e�x�t� �x�=�"�6�5�0�"� �y�=�"�1�4�0�"� �t�e�x�t�-�a�n�c�h�o�r�=�"�m�i�d�d�l�e�"� �f�o�n�t�-�f�a�m�i�l�y�=�"�A�r�i�a�l�"� �f�o�n�t�-�s�i�z�e�=�"�1�6�"� �f�o�n�t�-�w�e�i�g�h�t�=�"�b�o�l�d�"�>�M�C�P� �S�e�r�v�e�r�<�/�t�e�x�t�>� � � � �<�t�e�x�t� �x�=�"�6�5�0�"� �y�=�"�1�6�5�"� �t�e�x�t�-�a�n�c�h�o�r�=�"�m�i�d�d�l�e�"� �f�o�n�t�-�f�a�m�i�l�y�=�"�A�r�i�a�l�"� �f�o�n�t�-�s�i�z�e�=�"�1�4�"�>�(�P�y�t�h�o�n�/�F�a�s�t�M�C�P�)�<�/�t�e�x�t�>� � � � � � �<�!�-�-� �A�r�r�o�w� �d�e�f�i�n�i�t�i�o�n�s� �-�-�>� � � � �<�d�e�f�s�>� � � � � � �<�m�a�r�k�e�r� �i�d�=�"�a�r�r�o�w�h�e�a�d�"� �m�a�r�k�e�r�W�i�d�t�h�=�"�1�0�"� �m�a�r�k�e�r�H�e�i�g�h�t�=�"�7�"� �r�e�f�X�=�"�9�"� �r�e�f�Y�=�"�3�.�5�"� �o�r�i�e�n�t�=�"�a�u�t�o�"�>� � � � � � � � �<�p�o�l�y�g�o�n� �p�o�i�n�t�s�=�"�0� �0�,� �1�0� �3�.�5�,� �0� �7�"� �f�i�l�l�=�"�b�l�a�c�k�"�/�>� � � � � � �<�/�m�a�r�k�e�r�>� � � � �<�/�d�e�f�s�>� � � � � � �<�!�-�-� �J�S�O�N�-�R�P�C� �A�r�r�o�w� �-�-�>� � � � �<�l�i�n�e� �x�1�=�"�2�5�0�"� �y�1�=�"�1�3�5�"� �x�2�=�"�5�5�0�"� �y�2�=�"�1�3�5�"� �s�t�r�o�k�e�=�"�b�l�a�c�k�"� �s�t�r�o�k�e�-�w�i�d�t�h�=�"�2�"� �m�a�r�k�e�r�-�e�n�d�=�"�u�r�l�(�#�a�r�r�o�w�h�e�a�d�)�"� �s�t�r�o�k�e�-�d�a�s�h�a�r�r�a�y�=�"�5�,�5�"�/�>� � � � �<�l�i�n�e� �x�1�=�"�5�5�0�"� �y�1�=�"�1�6�5�"� �x�2�=�"�2�5�0�"� �y�2�=�"�1�6�5�"� �s�t�r�o�k�e�=�"�b�l�a�c�k�"� �s�t�r�o�k�e�-�w�i�d�t�h�=�"�2�"� �m�a�r�k�e�r�-�e�n�d�=�"�u�r�l�(�#�a�r�r�o�w�h�e�a�d�)�"�/�>� � � � � � � � �<�!�-�-� �L�a�b�e�l�s� �f�o�r� �J�S�O�N�-�R�P�C� �-�-�>� � � � �<�t�e�x�t� �x�=�"�4�0�0�"� �y�=�"�1�2�0�"� �t�e�x�t�-�a�n�c�h�o�r�=�"�m�i�d�d�l�e�"� �f�o�n�t�-�f�a�m�i�l�y�=�"�A�r�i�a�l�"� �f�o�n�t�-�s�i�z�e�=�"�1�4�"� �f�o�n�t�-�w�e�i�g�h�t�=�"�b�o�l�d�"�>�J�S�O�N�-�R�P�C�<�/�t�e�x�t�>� � � � �<�t�e�x�t� �x�=�"�4�0�0�"� �y�=�"�1�4�0�"� �t�e�x�t�-�a�n�c�h�o�r�=�"�m�i�d�d�l�e�"� �f�o�n�t�-�f�a�m�i�l�y�=�"�A�r�i�a�l�"� �f�o�n�t�-�s�i�z�e�=�"�1�2�"�>�(�s�t�d�i�o�)�<�/�t�e�x�t�>� � � � �<�t�e�x�t� �x�=�"�4�0�0�"� �y�=�"�1�8�5�"� �t�e�x�t�-�a�n�c�h�o�r�=�"�m�i�d�d�l�e�"� �f�o�n�t�-�f�a�m�i�l�y�=�"�A�r�i�a�l�"� �f�o�n�t�-�s�i�z�e�=�"�1�2�"�>�R�e�q�u�e�s�t�/�R�e�s�p�o�n�s�e�<�/�t�e�x�t�>� � � � � � � � �<�!�-�-� �M�Q�T�T� �B�r�o�k�e�r� �B�o�x� �-�-�>� � � � �<�r�e�c�t� �x�=�"�3�0�0�"� �y�=�"�3�0�0�"� �w�i�d�t�h�=�"�2�0�0�"� �h�e�i�g�h�t�=�"�1�2�0�"� �r�x�=�"�5�"� �r�y�=�"�5�"� �f�i�l�l�=�"�w�h�i�t�e�"� �s�t�r�o�k�e�=�"�b�l�a�c�k�"� �s�t�r�o�k�e�-�w�i�d�t�h�=�"�2�"�/�>� � � � �<�t�e�x�t� �x�=�"�4�0�0�"� �y�=�"�3�4�0�"� �t�e�x�t�-�a�n�c�h�o�r�=�"�m�i�d�d�l�e�"� �f�o�n�t�-�f�a�m�i�l�y�=�"�A�r�i�a�l�"� �f�o�n�t�-�s�i�z�e�=�"�1�6�"� �f�o�n�t�-�w�e�i�g�h�t�=�"�b�o�l�d�"�>�M�Q�T�T� �B�r�o�k�e�r�<�/�t�e�x�t�>� � � � �<�t�e�x�t� �x�=�"�4�0�0�"� �y�=�"�3�6�5�"� �t�e�x�t�-�a�n�c�h�o�r�=�"�m�i�d�d�l�e�"� �f�o�n�t�-�f�a�m�i�l�y�=�"�A�r�i�a�l�"� �f�o�n�t�-�s�i�z�e�=�"�1�4�"�>�(�1�7�2�.�3�0�.�1�.�1�0�0�)�<�/�t�e�x�t�>� � � � � � �<�!�-�-� �B�i�d�i�r�e�c�t�i�o�n�a�l� �a�r�r�o�w�s� �f�o�r� �M�Q�T�T� �c�o�n�n�e�c�t�i�o�n�s� �-�-�>� � � � �<�!�-�-� �B�e�t�w�e�e�n� �S�e�r�v�e�r� �a�n�d� �B�r�o�k�e�r� �-�-�>� � � � �<�l�i�n�e� �x�1�=�"�6�5�0�"� �y�1�=�"�2�2�0�"� �x�2�=�"�5�0�0�"� �y�2�=�"�2�8�0�"� �s�t�r�o�k�e�=�"�b�l�a�c�k�"� �s�t�r�o�k�e�-�w�i�d�t�h�=�"�2�"�/�>� � � � �<�l�i�n�e� �x�1�=�"�5�0�0�"� �y�1�=�"�2�8�0�"� �x�2�=�"�5�2�0�"� �y�2�=�"�2�7�3�"� �s�t�r�o�k�e�=�"�b�l�a�c�k�"� �s�t�r�o�k�e�-�w�i�d�t�h�=�"�2�"�/�>� � � � �<�l�i�n�e� �x�1�=�"�5�0�0�"� �y�1�=�"�2�8�0�"� �x�2�=�"�5�0�7�"� �y�2�=�"�2�9�5�"� �s�t�r�o�k�e�=�"�b�l�a�c�k�"� �s�t�r�o�k�e�-�w�i�d�t�h�=�"�2�"�/�>� � � � � � � � �<�l�i�n�e� �x�1�=�"�5�0�0�"� �y�1�=�"�3�4�0�"� �x�2�=�"�6�5�0�"� �y�2�=�"�2�2�0�"� �s�t�r�o�k�e�=�"�b�l�a�c�k�"� �s�t�r�o�k�e�-�w�i�d�t�h�=�"�2�"�/�>� � � � �<�l�i�n�e� �x�1�=�"�6�5�0�"� �y�1�=�"�2�2�0�"� �x�2�=�"�6�3�5�"� �y�2�=�"�2�3�0�"� �s�t�r�o�k�e�=�"�b�l�a�c�k�"� �s�t�r�o�k�e�-�w�i�d�t�h�=�"�2�"�/�>� � � � �<�l�i�n�e� �x�1�=�"�6�5�0�"� �y�1�=�"�2�2�0�"� �x�2�=�"�6�4�0�"� �y�2�=�"�2�1�2�"� �s�t�r�o�k�e�=�"�b�l�a�c�k�"� �s�t�r�o�k�e�-�w�i�d�t�h�=�"�2�"�/�>� � � � � � � � �<�!�-�-� �M�Q�T�T� �L�a�b�e�l� �f�o�r� �S�e�r�v�e�r�-�B�r�o�k�e�r� �-�-�>� � � � �<�t�e�x�t� �x�=�"�5�5�0�"� �y�=�"�2�5�0�"� �t�e�x�t�-�a�n�c�h�o�r�=�"�m�i�d�d�l�e�"� �f�o�n�t�-�f�a�m�i�l�y�=�"�A�r�i�a�l�"� �f�o�n�t�-�s�i�z�e�=�"�1�4�"� �f�o�n�t�-�w�e�i�g�h�t�=�"�b�o�l�d�"�>�M�Q�T�T� �(�J�S�O�N�)�<�/�t�e�x�t�>� � � � � � �<�!�-�-� �I�o�T� �D�e�v�i�c�e� �B�o�x� �-�-�>� � � � �<�r�e�c�t� �x�=�"�3�0�0�"� �y�=�"�5�0�0�"� �w�i�d�t�h�=�"�2�0�0�"� �h�e�i�g�h�t�=�"�1�0�0�"� �r�x�=�"�5�"� �r�y�=�"�5�"� �f�i�l�l�=�"�w�h�i�t�e�"� �s�t�r�o�k�e�=�"�b�l�a�c�k�"� �s�t�r�o�k�e�-�w�i�d�t�h�=�"�2�"�/�>� � � � �<�t�e�x�t� �x�=�"�4�0�0�"� �y�=�"�5�3�5�"� �t�e�x�t�-�a�n�c�h�o�r�=�"�m�i�d�d�l�e�"� �f�o�n�t�-�f�a�m�i�l�y�=�"�A�r�i�a�l�"� �f�o�n�t�-�s�i�z�e�=�"�1�6�"� �f�o�n�t�-�w�e�i�g�h�t�=�"�b�o�l�d�"�>�I�o�T� �D�e�v�i�c�e�<�/�t�e�x�t�>� � � � �<�t�e�x�t� �x�=�"�4�0�0�"� �y�=�"�5�6�0�"� �t�e�x�t�-�a�n�c�h�o�r�=�"�m�i�d�d�l�e�"� �f�o�n�t�-�f�a�m�i�l�y�=�"�A�r�i�a�l�"� �f�o�n�t�-�s�i�z�e�=�"�1�4�"�>�(�T�e�m�p�e�r�a�t�u�r�e�/�L�E�D�)�<�/�t�e�x�t�>� � � � � � �<�!�-�-� �B�i�d�i�r�e�c�t�i�o�n�a�l� �a�r�r�o�w�s� �f�o�r� �M�Q�T�T� �c�o�n�n�e�c�t�i�o�n�s� �-�-�>� � � � �<�!�-�-� �B�e�t�w�e�e�n� �B�r�o�k�e�r� �a�n�d� �D�e�v�i�c�e� �-�-�>� � � � �<�l�i�n�e� �x�1�=�"�3�8�5�"� �y�1�=�"�4�2�0�"� �x�2�=�"�3�8�5�"� �y�2�=�"�5�0�0�"� �s�t�r�o�k�e�=�"�b�l�a�c�k�"� �s�t�r�o�k�e�-�w�i�d�t�h�=�"�2�"�/�>� � � � �<�l�i�n�e� �x�1�=�"�3�8�5�"� �y�1�=�"�5�0�0�"� �x�2�=�"�3�7�8�"� �y�2�=�"�4�8�0�"� �s�t�r�o�k�e�=�"�b�l�a�c�k�"� �s�t�r�o�k�e�-�w�i�d�t�h�=�"�2�"�/�>� � � � �<�l�i�n�e� �x�1�=�"�3�8�5�"� �y�1�=�"�5�0�0�"� �x�2�=�"�3�9�2�"� �y�2�=�"�4�8�0�"� �s�t�r�o�k�e�=�"�b�l�a�c�k�"� �s�t�r�o�k�e�-�w�i�d�t�h�=�"�2�"�/�>� � � � � � � � �<�l�i�n�e� �x�1�=�"�4�1�5�"� �y�1�=�"�5�0�0�"� �x�2�=�"�4�1�5�"� �y�2�=�"�4�2�0�"� �s�t�r�o�k�e�=�"�b�l�a�c�k�"� �s�t�r�o�k�e�-�w�i�d�t�h�=�"�2�"�/�>� � � � �<�l�i�n�e� �x�1�=�"�4�1�5�"� �y�1�=�"�4�2�0�"� �x�2�=�"�4�0�8�"� �y�2�=�"�4�4�0�"� �s�t�r�o�k�e�=�"�b�l�a�c�k�"� �s�t�r�o�k�e�-�w�i�d�t�h�=�"�2�"�/�>� � � � �<�l�i�n�e� �x�1�=�"�4�1�5�"� �y�1�=�"�4�2�0�"� �x�2�=�"�4�2�2�"� �y�2�=�"�4�4�0�"� �s�t�r�o�k�e�=�"�b�l�a�c�k�"� �s�t�r�o�k�e�-�w�i�d�t�h�=�"�2�"�/�>� � � � � � � � �<�!�-�-� �M�Q�T�T� �L�a�b�e�l� �f�o�r� �B�r�o�k�e�r�-�D�e�v�i�c�e� �-�-�>� � � � �<�t�e�x�t� �x�=�"�4�7�0�"� �y�=�"�4�6�0�"� �t�e�x�t�-�a�n�c�h�o�r�=�"�m�i�d�d�l�e�"� �f�o�n�t�-�f�a�m�i�l�y�=�"�A�r�i�a�l�"� �f�o�n�t�-�s�i�z�e�=�"�1�4�"� �f�o�n�t�-�w�e�i�g�h�t�=�"�b�o�l�d�"�>�M�Q�T�T� �(�J�S�O�N�)�<�/�t�e�x�t�>� � �<�/�s�v�g�>� � � � � � �#�#�#� �1�.�2� �K�e�y� �C�o�m�p�o�n�e�n�t�s�:� � � � �1�.� �M�C�P� �C�l�i�e�n�t���(�C�l�a�u�d�e� �A�I�)� � � � �-� �P�r�o�v�i�d�e�s� �u�s�e�r���i�n�t�e�r�f�a�c�e� � � � �-� �S�e�n�d�s� �J�S�O�N�-�R�P�C���r�e�q�u�e�s�t�s� �t�o� �M�C�P� �S�e�r�v�e�r� � � � �-� �D�i�s�p�l�a�y�s���r�e�s�u�l�t�s� �t�o� �u�s�e�r� � � � �1�.� �M�C�P� �S�e�r�v�e�r���(�P�y�t�h�o�n�/�F�a�s�t�M�C�P�)� � � � �-� �P�r�o�c�e�s�s�e�s� �c�l�i�e�n�t� �r�e�q�u�e�s�t�s� � � � �-� �C�o�m�m�u�n�i�c�a�t�e�s���w�i�t�h� �M�Q�T�T� �B�r�o�k�e�r� � � � �-� �T�r�a�n�s�l�a�t�e�s� �b�e�t�w�e�e�n� �J�S�O�N�-�R�P�C� �a�n�d� �M�Q�T�T� �p�r�o�t�o�c�o�l�s� � � � �1�.� �M�Q�T�T� �B�r�o�k�e�r� �(�1�7�2�.�3�0�.�1�.�1�0�0�)� � � � �-� �C�e�n�t�r�a�l� �h�u�b� �f�o�r� �M�Q�T�T���m�e�s�s�a�g�e�s� � � � �-� �R�o�u�t�e�s� �m�e�s�s�a�g�e�s� �b�e�t�w�e�e�n���s�e�r�v�e�r� �a�n�d� �d�e�v�i�c�e�s� � � � �-� �H�a�n�d�l�e�s� �p�u�b�l�i�s�h�/�s�u�b�s�c�r�i�b�e� �m�e�s�s�a�g�e���p�a�t�t�e�r�n� � � � �1�.� �I�o�T� �D�e�v�i�c�e� �(�T�e�m�p�e�r�a�t�u�r�e� �S�e�n�s�o�r�/�L�E�D�)� � � � �-� �P�h�y�s�i�c�a�l� �h�a�r�d�w�a�r�e� �d�e�v�i�c�e�s� � � � �-� �P�r�o�v�i�d�e�s���t�e�m�p�e�r�a�t�u�r�e� �d�a�t�a� � � � �-� �C�o�n�t�r�o�l�s� �L�E�D� �s�t�a�t�e�s���b�a�s�e�d� �o�n� �c�o�m�m�a�n�d�s� � � � �#�#�#� �D�a�t�a� �F�l�o�w�:� � � � �1�.� �C�l�i�e�n�t� ��! �S�e�r�v�e�r�:� �F�u�n�c�t�i�o�n� �c�a�l�l���i�o�e�h�u�b��m�q�t�t��g�e�t��t�e�m�p�e�r�a�t�u�r�e�(�)���o�r���i�o�e�h�u�b��m�q�t�t��s�e�t��l�e�d�(�)� � � � �2�.� �S�e�r�v�e�r����! �B�r�o�k�e�r�:� �P�u�b�l�i�s�h�e�s� �M�Q�T�T� �m�e�s�s�a�g�e���(�t�o�p�i�c�:� �i�o�e�h�u�b�/�m�c�p�/�c�o�m�m�a�n�d�)� � � � �3�.� �B�r�o�k�e�r� ��! �D�e�v�i�c�e�:� �F�o�r�w�a�r�d�s� �c�o�m�m�a�n�d� �t�o� �a�p�p�r�o�p�r�i�a�t�e���d�e�v�i�c�e� � � � �4�.� �D�e�v�i�c�e� ��! �B�r�o�k�e�r�:� �P�u�b�l�i�s�h�e�s� �r�e�s�p�o�n�s�e� �w�i�t�h� �d�a�t�a� �(�t�o�p�i�c�:� �i�o�e�h�u�b�/�m�c�p�/�r�e�s�p�o�n�s�e�)� � � � �5�.� �B�r�o�k�e�r� ��! �S�e�r�v�e�r�:� �D�e�l�i�v�e�r�s� �r�e�s�p�o�n�s�e� �t�o���s�u�b�s�c�r�i�b�e�d� �s�e�r�v�e�r� � � � �6�.� �S�e�r�v�e�r����! �C�l�i�e�n�t�:� �R�e�t�u�r�n�s� �f�u�n�c�t�i�o�n� �c�a�l�l���r�e�s�u�l�t� �w�i�t�h� �p�r�o�c�e�s�s�e�d� �d�a�t�a� � � � �T�h�i�s� �v�e�r�t�i�c�a�l���l�a�y�o�u�t� �c�l�e�a�r�l�y� �s�h�o�w�s� �t�h�e� �h�i�e�r�a�r�c�h�i�c�a�l� �f�l�o�w� �o�f� �c�o�m�m�u�n�i�c�a�t�i�o�n� �f�r�o�m� �c�l�i�e�n�t� �t�h�r�o�u�g�h���s�e�r�v�e�r� �a�n�d� �b�r�o�k�e�r� �t�o� �t�h�e� �I�o�T� �d�e�v�i�c�e�s�.� � � � � � �#�#� �2�.� ��¤�\� �l�1� � � � �-� ��������l��:� �F�a�s�t�M�C�P� � �-� ������ ��\���\��:� �M�Q�T�T�,� �J�S�O�N�-�R�P�C� �2�.�0� � �-� ��l�� ��Ŵ��:� �P�y�t�h�o�n� � �-� ������ �0����:� �(�ij �!��,� �L�E�D� �ȴ� � � � �#�#� �3�.� �M�Q�T�T� �$�� � � � �� � �M�Q�T�T�_�B�R�O�K�E�R� �=� �"�1�7�2�.�3�0�.�1�.�1�0�0�"� � �M�Q�T�T�_�P�O�R�T� �=� �1�8�8�3� � �M�Q�T�T�_�U�S�E�R�N�A�M�E� �=� �"�i�o�e�h�u�b�"� � �M�Q�T�T�_�P�A�S�S�W�O�R�D� �=� �"�p�a�s�s�w�o�r�d�"� � �M�Q�T�T�_�P�U�B�L�I�S�H�_�T�O�P�I�C� �=� �"�i�o�e�h�u�b�/�m�c�p�/�c�o�m�m�a�n�d�"� � �M�Q�T�T�_�S�U�B�S�C�R�I�B�E�_�T�O�P�I�C� �=� �"�i�o�e�h�u�b�/�m�c�p�/�r�e�s�p�o�n�s�e�"� � �� � � � �#�#� �4�.� �l��� �0��� � � � �#�#�#� �4�.�1� �(�ij �!�� �(��i�o�e�h�u�b�_�m�q�t�t�_�g�e�t�_�t�e�m�p�e�r�a�t�u�r�e��)� � � � �-� ��$����:� �M�Q�T�T�|� ���t� �(�ij �<����� �֬� �(�ij �p�t�0�|� �}Ǵ�5�Ȳ�.� � �-� ���X� ���:� �֬� �(�ij(�-�(�)�|� �8�����\� ��X� � �-� ��0��� �@��:� �1�3��� � � � �#�#�#� �4�.�2� �L�E�D� �ȴ� �(��i�o�e�h�u�b�_�m�q�t�t�_�s�e�t�_�l�e�d��)� � � � �-� ��$����:� �M�Q�T�T�|� ���t� ����� �@�X� �L�E�D� �����|� �ȴ�i�Ȳ�.� � �-� �� �|���0��:� � � � �-� ��p�i�n�� �(���)�:� �L�E�D� �@� ���8� �(�0����:� �0�)� � � � �-� ��s�t�a�t�e�� �(���)�:� �L�E�D� ����� �(�1�=����,� �0�=�����)� � �-� ���X� ���:� ����� �1��� ��ŀ�(�T�r�u�e�/�F�a�l�s�e�)� � � � �#�#� �5�.� �T����� ���� � � � �#�#�#� �5�.�1� �(�ij �!�� ��ƭ� � � � ��j�s�o�n� � �{� � � � �"�f�u�n�c�t�i�o�n�"�:� �"�i�o�e�h�u�b�_�m�q�t�t�_�g�e�t�_�t�e�m�p�e�r�a�t�u�r�e�"�,� � � � �"�p�a�r�a�m�s�"�:� �{� � � � � � �"�p�i�n�"�:� �1�3� � � � �}� � �}� � �� � � � �#�#�#� �5�.�2� �(�ij �!�� �Q��� � � � ��j�s�o�n� � �{� � � � �"�f�u�n�c�t�i�o�n�"�:� �"�i�o�e�h�u�b�_�m�q�t�t�_�g�e�t�_�t�e�m�p�e�r�a�t�u�r�e�"�,� � � � �"�r�e�s�u�l�t�"�:� �2�6�.�5�,� � � � �"�t�i�m�e�s�t�a�m�p�"�:� �"�7�4�9�8�1�7�"� � �}� � �� � � � �#�#�#� �5�.�3� �L�E�D� �ȴ� ��ƭ� � � � ��j�s�o�n� � �{� � � � �"�f�u�n�c�t�i�o�n�"�:� �"�i�o�e�h�u�b�_�m�q�t�t�_�s�e�t�_�l�e�d�"�,� � � � �"�p�a�r�a�m�s�"�:� �{� � � � � � �"�p�i�n�"�:� �0�,� � � � � � �"�s�t�a�t�e�"�:� �1� � � � �}� � �}� � �� � � � �#�#�#� �5�.�4� �L�E�D� �ȴ� �Q��� � � � ��j�s�o�n� � �{� � � � �"�f�u�n�c�t�i�o�n�"�:� �"�i�o�e�h�u�b�_�m�q�t�t�_�s�e�t�_�l�e�d�"�,� � � � �"�r�e�s�u�l�t�"�:� �t�r�u�e�,� � � � �"�t�i�m�e�s�t�a�m�p�"�:� �"�7�4�9�8�2�0�"� � �}� � �� � � � �#�#� �6�.� ���ٳ �)��� � � � �1�.� ����� ��0�T��:� � � � � �-� �M�Q�T�T� �t�|�tǸŸ� ���1� �� �$�� � � � � �-� �l�ų ���=� �$�� �(�i�o�e�h�u�b�/�m�c�p�/�r�e�s�p�o�n�s�e�)� � � � � �-� �F�a�s�t�M�C�P� �xǤ�4Ѥ� ���1� � � � �2�.� ���Ű� ��\�8����:� � � � � �-� �M�Q�T�T� � �\����� ��Ű� � � � � �-� �1���|���ܴ ����ܴ��� �T����� ���� ���0� � � � �3�.� ��h�� �8֜� ��̬��:� � � � � �-� �M�C�P� �ijl� �8֜� ��� �t��� �h�� ��‰� � � � � �-� �M�Q�T�T�|� ���t� ��ƭ� �ȡ� � � � � �-� �Q��� ���0� �(�\��� �5��)� � � � � �-� ����� ��X� � � � �4�.� ��T����� ���� ��̬��:� � � � � �-� �l�ų ���=���� �T����� ���� � � � � �-� �J�S�O�N� � ��� �� �p�t�0� ��͜� � � � � �-� �Q��� � ՘��� �$�� � � � �#�#� �7�.� �$�X� ��̬� � � � �-� ��Q��� ��Є�D����:� �5�� �tǴ��� �Q���t� ���<�t� �0���� ��X� � �-� ��J�S�O�N� � ��� �$�X��:� ��ǻ�� ����X� �T����� ��̬� � �-� ��M�Q�T�T� ��Ű� �$�X��:� ��Ű� ���(� ��� �$�X� �T����� ���%� � � � �#�#� �8�.� ����� �)��� � � � �#�#�#� �8�.�1� ���� ��‰� � � � ��b�a�s�h� � �p�y�t�h�o�n� �m�c�p�_�s�e�r�v�e�r�.�p�y� � �� � � � �#�#�#� �8�.�2� �t�|�tǸŸ���� �h�� �8֜� � � � ��p�y�t�h�o�n� � �#� �M�C�P� �t�|�tǸŸ� ���� � �t�e�m�p�e�r�a�t�u�r�e� �=� �c�l�i�e�n�t�.�i�n�v�o�k�e�(�"�i�o�e�h�u�b�_�m�q�t�t�_�g�e�t�_�t�e�m�p�e�r�a�t�u�r�e�"�)� � �p�r�i�n�t�(�f�"�֬� �(�ij:� �{�t�e�m�p�e�r�a�t�u�r�e�}���C�"�)� � � � �#� �L�E�D� ��0� � �r�e�s�u�l�t� �=� �c�l�i�e�n�t�.�i�n�v�o�k�e�(�"�i�o�e�h�u�b�_�m�q�t�t�_�s�e�t�_�l�e�d�"�,� �{�"�p�i�n�"�:� �0�,� �"�s�t�a�t�e�"�:� �1�}�)� � �p�r�i�n�t�(�f�"�L�E�D� ��0� �����:� �{�'�1���'� �i�f� �r�e�s�u�l�t� �e�l�s�e� �'���(�'�}�"�)� � �� � � � �#�#� �9�.� �m�c�p� �s�e�r�v�e�r� �$�� �(�w�i�n�d�o�w�s� �c�l�a�u�d�e� �d�e�s�k�t�o�p�)� � �� � �{� � � � �"�m�c�p�S�e�r�v�e�r�s�"�:� �{� � � � � � �"�I�o�E�H�u�b�M�q�t�t�M�c�p�S�e�r�v�e�r�"�:� �{� � ��� ��� ��� ��� �"�c�o�m�m�a�n�d�"�:� � � ��� ��� ��� ��� � � � �"�Y�o�u�r� �p�r�o�j�e�c�t� �p�a�t�h�\�\�.�v�e�n�v�\�\�S�c�r�i�p�t�s�\�\�p�y�t�h�o�n�.�e�x�e�"�,� � � � ��� ��� ��� ��� �"�a�r�g�s�"�:� �[� � � ��� ��� ��� ��� �"�Y�o�u�r� �p�r�o�j�e�c�t� �p�a�t�h�\�\�m�c�p�_�s�e�r�v�e�r�.�p�y�"� � � ��� ��� ��� ��� �]� � � � � � � � �}� � � � � � � � �}� � �}� � �� � � � �#�#� �1�0�.� �p�y�t�h�o�n� �Xֽ� �l���(�w�i�n�d�o�w�s�)� � �� � �c�d� �"�y�o�u�r� �p�r�o�j�e�c�t� �p�a�t�h�"� � �u�v� �v�e�n�v� �.�v�e�n�v� � �u�v� �p�i�p� �i�n�s�t�a�l�l� �m�c�p� � �u�v� �p�i�p� �i�n�s�t�a�l�l� �p�a�h�o�-�m�q�t�t� � � �� � � � �#�#� �1�1�.� ��\� ���m� �� �8�ବ�m� � � � �-� �M�Q�T�T� � �\����� ��‰� ��tǴ�|� �i�Ȳ�.� � �-� �Q��� ��̬� ��� �'�f�u�n�c�t�i�o�n�'� �D�ܴ|� �U�x�X��� ���\� �Q���D� ���ļi�Ȳ�.� � �-� ���� ������ �T����ɔ� �s�t�d�o�u�t�t� �D�̲ �s�t�d�e�r�r�\� ���%����|� �i�Ȳ�.� � �-� ���� �X�ܴ�ƴ�@� �����X�0� ��t���� �t��� ���X���� �M�Q�T�T� �t�|�tǸŸ��� ��‰����|� �i�Ȳ�.� � � � �