• Make it a thesis, make it a cooperative

    Jacob04/02/2024 at 11:09 0 comments

    Long time no update!

    Make it a thesis

    tldr; Doing my B.Sc thesis on this project now, and it's looking good.

    Why not base it on an existing project?

    In the thesis prep phase I tried achieving the same goals as my project with Viseron, Frigate, Zoneminder and Moonfire-NVR; since it's more sustainable in the long run and beneficial to the community if already established projects with active communities are extended with new functionality, rather than building something entirely new. After three weeks of attempts, I gave up on extending other existing solutions, and rather went back to developing this project.


    There's now a web UI, which will be the main UI going forward.

    Users can subscribe to push notifications in the web UI, which they'll receive even if the website is closed, if their browser is running. Notifications contain a summarized list detected classes. Clicking a link in the notification opens the web UI.

    The web UI is adaptive, and its vertical layout accommodates any number of video feeds. Individual streams can be full-screened.

    Zero-Trust mode using openziti partially works. The web UI can be opened, but no videos can be reached and the user can't subscribe to push notifications since the browser context isn't secure (SSL) yet.


    Full feature parity in zero-trust mode.

    High-priority, easily-noticed webpush notifications when specific classes (predators) are detected.

    Notifications contain a reference to which video source is the originator.

    Ability to unsubscribe from push notifications.

    Anonymization of detected persons using black rectangles, to preserve privacy.

    Videos are saved in a ring buffer, and are scrollable in the web UI.

    Ability to change certain configuration parameters from the web UI.

    Per-source polygon-based relative positioned ROI; with detection constrained to those regions to save compute resources.

    Email notifications containing the image and its detections.

    Locally collect images and detections of predators, giving users a one-click method to send them to developer (with explicit, per-batch consent), to train more precise predator detection models.

    Containerize the app.

    Make relay/connection boxes for distributed farm operations with multiple networks.

    Guided setup.

    ONVIF auto-discovery of local RTSP sources.

    Integration with flying camera drones, and their automatic mission control systems.

    No external scripts in the web UI.

    Make it a cooperative

    tldr; I made a software/hardware consultancy business, and I'd love to cooperate with others (preferably in a worker-owned cooperative) to realize this project as a business and get it in the hands of farmers.

    Value proposition for worker-members

    Own your work, get the direct value of your efforts.

    Work from anywhere.

    Wrestle control from big tech and sketchy surveillance camera manufacturers using Free Software.

    Know you're helping reduce carbon footprint per unit of animal product.

    Value proposition of the business

    Providing advanced alert-and-repel systems to farmers that's easy to set up, use and maintain. Expandable to other user groups as well, like nature photographers.

    Pay for a box preloaded with software, chuck it in your network and follow a quick setup guide.

    Pay a subscription fee to securely access the web UI from anywhere using zero trust networking, or roll your own deployment for free using a web server.


    This project should really be developed further and deployed more widely, but my expertise lies in software and hardware, not business. I'm no robot yet and thus the need to eat persists. Until now I've spent roughly 600 hours on the project, and will probably spend 200 more before my thesis is finished in May. This is the kind of thing I want to do for a living, and I sure don't want sell out to some capitalist, or become one myself.

    What the project needs to succeed

    * Someone to handle the administration/business side of things

    * Preferably someone well-versed...

    Read more »

  • Short Update

    Jacob08/13/2023 at 21:49 0 comments

    So a couple things... but first

    Coding stuff

    I've started on the auto-discovery-&-connect feature leveraging onvif. Because onvif on python is somewhat stale, I couldn't find any libraries that do exactly what I want. The closest thing is pyOnvif, so I forked it here in an effort to update and adapt it to my usecase.

    Turns out my cameras aren't exactly compliant to the onvif schema standard, so they were completely invisible to the built-in discovery method of the library. A bit of cross-eyed examination revealed that my cameras have different xml leading characters from standard. Sooo I added some logic to handle such cases to my fork of the pyOnvif.

    xml is pretty powerful and it's not like pyOnvif uses much of the power, so I moved it to defusedxml which defends against many exploits.

    House keeping

    I'm currently on welfare, with required welfare activities. I'm trying to get some time off from those activities/work in order to do more work on this software.

    In order to do that, I need to prove that there is an interest and a need for this software.

    If you're a farmer, could you comment how a solution like what I'm trying to make here, would help you?

    If a finished solution were to be sold as a product (either local, simple install or even easier Software-as-a-Service), what would you pay for it?

    Can someone help me find funding?

  • quick overview of status

    Jacob06/16/2023 at 09:08 0 comments

    # So, this is the current state

    ## For users:

    • Documentation is lacking.
    • Ethical guidelines are lacking.
    • You need to figure out yourself how to connect to your camera / video source.
    • Alerts aren't implemented yet.
    • The model is bog standard YOLO v8. ---> Predator recognition doesn't work yet.
    • We need more relevant image datasets, to train the model.

    ## For developers:

    • Documentation is lacking
    • I'm trying to run Labelstudio locally, with auto-annotation. But having issues. Please help out if you know some way to do active learning or some other simple way of gradually improving recognition of ~20 object classes on a growing dataset.
    • I don't want to make a mobile app, because it seems to be a fairly large and fragmented target. I'd rather make a webapp, and have people "install it" on their device of choice (by placing a shortcut on their desktop/homescreen). I don't know how to make a webapp either, so if anyone can help out with that, great.
    • Planning to implement ONVIF video source recognition to ease setup. This I can do.
    • Planning to eventually distribute on Pypi. I don't know how to package, but it seems at least somewhat straightforward.
    • RE: following established coding guidelines... I am self taught, and coding guidelines with classes and separate subscripts for each major function is a little confusing for me. I'd still like the project to follow guidelines so that most capable people feel comfortable contributing and to ease maintenance. If you can help with that, please do.