Sentech Cams Node
Overview
The Sentech Cams node provides hardware integration with Sentech camera devices. It manages Docker containers that interface with Sentech cameras, handling automatic startup, cleanup, and multi-camera coordination through shared memory communication.
Key Features
- Multi-camera support: Control multiple Sentech cameras simultaneously
- Docker-based: Isolated containers per camera
- Auto-start: Optional automatic startup on deployment
- Shared memory: Fast inter-process communication via
/dev/shm - Driver management: Ensures Sentech driver container is running
- Color mode selection: RGB or BGR output
- Device ID configuration: Specify cameras by MAC address
Hardware Requirements
- Sentech camera hardware
- Sentech camera driver installed
- Docker and Docker Compose
- Root/sudo access for Docker operations
/opt/rosepetal-sentechdirectory with Docker Compose config/opt/rosepetal-sentech-driverdirectory with driver setup
Configuration
Properties
Auto Start
- Type: Checkbox
- Default: false
- Description: Automatically start cameras on node deployment
Auto Start Delay (seconds)
- Type: Number
- Default: 6
- Description: Delay before starting cameras (allows system initialization)
Device IDs
- Type: Array of strings
- Default:javascript
[ "d4:7c:44:31:5f:62", "d4:7c:44:31:5f:61", "d4:7c:44:31:5f:68", "d4:7c:44:31:5f:bb" ] - Description: MAC addresses of Sentech cameras to control
Color Mode
- Type: Select
- Options: BGR, RGB
- Default: BGR
- Description: Output color format for captured images
Input
Control Messages
Start Cameras
msg.payload = { action: "start" };Starts Docker containers for all configured cameras.
Stop Cameras
msg.payload = { action: "stop" };Stops and removes all camera Docker containers.
Cleanup
msg.payload = { action: "cleanup" };Performs full cleanup:
- Kills SaveAnd processes
- Stops Docker containers
- Cleans shared memory
- Resets permissions
Operations
Startup Sequence
- Cleanup existing: Remove old processes and containers
- Verify driver: Ensure driver container is running
- Start driver: Launch driver container if needed (5s wait)
- Start cameras: Launch container for each device ID
- Set status: Update node status indicators
Container Management
Each camera gets a dedicated Docker container:
- Container name:
sentech-app-{device-id} - Environment variables:
DEVICE_ID,COLOR_MODE - Shared memory:
/dev/shmfor inter-process communication
Cleanup Process
Cleanup involves:
- Kill all
SaveAndprocesses - Stop Docker Compose services
- Remove shared memory files (
/dev/shm/S_*,/dev/shm/LOG_*) - Set proper permissions (chmod 1777
/dev/shm)
Node Status
| Status | Meaning |
|---|---|
| Grey dot - "idle" | Node ready, cameras not started |
| Yellow dot - "starting..." | Cameras starting up |
| Green dot - "running: N camera(s)" | N cameras running successfully |
| Red ring - "startup error" | Error during startup |
| Orange dot - "stopping..." | Cameras shutting down |
| Blue dot - "stopped" | Cameras stopped successfully |
Usage Examples
Example 1: Auto-Start on Deploy
Configuration:
- Auto Start: Enabled
- Auto Start Delay: 6 seconds
Behavior: Cameras automatically start 6 seconds after flow deployment
Example 2: Manual Control
[Inject: Start Button] → [Sentech Cams]
[Inject: Stop Button] → [Sentech Cams]Start button:
msg.payload = { action: "start" };
return msg;Stop button:
msg.payload = { action: "stop" };
return msg;Example 3: Scheduled Operation
[Inject: Daily 8AM] → [Function: Start] → [Sentech Cams]
[Inject: Daily 6PM] → [Function: Stop] → [Sentech Cams]Automatically start cameras at 8AM and stop at 6PM.
Example 4: Cleanup Before Restart
// Function node
// Send cleanup first
node.send([{ payload: { action: "cleanup" } }, null]);
// Wait 5 seconds, then start
setTimeout(() => {
node.send([null, { payload: { action: "start" } }]);
}, 5000);Docker Requirements
Required Docker Compose Files
/opt/rosepetal-sentech/docker-compose.yml:
version: '3'
services:
app:
image: sentech-app:latest
container_name: ${dockerName}
environment:
- DEVICE_ID=${DEVICE_ID}
- COLOR_MODE=${COLOR_MODE}
volumes:
- /dev/shm:/dev/shm
network_mode: host/opt/rosepetal-sentech-driver/docker-compose.yml:
version: '3'
services:
driver:
image: sentech-driver:latest
container_name: sentech-driver
privileged: true
network_mode: hostDocker Images
Required images:
sentech-app:latest- Camera applicationsentech-driver:latest- Sentech camera driver
Build and tag appropriately before use.
Shared Memory
Purpose
Shared memory (/dev/shm) enables fast communication between:
- Camera driver
- Camera application containers
- Node-RED (via Camera Manager node)
Files
Pattern: /dev/shm/S_{device-id}, /dev/shm/LOG_{device-id}
Example:
/dev/shm/S_d4-7c-44-31-5f-62/dev/shm/LOG_d4-7c-44-31-5f-62
Permissions
Must have permissions: 1777 (chmod 1777 /dev/shm)
Integration with Camera Manager
The Sentech Cams node starts camera processes, while Camera Manager node captures images:
[Sentech Cams: Start] → [Wait 10s] → [Camera Manager: Capture]Flow:
- Sentech Cams: Start camera containers
- Wait: Allow cameras to initialize
- Camera Manager: Read from shared memory and capture
Error Handling
Common Errors
"Failed to start container"
Causes:
- Docker image not available
- Port conflict
- Insufficient permissions
Solutions:
- Verify Docker images exist
- Check no conflicting containers
- Run with sudo/root permissions
"Driver container not running"
Causes:
- Driver image not available
- Driver failed to start
Solutions:
- Check driver image exists
- Review driver logs
- Manually start driver container
"SHM cleanup error"
Causes:
- Files locked by processes
- Permission denied
Solutions:
- Kill all camera processes
- Run cleanup with sudo
- Reboot system if persistent
Debugging
View container logs:
docker logs sentech-app-d4-7c-44-31-5f-62
docker logs sentech-driverCheck shared memory:
ls -la /dev/shm/S_*
ls -la /dev/shm/LOG_*Check running containers:
docker ps | grep sentechBest Practices
- Auto-start delay: Use at least 5-6 seconds for system initialization
- Cleanup regularly: Run cleanup before major changes
- Monitor logs: Check Docker logs for errors
- Proper shutdown: Always use stop action before redeployment
- Device IDs: Verify MAC addresses match actual hardware
- Permissions: Ensure proper
/dev/shmpermissions
Security Considerations
- Root access: Node requires sudo for Docker operations
- Network mode host: Containers use host networking
- Shared memory: Accessible to all processes
- Production: Review security implications for production deployments
Troubleshooting
Cameras not starting
Check:
- Docker service running
- Images exist locally
- Device IDs correct
- No port conflicts
- Sufficient system resources
Intermittent failures
Check:
- Shared memory not full
- No zombie processes
- Driver container healthy
- Network connectivity
Performance issues
Check:
- System CPU/memory usage
- Number of concurrent cameras
- Shared memory throughput
- Docker container resources
See Also
- Camera Manager Node - Captures images from cameras
- Vision Platform Overview - Complete platform
- Docker Documentation - Docker reference