This is the forum archive of Homey. For more information about Homey, visit the Official Homey website.

The Homey Community has been moved to https://community.athom.com.

This forum is now read-only for archive purposes.

[HTTP] Shinobi controls (camera management + Homey)

VleegeVleege Member
edited February 2018 in Developers
[Updated]
First my question was if someone was able to make Homey work with the API of Zoneminder of could build an app for it to work together.
In the meantime I switched CCTV software and using Shinobi CCTV (shinobi.video). With a well documented API I achieved synergy between Homey and Shinobi.
Interested? Read ahead in the comments.

[Old app request]
Zoneminder is camera management /surveillance software which can be installed on Linux and several NAS appliances. It can replace software like Synology Surveillance Station and ReadyNAS Surveillance so you don't have to buy licenses for each camera.
It works with almost every camera and has a great mobile app (paid) zmNinja. So I can recommend this to all you out there looking for a free and opensource surveillance system.

But all of this would be more intelligent if the system only records depending on if someone's at home and awake.
This is why I post this message here; is there someone interested and capable of building an Homey app for it to interact with it.
I don't expect Homey to get the same features as offered in this software and don't even think that it's resources are capable to do such a job so are hoping that integrating some triggers into flows can combine both systems powers.

Technical
Zoneminder has an API which can control states of the software or each individual camera or could send you a snapshot of what is happening on one of your cameras.
http://zoneminder.readthedocs.io/en/latest/api.html

What should it do then?
Create triggers which can be used in flows for:
- taking a snapshot
- changing the state of Zoneminder

Unfortunatly I'm not capable understanding the API documentation and have no nodejs programming skills.
I though this even could be possible with the HTTP Get app but due to the fact that I don't get the documentation of that app I can't imagine getting that to work.

Comments

  • @mod: this conversation can be closed as I found an alternative (Shinobi). I will have a look at the API (https://github.com/moeiscool/Shinobi/wiki/API-Access) when there's time.
  • BartWijersBartWijers Member
    edited February 2018
    Hi Vleege, I did some testing with nodejs and the zoneminder API and did get it working. If you need some help pm me!
  • Hi Vleege, I did some testing with nodejs and the zoneminder API and did get it working. If you need some help pm me!
    Hi Bart,

    When looking through the documentation of ZoneMinder I came accross Shinobi CCTV (https://shinobi.video/).
    This platform for CCTV is just like ZoneMinder free but more modern as described on this page: https://shinobi.video/articles/2017-07-29-why-not-just-use-zoneminder
    As example: no need for an mobile app because of a resposive HTML design which adjusts to you mobile screen and gives you all the same options as if you are working on your desktop.

    Of what I read in de api documentation is the api more powerfull. This made me decide to move to Shinobi, and with success.
    I haven't got time to experiment much but achieved integrating a H.264 stream to MJPEG into Homeydash. This looks promising arming cams later on.

    I don't know if you are totally satisfied with ZoneMinder. If you are into trying Shinobi I can keep you updated on de progress I make integrating Shinobi with Homey.
  • I forgot to mention that Shinobi lets you export cam configuration. A feature that is missing in ZoneMinder which I've (manually) configured many times on several Linux distros and could have saved my some time in the past.
  • VleegeVleege Member
    edited February 2018
    You triggered me to have a look a this directly.

    With Shinobi it is as easy as using a HTTP request get card in the then column with the following value "http://xxx.xxx.xxx.xxx/[API KEY]/monitor/[GROUP KEY]/[MONITOR ID]/[MODE]"
    Explanation of the tags https://github.com/moeiscool/Shinobi/wiki/API-Access#set-mode-of-camera-record-watch-or-stop-from-http

    Make sure you have an API key defined: click the email address in the upper-left-hand corner, click API: now define the IP to restrict the API use to (or use 0.0.0.0) and set the rights.

    It is advisable to use the motion detection plugin for efficient recording (see net post).
  • I'll pretend someone is interested  :D
    Let's say for future reference.

    Below are configuration changes I've made to adjust it to my needs.
    I'm using Lubuntu as my guest OS running as an VM.

    Motion detection plugin:
    - Install by following the steps on https://shinobi.video/docs/motion

    Auto start motion detection plugin:
    - pm2 start /<install_dir>/Plugins/motion/Shinobi-motion.js
    - pm2 list
    - pm2 startup
    - pm2 save


    Define second storage (I use local storage on my VM host):
    - Create a directory on your host / NAS
    - Mount the directory in Linux: mount -t cifs -o username=<user>,password=<password> //<host_ip>/<directoryname_from_step1> /<name_of_mounting_point>
    - Make mount persistent: 
    -- vi /etc/fstab
    -- add the following rule at the end (spaces are tabs):  //<host_ip>/<directoryname_from_step1> /<name_of_mounting_point> cifs _netdev,username=<user>,password=<password>,dir_mode=0755,uid=500,gid=500 0 0
    - configure second storage:
    -- vi /<install_dir>/conf.json
    -- change the following:
        "addStorage": [
            {"name":"<name_of_storage_location_in_Shinobi>","path":"/<name_of_mounting_point>"}
        ],

    Shinobi does not tell me the free space on the mounted volume although I can see it with the df -h command.
    This is something I'm still working on.
  • VleegeVleege Member
    edited February 2018
    This one I don't have in production yet so I don't know exactly what you will need.
    But I guess you could use the snapshot URL http://xxx.xxx.xxx.xxx/[API KEY]/jpeg/[GROUP KEY]/[MONITOR ID]/s.jpg (documentation: https://shinobi.video/docs/api#content-get-streams) and create a image token using the Image Grabber app (https://apps.athom.com/app/image.grabber). 
    The image could be send by e-mail / Telegram using thier apps from the Homey app store.

    What I am using is a mjpeg stream on HomeyDash (locally installed).
    This requires you to configure the Stream section from your camera preferences (edit monitor). For me defining stream type (mjpeg), width and height was enough to get an image on the other end (HomeyDash).

    URL you're going to be using on HomeyDash is like this:
    http://xxx.xxx.xxx.xxx/[API KEY]/mjpeg/[GROUP KEY]/[MONITOR ID]
Sign In or Register to comment.