{"id":2442,"date":"2019-03-05T10:30:48","date_gmt":"2019-03-05T15:30:48","guid":{"rendered":"http:\/\/blog.espol.edu.ec\/girni\/?p=2442"},"modified":"2022-03-27T08:39:30","modified_gmt":"2022-03-27T13:39:30","slug":"mqtt-registro-de-mensajes-en-archivo-txt-con-python","status":"publish","type":"post","link":"https:\/\/blog.espol.edu.ec\/girni\/mqtt-registro-de-mensajes-en-archivo-txt-con-python\/","title":{"rendered":"5. MQTT - Registro de mensajes en archivo.txt con Python"},"content":{"rendered":"<p>Para registrar los eventos de un determinado dispositivo para analizar su comportamiento y registrarlo en un archivo txt se puede usar la librer\u00eda Paho en Python. El proceso de registro desde luego se puede realizar en un gestor de datos como Home Assistant, se supondr\u00e1 en \u00e9ste caso que no est\u00e1 disponible..<\/p>\n<p>Se crea un archivo, al que se a\u00f1ade una linea por cada registros de mensajes MQTT.<\/p>\n<p>Para el ejemplo los datos de guardan sin procesar.<\/p>\n<pre><span style=\"color: #ff0000\"># grabando mensajes MQTT<\/span>\r\n<span style=\"color: #ff0000\"># configurar los par\u00e1metros para la creacion de archivo de texto<\/span>\r\n<span style=\"color: #d35400\">import<\/span> paho.mqtt.client <span style=\"color: #d35400\">as<\/span> mqtt\r\n\r\n<span style=\"color: #ff0000\"># INGRESO<\/span>\r\n<span style=\"color: #ff0000\"># Parametros para la conexi\u00f3n<\/span>\r\nservidormqtt = <span style=\"color: #008000\">\"192.168.xx.xx\"<\/span>\r\ntopicolee = <span style=\"color: #008000\">\"oficina\/+\/dispositivo\/#\"<\/span>\r\n<span style=\"color: #ff0000\"># Para el archivo.txt<\/span>\r\ncuentamensaje = 0\r\nnombrearchivo = <span style=\"color: #008000\">'unreporte.txt'<\/span>\r\narchivo = <span style=\"color: #ff00ff\">open<\/span>(nombrearchivo,<span style=\"color: #008000\">'w'<\/span>)\r\narchivo.close()  <span style=\"color: #ff0000\"># Cierra el archivo<\/span>\r\n\r\n<span style=\"color: #ff0000\"># FUNCIONES, para conectar y recibir mensaje MQTT<\/span>\r\n<span style=\"color: #ff0000\"># Al recibir CONNACK desde el servidor.<\/span>\r\n<span style=\"color: #d35400\">def<\/span> <span style=\"color: #0000e6\">on_connect<\/span>(client, userdata, flags, rc):\r\n    <span style=\"color: #ff00ff\">print<\/span>(<span style=\"color: #008000\">\"Conexi\u00f3n\/c\u00f3digo de resultado: \"<\/span>+<span style=\"color: #ff00ff\">str<\/span>(rc))\r\n\r\n    <span style=\"color: #ff0000\"># Inicio o renovaci\u00f3n de subscripci\u00f3n<\/span>\r\n    client.subscribe(topicolee)\r\n\r\n    <span style=\"color: #d35400\">return<\/span>()\r\n\r\n<span style=\"color: #ff0000\"># el t\u00f3pico tiene una publicaci\u00f3n<\/span>\r\n<span style=\"color: #d35400\">def<\/span> <span style=\"color: #0000e6\">on_message<\/span>(client, userdata, msg):\r\n    <span style=\"color: #d35400\">global<\/span> cuentamensaje\r\n    <span style=\"color: #ff00ff\">print<\/span>(msg.topic+<span style=\"color: #008000\">\" \"<\/span>+<span style=\"color: #ff00ff\">str<\/span>(msg.payload))\r\n    unmensaje = msg.topic+<span style=\"color: #008000\">\" \"<\/span>+<span style=\"color: #ff00ff\">str<\/span>(msg.payload)\r\n\r\n    <span style=\"color: #ff0000\"># Archivo en modo a\u00f1adir 'append'<\/span>\r\n    archivo = <span style=\"color: #ff00ff\">open<\/span>(nombrearchivo,<span style=\"color: #008000\">'a'<\/span>)\r\n    unalinea = unmensaje + <span style=\"color: #008000\">'\\n'<\/span>\r\n    archivo.write(unalinea)\r\n    \r\n    cuentamensaje = cuentamensaje + 1\r\n    <span style=\"color: #ff00ff\">print<\/span>(<span style=\"color: #008000\">'\\n mensajes recibidos: '<\/span>, cuentamensaje)\r\n\r\n    <span style=\"color: #d35400\">return<\/span>()\r\n\r\nclient = mqtt.Client()\r\nclient.on_connect = on_connect\r\nclient.on_message = on_message\r\nclient.connect(servidormqtt, 1883, 60)\r\nclient.loop_forever()\r\n<\/pre>\n<hr \/>\n<h2>Archivos py o txt desde PC a Raspberry Pi<\/h2>\n<p>Para transferir los archivos de Python o de texto generados se encuentra dispobible la instrucci\u00f3n scp. Luego de ejecutar la instrucci\u00f3n se pedir\u00e1 la clave de acceso del usuario pi para copiar el archivo en el directorio proyecto\/<\/p>\n<pre>scp archivo.py pi@192.168.xx.xx:projecto\/\r\n<\/pre>\n<p>Para el caso contrario se usa una instrucci\u00f3n semejante pero con los parametros al contrario, observe que termina en un \".\"<\/p>\n<pre>scp pi@192.168.xx.xx:projecto\/archivo.txt .<\/pre>\n<p>En el enlace de la referencia se encuentran m\u00e1s instrucciones al respecto<\/p>\n<p><em><strong>Referencia<\/strong><\/em>: <a href=\"https:\/\/www.raspberrypi.org\/documentation\/remote-access\/ssh\/scp.md\">https:\/\/www.raspberrypi.org\/documentation\/remote-access\/ssh\/scp.md<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Para registrar los eventos de un determinado dispositivo para analizar su comportamiento y registrarlo en un archivo txt se puede usar la librer\u00eda Paho en Python. El proceso de registro desde luego se puede realizar en un gestor de datos como Home Assistant, se supondr\u00e1 en \u00e9ste caso que no est\u00e1 disponible.. Se crea un &hellip; <\/p>\n<p class=\"link-more\"><a href=\"https:\/\/blog.espol.edu.ec\/girni\/mqtt-registro-de-mensajes-en-archivo-txt-con-python\/\" class=\"more-link\">Continuar leyendo<span class=\"screen-reader-text\"> \"5. MQTT - Registro de mensajes en archivo.txt con Python\"<\/span><\/a><\/p>\n","protected":false},"author":8043,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1447336],"tags":[1293414,602214,1457735],"class_list":["post-2442","post","type-post","status-publish","format-standard","hentry","category-mqtt-mosquitto","tag-broker","tag-iot","tag-mqtt"],"_links":{"self":[{"href":"https:\/\/blog.espol.edu.ec\/girni\/wp-json\/wp\/v2\/posts\/2442","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blog.espol.edu.ec\/girni\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.espol.edu.ec\/girni\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.espol.edu.ec\/girni\/wp-json\/wp\/v2\/users\/8043"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.espol.edu.ec\/girni\/wp-json\/wp\/v2\/comments?post=2442"}],"version-history":[{"count":8,"href":"https:\/\/blog.espol.edu.ec\/girni\/wp-json\/wp\/v2\/posts\/2442\/revisions"}],"predecessor-version":[{"id":3970,"href":"https:\/\/blog.espol.edu.ec\/girni\/wp-json\/wp\/v2\/posts\/2442\/revisions\/3970"}],"wp:attachment":[{"href":"https:\/\/blog.espol.edu.ec\/girni\/wp-json\/wp\/v2\/media?parent=2442"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.espol.edu.ec\/girni\/wp-json\/wp\/v2\/categories?post=2442"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.espol.edu.ec\/girni\/wp-json\/wp\/v2\/tags?post=2442"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}