Herramientas de usuario

Herramientas del sitio


guias:raspberry_iot

Diferencias

Muestra las diferencias entre dos versiones de la página.

Enlace a la vista de comparación

Próxima revisión
Revisión previa
Próxima revisión Ambos lados, revisión siguiente
guias:raspberry_iot [2019/01/19 14:31]
Alejandro Taracido creado
guias:raspberry_iot [2019/01/19 17:17]
Alejandro Taracido primera versión
Línea 1: Línea 1:
 ====== Raspberry PI: Configuración para IOT ====== ====== Raspberry PI: Configuración para IOT ======
-WORK IN PROGRESS 
  
 Si quieres hacer experimentos con IOT o simplemente quieres automatizar tu hogar o laboratorio esta es tu guía! Si quieres hacer experimentos con IOT o simplemente quieres automatizar tu hogar o laboratorio esta es tu guía!
Línea 111: Línea 110:
   - Si en un futuro quieres añadir otro usuario puedes usar: <code>sudo mosquitto_passwd -b passwordfile USERNAME</code>   - Si en un futuro quieres añadir otro usuario puedes usar: <code>sudo mosquitto_passwd -b passwordfile USERNAME</code>
   - Si quisieras eliminar un usuario puedes usar: <code>sudo mosquitto_passwd -D passwordfile USERNAME</code>   - Si quisieras eliminar un usuario puedes usar: <code>sudo mosquitto_passwd -D passwordfile USERNAME</code>
 +  - Sin salir del la carpera /etc/mosquitto modificaremos el archivo mosquitto.conf <code>sudo nano mosquitto.conf</code>
 +  - Para obligar a usar un usuario y especificar donde está el archivo de password añadimos las siguientes lineas al final del archivo <code>allow_anonymous false
 +password_file /etc/mosquitto/passwordfile</code>
 +
 +==== Reinicio automático en caso de fallo ====
 +  - Primero paramos el servicio y eliminamos lo que ya había <code>sudo systemctl stop mosquitto
 +sudo update-rc.d mosquitto remove
 +sudo rm /etc/init.d/mosquitto</code>
 +  - Ahora modificamos el archivo mosquitto.service <code>sudo nano /etc/systemd/system/mosquitto.service</code>
 +  - Y añadimos las siguientes líneas <code>[Unit]
 +Description=Mosquitto MQTT Broker daemon  
 +ConditionPathExists=/etc/mosquitto/mosquitto.conf  
 +AfteR=network.target
 +Requires=network.target
 +
 +[Service]
 +Type=simple  
 +ExecStart=/usr/sbin/mosquitto -c /etc/mosquitto/mosquitto.conf   
 +Restart=always
 +
 +[Install]
 +WantedBy=multi-user.target </code>
 +  - Y por último relanzamos todo <code>sudo systemctl daemon-reload
 +sudo systemctl enable mosquitto
 +sudo systemctl start mosquitto.service</code>
  
 ---- ----
  
 ===== Instalación Node Red ===== ===== Instalación Node Red =====
 +Ahora instalaremos Node Red, con este auténtico pegamento de tecnologías podremos editar el comportamiento de nuestro sistema de una manera muy sencilla e intuitiva. La interfaz de Node Red es una página web que te servirá la raspi y desde donde puedes realizar toda la gestión y programación de tu sistema.
 +
 +Realizar la instalación de Node Red y todas las aplicaciones que necesita para funcionar es muy sencillo gracias a un script que se encarga de todo, solo hay que lanzar: <code>bash <(curl -sL https://raw.githubusercontent.com/node-red/raspbian-deb-package/master/resources/update-nodejs-and-nodered)</code>
 +
 +==== Securizando Node Red ====
 +Node red por defecto no necesita usuario y contraseña, pero es muy importante por seguridad, por lo que instalaremos un complemento para que solo se pueda entrar después de autentificarse. Además utilizaremos https para que cuando trabajemos con nuestra interfaz de Node Red, toda la información viaje por nuestra red interna de manera cifrada.
 +  - Nos vamos a la carpeta de Node Red <code>cd ~/.node-red</code>
 +  - Ahora instalamos el complemento node-red-admin mediante npm <code>sudo npm install -g node-red-admin</code> <note tip>Puede que te salgan errores durante este paso, pero es normal y debería funcionar todo igual ^_^</note>
 +  - Generamos un hash con nuestro password de node red ( ejecuta, pon el password que quieras para Node Red y cuando te lo de cópialo para despues) <code>node-red-admin hash-pw</code>
 +  - Ahora generaremos un certificado ssl local para nuestro https con los siguientes comandos (cuando te pida datos puedes poner lo que quieras ya que el certificado va a ser local) <code>cd ~/.node-red/
 +openssl genrsa -out privatekey.pem 1024
 +openssl req -new -key privatekey.pem -out private-csr.pem
 +openssl x509 -req -days 365 -in private-csr.pem -signkey privatekey.pem -out certificate.pem</code>
 +  - Ejecutaremos Node Red para ver que funciona y generar el archivo settings.js <code>node-red</code>
 +  - Una vez ponga algo como "[info] Server now running at http://127.0.0.1:1880/" pulsamos Control+C para parar la ejecución
 +  - Ahora modificaremos el archivo de configuración de Node Red <code>nano settings.js</code>
 +  - Busca y descomenta eliminando las dobles barras de: <code>var fs = require("fs");</code>
 +  - Busca y descomenta la siguiente sección, y despues coloca el nombre de usuario que quieras y el hash del password que copiaste antes <code>adminAuth: {
 +    type: "credentials",
 +    users: [{
 +             username: "user",
 +             password: "COPIED HASH",
 +             permissions: "*"
 +           }]
 +},</code> 
 +  - Busca, descomenta y modifica las siguientes lineas (sustituye USERNAME por el nombre de tu usuario de la raspi) <code>https: {
 +         key: fs.readFileSync('/home/USERNAME/.node-red/privatekey.pem'),
 +         cert: fs.readFileSync('/home/USERNAME/.node-red/certificate.pem')
 +     },</code>
 +  - Ahora comprobaremos que todas las modificaciones que hemos hecho funcionan, inicia Node red <code>node-red</code>
 +  - Cuando ponga algo como "[info] Server now running at http://127.0.0.1:1880/" nos vamos a nuestro navegador y entramos en la dirección "https://192.168.0.XXX:1880" sustituyendo para que apunte a la IP de nuestra raspi
 +  - Que pasada! si todo ha ido bien podrás ver la pantalla de login, pon tu usuario y contraseña de Node Red y si entras sin problemas reprime tus instintos de cacharreo, cierra la web y a continuación en tu terminal ssh pulsa Control+C para parar Node Red, aun no hemos terminado! Pero ya queda poco :)
 +
 +==== Inicio automático de Node Red con PM2 ====
 +Casi todos los tutoriales recomiendan utilizar systemctl para iniciar Node Red, pero yo he tenido bastantes problemas por lo que recomiendo probar con PM2. Solo tienes que ejecutar los siguientes comandos <code>sudo systemctl disable nodered.service
 +sudo npm install -g pm2
 +pm2 start node-red
 +pm2 save
 +pm2 startup</code>
 +
 +Ya está! Ya puedes comenzar a cacharrear con Node Red y MQTT, hay muchos tutoriales por internet para hacer cosas chulísimas. En esta página podras encontrar tanto "Flows" o flujos como complementos que puedes instalar en tu Node Red, la visitarás muy a menudo! [[https://flows.nodered.org|https://flows.nodered.org]]
 +
 +Por último te puedo recomendar un chat de Telegram sobre Node Red en castellano : [[https://t.me/nodered|https://t.me/nodered]]
 +
 +A disfrutarlo!
 +
guias/raspberry_iot.txt · Última modificación: 2021/04/16 20:41 (editor externo)