User Tools

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
wiki:seekthermal [2025/02/23 17:19] birdywiki:seekthermal [2025/02/23 19:35] (current) birdy
Line 1: Line 1:
 ===== Notes on using the Seek Scan thermal camera ===== ===== Notes on using the Seek Scan thermal camera =====
 +
 +{{:wiki:screenshot_20250223_102424-1.png|Thermal image showing the top of a water heater. It is mostly orange}}Camera: Seek Thermal Seek Scan
 +
 +PN: YW-AAA
  
 My configuration: raspberry pi 4 64-bit My configuration: raspberry pi 4 64-bit
Line 6: Line 10:
     - [[https://github.com/OpenThermal/libseek-thermal]]     - [[https://github.com/OpenThermal/libseek-thermal]]
   - Install v4l2loopback   - Install v4l2loopback
-    - sudo apt install v4l2loopback+    - <code -> 
 + sudo apt install v4l2loopback 
 +</code>
   - Make udev rule   - Make udev rule
     - <code - /etc/udev/rules.d/53-seek.rules>     - <code - /etc/udev/rules.d/53-seek.rules>
Line 20: Line 26:
 </code> </code>
   - Create v4l2 device. I'm using /dev/video5   - Create v4l2 device. I'm using /dev/video5
-    - sudo modprobe v4l2loopback video_nr=5 card_label="seek" exclusive_caps=1+    - <code -> 
 +sudo modprobe v4l2loopback video_nr=5 card_label="seek" exclusive_caps=1 
 +</code>
   - Run seek_viewer   - Run seek_viewer
-    - ./seek_viewer --colormap=--mode=v4l2 --output=/dev/video5+    - <code -> 
 + seek_viewer --colormap=--mode=v4l2 --output=/dev/video5 
 +</code> 
 +    - Colormap 2 is the jet colormap from opencv. 
 +      - [[https://docs.opencv.org/4.x/d3/d50/group__imgproc__colormap.html#ga9a805d8262bcbe273f16be9ea2055a65]] 
 +  - Run mediamtx 
 +    - <code -> 
 + ./mediamtx 
 +</code> 
 +  - Open in chrome 
 +    - [[http://192.168.1.100:8889/cam/]] 
 +  - Open in VLC 
 +    - <code -> 
 + rtsp://192.168.1.100:8554/cam 
 +</code> 
 +  - Open in chrome android 
 +    - [[http://192.168.1.100:8888/cam/]] 
 + 
 +==== Misc ==== 
 + 
 +lsusb 
 + 
 +<code -> 
 +Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub 
 +Bus 001 Device 008: ID 5149:13d3 Image Processor USB 2.0 PC Cam 
 +Bus 001 Device 007: ID 289d:0010 Seek Thermal, Inc. PIR206 Thermal Camera [Seek Compact] 
 +Bus 001 Device 006: ID 1a40:0801 Terminus Technology Inc. USB 2.0 Hub 
 +Bus 001 Device 002: ID 2109:3431 VIA Labs, Inc. Hub 
 +Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub 
 +</code> 
 + 
 +udev info 
 + 
 +<code -> 
 +DEVTYPE=usb_device 
 +DRIVER=usb 
 +PRODUCT=289d/10/100 
 +TYPE=0/0/
 +BUSNUM=001 
 +DEVNUM=007 
 +MAJOR=189 
 +MINOR=6 
 +ACTION=add 
 +SUBSYSTEM=usb 
 +TAGS=:seat: 
 +ID_BUS=usb 
 +ID_MODEL=PIR206_Thermal_Camera 
 +ID_MODEL_ENC=PIR206\x20Thermal\x20Camera 
 +ID_MODEL_ID=0010 
 +ID_SERIAL=Seek_Thermal__Inc._PIR206_Thermal_Camera 
 +ID_VENDOR=Seek_Thermal__Inc. 
 +ID_VENDOR_ENC=Seek\x20Thermal\x2c\x20Inc. 
 +ID_VENDOR_ID=289d 
 +ID_REVISION=0100 
 +ID_USB_MODEL=PIR206_Thermal_Camera 
 +ID_USB_MODEL_ENC=PIR206\x20Thermal\x20Camera 
 +ID_USB_MODEL_ID=0010 
 +ID_USB_SERIAL=Seek_Thermal__Inc._PIR206_Thermal_Camera 
 +ID_USB_VENDOR=Seek_Thermal__Inc. 
 +ID_USB_VENDOR_ENC=Seek\x20Thermal\x2c\x20Inc. 
 +ID_USB_VENDOR_ID=289d 
 +ID_USB_REVISION=0100 
 +ID_USB_INTERFACES=:fff000:fff001: 
 +ID_VENDOR_FROM_DATABASE=Seek Thermal, Inc. 
 +ID_MODEL_FROM_DATABASE=PIR206 Thermal Camera [Seek Compact] 
 +ID_PATH=platform-fd500000.pcie-pci-0000:01:00.0-usb-0:1.1.1 
 +ID_PATH_TAG=platform-fd500000_pcie-pci-0000_01_00_0-usb-0_1_1_1 
 +CURRENT_TAGS=:seat: 
 +ID_FOR_SEAT=usb-platform-fd500000_pcie-pci-0000_01_00_0-usb-0_1_1_1 
 +Unload kernel module index. 
 +Unloaded link configuration context. 
 +</code> 
 + 
 +==== go2rtc ==== 
 + 
 +I initially tried this setup using go2rtc instead of mediamtx, but ran in to a problem where only 1 client could join and only at the start of the stream. See  [[https://github.com/RPi-Distro/ffmpeg/pull/10]] 
 + 
 +==== Frigate ==== 
 + 
 +If you want to add this camera to Frigate, the rtsp stream needs to be in yuv420p format. 
 + 
 +This requires the video to be in a resolution divisible by 2 (the default resolution is 154x207). 
 + 
 +I used the answer from [[paths:   # example:   # my_camera:   #   source: rtsp://my_camera   cam:     runOnInit: ffmpeg -f v4l2 -i /dev/video5 -vf "crop=trunc(iw/2)*2:trunc(ih/2)*2" -c:v libx264 -pix_fmt yuv420p -preset ultrafast -f rtsp rtsp://localhost:$RTSP_PORT/$MTX_PATH   # Settings under path "all_others" are applied to all paths that|here]] which will crop it to 154x206. 
 + 
 +<code - mediamtx.yml> 
 +  cam: 
 +    runOnInit: ffmpeg -f v4l2 -i /dev/video5 -vf "crop=trunc(iw/2)*2:trunc(ih/2)*2" -c:v libx264 -pix_fmt yuv420p -preset ultrafast -f rtsp rtsp://localhost:$RTSP_PORT/$MTX_PATH 
 +</code> 
 + 
 +In the Frigate config: 
 + 
 +<code -> 
 +  Seek: 
 +    ffmpeg: 
 +      inputs: 
 +        - path: rtsp:192.168.1.100:8554/cam  
 +          roles: 
 +            - record 
 +    detect: 
 +      enabled: false 
 +</code> 
 + 
 +==== Visual camera ==== 
 + 
 +The Seek Scan includes a visual camera as well. It's not very high quality. 
 + 
 +On my system it was automatically set up as /dev/video0 
 + 
 +Use the [[https://github.com/bluenviron/mediamtx?tab=readme-ov-file#generic-webcam|default usb webcam config.]] 
 + 
 +Seek_viewer has a default image rotation. To have the visual camera match the rotation of the thermal camera, I used the transpose=2 option. 
 + 
 +<code - mediamtx.yml> 
 +  vcam: 
 +    runOnInit: ffmpeg -f v4l2 -i /dev/video0 -vf "transpose=2" -c:v libx264 -pix_fmt yuv420p -preset ultrafast -b:v 600k -f rtsp rtsp://localhost:$RTSP_PORT/$MTX_PATH 
 +</code>