This forum uses cookies
This forum makes use of cookies to store your login information if you are registered, and your last visit if you are not. Cookies are small text documents stored on your computer; the cookies set by this forum can only be used on this website and pose no security risk. Cookies on this forum also track the specific topics you have read and when you last read them. Please confirm whether you accept or reject these cookies being set.

A cookie will be stored in your browser regardless of choice to prevent you being asked this question again. You will be able to change your cookie settings at any time using the link in the footer.

  • 0 voto(s) - 0 Media
  • 1
  • 2
  • 3
  • 4
  • 5
RaspBerry Pi + nrf24L01
#21
Habeis comentao algo sobre volumen de datos a guardar en la BD, y varias alternativas. Como me gustaría usar la rasp mas adelante para mas cosas, pero enfocadas a recibir datos, y guardarlos en una BD. Que me recomendáis exactamente? y sobre que volumen de datos barajáis usar una opción u otra?
-> Mi CNC de escritorio CNCDesktop 500 -> https://www.spainlabs.com/foros/tema-Fresadora-Desktop-CNC-500
-> Laboratorio de Fabricación Digital Maker www.lowpower.io 
--> Twitter: https://twitter.com/Grafisoft_ES  | IG: https://www.instagram.com/lowpowerio/
  Responder
#22
Bueno, bases de datos nosql se usan para entornos con millones de registros como twitter o similares, bases de daros sql para el resto Sonrisa
  Responder
#23
Por eso depende de los sensores y la cantidad de datos que quieras almacenar...
Si te toca partir de 0, para datos estadísticos donde no es crítica la integridad o la consistencia, yo lo haría con una NoSQL, porque nunca sabes cuándo vas a necesitar ampliar los horizontes. Y el tema de muestreos suelen ser volúmenes de datos que crecen rápidamente.
  Responder
#24
Estuve buscando cuando se implanta un sgbd sql o una nosql y encontré un vídeo hablando de ello de Ricardo Galli, creador de meneame y profesor de informática de la universidad de las Islas Baleares

https://gallir.wordpress.com/2012/08/06/...ica-video/

Entiendo que NoSQL es mejor para cuando se trata de volumen medio/alto/muy alto de información y que no está estructurada, en cambio sql es para un volúmen bajo/medio/alto de información y que está estructurada.
  Responder
#25
Yo en principio, volumen bajo y supongo que...estrucutrado.
-> Mi CNC de escritorio CNCDesktop 500 -> https://www.spainlabs.com/foros/tema-Fresadora-Desktop-CNC-500
-> Laboratorio de Fabricación Digital Maker www.lowpower.io 
--> Twitter: https://twitter.com/Grafisoft_ES  | IG: https://www.instagram.com/lowpowerio/
  Responder
#26
Bajando la versión raspbian, sobre esta pondré todo Sonrisa

Inicialmente instalare SAMP, porque viene todo en uno, salvo contra indicación, esos serán mis primeros pasos.
-> Mi CNC de escritorio CNCDesktop 500 -> https://www.spainlabs.com/foros/tema-Fresadora-Desktop-CNC-500
-> Laboratorio de Fabricación Digital Maker www.lowpower.io 
--> Twitter: https://twitter.com/Grafisoft_ES  | IG: https://www.instagram.com/lowpowerio/
  Responder
#27
Rasp preparada con LAMP. En cuanto tenga otro rato, instalo la parte correspondiente al nrf24L01 y compruebo que comunica Gran sonrisa
-> Mi CNC de escritorio CNCDesktop 500 -> https://www.spainlabs.com/foros/tema-Fresadora-Desktop-CNC-500
-> Laboratorio de Fabricación Digital Maker www.lowpower.io 
--> Twitter: https://twitter.com/Grafisoft_ES  | IG: https://www.instagram.com/lowpowerio/
  Responder
#28
jejejeje, ya queda poco. ¿Puedes crear /var/www/info.php cuyo contenido sea

Código:
<?
phpinfo();
?>

Y desde un navegador acceder a

http://ip de la raspberry/info.php ?

Si todo va bien verás una página con las características del servidor. Si te vas a la sección mysql ¿qué te pone en Client API version?

Esta es el diagrama de bbdd que me ha salido a mi:

   

Por un lado tenemos una tabla donde rellenamos todos los dispositivos y todas sus ubicaciones. Por otro lado tenemos los distintos atributos que se pueden guardar (temperatura, humedad, nivel de batería, cantidad de luz, nivel de ruido, etc). Luego tenemos dos tablas, una para guadar el registro (la fecha, la trama y el dispositivo) y otra para los valores de los atributos de ese registro ¿por qué no lo he puesto todo en la misma tabla? pues porque he creido que no todos los dispositivos enviarán la misma información, hay algunos que enviaran sólo la temperatura y humedad, otros que sólo enviarán el ruido de ambiente, otros que lo enviaran todo, por eso prefiero desagregar a tener campos vacíos (asi cumplimos con la primera forma normal de diseño de bbdd).
  Responder
#29
Es mejor 4 tablas que tener una solo con los datos pese a tener campos vacios?

La trama sera del estilo: Id_Nodo#numero_trama#bateria#datos_sensor(es)[separado cada uno por una #]
-> Mi CNC de escritorio CNCDesktop 500 -> https://www.spainlabs.com/foros/tema-Fresadora-Desktop-CNC-500
-> Laboratorio de Fabricación Digital Maker www.lowpower.io 
--> Twitter: https://twitter.com/Grafisoft_ES  | IG: https://www.instagram.com/lowpowerio/
  Responder
#30
Al proceso de optimizar el diseño de una bbdd se le llama normalización. Lo que se consigue es gastar menos espacio en disco, mejorar el rendimiento en general, acelarar la velocidad en las búsquedas, extraer los datos de una forma más sencilla, etc. Y dicho esto, podemos obviar lo anterior :elrisas: y tal y como dices guardarlo en una sola tabla, que también funcionaría si se queda como está 8-) .

Por otro lado, los datos de los sensores separados por #, si nos ponemos en el caso de que no todos los nodos tienen los mismos sensores, ¿cómo sabes en que posicion va el dato de la temperatura, el del ruido de ambiente o el del medidor de gas?. Por ejemplo:
el nodo 1 te envía: 1#15#3.78#10#54
el nodo 5 te envía: 5#32#3.76#68#96

En el primer caso los datos son de la temperatura y la humedad, en el segundo caso es la humedad y la luz de ambiente. A priori el programa no sabe cada nodo qué sensores tiene y en qué orden vienen en la trama, a no ser que lo pongas a pelo en el código y cada vez que añadas un nuevo nodo cambies el programa de nuevo para reflejarlo. Para hacerlo más automático podrías poner una cabecera para distinguirlos mejor como:
1#15#BA:3.78#TE:10#HU:54
5#32#BA:3.76#HU:68#GA:96
  Responder
#31
Si, se me olvido añadir, que cada sensor tendria un TAG, como bien has puesto en el segundo ejemplo de trama.
-> Mi CNC de escritorio CNCDesktop 500 -> https://www.spainlabs.com/foros/tema-Fresadora-Desktop-CNC-500
-> Laboratorio de Fabricación Digital Maker www.lowpower.io 
--> Twitter: https://twitter.com/Grafisoft_ES  | IG: https://www.instagram.com/lowpowerio/
  Responder
#32
He mirado lo que me preguntaste de la version de la API, esto sale:

Cita:Client API version 5.5.40
-> Mi CNC de escritorio CNCDesktop 500 -> https://www.spainlabs.com/foros/tema-Fresadora-Desktop-CNC-500
-> Laboratorio de Fabricación Digital Maker www.lowpower.io 
--> Twitter: https://twitter.com/Grafisoft_ES  | IG: https://www.instagram.com/lowpowerio/
  Responder
#33
Peleandome con pocos resultados. Posiblemente tenga que poner un nodo como receptor y mandarle los datos via UART a la rasp.

Sigo probando
-> Mi CNC de escritorio CNCDesktop 500 -> https://www.spainlabs.com/foros/tema-Fresadora-Desktop-CNC-500
-> Laboratorio de Fabricación Digital Maker www.lowpower.io 
--> Twitter: https://twitter.com/Grafisoft_ES  | IG: https://www.instagram.com/lowpowerio/
  Responder
#34
Qué problema te está dando? Te dejo ésta librería para los GPIO de la Rasp por si te sirve de ayuda y no la conocías: http://wiringpi.com/
La sintaxis es similar a la de Arduino, bastante intuitiva y sencilla.
  Responder
#35
Si, pero no uso arduino, entonces hay algunas cosas diferentes. Tengo que investigar mas. Gracias
-> Mi CNC de escritorio CNCDesktop 500 -> https://www.spainlabs.com/foros/tema-Fresadora-Desktop-CNC-500
-> Laboratorio de Fabricación Digital Maker www.lowpower.io 
--> Twitter: https://twitter.com/Grafisoft_ES  | IG: https://www.instagram.com/lowpowerio/
  Responder
#36
La librería es en C, por lo que la comunicación no puede estar más a bajo nivel Confundidois3: De Arduino comparte la sintaxis únicamente, pero permite hacer muchas cosas de una manera más amigable, incluida la comunicación.
  Responder
#37
Si, pero añade cosas que en PIC no uso, y tengo que ver como establecer comunicación.
-> Mi CNC de escritorio CNCDesktop 500 -> https://www.spainlabs.com/foros/tema-Fresadora-Desktop-CNC-500
-> Laboratorio de Fabricación Digital Maker www.lowpower.io 
--> Twitter: https://twitter.com/Grafisoft_ES  | IG: https://www.instagram.com/lowpowerio/
  Responder
#38
grafisoft escribió:He mirado lo que me preguntaste de la version de la API, esto sale:

Cita:Client API version 5.5.40

Genial, con ese dato sabemos que el apache y php funcionan porque lo muestran y además que tienes una de las versiones más recientes de mysql. Te voy a pasar unos pasos para crear un usuario, la bbdd y la tabla; después crearemos un script en python que mete algunos datos de prueba en la tabla y también una página html y php para mostrarlos "en bruto".

En cuanto a los problemas del nrf24l01, puedes ponerlo directamente a la Raspberry Pi tal y como aparece en esta página http://www.akirasan.net/raspbpi-arduino-...-nrf24l01/ que además te viene con un ejemplo de cómo configurarlo y enviar y recibir datos en python.
  Responder
#39
Ok, a ver si lo puedo probar la comunicacion esta noche otra vez Sonrisa
-> Mi CNC de escritorio CNCDesktop 500 -> https://www.spainlabs.com/foros/tema-Fresadora-Desktop-CNC-500
-> Laboratorio de Fabricación Digital Maker www.lowpower.io 
--> Twitter: https://twitter.com/Grafisoft_ES  | IG: https://www.instagram.com/lowpowerio/
  Responder
#40
Bueno, pues vamos a empezar. Pasos a seguir:

crear un fichero llamado script.sql con el siguiente contenido:
Código:
CREATE DATABASE sensores;
GRANT ALL PRIVILEGES ON sensores.* to cliente@localhost IDENTIFIED BY 'cliente2014';
FLUSH PRIVILEGES;
USE sensores;
CREATE TABLE trama(id INT NOT NULL AUTO_INCREMENT, nodo TINYINT NOT NULL, numero INT NOT NULL, fecha DATETIME NOT NULL, temperatura FLOAT, humedad FLOAT, PRIMARY KEY (id));
INSERT INTO trama(nodo, numero, fecha, temperatura, humedad) VALUES(1, 1, '2014-12-20 00:00:00', 25.7, 77.4);
INSERT INTO trama(nodo, numero, fecha, temperatura, humedad) VALUES(2, 1, '2014-12-20 00:00:00', 25.7, 77.4);
INSERT INTO trama(nodo, numero, fecha, temperatura, humedad) VALUES(1, 2, '2014-12-20 01:00:00', 25.4, 67.4);
INSERT INTO trama(nodo, numero, fecha, temperatura, humedad) VALUES(2, 2, '2014-12-20 01:00:00', 25.4, 67.4);
INSERT INTO trama(nodo, numero, fecha, temperatura, humedad) VALUES(1, 3, '2014-12-20 02:00:00', 25.8, 56.8);
INSERT INTO trama(nodo, numero, fecha, temperatura, humedad) VALUES(2, 3, '2014-12-20 02:00:00', 25.8, 56.8);
INSERT INTO trama(nodo, numero, fecha, temperatura, humedad) VALUES(1, 4, '2014-12-20 03:00:00', 25.1, 88.9);
INSERT INTO trama(nodo, numero, fecha, temperatura, humedad) VALUES(2, 4, '2014-12-20 03:00:00', 25.1, 88.9);
INSERT INTO trama(nodo, numero, fecha, temperatura, humedad) VALUES(1, 5, '2014-12-20 04:00:00', 24.6, 45.7);
INSERT INTO trama(nodo, numero, fecha, temperatura, humedad) VALUES(2, 5, '2014-12-20 04:00:00', 24.6, 45.7);
INSERT INTO trama(nodo, numero, fecha, temperatura, humedad) VALUES(1, 6, '2014-12-20 05:00:00', 21.9, 67.1);
INSERT INTO trama(nodo, numero, fecha, temperatura, humedad) VALUES(2, 6, '2014-12-20 05:00:00', 21.9, 67.1);
INSERT INTO trama(nodo, numero, fecha, temperatura, humedad) VALUES(1, 7, '2014-12-20 06:00:00', 25.7, 34.2);
INSERT INTO trama(nodo, numero, fecha, temperatura, humedad) VALUES(2, 7, '2014-12-20 06:00:00', 25.7, 34.2);
INSERT INTO trama(nodo, numero, fecha, temperatura, humedad) VALUES(1, 8, '2014-12-20 07:00:00', 21.2, 55.6);
INSERT INTO trama(nodo, numero, fecha, temperatura, humedad) VALUES(2, 8, '2014-12-20 07:00:00', 21.2, 55.6);
INSERT INTO trama(nodo, numero, fecha, temperatura, humedad) VALUES(1, 9, '2014-12-20 08:00:00', 24.8, 56.0);
INSERT INTO trama(nodo, numero, fecha, temperatura, humedad) VALUES(2, 9, '2014-12-20 08:00:00', 24.8, 56.0);
INSERT INTO trama(nodo, numero, fecha, temperatura, humedad) VALUES(1, 10, '2014-12-20 09:00:00', 27.7, 56.3);
INSERT INTO trama(nodo, numero, fecha, temperatura, humedad) VALUES(2, 10, '2014-12-20 09:00:00', 27.7, 56.3);
INSERT INTO trama(nodo, numero, fecha, temperatura, humedad) VALUES(1, 11, '2014-12-20 10:00:00', 29.7, 56.6);
INSERT INTO trama(nodo, numero, fecha, temperatura, humedad) VALUES(2, 11, '2014-12-20 10:00:00', 29.7, 56.6);
INSERT INTO trama(nodo, numero, fecha, temperatura, humedad) VALUES(1, 12, '2014-12-20 11:00:00', 30.1, 56.9);
INSERT INTO trama(nodo, numero, fecha, temperatura, humedad) VALUES(2, 12, '2014-12-20 11:00:00', 30.1, 56.9);
INSERT INTO trama(nodo, numero, fecha, temperatura, humedad) VALUES(1, 13, '2014-12-20 12:00:00', 31.5, 57.2);
INSERT INTO trama(nodo, numero, fecha, temperatura, humedad) VALUES(2, 13, '2014-12-20 12:00:00', 31.5, 57.2);
INSERT INTO trama(nodo, numero, fecha, temperatura, humedad) VALUES(1, 14, '2014-12-21 00:00:00', 25.7, 77.4);
INSERT INTO trama(nodo, numero, fecha, temperatura, humedad) VALUES(2, 14, '2014-12-21 00:00:00', 25.7, 77.4);
INSERT INTO trama(nodo, numero, fecha, temperatura, humedad) VALUES(1, 15, '2014-12-21 01:00:00', 25.4, 67.4);
INSERT INTO trama(nodo, numero, fecha, temperatura, humedad) VALUES(2, 15, '2014-12-21 01:00:00', 25.4, 67.4);
INSERT INTO trama(nodo, numero, fecha, temperatura, humedad) VALUES(1, 16, '2014-12-21 02:00:00', 25.8, 56.8);
INSERT INTO trama(nodo, numero, fecha, temperatura, humedad) VALUES(2, 16, '2014-12-21 02:00:00', 25.8, 56.8);
INSERT INTO trama(nodo, numero, fecha, temperatura, humedad) VALUES(1, 17, '2014-12-21 03:00:00', 25.1, 88.9);
INSERT INTO trama(nodo, numero, fecha, temperatura, humedad) VALUES(2, 17, '2014-12-21 03:00:00', 25.1, 88.9);
INSERT INTO trama(nodo, numero, fecha, temperatura, humedad) VALUES(1, 18, '2014-12-21 04:00:00', 24.6, 45.7);
INSERT INTO trama(nodo, numero, fecha, temperatura, humedad) VALUES(2, 18, '2014-12-21 04:00:00', 24.6, 45.7);
INSERT INTO trama(nodo, numero, fecha, temperatura, humedad) VALUES(1, 19, '2014-12-21 05:00:00', 21.9, 67.1);
INSERT INTO trama(nodo, numero, fecha, temperatura, humedad) VALUES(2, 19, '2014-12-21 05:00:00', 21.9, 67.1);
INSERT INTO trama(nodo, numero, fecha, temperatura, humedad) VALUES(1, 20, '2014-12-21 06:00:00', 25.7, 34.2);
INSERT INTO trama(nodo, numero, fecha, temperatura, humedad) VALUES(2, 20, '2014-12-21 06:00:00', 25.7, 34.2);
INSERT INTO trama(nodo, numero, fecha, temperatura, humedad) VALUES(1, 21, '2014-12-21 07:00:00', 21.2, 55.6);
INSERT INTO trama(nodo, numero, fecha, temperatura, humedad) VALUES(2, 21, '2014-12-21 07:00:00', 21.2, 55.6);
INSERT INTO trama(nodo, numero, fecha, temperatura, humedad) VALUES(1, 22, '2014-12-21 08:00:00', 24.8, 56.0);
INSERT INTO trama(nodo, numero, fecha, temperatura, humedad) VALUES(2, 22, '2014-12-21 08:00:00', 24.8, 56.0);
INSERT INTO trama(nodo, numero, fecha, temperatura, humedad) VALUES(1, 23, '2014-12-21 09:00:00', 27.7, 56.3);
INSERT INTO trama(nodo, numero, fecha, temperatura, humedad) VALUES(2, 23, '2014-12-21 09:00:00', 27.7, 56.3);
INSERT INTO trama(nodo, numero, fecha, temperatura, humedad) VALUES(1, 24, '2014-12-21 10:00:00', 29.7, 56.6);
INSERT INTO trama(nodo, numero, fecha, temperatura, humedad) VALUES(2, 24, '2014-12-21 10:00:00', 29.7, 56.6);
INSERT INTO trama(nodo, numero, fecha, temperatura, humedad) VALUES(1, 25, '2014-12-21 11:00:00', 30.1, 56.9);
INSERT INTO trama(nodo, numero, fecha, temperatura, humedad) VALUES(2, 25, '2014-12-21 11:00:00', 30.1, 56.9);
INSERT INTO trama(nodo, numero, fecha, temperatura, humedad) VALUES(1, 26, '2014-12-21 12:00:00', 31.5, 57.2);
INSERT INTO trama(nodo, numero, fecha, temperatura, humedad) VALUES(2, 26, '2014-12-21 12:00:00', 31.5, 57.2);

Esto creará un base de datos llamada sensores, un usuario llamado cliente con password cliente2014, una tabla llamada trama con los siguientes campos: id, nodo, numero, fecha, temperatura, humedad (el id es un número único para identificar cada fila, podría haber usado nodo, numero y fecha, pero es más incómodo) y finalmente unos datos de prueba de dos nodos que más tarde borraremos.

Para ejecutarlo desde la consola hay que poner:

Código:
mysql -u root -p

Te pedirá la clave de root de mysql que introduciste cuando lo instalaste. Si todo ha ido bien te saldrá la línea de comandos de mysql (mysql>).

Para ejecutar el script de comandos hay que poner:

Código:
source script.sql

Si todo ha ido bien verás que salen varios mensajes de OK.

Ahora vamos a comprobar que el usuario cliente puede leer y escribir en la tabla. En la línea de comandos de mysql pon:

Código:
quit

Después en la consola pon:

Código:
mysql -u cliente -p

La clave es cliente2014

A continuación vamos a seleccionar la base de datos con la que trabajaremos:

Código:
USE sensores;

Y ahora la primera prueba, vamos a leer los datos de la tabla:

Código:
SELECT * FROM trama;

Te saldrá una lista con los datos que se han guardado.

Ahora vamos a insertar una fila más:

Código:
INSERT INTO trama(nodo, numero, fecha, temperatura, humedad) VALUES(1, 27, '2014-12-21 13:00:00', 32.0, 88.4);

Te saldrá un OK y si ejecuta la SELECT de nuevo verás el nuevo registro insertado.

Ahora vamos a salir de mysql:

Código:
quit

Si has llegado hasta aquí mañana hacemos la página web que los muestre. Después haremos un script en python que introduzca los datos recibidos a través del nrf24L01 en la BBDD.
  Responder


Posibles temas similares…
Tema Autor Respuestas Vistas Último mensaje
  CONSULTA Cómo puedo conectar varias cámaras IP a la vez por wifi a una raspberry? erjavi_zgz 1 1,182 04-02-2022, 12:55 AM
Último mensaje: pano
  Octoprint en Raspberry y MKS SGEN problema puertos Mafer 2 917 26-10-2021, 02:27 PM
Último mensaje: Mafer
  CONSULTA Opiniones Raspberry Pi Pico RP2040 grafisoft 0 798 21-02-2021, 07:32 PM
Último mensaje: grafisoft
  Problema inicio Raspberry pantalla negra en lugar de desktop Electromecánico 3 9,844 16-09-2020, 09:31 AM
Último mensaje: wolfmech
  Conexión Raspberry a Ender 3 Lione666 3 2,161 04-08-2020, 05:17 PM
Último mensaje: ramiro24