From 44ab4225e5e9294bf060ced2defbde194a286a77 Mon Sep 17 00:00:00 2001 From: arcnmx Date: Sun, 15 Sep 2024 13:00:12 -0700 Subject: [PATCH] feat(motion): living --- nixos/access/kitchencam.nix | 2 +- nixos/cameras/kitchen.nix | 5 ++-- nixos/cameras/living.nix | 49 +++++++++++++++++++++++++++++++++++++ nixos/cameras/printer.nix | 5 ++-- systems/logistics/nixos.nix | 1 + systems/sakuya/nixos.nix | 10 ++++++++ 6 files changed, 65 insertions(+), 7 deletions(-) create mode 100644 nixos/cameras/living.nix diff --git a/nixos/access/kitchencam.nix b/nixos/access/kitchencam.nix index ebce44d2..895aa351 100644 --- a/nixos/access/kitchencam.nix +++ b/nixos/access/kitchencam.nix @@ -51,7 +51,7 @@ in { }; virtualHosts = let printerCams = [2]; - kitchenCams = [1 3]; + kitchenCams = [1 3 4]; mkSubFilter = port: path: '' sub_filter '${port.protocol}://$host:${toString port.port}/' '${path}'; ''; diff --git a/nixos/cameras/kitchen.nix b/nixos/cameras/kitchen.nix index 5fcf672e..3d4cf607 100644 --- a/nixos/cameras/kitchen.nix +++ b/nixos/cameras/kitchen.nix @@ -22,7 +22,7 @@ in { services.motion.cameras.kitchencam.settings = mapDefaults { video_device = "/dev/kitchencam"; - video_params = "auto_brightness=2,palette=${toString params.${format}.palette}"; + video_params = "auto_brightness=2,power_line_frequency=2,palette=${toString params.${format}.palette}"; inherit (params.${format}) width height; framerate = 2; camera_id = 1; @@ -32,10 +32,9 @@ in { inherit (lib.strings) concatStringsSep; rules = [ ''SUBSYSTEM=="video4linux"'' - ''ACTION=="add"'' ''ATTR{index}=="0"'' - ''ATTRS{idProduct}=="2a25"'' ''ATTRS{idVendor}=="1224"'' + ''ATTRS{idProduct}=="2a25"'' ''SYMLINK+="kitchencam"'' ''OWNER="${motion.user}"'' ''TAG+="systemd"'' diff --git a/nixos/cameras/living.nix b/nixos/cameras/living.nix new file mode 100644 index 00000000..ec01cf75 --- /dev/null +++ b/nixos/cameras/living.nix @@ -0,0 +1,49 @@ +{ + config, + gensokyo-zone, + lib, + ... +}: let + inherit (gensokyo-zone.lib) mapDefaults; + inherit (config.services) motion; + format = "mjpeg"; # or "yuyv" + params = { + mjpeg = { + palette = 8; + width = 1280; + height = 720; + }; + yuyv = { + palette = 15; + width = 640; + height = 480; + }; + }; +in { + services.motion.cameras.livingcam.settings = mapDefaults { + video_device = "/dev/livingcam"; + video_params = "auto_brightness=2,brightness=72,power_line_frequency=2,palette=${toString params.${format}.palette}"; + inherit (params.${format}) width height; + #framerate = 30; + framerate = 20; + camera_id = 4; + text_left = ""; + text_right = ""; + stream_quality = 85; + }; + services.udev.extraRules = let + inherit (lib.strings) concatStringsSep; + rules = [ + ''SUBSYSTEM=="video4linux"'' + ''ATTR{index}=="0"'' + ''ATTRS{idVendor}=="1d3f"'' + ''ATTRS{idProduct}=="1120"'' + ''SYMLINK+="livingcam"'' + ''OWNER="${motion.user}"'' + ''TAG+="systemd"'' + ''ENV{SYSTEMD_WANTS}="motion.service"'' + ]; + rulesLine = concatStringsSep ", " rules; + in + rulesLine; +} diff --git a/nixos/cameras/printer.nix b/nixos/cameras/printer.nix index bf6b5ef2..f0ba000c 100644 --- a/nixos/cameras/printer.nix +++ b/nixos/cameras/printer.nix @@ -9,7 +9,7 @@ in { services.motion.cameras.printercam.settings = mapDefaults { video_device = "/dev/printercam"; - video_params = "auto_brightness=1,palette=8"; # MJPG=8, YUYV=15 + video_params = "auto_brightness=0,sharpness=5,palette=8"; # MJPG=8, YUYV=15 width = 1920; height = 1080; framerate = 4; @@ -21,10 +21,9 @@ in { inherit (lib.strings) concatStringsSep; rules = [ ''SUBSYSTEM=="video4linux"'' - ''ACTION=="add"'' ''ATTR{index}=="0"'' - ''ATTRS{idProduct}=="6366"'' ''ATTRS{idVendor}=="0c45"'' + ''ATTRS{idProduct}=="6366"'' ''SYMLINK+="printercam"'' ''OWNER="${motion.user}"'' ''TAG+="systemd"'' diff --git a/systems/logistics/nixos.nix b/systems/logistics/nixos.nix index 037c1027..bcab4df3 100644 --- a/systems/logistics/nixos.nix +++ b/systems/logistics/nixos.nix @@ -16,6 +16,7 @@ in { nixos.barcodebuddy-scanner nixos.motion nixos.cameras.kitchen + nixos.cameras.living nixos.cameras.logistics-webcam ./hardware-configuration.nix ]; diff --git a/systems/sakuya/nixos.nix b/systems/sakuya/nixos.nix index 71f98a6b..6dd9c8d0 100644 --- a/systems/sakuya/nixos.nix +++ b/systems/sakuya/nixos.nix @@ -16,6 +16,16 @@ nixos.motion nixos.cameras.printer ]; + + services.motion.cameras.printercam.settings = { + # TODO: try to limit CPU usage for now... + width = 1280; + height = 720; + framerate = 2; + text_right = ""; + stream_quality = 60; + }; + boot.loader = { grub.enable = false; generic-extlinux-compatible.enable = true;