it:iot:nodered

Toto je starší verze dokumentu!


Nodered

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
  • it/iot/nodered.1672766930.txt.gz
  • Poslední úprava: 2023/01/03 17:28
  • autor: Petr Nosek