diff options
| author | Pliable Pixels <pliablepixels@gmail.com> | 2019-03-15 09:10:21 -0400 |
|---|---|---|
| committer | Pliable Pixels <pliablepixels@gmail.com> | 2019-03-15 09:10:21 -0400 |
| commit | 143e6d4a5f2ecf4b83507bfe96ff6b98bcb40abe (patch) | |
| tree | b66c268676270d00bb6f41e9759a4b858661f1b5 /docs/_build/html/_sources | |
| parent | 0ff338a5dcad70956e18bc336b2bd79d152a23d9 (diff) | |
migrate to sphinx
Diffstat (limited to 'docs/_build/html/_sources')
| -rw-r--r-- | docs/_build/html/_sources/FAQ.rst.txt | 754 | ||||
| -rw-r--r-- | docs/_build/html/_sources/desktop.rst.txt | 113 | ||||
| -rw-r--r-- | docs/_build/html/_sources/index.rst.txt | 27 | ||||
| -rw-r--r-- | docs/_build/html/_sources/source.rst.txt | 260 | ||||
| -rw-r--r-- | docs/_build/html/_sources/validating-api.rst.txt | 95 |
5 files changed, 1249 insertions, 0 deletions
diff --git a/docs/_build/html/_sources/FAQ.rst.txt b/docs/_build/html/_sources/FAQ.rst.txt new file mode 100644 index 00000000..c5ecc3c6 --- /dev/null +++ b/docs/_build/html/_sources/FAQ.rst.txt @@ -0,0 +1,754 @@ +zmNinja FAQ +``````````` + +What is the minimum supported version of ZoneMinder, Android and iOS? +--------------------------------------------------------------------- + +You need a minimum of ZM 1.30.4 with APIs working. You may get it to run +in previous versions, but I don't support them, so you are on your own. + +Starting version 1.3.26 of zmNinja, only IOS 10+ and Android 5.0+ +devices are supported. + +zmNinja Help +------------ + +I've just started uploading instructional videos for zmNinja. I'll add +more over time. See them +`here <https://github.com/pliablepixels/zmNinja/wiki/Help-Videos-for-zmNinja>`__ + +Asking for refunds +------------------ + +If you have bought the iOS version of the app, it doesn't look like I +can process a refund anymore. If any developer knows how, please let me +know. Apple wants you to contact them directly using +`this <https://support.apple.com/en-us/HT204084>`__ link. + +For Android: If you're not happy with zmNinja and have bought the app, +please `send me an email <mailto:pliablepixels@gmail.com>`__ **with your +order id**. + +Note that depending on how long ago you made the order, I may not be +able to refund. Its not my policy - The app/play stores disable the +refund option. For example, I could not refund an app a user purchased 2 +years ago. + +Also, please read `Things you should own up +to <#things-you-should-own-up-to>`__ + +Things you should own up to +--------------------------- + +Read the app description +~~~~~~~~~~~~~~~~~~~~~~~~ + +Both the Apple and Android stores have a clearly visible note on the app +description that it requires a working API for ZoneMinder. If you are +not willing to ensure the API works, please save yourself and me time. +I'm sorry this is the first post, but I get emails from too many +entitled/rude folks about APIs not working. Not my problem. Read below. +Breathe. + +Try before buy +~~~~~~~~~~~~~~ + +Some users legitimately look around for an option to try before they buy +and they are not savvy enough to `download the +code <https://github.com/pliablepixels/zmNinja>`__ and +`compile <https://github.com/pliablepixels/zmNinja/wiki/Running-zmNinja-from-Source>`__ +themselves. Fair enough. In that case, `download the Desktop +version <https://github.com/pliablepixels/zmNinja/releases>`__ of +zmNinja. It's free and is the same code as mobile. Make sure the desktop +version works before you buy the mobile version. + +The reason I don't have a "trial mobile version" is that I find the +process too complex using in-app-purchases and chose not to do it to +make life simpler for me. As a substitute, I do make the full code +available for free and offer a desktop binary version free too. + +zmNinja doesn't work. Actually, even ZoneMinder web console doesn't work. You should fix this! +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +Yeah, look - I understand zmNinja won't work if ZoneMinder web console +doesn't work. That being said, I really don't have time to help you +debug ZoneMinder issues. I only develop the app (zmNinja). If you can't +set up ZoneMinder properly, please post your questions in the `ZM +forum <https://forums.zoneminder.com>`__. You'll find more qualified +people to help you. I don't develop nor control ZoneMinder. It's a +different set of folks. Now, I'll help you, but only after you have +spent sufficient time trying your best and provide sufficient logs of +what you have done. Also remember, if you buy zmNinja, **I'm happy to +refund it anytime - just send me an email.** + +In short, I don't have the time to support ZoneMinder install issues - +sorry about that + +zmNinja doesn't work. Zoneminder works, but I have no idea why APIs don't work. You should fix this! +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +*Sigh*. I don't maintain ZoneMinder. I only develop the app. *You* need +to make sure ZoneMinder APIs work. ZoneMinder web console doesn't use +APIs. Neither does zmView. zmNinja does. It says so in the description +of the app in the store. So feel free to fix your APIs, or ask me for a +refund. Just don't whine to me, please, if your APIs are broken. I'm +*not* going to fix them for you, especially if you act like its not your +problem. `I'm perfectly fine if you choose not to use my +app <https://medium.com/zmninja/no-soup-for-you-42ac0927952>`__, which +is why I refund, anytime. + +I can't compile zmNinja, help me! +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +I put out the source code, so people who know how to compile are able to +do it themselves. I also hope this will encourage folks to PR changes +(though this has rarely happened). The problem however, is that +dependencies/libraries keep changing. I just don't have the time to help +debug. If it happens to me, I'll fix it. If it doesn't I have very +limited time to remotely debug your setup issues. I'd much appreciate if +you figured it out on your own. Feel free to create an issue after +you've tried enough, but I can't guarantee I'll spend a lot of time on +source code compile issues. + +How to report errors +~~~~~~~~~~~~~~~~~~~~ + +- I don't know why something is not working if you don't provide + sufficient inputs. Start by creating a `GitHub + issue <https://github.com/pliablepixels/zmNinja/issues>`__ and please + fill in the template correctly. If you don't want to post debug logs + in the issue, `email <mailto:pliablepixels+zmNinja@gmail.com>`__ them + to me and mention in the issue you've emailed them (you can email by + going to logs screen and tapping on the envelope button (mobile) or + you can download logs (cloud icon, desktop version) + +- If zmNinja was working, but it stopped after you upgraded ZoneMinder + be sure to mention which version was working and which was not. In + this case, please make sure you have validated the APIs work + +- Before you create an issue, please make sure you have read the + sections on `connection + issues <https://github.com/pliablepixels/zmNinja/wiki/FAQ#connectionauthentication-issues>`__ + and + `streaming <https://github.com/pliablepixels/zmNinja/wiki/FAQ#live-streaming-issues>`__ + issues and `Step 6 of + validating <https://github.com/pliablepixels/zmNinja/wiki/Validating-if-APIs-work-on-ZM>`__ + APIs. + +- Its often hard to infer a problem especially when its due to some + unique apache/nginx mungling you might have done but haven't told me + about it. In such cases, try and give me remote access to your ZM for + a day. Configure a limited user with just one monitor. It will save + hours of frustration (mostly on my side). Thanks + +- I have released the desktop version free - download it + `here <https://github.com/pliablepixels/zmNinja/releases>`__. Its + always easier to debug on the desktop version - give it a try. If you + hit Shift+Cmd/Ctrl+D it brings up a debug window - it helps debugging + +- Always tell me what your ZoneMinder & zmNinja versions are + +- If your app suddenly stopped working: + + - Send me DEBUG logs of the app + - tell me what changed (got to be something. You updated the app, + you upgraded ZM) + - What exactly is not working? + +Profile information storage related +----------------------------------- + +zmNinja is not saving my information. It keeps asking me to re-enter all my data +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +I've seen this happen in two cases: \* You are running out of space. +Clean up some space and try again \* On specific Android devices, +typically running Android OS less than 6.0, some (2-3) users have +reported this issue. I still don't have a good answer. Please update to +the latest app version and send me debug logs, please + +I updated my zmNinja app and all my server settings were cleared. Why? +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +Sorry. I've made several releases where due to programming errors, +settings got wiped out. However, starting v1.3.021 for Android and +v1.3.025 for Android, I've introduced the facility to sync with the +cloud (Google Drive/iCloud). This is the settings option. It is enabled +by default. This means if you uninstall the app and install again, the +settings should get restored. Note that both in iOS and Android, backup +schedule is managed by the OS. You can force a backup going to settings +and forcing a backup, or wait till the OS backups (typically a few +hours/phone plugged in/not being used) + +Do also note that 1.3.027 and beyond use a new WebView called WKWebView +(because iOS deprecated the old webview). If you disabled iCloud you +will have to re-enter your settings again (only once). This may not +affect Android, but I don't know for sure. + +Connection/Authentication issues +-------------------------------- + +General tips +~~~~~~~~~~~~ + +- Disable server redirects like 302 and then try if using the mobile + app +- To make sure there are no connection issues, launch your **phone + browser** and try to reach ZoneMinder. If that doesn't work, neither + with zmNinja. Many users try to access ZoneMinder from a desktop + browser and/or on the same server it is running and forget the phone + is a different device! +- Some phones need the SSL certificate installed in the device +- Specific SSL settings can cause issues with Android or iOS +- Don't use funky/special characters in passwords - try changing it to + a complex password without funky characters and try +- Use the wizard - I've seen many examples of typos when the user + thinks they don't have a typo +- If you are using basic authentication, make sure your credentials are + correct. A good way to test is to first disable basic auth and enable + it after you are sure things work without basic auth. +- Please note zmNinja does NOT support Digest authentication. So please + don't put in digest auth info when zmNinja asks for basic + authentication +- Look at your ZM logs and zmNinja logs - they help isolate the problem + +Server Redirects +~~~~~~~~~~~~~~~~ + +If the Wizard fails to connect in the mobile app but works in the +desktop app, it may be that your server is sending redirects. +Unfortunately, the current mobile HTTP stack doesn't handle cookies with +redirects well. Till this bug is fixed by the plugin author Wizard won't +work. Note that if you are running ZM 1.32 or above, you can directly +enter your settings without using the wizard and it will work because it +will try and use the new ZM 1.32 ``login.json`` API first. + +Self signed certs +~~~~~~~~~~~~~~~~~ + +A lot of people use self-signed certs. I'd strongly recommend you use +`LetsEncrypt <https://letsencrypt.org>`__ if you can. It's free. That +being said zmNinja does support self signed certs. Make sure "Enable +Strict SSL" is off in Developer settings. You will need to restart the +app. + +SSL settings +~~~~~~~~~~~~ + +If you are getting ``SSL protocol/handshake errors`` in your logs, you +very likely have specific ssl settings enabled server side that your +device network stack does not support. Note that just because it works +with the device browser does not mean it will work with zmNinja as +zmNinja does not use the browser HTTP implementation in mobile devices. + +One use reported that a setting of ``ssl_ecdh_curve secp384r1`` in his +nginx config was resulting in zmNinja Android not being able to connect +to the server. Changing it to +``ssl_ecdh_curve secp521r1:secp384r1:prime256v1;`` worked for him. + +I'd strongly recommend you remove all special ssl settings except the +certificate and key file locations, make it work and then add the +settings back one by one and see what works/does not work. + +Everything works when I use LAN IP, but I get "not authenticated" when I use WAN IP +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +This is likely happening if you use self signed SSL certs. If you are +using self signed certificated, you should make sure the "common name" +matches the hostname (or public IP) of the server you are installing ZM +in. If not, zmNinja's SSL handshake will fail. + +If you have used 'make-ssl-cert' or a similar tool that automatically +generates the cert for you, its very likely you have certificate that +uses the 'unix hostname' of your server. That will not work. + +Assuming you are usin apache and have SSL enabled, here is how to +regenerate the certs (ubuntu specific, may need to tweak it for your +distro) + +This will create a self-signed certificate/key pair and store it in +/etc/apache2/ssl (you may have to create that directory, or store it +elsewhere) + +:: + + sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/apache2/ssl/zoneminder.key -out /etc/apache2/ssl/zoneminder.crt + +Next up, edit your apache ssl config (example +/etc/apache2/sites-available/default-ssl.conf) And add/modify the +following lines: + +:: + + SSLCertificateFile /etc/apache2/ssl/zoneminder.crt + SSLCertificateKeyFile /etc/apache2/ssl/zoneminder.key + +restart apache + +:: + + sudo service apache2 restart + +Live streaming issues +--------------------- + +Summary of Everything works, but I can't see live feed +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +*Please* be diligent in reviewing this list. You'd be surprised how many +times I've had users tell me 'they have checked this list' only to find +out later they skimmed details. + +- Please enable ``AUTH_HASH_LOGINS`` as well as set ``AUTH_RELAY`` to + "hashed" + +- You think your APIs are working, but they are really not. If you open + a browser and type in ``https://yourserver/zm/api/monitors.json`` and + you see some text on top followed by monitor data, your APIs are + *not* working. You need to search the forums and figure out how to + get rid of that text. + +- Your ZoneMinder live view from the web console doesn't work either. + If this is the case, fix ZoneMinder first. Before you say "web + console works fine", make sure you are running it from a different + computer from where ZM is running. +- The phone/computer running zmNinja does not have access to your ZM + server. For example, many people test the web console on their LAN + but test zmninja on a WAN connection +- Always try with the `free desktop + version <https://github.com/pliablepixels/zmNinja/releases>`__ first. + Enable debug view by hitting Ctrl/Cmd+Alt+D and you can see debug + logs in the console view. I can't emphasize enough how useful this + is. +- Your ``cgi-bin`` setting in zmNinja is incorrect. Please run the + wizard. There are times when the wizard can fail. In those cases, + open up ZM web console, go to view the monitor and do an "Inspect + Source" in the browser. That will show you the cgi-bin link that you + can use in zmNinja. + +For example: + +In the above case my zmNinja cgi-bin setting is +``https://myserver:myport/zm/cgi-bin`` + +- You are using Basic Authentication. See + `here <#i-cant-see-streams-i-use-basic-auth>`__ +- You have 'multi-server' configuration enabled and you have done it + wrong. Go to ZM Web Console->Options->Servers - if you see any + entries there and you don't know what multi-server is, or you don't + use it, please disable multi-server +- When trying to view live images, look at your *webserver* error logs + - example Apache's ``error.log`` - see any image/jpg errors? That + means you are missing libraries +- You have set up a multi-server install of ZM without knowing you did + See `here <#i-cant-see-streams--multi-server-is-enabled>`__ +- Look at zmNinja, ZoneMinder and web server error logs at the time of + error - one of them should give more clues. Please send me *all* the + logs if you ask for help +- Read the set of notes below + +General note +~~~~~~~~~~~~ + +To debug streaming notes, always try with the free desktop version +first. When trying to stream simultaneously look at the debug logs of +zmNinja (``Ctrl/Cmd+Alt+D`` in desktop build, console and/or network +tab) and your webserver error logs. + +I can't see stream: And I can't see streams in ZoneMinder webconsole either +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +Check if streaming works in the web interface. If it does not work, +zmNinja won't work either. Fix ZM first + +I can't see streams: I use basic auth +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +Starting Chrome v59, the browser changed basic credential behavior. The +issue report is +`here <https://bugs.chromium.org/p/chromium/issues/detail?id=435547#c33>`__. +Here is the core issue: zmNinja constructs URLs as +``http://user:password@server`` when you have basic auth (and starting +v1.3 uses the ``Authorization`` header). However, since images are +rendered using ``<img src>`` there is no option but to put in a +``user:password`` in the URL. Chrome allows this format for direct +requests (such as API calls) but will strip out the ``user:password`` +part for *embedded* requests (like ``<img src="">`` tags inside a page). +So what happens is your APIs work, but you won't see images. There is a +reason why Chrome does this - its bad to pass on a user :password in a +URL as its clear text (even if you are on HTTPS, as its in the URL). As +I said earlier, The *right* way to do this is to replace the +``user:pass`` with an ``Authorization`` header but there is no way to do +that with images that are rendered with ``<img src>`` (There are several +plugins that attempt to do this, but don't work with streaming MJPEG +images). Bottom line, this is a problem for apps like zmNinja and it +affects you. + +How this affects you: \* If you are using HTTP Basic Authentication + +Then your images won't show. + +Possible Workarounds: \* Configure your web server to skip basic +authentication for ``nph-zms`` URLs \* If you are using a ReverseProxy, +you can insert the authorization header inside the apache proxy \* +Disable HTTP Basic auth for now \* Downgrade Chrome + +Skipping auth for ``nph-zms`` URLs +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Here is what I've used that works with basic-auth. This requires a basic +auth portal login and once logged in allows skipping of image URLs (the +idea comes from `Adam Outler <https://github.com/adamoutler>`__ - he +uses a different approach using reverse proxies, which I link to later) + +.. code:: apache + + # this configuration assumes your server portal is server:port/zm + # and cgi-path is /zm/cgi-bin. Please change it to your specific environment + # Also requires Apache 2.4 or above + + <Location /> + SetEnvIf Request_URI ^/zm/cgi-bin/ noauth=1 + SetEnvIf Request_URI ^/zm/index.php noauth=1 + AuthType Basic + AuthName "Auth Required" + AuthUserFile "/etc/apache2/.htpasswd" + <RequireAny> + Require valid-user + Require env noauth + </RequireAny> + </Location> + +Authorization with a ReverseProxy +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Simple starter +'''''''''''''' + +**STEP 1**: Enable "Append basic auth tokens in images" option in +zmNinja->Developer Settings and save. What this does is that image URLs +will append a "basicauth" token parameter with your basic authentication +credentials. This token can then be parsed by Apache and inserted as a +valid Authorization header. Don't enable this option if you are not +using HTTPS because the request-URI will be transmitted without +encryption and it will contain your basic auth credentials, encoded in +base64, which is trivial to decode. + +**STEP 2 (Apache)**: Use mod\_rewrite and mod\_header to convert the +token into an authorization in your Apache config. Add this to the +relevant section (``VirtualHost`` or others) + +.. code:: apache + + RewriteEngine on + RewriteCond %{QUERY_STRING} (?:^|&)basicauth=([^&]+) + RewriteRule (.*) - [E=QS_TOKEN:%1] + RequestHeader set Authorization "Basic %{QS_TOKEN}e" env=QS_TOKEN + +**STEP 2 (Nginx)**: Thanks to user [@ysammy](https://github.com/ysammy) + +.. code:: nginx + + location /zm/cgi-bin/nph-zms { + proxy_pass http://<IP>:<PORT>/zm/cgi-bin/nph-zms; + proxy_set_header Authorization "Basic $arg_basicauth"; + } + +A more complete and more secure option +'''''''''''''''''''''''''''''''''''''' + +User `Adam Outler <https://github.com/adamoutler>`__ has contributed the +following process: see +`HERE <https://github.com/pliablepixels/zmNinja/wiki/Apache-Proxy-Authorization-with-HTTPS,-Basic-Auth,-and-ProxyPass>`__. +Adam also has this to say about why proxies should be recommended for +HTTPS enabled ZoneMinder instances: + + A proxy server should be on the list of recommendations for + Zoneminder. HTTPS requires processing to encrypt and decrypt. This + takes processor cycles away from Zoneminder's recording. Since HTTPS + is now basically a requirement, there should be a page dedicated to + proxy, https, auth, and their nuances. I just picked up 2-4K cameras + and processing suddenly became an issue :). + +I can't see streams: Multi-server is enabled +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +The chances are very high that you have enabled ZoneMinder's +`Multi-Server <http://zoneminder.readthedocs.io/en/stable/installationguide/multiserver.html>`__ +option and you entered something like ``localhost`` in server settings. +**DON'T. You can't enter localhost**. If you are not using multi-server, +remove any server settings. If you are using multi-server, you need to +put in a valid server IP or hostname, not ``localhost``. BTW, if you did +put in ``localhost`` you will note that your ZM web console also won't +work if you try to launch your browser on a different machine from where +ZM is running. + +I can't see streams: you have cgi-bin issues +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +- Try to use the wizard. If it fails, +- Go to zmNinja settings and fix your cgi-bin path. the automatic path + that is filled in won't work. Here is a hint, go to + zoneminder->options->paths and check the value of the cgi-bin path - + your zmNinja path will be "base path of your server" + cgi-bin path. + +zmNinja montage does not seem smooth - feeds seem a little delayed compared to ZM console +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +zmNinja does not use ``nph-zms`` to display live feeds in montage. This +is because Chrome only allows a maximum of 6 connections per (sub)domain +which means you can't have more than 6 active TCP connections to a +single domain at the same time. This also means that you can't display +more than 6 monitors together. To avoid this, I use the zoneminder +"snapshot" feature that displays a still from the monitor and then +refresh it every X seconds (by default X=2 unless you switch to low +bandwidth mode. You can change X in developer settings) + +That being said, starting v1.3.0 of zmNinja onwards, I now support +multi-port (available in ZM 1.32 onwards) that lets you stream as many +monitors as you need. Read +`this <https://medium.com/zmninja/multi-port-storage-areas-and-more-d5836a336c93>`__ +post for more details. + +Event images/streaming related +------------------------------ + +General note +~~~~~~~~~~~~ + +To debug streaming notes, always try with the free desktop version +first. When trying to stream simultaneously look at the debug logs of +zmNinja (``Ctrl/Cmd+Alt+D`` in desktop build, console and/or network +tab) and your webserver error logs. + +Also, Starting ZM 1.32 and beyond, please enable ``AUTH_HASH_LOGINS`` as +well as set ``AUTH_RELAY`` to "hashed" + +Event stream viewing does not work +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +- Look at apache error logs - it often gives you hints + +Video Not Playable +~~~~~~~~~~~~~~~~~~ + +- Mobile devices have more restrictions to video playback than + destkops. Make sure you first check if the video is playable in + Chrome using the same phone you are using zmNinja on +- There could be other reasons due to which the video is not playable: +- There is an encoding issue in the video generated +- The video resolution is too big (see `this + thread <https://forums.zoneminder.com/viewtopic.php?f=33&p=108788#p108774>`__) +- In general, to get to the root of what is going on, you'll need + device logs using ADB (see + `this <https://forums.zoneminder.com/viewtopic.php?f=33&p=108788#p108753>`__) + +Event thumbnails/images don't show +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +Starting zmNinja 1.3.26 and beyond, if you are using OPT\_AUTH you need +to enable AUTH\_HASH\_LOGINS or you won't be able to see image snapshots +and thumbnails. Only applicable for mobiles. + +When viewing individual frames, some event frames show, but some don't +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +This can happen if you are using Video Storage (Passthru or X264 Encode) +and have disabled frame (JPEG) storage completely. What happens is +ZoneMinder uses ``ffmpeg`` to extract frames from timestamps and +sometimes it is unable to extract a frame for a specific timestamp, +resulting in this issue. If you see HTTP 404 messages for some frames, +but the video plays fine, then this is why. + +zmNinja montage screen shows all my monitors, but in Event Montage, I only see 5? +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +You are likely using Chrome (Android or desktop version). Chrome allows +a total of 6 simultaneous connections to a domain/sub-domain. ZoneMinder +uses a long running TCP stream for each monitor display (keeps sending +jpeg images). This means you can only display 6 streams at a time in +Chrome. I work around this problem by *not* asking for live streams in +montages - I ask for 'snapshots' and keep refreshing snapshots every 2 +seconds. This makes montage display non-realtime, but scales to as many +monitors you have. In Event Montage however, I am using zms to display +long running streams - trying to do snapshots in event montage is a lot +of work and I need to keep track of when the event ends, move to next +image etc. I limit this to 5 because I need 1 for control messages. + +Other misc. issues +------------------ + +I suddently see an error message saying I need to enable ZM\_AUTH\_HASH\_LOGINS. This wasn't there before +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +Yes. Starting 1.3.027 onwards, due to a new UI web rendering engine that +enforces CORS, I've had to change my strategy on how network calls are +made. Briefly, on mobile devices, I now use a native HTTP stack and not +the browser HTTP stack. However, images are rendered using the browser +HTTP stack which causes this message. In short, you need to enable it, +and restart ZM. + +zmNinja 1.2.515 and beyond says "Need API Upgrade" for the 24hr review feature. What does that mean? +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +You need to update an API file in Zoneminder server. ZoneMinder folks +haven't yet (as of Apr 2018) made a release with that API change. To do +it manually,simply replace your ``EventsController.php`` (typically in +``/usr/share/zoneminder/www/api/app/Controller``) with `this +one <https://raw.githubusercontent.com/ZoneMinder/zoneminder/85b7baa13178a838fe9fae94405c99fe7d2c669c/web/api/app/Controller/EventsController.php>`__. + +I upgraded ZoneMinder to 1.30.2 or above and zmNinja stopped working! +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +ZoneMinder changed API packaging with ZM 1.30.2 and above. You will have +to read your distro notes on how to **properly** update. Read +`this <https://forums.zoneminder.com/viewtopic.php?f=36&t=26002&start=30&hilit=api+broken>`__ +thread. Before you think zmNinja is the problem, make sure your `APIs +are +working <https://github.com/pliablepixels/zmNinja/wiki/Validating-if-APIs-work-on-ZM>`__. +Summary of reasons why zmNinja might have stopped working: - You did not +check if your APIs are working after the upgrade - You did not upgrade +properly (just updating the ZM package without following distro +instructions with ZM is not sufficient) - You are missing some key +CakePHP modules, likely ``php5-apc`` which would have been installed if +you read all the package instructions. You can install it manually - You +might need to restart your system after upgrading (properly) + +I am running ZM on a custom port. zmNinja is unable to reach my ZoneMinder server but I tried on a regular browser (Firefox/Opera/IE) and it I can reach it +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +zmNinja on Android and Desktops uses an embedded chrome browser. Chrome +marks certain ports as "unsafe" and won't allow connections to go out. +The list of ports to avoid are +`here <http://tech-stuff.org/which-ports-are-considered-unsafe-in-browsers/>`__ + +The Montage screen is causing issues with my ZM server - I get connection timeout issues or MySQL connection problems +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +- zmNinja uses a different approach to display montage than ZoneMinder. + In zmNinja montage screen, I display a snapshot of each monitor and + refresh it every few seconds. This results in many short TCP + connections constantly being opened and closed. The reason I have to + do this is Chrome only allows 6 connections to a domain, which means + if I don't keep terminating TCP connections, I won't be able to show + more than 6 monitors. Each time I open a new TCP connection for a + snapshot, the ZM backend invokes mySQL to authenticate the request. + You will need to increase mySQL ``max_connections`` in ``my.cnf`` if + you are facing time\_wait/timeout issues. + +The app works great - except it doesn't work on ONE Android phone - works in others! +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +zmNinja uses an embedded chrome browser in its app. If you have safe +browsing enabled, it may affect zmNinja. However, if you are facing this +problem, its likely you can't access ZM from a mobile web browser +either. The problem that might be occurring is that zmNinja is trying to +reach your ZM server and your settings prohibit it from reaching ZM, so +it fails. See +`this <https://forums.zoneminder.com/viewtopic.php?f=33&t=25946>`__ +discussion + +APIs are not working ! ZM console works fine. +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +Read +`this <https://github.com/pliablepixels/zmNinja/wiki/Validating-if-APIs-work-on-ZM>`__ + +I'm using mocord/record and I don't see events without alarms +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +Tap on the "..." menu option and toggle "Show all events". By default, +it shows events with at least one alarm frame + +Taking snapshots or downloading videos don't work in Android +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +If you are unable to download/save, look at your logs. If you see +something like +``"exception":"java.security.cert.CertPathValidatorException: Trust anchor for certification path not found."`` +, chances are you are using self-signed certs. You need to install the +certificate on your phone. Installing is as easy as emailing yourself +the ".crt" file and tapping on it from your device to install it. In +general, both Apple and Google have been incrementally tightening rules +for self signed certificates - they generally discourage usage of such +certs and over time both Chrome (Android) and WkWebView (iOS) have added +new restrictions/checks which affects usage. + +Pan/Tilt/Zoom doesn't work +~~~~~~~~~~~~~~~~~~~~~~~~~~ + +Tilt/Zoom/Presets support has not been added. But for this to work, PTZ +needs to work in ZM first. Once it works in ZM, try it in ZMNinja. Also +note that you may need to disable CSRF in your Options in ZoneMinder - +it seems to cause all sorts of issues. + +What is this Event Server? +-------------------------- + +The Event Server is a contribution I made to ZoneMinder that adds a +daemon to the existing list. It listens for new events using shared +memory (aka very efficient) and then sends notifications of events to +listeners (you can write your own app that listen as well as use +zmNinja). This is a chapter on its own, and I have a dedicated +page/project for this +`here <https://github.com/pliablepixels/zmeventserver>`__. I'd encourage +you to install and use it - its very nice. + +It looks like you allow me to modify the frequency of push notifications. Very cool - will it send me all events that I missed if I make the frequency of a monitor event push to say, 600 seconds? +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +Nope. It only sends the latest events. What it does is before sending +push notifications, it checks if the last time a push was sent for this +monitor is < the time you specified. If it is, it does not send. That's +all. + +Is zmNinja free? +---------------- + +The source code is free, grab it, compile it, use it. The desktop ports +are free as of today. I may charge for it some day. The mobile ports are +in Appstore/Playstore for a fee. + +Who are the developers behind this? +----------------------------------- + +Me. + +The code needs improvement +-------------------------- + +You are being nice. I know the code is terrible. I'm not a coder by +profession. This was my first project to learn how to write a mobile +app. So the app evolved from no knowledge to some knowledge. It +comprises of terrible to passable to reasonable code. There is a reason +why my `profile <https://github.com/pliablepixels>`__ says what it says. +But hey, if you can improve it, please PR! + +Is zmNinja an official ZoneMinder product? +------------------------------------------ + +No. But the ZM developers are amazing people who have been very helpful. + +I want to donate money +---------------------- + +You could either `donate to to +Zoneminder <https://www.bountysource.com/teams/zoneminder>`__ or `donate +to zmNinja <https://salt.bountysource.com/teams/zmninja>`__. Donations +to ZoneMinder don't contribute to zmNinja, but the ZoneMinder devs will +benefit from it, which is fine too. + +How does zmNinja use my personal data? +-------------------------------------- + +Please read +`this <https://medium.com/zmninja/zmninja-privacy-and-your-data-5489a5974baf>`__ + +I want to donate time/expertise/code +------------------------------------ + +Great. Make sure you read the +`license <https://github.com/pliablepixels/zmNinja/blob/master/LICENSE>`__ +, read the `contributing +guidelines <https://github.com/pliablepixels/zmNinja/blob/master/CONTRIBUTING.md>`__ +and if it works for you, happy to see what you'd like to do. diff --git a/docs/_build/html/_sources/desktop.rst.txt b/docs/_build/html/_sources/desktop.rst.txt new file mode 100644 index 00000000..ed975810 --- /dev/null +++ b/docs/_build/html/_sources/desktop.rst.txt @@ -0,0 +1,113 @@ +Desktop port tips +================= + +Scope +----- + +This page is dedicated to the Desktop version of zmNinja and tips & +tricks + +Command Line parameters +----------------------- + +The following command line parameters are supported: + +:: + + --path=<dir> - starts zmNinja and stores user profile information to that directory. + This allows you to switch between different user settings. + + --fs - starts zmNinja in full screen mode + +Multiple instances +------------------ + +It is actually possible to launch multiple instances of the same desktop +app from command line. This allows you to watch different servers at the +same time as well as use multiple monitors. I strongly recommend you use +unique ``--path`` arguments with each instance because otherwise one +instance will conflict with another. + +So lets say you want to run 2 copies of zmNinja at the same time: + +:: + + mkdir -p /path/to/instance1 + mkdir -p /path/to/instance2 + +And then: + +:: + + # for linux + zmninjapro-1.3.22-x86_64.AppImage --path=/path/to/instance1 + zmninjapro-1.3.22-x86_64.AppImage --path=/path/to/instance2 + + #for OSX. Note the -n is critical to launch a new instance + open -n ./zmninjapro.app --args --path=/path/to/instance1 & + open -n ./zmninjapro.app --args --path=/path/to/instance2 & + +Hotkeys +------- + +The following hotkeys are supported while the app is running: + +:: + + [Cmd/Ctrl] + L -> Lock app (if pin code is being used) + [Cmd/Ctrl] + Shift + F -> toggle between full screen and windowed mode + [Cmd/Ctrl] + Shift + D -> opens the debug window. + Super useful to see what is going on, + especially when things don't work + +Keyboard bindings +----------------- + +**Live Monitor View (single view, not montage):** + +:: + + Arrow Left -> move to previous monitor + Arrow Right -> move to next monitor + Esc -> remove live view + P -> toggle PTZ + +**PTZ Operations to move (PTZ should be toggled to on first):** + +:: + + Q W E -> UpLeft, Up, UpRight + A S D -> Left, Home,Right + Z X C -> DownLeft, Down, DownRight + +**Event Footage View:** + +:: + + Arrow Left -> move to previous event + Arrow Right -> move to next event + Enter -> play the event if in snapshot mode (shows red play button) + Esc -> remove event footage view + +**Timeline:** + +:: + + Arrow Up -> Zoom In + Arrow Down -> Zoom Out + Arrow Left -> Pan Left + Arrow Right -> Pan Right + Esc -> Fit timeline back to view (reset) + A -> Previous Day + D -> Next Day + +Desktop data storage locations +------------------------------ + +User data is typically stored in the following locations: \* +``%APPDATA%/zmNinjaDesktop`` for Windows, \* +``$XDG_CONFIG_HOME/zmNinjaDesktop`` or ``~/.config/zmNinjaDesktop`` for +Linux, and \* ``~/Library/Application Support/zmNinjaDesktop`` for OSX + +To completely remove the app, you may want to delete both the app +bundle/binary and these locations as applicable on your system diff --git a/docs/_build/html/_sources/index.rst.txt b/docs/_build/html/_sources/index.rst.txt new file mode 100644 index 00000000..f2eb5f96 --- /dev/null +++ b/docs/_build/html/_sources/index.rst.txt @@ -0,0 +1,27 @@ +.. zmNinja documentation master file, created by + sphinx-quickstart on Fri Mar 15 08:38:52 2019. + You can adapt this file completely to your liking, but it should at least + contain the root `toctree` directive. + +Welcome to zmNinja's documentation! +=================================== + +.. toctree:: + :hidden: + + FAQ + validating-api + source + desktop + + +:doc:`FAQ` + A detailed FAQ for zmNinja, including common issues related to installation, streaming and troubleshooting +:doc:`validating-api` + How to make sure your ZoneMinder installation has working/usable APIs +:doc:`desktop` + Various tips/tricks/shortcuts for the desktop port of zmNinja +:doc:`source` + For the brave souls who want to build from source, your questions answered + + diff --git a/docs/_build/html/_sources/source.rst.txt b/docs/_build/html/_sources/source.rst.txt new file mode 100644 index 00000000..bfa16b72 --- /dev/null +++ b/docs/_build/html/_sources/source.rst.txt @@ -0,0 +1,260 @@ +Building from Source +````````````````````` + +**NOTE** If you want to run it on your desktop, you can directly +download desktop binaries +`here <https://github.com/pliablepixels/zmNinja#desktop-platforms>`__ +and if you want it for Android/iOS you can get from the play/appstore. +This is only for those who *want* to run from source. + + Note: If you are building from source, you are mostly on your own. I + have very limited time to debug environment differences/package + differences between what I have and what you may have. I'm not a + nodejs/grunt etc expert and stuff seems to change all the time. + +Version note: The code is compiled using the following versions of +tools. **If you are using newer versions of ionic the code may not +compile - I don't have the time to upgrade yet. Finally, if you choose +to go the source route, I expect you to spend a lot of time yourself +debugging first before you create an issue. Even if you do create an +issue, I have very limited bandwidth to debug source compilation issues +for you.** Thanks. + +Output of ``ionic info`` + +:: + + Ionic: + + ionic (Ionic CLI) : 4.5.0 (/usr/local/lib/node_modules/ionic) + Ionic Framework : ionic1 1.3.5 + @ionic/v1-toolkit : 1.0.19 + + Cordova: + + cordova (Cordova CLI) : 8.1.2 (cordova-lib@8.1.1) + Cordova Platforms : android 7.1.4, ios 5.0.0 + Cordova Plugins : cordova-plugin-ionic-keyboard 2.1.3, cordova-plugin-ionic-webview 2.2.0, + (and 30 other plugins) + + System: + + Android SDK Tools : 26.1.1 (/Users/pp/Library/Android/sdk/) + ios-deploy : 2.0.0 + ios-sim : 7.0.0 + NodeJS : v8.11.2 (/usr/local/bin/node) + npm : 5.6.0 + OS : macOS Mojave + Xcode : Xcode 10.1 Build version 10B61 + +Install Dependencies - needed for all platforms +----------------------------------------------- + +Install NodeJS +~~~~~~~~~~~~~~ + +Install NodeJS from `here <https://nodejs.org/en/download/>`__. As of +Dec 2018, I'm using Node ``v8.11.2``. I use +`n <https://github.com/tj/n>`__ to manage node versions and switch +between them. + +Install cordova, ionic, and bower +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +.. code:: bash + + npm install -g cordova ionic bower + npm install @ionic/v1-toolkit --save-dev + +And some more: + +.. code:: bash + + npm install -g gulp + npm install node-sass + npm install async + npm install jshint + +(Note you may need to do ``sudo`` depending on how your system is set +up. It's `better you +don't <https://johnpapa.net/how-to-use-npm-global-without-sudo-on-osx/>`__, +but if you must, well, you must) + +If you get a newer version, you should adjust your cordova version to +the mentioned version above in order to be able to successfully compile +zmNinja. To change the version you can follow these instructions: +`change cordova +version <https://iphonedevlog.wordpress.com/2014/06/25/updating-and-reverting-to-different-cordova-phonegap-versions>`__ + +Download zmNinja +---------------- + +.. code:: bash + + git clone --depth 1 https://github.com/pliablepixels/zmNinja.git + +Configure build configure zmNinja and get all required plugins +-------------------------------------------------------------- + +.. code:: bash + + + cd zmNinja + npm install + bower install + ionic cordova platform add android (or ios) + cordova prepare + +Making an iOS build +------------------- + +Note: You need to be doing this on a mac, with Xcode and the SDK +installed. You also need to have your developer certificates/etc. (I am +not going to detail this out - there are many internet resources on +this) + +There are a few steps you need to take to get the iOS build working for +the first time. If you don't do this, you may get a compilation error +that says ``ld: library not found for -lGoogleToolboxForMac`` + +:: + + cd platforms/ios + pod install + +This does not produce an iOS ready ipa. What you need to do then is to +open ``platforms/ios/zmNinja.xcworkspace`` in Xcode, and run. + +To compile a debug build for iOS from command line, from zmNinja project +root: First edit ``./build-auto.json`` and change the +``developmentTeam`` id to yours. Then: + +.. code:: bash + + ./build_ios.sh + +To compile using XCode, open ``platforms/ios/zmNinja.xcworkspace`` - You +need to use "Legacy Build" system if you are on XCode 10+. You can +change this in XCode ``File->Workspace Settings`` and then build usual. +Also switch to the Capabilities tab and make sure "Remote Notifications" +is on in Background Modes and in iCloud section, Key-Value storage is +enabled. If you see a "Fix issue" there, clicking on that button +resolves everything. + +Making an Android build +----------------------- + +Note that you need the `Android +SDK <http://developer.android.com/sdk/index.html>`__ installed and +configured properly for this to work. + +From the zmNinja project root: + +.. code:: bash + + ./build_android.sh --debug (or --release) + +If this complains of missing SDKs, you need to install the SDK version +it requests This should produce an APK file. To install it on your phone +over adb, you'd do something like + +.. code:: bash + + adb install -r debug_files/android-debug.apk #if you did --debug + or, + adb install -r release_files/zmNinja.apk #if you did --release + +Making a desktop build +---------------------- + +I use `electron <https://electron.atom.io>`__ to build the desktop app. + +For versions 1.3.018 and beyond +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +I've migrated to using +`electron-builder <https://github.com/electron-userland/electron-builder>`__ +to automate the build process better. + +Make sure you have all the dependencies +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Typically, just running + +:: + + npm install + bower install + +Should have installed everything. Validate by checking you have +``electron`` installed by invoking it on the command line + +You now have the following options: + +:: + + npm run dist-all # builds linux, mac and windows packages + npm run dist-mac # only builds mac packages + npm run dist-lin # only builds linux packages (32bit, 64bit, arm) + npm run dist-win # only builds win packages (32bit, 64bit) + +Your packages will be created in the ``dist`` folder + +For versions older than 1.3.018 (will not work in 1.3.018 and beyond) +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +Click to see details + +Set up desktop dependencies +~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +.. code:: bash + + npm install -g electron + npm install -g asar + +Make sure ``electron`` is installed. You should be able to do a +``which electron`` + +Also make sure ``unzip`` and ``wget`` tools are installed in your +system. + +First time setup +~~~~~~~~~~~~~~~~ + +If this is the first time you are building a desktop version, you need +to download electron images for various platforms. There is a helper +script called ``prepare_desktop.sh`` that you can run. This creates a +directory called ``desktop`` inside your zmNinja directory. It currently +downloads all supported platforms. + +.. code:: bash + + ./prepare_desktop.sh + +This will download a bunch of files. If completed successfully, you can +proceed to the next step. + +Make the desktop build +~~~~~~~~~~~~~~~~~~~~~~ + +Once you are done with ``prepare_desktop.sh``, you can do a +``./make_desktop.sh``. This will actually build images for all +platforms. + +Running desktop builds +~~~~~~~~~~~~~~~~~~~~~~ + +``cd`` into the desktop directory and run whichever port you want + +Subsequent builds +~~~~~~~~~~~~~~~~~ + +You need to ``./make_desktop.sh`` each time you make changes. + +Troubleshooting +--------------- + +Lots of things can go wrong. \* Please make sure you don't post issues +about why your own build is not working - please figure it out \* Look +carefully at error messages diff --git a/docs/_build/html/_sources/validating-api.rst.txt b/docs/_build/html/_sources/validating-api.rst.txt new file mode 100644 index 00000000..0b3d478b --- /dev/null +++ b/docs/_build/html/_sources/validating-api.rst.txt @@ -0,0 +1,95 @@ +Validating APIs +```````````````` + +Please make sure you go through this before you wonder why zmNinja is not working. +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + + Assumption: Your ZM server is accessible at ``http://server/zm`` -> + replace this with your actual path + +Make sure ZM APIs are working: +'''''''''''''''''''''''''''''' + +(Note - nginx users, if you are facing API issues, please see if `this +page <https://github.com/pliablepixels/zmNinja/wiki/How-to-configure-APIs-with-nginx>`__ +helps) + +- Step 1: Open up a browser +- Step 2: Log into ZM +- Step 3: Open another tab in the same browser (**IMPORTANT**: Has to + be from the same browser you logged into ZM) +- Step 4: Type in ``http://server/zm/api/host/getVersion.json`` --> you + should see a response like: + + .. code:: json + + { + "version": "1.30.0", + "apiversion": "1.0" + } + + version/apiversion may be different. If you don't see such a + response, your APIs are **not** working + +- Step 5:make sure you can see monitors and events: + +Type in ``http://server/zm/api/monitors.json`` --> you should see a +response like: + +.. code:: jsonld + + { + "monitors": [ + { + "Monitor": { + /*lots of additional details*/ + }, + /*more monitor objects if you have more than one*/ + }] + } + +- Step 6: (If you find your APIs show ok, but zmNinja has issues) +- Open a browser, log into ZM +- Open a new tab, enter ``http://server/zm/api/host/getVersion.json`` +- Now, right click and do a ``View Source`` in your browser (different + browsers may have different names for it). This brings up a full + source code view of the page. Do you ONLY see the JSON output or do + you see gobs of HTML on top like ``<pre class=`` and lots of cake + related messages? If you do, you need to fix it. + +if you find the page empty, your APIs/permissions have a problem. Please +post in the ZM forums (**please DON'T** contact me first as its not a +zmNinja bug) + +Type in ``http://server/zm/api/events.json`` --> you should see a +response like: (this list may be an empty set if you don't have events +but you will still see the ``{"events":[]}`` text - if you find the page +empty, your APIs have a problem. Please post in the ZM forums (please +**DON'T** contact me first, as its not a zmNinja bug) + +.. code:: jsonld + + {"events":[{"Event":{ /* many more details */ }}]} + +*Top reasons why monitors and events API returns blank while getVersion +works:* \* You don't have monitor/event view permissions allocated to +the user \* You have an invalid camera definition (happens sometimes +when you remove and re-add cameras) \* If you are using non UTF8 +characters in your monitor names/zone names this can cause issues. Edit +``/usr/share/zoneminder/www/api/app/Config/database.php`` (assuming ZM +is in /usr/share) and make sure ``'encoding' => 'utf8'`` is +*uncommented* (remove ``//``) around line 74. I've submitted a +`patch <https://github.com/ZoneMinder/ZoneMinder/pull/1635/commits/92d7cad5f154359a5b249d7a63fb5034f7d1b51a>`__ +but till its merged, you might have to do it manually. + +zmNinja API notes: +^^^^^^^^^^^^^^^^^^ + +- Please make sure the user credentials you use has: +- view or edit access to monitors +- view or edit access to streams +- view or edit access to system + +- If you are accessing zmNinja remotely, make sure you first access ZM + remotely from your desktop browser, ensure it works and then use the + same DNS/IP for zmNinja |
