Toto je starší verze dokumentu!
Nodered
problém se seriovým portem
Při rozběhnutí sériového portu v Noderedu jsem měl několik problémů. Nejprve mi Nodered psal, že se nepodařilo k /dev/ttyUSB0 připojit. To jsem vyřešil editací docker-compose.yml:
services: nodered: container_name: nodered build: context: ./services/nodered/. args: - DOCKERHUB_TAG=latest - EXTRA_PACKAGES= restart: unless-stopped user: "0" environment: - TZ=Etc/UTC ports: - "1880:1880" volumes: - ./volumes/nodered/data:/data - ./volumes/nodered/ssh:/root/.ssh - /var/run/docker.sock:/var/run/docker.sock - /var/run/dbus/system_bus_socket:/var/run/dbus/system_bus_socket devices: - "/dev/ttyUSB0:/dev/ttyAMA0" - "/dev/vcio:/dev/vcio" - "/dev/gpiomem:/dev/gpiomem"
Púvodně bylo v devices tohle: /dev/ttyAMA0:/dev/ttyAMA0. Do Noderedu jsem chtěl ale posílat ttyUSB0, tak jsem to změnil na /dev/ttyUSB0:/dev/ttyAMA0 a v dockeru budu přistupovat k zařízení /dev/ttyAMA0.
Další problém, který se objevil byl, že když jsem nastavil nodered, tak havaroval s hlášením segmentatin fault vždycky, když se měl připojit k /dev/ttyAMA0. Takže se docker neustále restartoval.
V této diskusi jsem našel pomoc.
Nejprve jsem se připojil do dockeru s noderedem.
docker exec -it nodered bash
Dále jsem zkusil vytvořil soubor test.js s tímto obsahem:
const { SerialPort } = require("serialport"); var port = new SerialPort({path: '/dev/ttyAMA0', baudRate: 115200});
A otestovat spuštění:
bash-5.1# node test.js
Problém se pořád projevoval. Když jsem podle doporučení provedl rebuild pluginů, testovací příkaz prošel a modul opravdu začal fungovat.
bash-5.1# npm rebuild --build-from-source
Najednou v logu noderedu vidím namísto segfault tohle:
3 Jan 16:50:22 - [info] [serialconfig:2268525fcaad5010] serial port /dev/ttyAMA0 opened at 115200 baud 8N1
K vyčítání dat z mého zařízení na sériovém portu z Noderedu mi posloužil tento návod.
Takto vypadá jednoduché propojení v Noderedu:
A takto jsem musel nakonfigurovat sériovou linku pro mé zařízení:
Samotnou zprávu pak posílám v json formátu: