КОНФИГУРАЦИЯ:
Я создаю робота FPV, которым можно управлять через веб-браузер локально по Wi-Fi.
Я запустил MVP. Я получаю 640x480 @ 20FPS с 240 мс латентного видеопотока в веб-браузере и получаю 7 мс латентности на элементах управления.
Я использую веб-сервер NODE.JS на Raspberry Pi 3B +. Операционная система Raspbian Stretch. Я использую Socket.IO для обеспечения двунаправленного управления с низкой задержкой и веб-сокетов для передачи потоковых пакетов.
ПРОБЛЕМА:
После выключения Raspberry NODE.JS когда-нибудь остановится после выполнения. Я не получаю ошибок и не имею обратной связи о том, почему NODE застревает. для выключения требуется CTRL-C.
pi@MazeRunner:~ $ node 2019-06-09-ffmpeg/node.js
Если я выпускаю NODE.JS как отдельный процесс, я могу продолжать использовать RPI, но NODE завис в фоновом режиме.
pi@MazeRunner:~ $ node 2019-06-09-ffmpeg/node.js &
[1] 778
pi@MazeRunner:~ $
ОПИСАНИЕ:
1) Иногда NODE.JS может восстановиться самостоятельно примерно через 5 минут ожидания без обратной связи. Это только начинается.
pi@MazeRunner:~ $ node 2019-06-09-ffmpeg/node.js
INFO: Server interface - enxb827eb23ca00 192.168.0.202
INFO: 192.168.0.202 listening to html requests on port 8080
INFO: /home/pi/2019-06-09-ffmpeg/index.html has been loaded into memory
INFO: /home/pi/2019-06-09-ffmpeg/style.css has been loaded into memory
INFO: /home/pi/2019-06-09-ffmpeg/jsmpeg.min.js has been loaded into memory
2) Иногда я могу восстановить рабочее состояние NODE путем инициализации npm, но иногда эта команда также застревает.
pi@MazeRunner:~ $ npm --init yes
3) Я всегда могу восстановить узел, удалив его с помощью apt-get remove и переустановив его с помощью apt-get install, что явно невозможно сделать
4) Я пытался искать логи node.js или npm, но мне не удалось найти их
5) Похоже, что завершение работы перед отключением питания значительно увеличивает вероятность того, что node.js не замерзнет при запуске.
pi@MazeRunner:~ $ sudo shutdown now
ВОПРОС:
1) Есть ли способ, чтобы node.js генерировал подробные журналы отладки где-нибудь для устранения проблем? Нет сообщений об ошибках ни в STDOUT, ни в STDERR
2) Я бы хотел, чтобы робот работал по принципу «включай и работай» и чтобы он работал постоянно после внезапного отключения питания. Я могу добавить кнопку выключения на странице браузера, но вы можете легко забыть использовать ее. Отключение консолл-сервером вообще лишает вас возможности иметь интерфейс управления браузером.
Есть ли способ сделать так, чтобы распбианцы могли быстро отключиться?
Спасибо за любую помощь, которую вы можете оказать!