<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[Enviar datos de M5Stick C al exterior.]]></title><description><![CDATA[<p dir="auto">Estoy con los primeros pasos de un proyecto mayor.<br />
<strong>¿Habéis conseguido enviar datos por internet de con M5Stick C a un servidor?</strong><br />
Por ejemplo, los valores del giroscopio.</p>
<hr />
<h2>MQTT</h2>
<p dir="auto">En un primer momento, lo he intentado con el protocolo MQTT (territorio desconocido para mí) siguiendo este tutorial:<br />
<a href="https://www.youtube.com/watch?v=5RozKI-3i4Q" target="_blank" rel="noopener noreferrer nofollow ugc">https://www.youtube.com/watch?v=5RozKI-3i4Q</a><br />
No me acabó de funcionar, aunque el comportamiento en pruebas hechas en días diferentes me hizo pensar que quizás era un problema del servicio gratuito online.</p>
<p dir="auto">Además me ocurría que no podía reproducir el programa cuando hacía cambios, necesité grabar la imagen con el M5Burner varias veces para poder enviar a través de la web del UIFlow los cambios de mi código a M5Stick C. <em>Mi hipótesis es que entraba en bucle o se saturaba de conexiones y no permití conectarse via UIFlow via web.</em></p>
<p dir="auto">¡Todo esto desde el desconocimiento y mis primeros pasos!</p>
<p dir="auto"><em>(Por cierto, si lo hacéis el tutorial hay que hacer download, para que baje también la librería de MQTT, no basta con dar a reproducir -el triangulo-)</em></p>
<hr />
<h2>HTTP</h2>
<p dir="auto">Ahora estoy probando por aquí, pero bueno también soy nuevo en node js , así que no sé si alguien de vosotros o vosotras tiene alguna pista.</p>
<p dir="auto"><img src="/assets/uploads/files/1580239881502-imagen-datos-giroscopio-resized.jpg" alt="0_1580239874401_imagen-datos-giroscopio.JPG" class=" img-fluid img-markdown" /></p>
<p dir="auto">Código de node js:</p>
<pre><code>var http = require('http');
var url = require('url');

var x_gyr = 0.0;
var y_gyr = 0.0;
var z_gyr = 0.0;

http.createServer(function (req, res) {
  // Set CORS headers
	res.setHeader('Access-Control-Allow-Origin', '*');
	res.setHeader('Access-Control-Request-Method', '*');
	res.setHeader('Access-Control-Allow-Methods', 'OPTIONS, GET, POST, PUT');
	res.setHeader('Access-Control-Allow-Headers', '*');
  //
  res.writeHead(200, {'Content-Type': 'text/html'});
  var q = url.parse(req.url, true);
  console.log(q.href);
  if (q.pathname == '/toma.htm') {
    q = q.query;
    x_gyr = q.x;
    y_gyr = q.y;
    z_gyr = q.z;
  }   
  var txt = x_gyr + ',' + y_gyr + ',' + z_gyr;
  res.end(txt);
}).listen(8080);
</code></pre>
<p dir="auto">La idea es que cuando se accede a la url, se pueden leer los valores del giroscopio, si se hace con la url acabada en toma.htm?x=1.5&amp;y=0.6&amp;z=-0.12 se escriben los valores.</p>
<p dir="auto"><a href="https://repl.it/" target="_blank" rel="noopener noreferrer nofollow ugc">repl.it</a> está muy bien por que te permite editar el código, ver el resultado y consultar el terminal (en mi caso en node js).</p>
<p dir="auto">El problema que me estoy trabajando es que si que parece que se conecta a la url, pero no envia los datos después del '?'. He probado el método POST y GET.</p>
<p dir="auto">En la consola me aparece que si que accede a la URL acabada en toma.html, pero si pasar los datos:<br />
<img src="/assets/uploads/files/1580240594069-imagen-datos-nodejs-consola.jpg" alt="0_1580240591896_imagen-datos-nodejs-consola.JPG" class=" img-fluid img-markdown" /></p>
<p dir="auto">En cambio, si en el navegador abro una ventana de incognito, pongo la URL acabado como en ejemplo, toma.htm?x=1.5&amp;y=0.6&amp;z=-0.12, en la consola si que me aparece los números y el programa node js parece funcionar.</p>
<p dir="auto">Por otro lado, me muestra el circulo verde, como si que ha conseguido la conexión o ha recibido un OK del servidor, pero a continuación me muestra el círculo rojo, como que no. Sospecho que esto tiene que ver con el programa de nodejs, que es una jardín para otro foro...</p>
<p dir="auto">Os pongo el código en micropython por si quereis probar:</p>
<pre><code>from m5stack import *
from m5ui import *
from uiflow import *
import imu
import urequests

setScreenColor(0x111111)



imu0 = imu.IMU()
title0 = M5Title(title="Datos", x=3 , fgcolor=0xFFFFFF, bgcolor=0xcb1a02)
label_x_Gyr = M5TextBox(5, 23, "x_gyr", lcd.FONT_Default,0xFFFFFF, rotate=0)
label_y_gyr = M5TextBox(5, 40, "y_gyr", lcd.FONT_Default,0xFFFFFF, rotate=0)
circle0 = M5Circle(60, 143, 10, 0xFFFFFF, 0xFFFFFF)
label_z_gyr = M5TextBox(4, 57, "z_gyr", lcd.FONT_Default,0xFFFFFF, rotate=0)

enmarcha = None
x_gyr = None
y_gyr = None
z_gyr = None


def buttonA_wasPressed():
  global enmarcha, x_gyr, y_gyr, z_gyr
  enmarcha = not enmarcha
  if enmarcha:
    title0.setBgColor(0x33cc00)
  else:
    title0.setBgColor(0xff0000)
  pass
btnA.wasPressed(buttonA_wasPressed)


enmarcha = False
while True:
  while enmarcha:
    x_gyr = imu0.gyro[0]
    y_gyr = imu0.gyro[1]
    z_gyr = imu0.gyro[2]
    label_y_gyr.setText(str(y_gyr))
    label_x_Gyr.setText(str(x_gyr))
    label_z_gyr.setText(str(z_gyr))
    try:
      req = urequests.request(method='GET', url='https://pon-aqui-tu-url.de.repl.co/toma.htm', headers={'Content-Type':'text/html'})
      circle0.setBgColor(0x006600)
    except:
      circle0.setBgColor(0xff0000)
    wait(1)
</code></pre>
<hr />
<p dir="auto">El proyecto mayor es replicar el movimiento de M5Stick C, en la web: enviando los datos a un servidor y renderizando con la librería de javascript Three js, el modelo 3D en pantalla. Busco el WOW de amigos (estoy un poco loco, no? :D )<br />
Una idea inspirada en le proyecto de naninunenoy (<a href="https://github.com/naninunenoy/AxisOrange/blob/master/README.md" target="_blank" rel="noopener noreferrer nofollow ugc">https://github.com/naninunenoy/AxisOrange/blob/master/README.md</a>, realizado en Unity y conectando por Bluetooth el M5Stick C y el ordenador, si lo he interpretado bien). Y si funciona bien y es fluido, hacer un juego! Por qué no? :D</p>
<p dir="auto">Ya lo compartiré, si lo consigo ;-)</p>
]]></description><link>https://community.m5stack.com/topic/1660/enviar-datos-de-m5stick-c-al-exterior</link><generator>RSS for Node</generator><lastBuildDate>Wed, 29 Apr 2026 03:45:50 GMT</lastBuildDate><atom:link href="https://community.m5stack.com/topic/1660.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 28 Jan 2020 19:53:37 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Enviar datos de M5Stick C al exterior. on Thu, 06 Feb 2020 06:30:14 GMT]]></title><description><![CDATA[<p dir="auto"><a class="plugin-mentions-user plugin-mentions-a" href="/user/mario" aria-label="Profile: mario">@<bdi>mario</bdi></a> Me interesa este proyecto, mi idea es algo parecido necesito enviar datos de un M5StickC a un servidor. Voy apenas iniciando aquí, pero este proyecto tuyo me interesa aun que no llego a donde tu estas aun. Saludos.</p>
]]></description><link>https://community.m5stack.com/post/7309</link><guid isPermaLink="true">https://community.m5stack.com/post/7309</guid><dc:creator><![CDATA[Redes.io]]></dc:creator><pubDate>Thu, 06 Feb 2020 06:30:14 GMT</pubDate></item><item><title><![CDATA[Reply to Enviar datos de M5Stick C al exterior. on Sat, 01 Feb 2020 19:28:02 GMT]]></title><description><![CDATA[<p dir="auto">El cabrito de UIflow, no pone nada en el código sobre mis datos (los pares, nombre-valor, x=1.5) cuando convierto los bloques a código:</p>
<p dir="auto"><img src="/assets/uploads/files/1580585086587-f21746ed-ae79-46db-b336-6344c9cf0218-image.png" alt="0_1580585081634_f21746ed-ae79-46db-b336-6344c9cf0218-image.png" class=" img-fluid img-markdown" /></p>
<p dir="auto">El codigo:</p>
<p dir="auto"><img src="/assets/uploads/files/1580585209373-d7bf9b85-9f61-40b6-bab9-cc243506fd1e-image-resized.png" alt="0_1580585209155_d7bf9b85-9f61-40b6-bab9-cc243506fd1e-image.png" class=" img-fluid img-markdown" /></p>
<p dir="auto">Leyendo sobre mycropython, tendria que haber un argumento 'data' que no aparece: <a href="https://makeblock-micropython-api.readthedocs.io/en/latest/public_library/Third-party-libraries/urequests.html#urequests.request" target="_blank" rel="noopener noreferrer nofollow ugc">https://makeblock-micropython-api.readthedocs.io/en/latest/public_library/Third-party-libraries/urequests.html#urequests.request</a></p>
<p dir="auto">En fin, si descubro algo sigo compartiendo.</p>
]]></description><link>https://community.m5stack.com/post/7280</link><guid isPermaLink="true">https://community.m5stack.com/post/7280</guid><dc:creator><![CDATA[mario]]></dc:creator><pubDate>Sat, 01 Feb 2020 19:28:02 GMT</pubDate></item><item><title><![CDATA[Reply to Enviar datos de M5Stick C al exterior. on Sat, 01 Feb 2020 19:06:01 GMT]]></title><description><![CDATA[<p dir="auto"><a class="plugin-mentions-user plugin-mentions-a" href="/user/mario" aria-label="Profile: mario">@<bdi>mario</bdi></a> said in <a href="/post/7224">Enviar datos de M5Stick C al exterior.</a>:</p>
<blockquote>
<p dir="auto">Por otro lado, me muestra el circulo verde, como si que ha conseguido la conexión o ha recibido un OK del servidor, pero a continuación me muestra el círculo rojo, como que no.</p>
</blockquote>
<p dir="auto">Bueno, este comportamiento lo he corregido, <strong>poniendo la url con 'http://' en lugar del 'https://'</strong></p>
<p dir="auto">Lo publico aquí por si a alguien le puede ser de utilidad.</p>
<p dir="auto">(sique sin enviar los pares nombre y valor, lo que va detrás de '?')</p>
]]></description><link>https://community.m5stack.com/post/7279</link><guid isPermaLink="true">https://community.m5stack.com/post/7279</guid><dc:creator><![CDATA[mario]]></dc:creator><pubDate>Sat, 01 Feb 2020 19:06:01 GMT</pubDate></item></channel></rss>