Ed Nisley's Blog: Shop notes, electronics, firmware, machinery, 3D printing, laser cuttery, and curiosities. Contents: 100% human thinking, 0% AI slop.
Since the PiHole runs all the time, it now hosts an FTP server to stash snapshots from the cameras onto a 64 GB USB stick. I installed ProFTPD, which Just Worked with a few configuration tweaks:
UseIPv6 off
ServerName "PiHole"
DefaultRoot /mnt/cameras
RequireValidShell off
ftp_snapshot=true
ftp_host="192.168.1.2"
ftp_port=21
ftp_username=$(/bin/hostname)
ftp_password="make up your own"
ftp_stills_dir=$(/bin/hostname)
The last line uses a separate directory for each camera, although they quickly ran into the FAT32 limit of 64 K files per directory; reformatting the USB stick with an ext3 filesystem solved that problem.
My collection of old USB cameras emitted a Logitech Quickcam for Notebooks Deluxe, with a tag giving a cryptic M/N of V-UGB35. Given Logitech’s penchant for overlapping names, its USB identifiers may be more useful for positive ID:
ID 046d:08d8 Logitech, Inc. QuickCam for Notebook Deluxe
It works fine as a simple V4L camera and its 640×480 optical resolution may suffice for simple purposes, even if it’s not up to contemporary community standards.
The key disassembly step turned out to be simply pulling the pivoting base off, then recovering an errant spring clip from the Laboratory Floor:
Logitech V-UGB35 USB Camera – mount removed
The clips have a beveled side and fit into their recesses in only one orientation; there’s no need for brute force.
Removing the two obvious case screws reveals the innards:
Logitech V-UGB35 USB Camera – PCB rear
Three more screws secure the PCB:
Logitech V-UGB35 USB Camera – PCB front
The ribbed focus knob around the lens makes it more useful than a nominally fixed-focus camera.
Mary saw a fox trotting behind the garden, gripping a (dead) turkey chick in its jaws, with the hen in hot pursuit. The fox dropped the chick, circled the pine grove, picked up the chick, and departed stage right. The hen eventually led her remaining chicks into the yard, but gathered them underneath while watching for danger:
Turkey hen with chicks – alert
She settled down for a few minutes:
Turkey hen with chicks – resting
With the fox safely departed, she released the chicks:
Turkey hen with chicks – emerging
Then they returned to foraging, with one chick trying out its wings:
Turkey hen with chicks – dispersing
Two days earlier, she led nine chicks through the yard; we think the fox picked off a chick a day. She lost two more during the next four days, suggesting they rapidly improve their ability to scamper out of harm’s way.
The config/hostname.conf file (found under /system/sdcard/when the camera is running) file defines the camera’s name:
Cam4
That file overrides the contents of the usual etc/hostname.conf file, somewhat to my surprise, which remains the default Ingenic-uc1_1.
The bin/hostname utility returns the hostname:
[root@Cam4 ~]# which hostname
/bin/hostname
[root@Cam4 ~]# hostname
Cam4
You can automagically get the hostname in the on-screen display by modifying the OSD formatting variable in config/osd.conf:
OSD="$(/bin/hostname) %Y-%m-%d %H:%M:%S"
Which works because the main OSD script sources the config file to set the variable:
Xiaomi Dafang – 15-04-2019_13.26.18
It’s also helpful (at least for my purposes) to add the hostname to the image filenames. A one-line tweak in the scripts/detectionOn.sh script does the trick:
After I finish fiddling with the first camera, I’ll copy its card onto these four, unique-ify the IP addresses / hostnames /suchlike, and bring ’em all online.
Given a camera running Xiaomi Dafang Hacks software, you can set up motion-triggered image capture and save the images either locally or on an FTP server. The latter makes sense, as it automatically plunks the images where they’re more generally available.
Define the FTP server parameters in config/motion.conf:
The FTP server should have the Cam4 directory in place and shared for read-write access before attempting to plunk files therein. Ahem.
The camera’s Services menu leads to the motion configuration page:
Xiaomi Dafang – Motion Settings page
Limiting the detection region to the lower-left corner cuts out all the waving-in-the-breeze foliage in the yard, while covering the driveway. High sensitivity detects squirrel-sized objects in the foreground, although your mileage will certainly differ.
The camera seems rate-limited at 5 s/image, which may come from FTP transfer overhead; I don’t know if the code includes a built-in delay or if it just works like that. The NAS drive requires upwards of 7 s to spin up if it hasn’t been used for a while, but afterwards the transfers don’t take that long.
Mounting the NAS drive’s CIFS shared directory from my desktop PC works as before:
sudo mount -v -o rw,credentials=/root/.nas-id,vers=1.0,uid=ed -t cifs //192.168.1.10/Cam4 /mnt/part
Then view / edit / delete images as needed:
Xiaomi Dafang – IR motion capture – 15-04-2019_20.02.06
The camera has built-in IR LEDs, but they’re nowhere near powerful enough to illuminate the entire yard.