Actualmente estoy tratando de cambiar el volumen de mi Raspberry Pi con dos botones html (subir volumen y bajar volumen), usando nodeJS. El cambio de volumen se realiza llamando a un script bash al hacer clic en uno de los botones html en index.html.
Cuando inicio el nodo manualmente desde la terminal con
node server.js
todo funciona bien y puedo subir y bajar el volumen usando los dos botones. Tan pronto como puse el script del nodo en inicio automático, solo funciona el botón "Subir volumen", mientras que el botón Bajar volumen no parece funcionar.
Matando el proceso de nodo autoiniciado e iniciándolo manualmente, funciona bien de nuevo. ¿Cómo puede el resultado ser tan diferente, dependiendo de cómo se inicie el nodo aquí? ¿Cuál es mi error en esto?
Mi secuencia de comandos de nodo se ve así:
var express = require('express'); var path = require('path'); var open = require('open'); var fs = require('fs'); const { exec } = require('child_process'); var bodyParser = require('body-parser'); var port = 3000; var app = express(); app.get('/', function(req, res){ res.sendFile(path.join(__dirname, 'index.html')); }); app.use(bodyParser.urlencoded({ extended: false })); app.post('/', function(request, respond) { var inputValue = request.body.volume; if (inputValue == "up") { exec('sh volumeup.sh'); } if(inputValue == "down") { exec('sh volumedown.sh'); } }); app.listen(port, function(err){ if(err){ console.log(err); }else{ open('http://localhost:' + port); } });con mi index.html:
<!DOCTYPE html> <html> <head> <meta charset="utf-8"/> </head> <body> <h2>Change Volume</h2> <form action="" method="post"> <button name="volume" value="up">Volume Up</button> <button name="volume" value="down">Volume Down</button> </form> </body> </html>Para que nodejs se ejecute en el inicio automático, configuré un archivo * .desktop:
[Desktop Entry] Encoding=UTF-8 Type=Application Name=<Node> Comment= Exec=/usr/bin/node /home/pi/Desktop/server.js StartupNotify=false Terminal=true Hidden=falseMuchas gracias de antemano, agradezco mucho su ayuda!