IP Camera Alarm Server to MQTT

Overview

IP Camera Alarm Server

docker pulls

Universal Alarm Server for all your IP cameras in one place!

Integrates well with Home Assistant, Node-Red, etc. Runs great on Raspberry-Pi!

Supported Cameras 📸 :

  • Hikvision
  • Hisilicon
  • Anything that can upload alarms to FTP

Supported Delivery 📬 :

  • MQTT
  • Webhooks

Configuration

Create file config.yaml in the folder where the application binary lives.

Also see sample config.

When alarm server is coming online, it will also send a status message to /camera-alerts topic with its status.

HiSilicon

This includes most of no-brand Chinese cameras that have "Alarm Server" feature.

If your camera needs Internet Explorer to access its Web Interface (here's a picture!) and would not work in any other browser - that's the server you need. These cameras are all made by HiSilicon and sold under hundreds of different names.

Logs from the camera can also work as alarm - set that in your camera under "send logs" setting.

hisilicon:
  enabled: true  # if false, will not listen for alarms from hisilicon cams  
  port: 15002    # has to be the same in cameras' settings

Hikvision

Alarm Server uses HTTP streaming to connect to each camera individually and subscribe to all the events.

Some lower-end cameras, especially doorbells and intercoms, have broken HTTP streaming implementation that can't open more that 1 connection and "close" the http response, but leave TCP connection open (without sending keep-alive header!). For those, Alarm Server has an alternative streaming implementation. To use it, set rawTcp: true in camera's config file.

Note that rawTcp implementation is rather unstable on the camera's side and should be used as last resort. Hikvision cameras can be also used with Alarm Server's FTP server no problem.

hikvision:
  enabled: true              # if not enabled, it won't connect to any hikvision cams
  cams:
    myCam:                   # name of your camera
      address: 192.168.1.69  # ip address or domain name
      https: false           # if your camera supports ONLY https - set to true
      username: admin        # username that you use to log in to camera's web panel 
      password: admin1234    # password that you use to log in to camera's web panel
      rawTcp: false          # some cams have broken streaming. Set to true if nothing else works

FTP

Alarm Server will accept any username as FTP login username and use it as camera's name. As long as the password matches, it will allow the connection.

ftp:
  enabled: true      # if not enabled, it won't accept connections
  port: 21           # has to match settings in the cameras
  password: "root"   # FTP password that will be accepted
  allowFiles: true   # if false, no files will be stored (but transfers will still happen)
  rootPath: "./ftp"  # folder where to save cameras' uploads

Q: Isn't FTP, like, slow??

A: No. Alarm processing part happens before the actual file upload even begins, and on your typical wireless home network that is less than 0.2 seconds. It's plenty fast.

Q: Why this if there is ONVIF?

A: Some IP cameras have ONVIF, and sometimes that even includes motion alarms, but not always does that mean that the Human Detection alarm is exposed through ONVIF, as well as all the other alarms like "SD card dead" or "failed admin login". This and, well, not all the cameras support ONVIF.

Tested cameras:

  • 3xLogic VX-2M-2D-RIA (Hikvision server)

  • Uniden U-Bell DB1 (also known as Hikvision DS-KB6003, LaView LV-PDB1630-U and RCA HSDB2A)

  • Misecu 5MP Wifi AI Cam (Hisilicon server)

If your camera works with Alarm Server - create an issue with some details about it and a picture, and we'll post it here.

Docker

There is a pre-built image toxuin/alarmserver. It is a multi-architecture image and will work both on Intel/AMD machines, and your Raspberry PI too.

Usage: docker run -d -v $PWD/config.yml:/config.yml -v $PWD/ftp:/ftp -p 15002:15002 toxuin/alarmserver

Explanation:

  • -d makes it run in the background, so you don't have to stare at it's logs for it to keep running

  • -v $PWD/config.yml:/config.yml passes through your config from your machine into the container. Make sure the file exists.

  • -v $PWD/ftp:/ftp passes through a folder ftp from where you're running this command into the container. Not needed if you don't need FTP.

  • -p 15002:15002 allows your machine to pass through port 15002 that is used for HiSilicon alarms. Not needed if you don't need HiSilicon server.

Feedback

This project was created for author's personal use and while it will probably work for you too, author has no idea if you use it the same way as author. To fit everyone's usage scenario better, it would be beneficial if you could describe how YOU use the Alarm Server.

If you just started to use Alarm Server in your network (or use it for long time!), if you like it (or hate it!) - feel free to create an issue and just share how it works for you and what cameras you have. I would be curious to know if it fits your use case well (or not at all!).

If you have any feature suggestions - create an issue, and we'll probably figure something out.

License

MIT License

Comments
  • Server got alarm but no mqtt message

    Server got alarm but no mqtt message

    First, thanks for this work !

    But it must be a config problem on my side, because the server got the alarm status from cams, but does not send any message over mqtt : My config : mqtt: enabled: true username: mymqttuser without brackets password: mymqttuserpassword without brackets port: 1883 server: 192.168.1.xxx topicroot: camera-alerts

    Container's log: HISI: DEVICE ALERT: { "Address" : "0xF801A8C0", "Channel" : 0, "Descrip" : "", "Event" : "HumanDetect", "SerialID" : "00781cd57136458b", "StartTime" : "2021-12-24 12:52:08", "Status" : "Start", "Type" : "Alarm" }

    I tried with or without brackets for the password ....

    bug 
    opened by grossmanns 28
  • webhooks headers (feature request)

    webhooks headers (feature request)

    Hi, thank you for this nice alarmserver. I was wondering if you could add the parameter of an "Authorization: Bearer" header in the webhooks (or a generic header parameter). Many services require some headers and in this way, one may directly call Home Assistant REST APIs without calling MQTT, if needed.

    You may have a look here on the REST API page.

    From the go http client page it seems pretty straightforward (just use webhooks.client.Header.Add,() but it would need to change the configuration package and the SendMessage func... and I'm not very confortable with GO.

    Thank you.

    enhancement 
    opened by alitaker 15
  • Annke C800

    Annke C800 "does not seem to support event streaming"

    Connecting to Annke C800 cam I get: HIK: ERROR: Camera cam1 does not seem to support event streaming

    Though it should be working I think. http://IP/ISAPI/event exists, maybe alarmserver is looking for the wrong path?

    opened by marvelloard 10
  • Config file in folder (feature request)

    Config file in folder (feature request)

    Would it be possible to use a fixed name for the config file and have it in a docker directory?

    Something like home assistant does for example /config/config.yaml or similar

    I’m trying to set up a container on a qnap nas and having it in the root directory makes it hard to set up as the gui won’t allow me to configure a file just a shared folder.

    enhancement 
    opened by kyuzumaki 8
  • Dahua: HTTP Connection Error

    Dahua: HTTP Connection Error

    Hi , I'm getting the below error when running the server - Any special config needed on the camera? Thanks in advance :)

    Get "/cgi-bin/eventManager.cgi?action=attach&codes=All": unsupported protocol scheme "" DAHUA: Error opening HTTP connection to camera Get "/cgi-bin/eventManager.cgi?action=attach&codes=All": unsupported protocol scheme "" DAHUA: Error opening HTTP connection to camera DAHUA: Error opening HTTP connection to camera DAHUA: Error opening HTTP connection to camera Get "/cgi-bin/eventManager.cgi?action=attach&codes=All": unsupported protocol scheme ""

    Below is my config

    debug: false

    dahua: enabled: true cams: myCam: address: 192.168.88.208 https: false username: theusername password: thepassword

    ftp: enabled: true port: 21 password: "alarmftppassword" allowFiles: true rootPath: "./ftp"

    webhooks: enabled: true items: urls: - "https://127.0.0.1:5001/api/DahuaCameraEvent/v1/dahua/newevent"

    bug 
    opened by francoisdutoit 6
  • Webhooks to Telegram - either broken or I don't know the correct format.

    Webhooks to Telegram - either broken or I don't know the correct format.

    I have tried a whole heap of variants but when sending messages to Telegrams bot I get the below error over and over. I have tried many variants, if I paste this in to a web browser, with the correct ID's, it works without a problem.

    If I use CURL it works, althought the syntax is different for that one.

    WEBHOOKS: Error delivering payload {"topic":"camera1/VMD","data":"Motion alarm"} to https://api.telegram.org/botMYBOTID:MYTOKEN/sendmessage?chat_id=MYCHATID&text="some text" WEBHOOKS: Got no response from https://api.telegram.org/botMYBOTID:MYTOKEN/sendmessage?chat_id=MYCHATID&text="some text" 2021/11/04 08:03:08 camera1 event: VMD (active - 16)

    Can you point me in the right direction. I am using the docker image also. Thanks

    opened by irussellps 5
  • Regular restart of container

    Regular restart of container

    Hi & thank you very much for this 👍

    I got it to work quickly and it performs good with my XM cameras with the alarmserver publishing to an MQTT broker.

    However, the container restarts every second leaving these messages on the broker:

    Mai 15 13:09:12 camalert/alarmserver { "status": "up" }
    Mai 15 13:09:12 camalert/alarmserver { "status": "down" }
    Mai 15 13:10:13 camalert/alarmserver { "status": "up" }
    Mai 15 13:10:14 camalert/alarmserver { "status": "down" }
    Mai 15 13:11:15 camalert/alarmserver { "status": "up" }
    Mai 15 13:11:15 camalert/alarmserver { "status": "down" }
    Mai 15 13:12:16 camalert/alarmserver { "status": "up" }
    Mai 15 13:12:16 camalert/alarmserver { "status": "down" }
    Mai 15 13:13:17 camalert/alarmserver { "status": "up" }
    Mai 15 13:13:17 camalert/alarmserver { "status": "down" }
    Mai 15 13:14:19 camalert/alarmserver { "status": "up" }
    Mai 15 13:14:19 camalert/alarmserver { "status": "down" }
    Mai 15 13:15:20 camalert/alarmserver { "status": "up" }
    Mai 15 13:15:20 camalert/alarmserver { "status": "down" }
    Mai 15 13:16:21 camalert/alarmserver { "status": "up" }
    Mai 15 13:16:21 camalert/alarmserver { "status": "down" }
    Mai 15 13:17:23 camalert/alarmserver { "status": "up" }
    Mai 15 13:17:23 camalert/alarmserver { "status": "down" }
    Mai 15 13:18:24 camalert/alarmserver { "status": "up" }
    Mai 15 13:18:24 camalert/alarmserver { "status": "down" }
    Mai 15 13:19:25 camalert/alarmserver { "status": "up" }
    Mai 15 13:19:25 camalert/alarmserver { "status": "down" }
    Mai 15 13:20:27 camalert/alarmserver { "status": "up" }
    Mai 15 13:20:27 camalert/alarmserver { "status": "down" }
    Mai 15 13:21:28 camalert/alarmserver { "status": "up" }
    Mai 15 13:21:28 camalert/alarmserver { "status": "down" }
    Mai 15 13:22:29 camalert/alarmserver { "status": "up" }
    Mai 15 13:22:29 camalert/alarmserver { "status": "down" }
    

    The container's logs show corresponting messages:

    MQTT: CONNECTED TO 10.0.0.2
    ,Initializing Webhook bus...
    ,STARTING...
    ,Initializing MQTT bus...
    ,MQTT: CONNECTED TO 10.0.0.2
    ,Initializing Webhook bus...
    ,STARTING...
    ,Initializing MQTT bus...
    ,Initializing Webhook bus...
    ,STARTING...
    ,Initializing MQTT bus...
    ,MQTT: CONNECTED TO 10.0.0.2
    ,Initializing Webhook bus...
    ,STARTING...
    ,Initializing MQTT bus...
    ,MQTT: CONNECTED TO 10.0.0.2
    ,Initializing Webhook bus...
    ,STARTING...
    ,Initializing MQTT bus...
    ,MQTT: CONNECTED TO 10.0.0.2
    ,Initializing Webhook bus...
    ,STARTING...
    ,Initializing MQTT bus...
    ,MQTT: CONNECTED TO 10.0.0.2
    ,Initializing Webhook bus...
    ,STARTING...
    ,Initializing MQTT bus...
    ,Initializing Webhook bus...
    ,STARTING...
    ,Initializing MQTT bus...
    ,MQTT: CONNECTED TO 10.0.0.2
    ,Initializing Webhook bus...
    ,STARTING...
    ,Initializing MQTT bus...
    ,MQTT: CONNECTED TO 10.0.0.2
    ,Initializing Webhook bus...
    ,STARTING...
    ,Initializing MQTT bus...
    ,MQTT: CONNECTED TO 10.0.0.2
    ,Initializing Webhook bus...
    ,STARTING...
    ,Initializing MQTT bus...
    ,MQTT: CONNECTED TO 10.0.0.2
    ,Initializing Webhook bus...
    ,STARTING...
    ,Initializing MQTT bus...
    ,MQTT: CONNECTED TO 10.0.0.2
    ,Initializing Webhook bus...
    ,STARTING...
    ,Initializing MQTT bus...
    ,MQTT: CONNECTED TO 10.0.0.2
    ,Initializing Webhook bus...
    ,STARTING...
    ,Initializing MQTT bus...
    ,MQTT: CONNECTED TO 10.0.0.2
    ,Initializing Webhook bus...
    ,STARTING...
    ,Initializing MQTT bus...
    ,MQTT: CONNECTED TO 10.0.0.2
    ,Initializing Webhook bus...
    ,STARTING...
    ,Initializing MQTT bus...
    ,MQTT: CONNECTED TO 10.0.0.2
    ,Initializing Webhook bus...
    ,STARTING...
    ,Initializing MQTT bus...
    ,MQTT: CONNECTED TO 10.0.0.2
    ,Initializing Webhook bus...
    ,STARTING...
    ,CONFIG:
    ,  Hisilicon server enabled: true
    ,  Hikvision server enabled: false
    ,  FTP server enabled: false
    ,  mqtt.port: 1883
    ,  mqtt.topicRoot: camalert
    ,  mqtt.server: 10.0.0.2
    ,  mqtt.username: 
    ,  mqtt.password set: false
    ,Initializing MQTT bus...
    ,MQTT: CONNECTED TO 10.0.0.2
    ,MQTT BUS INITIALIZED
    ,Initializing Webhook bus...
    ,WEBHOOK BUS INITIALIZED
    ,STARTED HISILICON SERVER
    ,STARTING...
    ,CONFIG:
    ,  Hisilicon server enabled: true
    ,  Hikvision server enabled: false
    ,  FTP server enabled: false
    ,  mqtt.port: 1883
    ,  mqtt.topicRoot: camalert
    ,  mqtt.server: 10.0.0.2
    ,  mqtt.username: 
    ,  mqtt.password set: false
    ,Initializing MQTT bus...
    ,MQTT: CONNECTED TO 10.0.0.2
    ,MQTT BUS INITIALIZED
    ,Initializing Webhook bus...
    ,WEBHOOK BUS INITIALIZED
    ,STARTED HISILICON SERVER
    

    Is there something I have to configure besides the config.yml and the cameras?

    My testing config.yml looks like this:

    hisilicon:
      enabled: true  # if false, will not listen for alarms from hisilicon cams
      port: 15002    # has to be the same in cameras' settings
    
    mqtt:
      enabled: true
      #username: alarmserver
      #password: ""
      port: 1883
      server: "10.0.0.2"
      topicroot: camalert
    

    Thank you very much & best regards, Sascha

    opened by cribskip 5
  • docker keeps going down

    docker keeps going down

    Hi, I am not able to keep docker up, it comes up and down immediately, I have the latest release

    I am bringing it up in a windows cmd session in the same directory containing config.yml

    docker run -d -v %cd%/config.yml:/config.yml -p 15002:15002 toxuin/alarmserver 
    
    The log:
    Added Hikvision camera:
      name: mydoorbell
      url: http://192.168.1.13/ISAPI/
      username: admin
      password set: true
      rawRcp: true
    Added Hikvision camera:
      name: mycam
      url: http://192.168.1.69/ISAPI/
      username: admin
      password set: true
      rawRcp: false
    STARTING...
    CONFIG:
      Hisilicon server enabled: true
      Hikvision server enabled: false
      FTP server enabled: false
      mqtt.port: 1883
      mqtt.topicRoot: camera-alerts
      mqtt.server: mqtt.example.com
      mqtt.username: alarmserver
      mqtt.password set: true
    Initializing Webhook bus...
    WEBHOOK BUS INITIALIZED
    STARTED HISILICON SERVER
    

    immediately after executing the above:

    C:\Scripts\alarmServer\Docker>docker ps -a
    CONTAINER ID   IMAGE                       COMMAND          CREATED          STATUS                      PORTS     NAMES
    d1c5761ea43a   toxuin/alarmserver          "/alarmserver"   6 seconds ago   Exited (0)  6 seconds ago             goofy_tharp
    faaf3e43d5be   toxuin/alarmserver          "/alarmserver"   44 minutes ago   Exited (2) 44 minutes ago             keen_jennings
    a68c178c1b89   toxuin/alarmserver          "/alarmserver"   52 minutes ago   Exited (0) 52 minutes ago             pensive_bose
    

    My config.yml:

    debug: true
    
    hikvision:
      enabled: false
      cams:
        myCam:
          address: 192.168.1.69
          https: false
          username: admin
          password: admin1234
          rawTcp: false
        myDoorbell:
          address: 192.168.1.13
          https: false
          username: admin
          password: admin666
          # USE RAW TCP IF HTTP STREAMING DOES NOT WORK
          rawTcp: true
    
    hisilicon:
      enabled: true
      port: 15002
    
    ftp:
      enabled: false
      port: 21
      password: "root"
      allowFiles: true
      rootPath: "./ftp"
    
    mqtt:
      enabled: false
      username: alarmserver
      password: "assword"
      port: 1883
      server: "mqtt.example.com"
      topicroot: camera-alerts
    
    webhooks:
      enabled: true
      urls:
        - "https://autoremotejoaomgcd.appspot.com/sendmessage?key=oiaasdojfasoj0939490wposdofps0oEJ0SD09SJDFPOJSDOJ0ERSODJG0SJOEPJ03PSSS0SJ0WJ0EJ0J3JDKFJ&message=FrontCamAlarm=:=1"
    

    Can you please help me?

    opened by aguscaba 2
  • Webhooks: Error Get {WEBHOOK_URL} x509: failed to load system roots and no roots provided; open /etc/ssl/certs/ca-certificates.crt: not a directory

    Webhooks: Error Get {WEBHOOK_URL} x509: failed to load system roots and no roots provided; open /etc/ssl/certs/ca-certificates.crt: not a directory

    Hi, I need your help please, no matter which webhook url or method (GET or POST) I use, I get the below error and the messages are not working:

    WEBHOOKS: Error delivering payload {"topic":"5K7i78KQBHVRakIjgDhu/HumanDetect","data":"{\"Address\":\"0xF405A8C0\",\"Channel\":0,\"Descrip\":\"\",\"Event\":\"HumanDetect\",\"SerialID\":\"5K7i78KQBHVRakIjgDhu\",\"StartTime\":\"2022-06-08 10:11:29\",\"Status\":\"Start\",\"Type\":\"Alarm\",\"ipAddr\":\"192.168.5.244\"}"} to https://autoremotejoaomgcd.appspot.com/sendmessage?key=-{KEY}&message=CamAlarmTriggered
    
    Webhooks: Error Get "https://autoremotejoaomgcd.appspot.com/sendmessage?key=-{KEY}&message=CamAlarmTriggered": x509: failed to load system roots and no roots provided; open /etc/ssl/certs/ca-certificates.crt: not a directory
    WEBHOOKS: Got no response from https://autoremotejoaomgcd.appspot.com/sendmessage?key=-{KEY}&message=CamAlarmTriggered
    

    Also:

    WEBHOOKS: Error delivering payload {"topic":"5K7i78KQBHVRakIjgDhu/HumanDetect","data":"{\"Address\":\"0xF405A8C0\",\"Channel\":0,\"Descrip\":\"\",\"Event\":\"HumanDetect\",\"SerialID\":\"5K7i78KQBHVRakIjgDhu\",\"StartTime\":\"2022-06-08 10:11:29\",\"Status\":\"Start\",\"Type\":\"Alarm\",\"ipAddr\":\"192.168.5.244\"}"} to https://maker.ifttt.com/trigger/HumanDetect/json/with/key/{KEY}
    Webhooks: Error Post "https://maker.ifttt.com/trigger/HumanDetect/json/with/key/{KEY}
    ": x509: failed to load system roots and no roots provided; open /etc/ssl/certs/ca-certificates.crt: not a directory
    WEBHOOKS: Got no response from https://maker.ifttt.com/trigger/HumanDetect/json/with/key/{KEY}
    

    I am starting the server like (without the "-d" to see what is happening, will use it once it works):

    docker run -v /softw/app/alarmserver/config.yml:/config.yml -p 15002:15002 toxuin/alarmserver

    My config.yml attached: config-scrabled.yml.txt

    My config.yml contents

    debug: true
    
    hikvision:
      enabled: false
      cams:
        myCam:
          address: 192.168.1.69
          https: false
          username: admin
          password: admin1234
          rawTcp: false
        myDoorbell:
          address: 192.168.1.13
          https: false
          username: admin
          password: admin666
          # USE RAW TCP IF HTTP STREAMING DOES NOT WORK
          rawTcp: true
    
    hisilicon:
      enabled: true
      port: 15002
    
    ftp:
      enabled: false
      port: 21
      password: "root"
      allowFiles: true
      rootPath: "./ftp"
    
    mqtt:
      enabled: false
      username: alarmserver
      password: "assword"
      port: 1883
      server: "mqtt.example.com"
      topicroot: camera-alerts
    
    webhooks:
      enabled: true
      items:
        - url: "https://maker.ifttt.com/trigger/HumanDetect/json/with/key/zbazUaNH0IN8rFNVZ0BG"
        - url: "https://api.telegram.org/bot4984694998:ahOZDhe6yYZTfZ8e52QWIRms98m1K5lzImaPom4r/sendMessage?chat_id=6854648&text=CamAlarm"
        - url: "https://autoremotejoaomgcd.appspot.com/sendmessage?key=3kvtlrU9pnUebzwpfZqn3kvtlrU9pnUebzwpfZqn3kvtlrU9pnUebzwpfZqn3kvtlrU9pnUebzwpfZqn&message=CamAlarmTriggered"
          method: "GET" # DEFAULTS TO POST
          headers:
            - "X-Beep: boop"
    
    opened by aguscaba 1
  • Some bugs

    Some bugs

    Hi

    This is just the project i need for my HiSilicon cameras. Thanks a lot. I have got it running, but noted som problems:

    • The HiSilicon server can not be used alone. The program just exits if not either HikVision or FTP is activated.

    • In main.go there is a "!" to much in line 36, making webhooks initialized only if not enabled.

    • The default password "root" for FTP can not be changed.

    • The docker run command is missing mapping for FTP port: "-p21:21"

    opened by sroens 1
  • Better Webhooks: headers and methods

    Better Webhooks: headers and methods

    This adds support for a new config structure that allows user to specify HTTP method and request headers.

    Fixes #9.

    Also fixes empty content-type header (which can also be overridden!).

    To test this, please run docker image toxuin/alarmserver:webhook-headers.

    enhancement 
    opened by toxuin 0
  • FTP passive mode enhancement

    FTP passive mode enhancement

    Allow specifying public IP and port range for FTP passive mode.

    Added two configuration values for FTP server:

    • publicIp - override the docker internal IP with the host IP address
    • passivePorts - specify the port range for the passive mode. These ports need to be passed through to the host in the container run config.
    opened by shprota 1
  • FTP requires host networking mode in docker

    FTP requires host networking mode in docker

    First of all, thanks a lot for creating this, this is awesome and is exactly what I needed.

    I wasn't able to get alarmserver working using the Docker configs provided in README.md docker run -d -v $PWD/config.yml:/config.yml -v $PWD/ftp:/ftp -p 21:21 -p 15002:15002 toxuin/alarmserver

    I can run alarmserver, and FTP can authenticate a user, but no files can be uploaded. It always produces error 425. I looked into this, and found that FTP will run in passive mode in containers and will open random ports for data exchange with client. So only mapping port 21 is not sufficient, the solution is to use host networking, map out a larger port range, or create a bridge.

    Using host networking worked for me. Suggest adding a new command docker run -d -v $PWD/config.yml:/config.yml -v $PWD/ftp:/ftp --network host toxuin/alarmserver for others using the FTP method

    opened by s7p 1
  • Dahua reconnect and try to connect in loop

    Dahua reconnect and try to connect in loop

    Hi! I would like to request a functionality of reconnecting to camera after connection drop and trying to connect to camera in a loop instead of skipping unaccessable cameras, if high accessability is demanded.

    Thank you in advance for any work!

    opened by MiKoKappa 0
  • Dropped body part on Linux w/ Dahua

    Dropped body part on Linux w/ Dahua

    Hi! I have been testing alarm server with Dahua model ITC415-PW6M-IZ-C2, which has cgi-bin/snapManager.cgi API route for event management. On Windows 10, go version 1.19.2 everything works like a charm. On Linux Ubuntu Server, go version 1.19.3 the function part.Read from lib multipart reads out only about a half of data from response body. The other half of byte array is filled with zeros.

    The issue only appears for bigger payloads (i.e. 3925 bytes, the n value from calling part.Read is only 1281).

    Could you please give some advice how to address this issue? Thank you in advance.

    opened by MiKoKappa 1
  • Dahua

    Dahua

    Hi, I would like ask a queston. I have a Dahua NVR and in network setting is Alarm Center. There I have to add server ip and server port. Is this setting relevant? Thank you

    opened by roburb 2
  • Big thank you :)

    Big thank you :)

    Been fighting trying to do something on my own with this kkMoon DVR for a while and finally found this project that gave me the tool I needed. I was able to set this up on a Pi within 10 minutes and it works flawlessly. Combined with this, I've also been able to make my own NodeJS internal REST server that spins up a job for an RTSP stream + sends me a Discord notification when an event occurs so I don't need to struggle with the DVR's internal storage management (which, admittedly, has been an absolute terror 😂)

    Big thank you, really going to help monitor everything w/o downtime ❤️

    opened by azpha 0
Releases(v1.2.4)
Owner
Toxuin
Your warranty is hereby void.
Toxuin
Sensirion SCD30 CO2 sensor MQTT gateway with Home Assistant MQTT discovery

Sensirion SCD30 CO2 sensor MQTT gateway for Home Assistant Overview This gateway can be used to publish measurements SCD30 to mqtt. It supports Home A

Pekka Vainio 1 Oct 10, 2022
Lg-ess-mqtt - MQTT Firmware Extension for 1st generation LG ESS BESS

lg-ess-mqtt This projects is a firmware extension for the 1st generation LG ESS

Steffen Vogel 1 Oct 19, 2022
handle multiple mqtt server/cluster based on paho client

pakhshi Introduction Consider you have an array of brokers but you want to publish and subscribe on all of them at the same time. Why you may need thi

Parham Alvani 23 Nov 9, 2022
An embeddable lightweight Go/Golang MQTT broker(server) for IoT.

Snple MQTT 简体中文 Note: The API of this library is still unstable and has not been sufficiently tested, please do not use it in production environments.

null 12 Sep 12, 2022
Hermes is a tiny MQTT compatible broker written in Go.

Hermes Hermes is a tiny MQTT compatible broker written in Go. The goals of the project are as below Easy to compile, and run Tiny footprint Extensible

Chaitanya Munukutla 56 Sep 9, 2022
Generic Prometheus ⟷ MQTT Bridge

Promqtt: Prometheus ⟷ MQTT Bridge Promqtt makes Prometheus MQTT capable in a truly generic way. It has no assumptions on message payloads or topic lay

sh0rez 16 Sep 18, 2022
MQTTtimer is based mqtt protocol sync timer

MQTTTimer is based mqtt protocol sync timer. You can used ntp sync time protocol in IoT without ntp server. used mqtt protocol sync time is tcp connne

hysios 8 Oct 27, 2021
mqtt-rewriter is a tool that can forward data from a topic to another topic.

mqtt-rewriter Background mqtt-rewriter is a tool that can forward data from a topic to another topic. Install Todo... Usage Currently only supports tw

fissssssh 2 Feb 18, 2022
A robust and easy to use MQTT rule engine

⚙ MQTT COMMANDER A robust and easy to use MQTT rule engine Configure your MQTT Rules via easy to use YML Files Supports JSON encoded MQTT Messages Sup

Calvin Köcher 5 Sep 21, 2022
Send IR command through MQTT

Introduction This program can be used in two different modes: Either it is waiting for an id button on a MQTT topic and execute the corresponding LIRC

null 1 Nov 9, 2022
Simple BLE to MQTT gateway

BLE_to_MQTT_gw Simple BLE to MQTT gateway This app will scan for the Eddystone BLE advertisement packets from my ESP32 BLE sensor, and forward tempera

null 1 Dec 29, 2021
Smq - Simple MQTT Broker with golang

Simple MQTT Broker 关于 Golang MQTT Broker, Version 3.1.1, and Compatible for ecli

null 8 Jul 7, 2022
Dwarka - API gateway offers REST API to manage various device controlled using MQTT protocol

dwarka API gateway offers REST API to manage various device controlled using 'MQ

Krishnaswamy Subramanian 2 Sep 16, 2022
Courier Golang client library provides an opinionated wrapper over paho MQTT library to add features on top of it

Courier Golang Client Library Introduction Courier Golang client library provides an opinionated wrapper over paho MQTT library to add features on top

Gojek 31 Nov 19, 2022
Server motherboard hardware monitoring

hardware-events This software helps with the monitoring of a server motherboard. The project started when I changed the FANs on a Supermicro motherboa

Fred 1 Jan 24, 2022
Golang DNSTAP sensor use to collect passive dns data from a recursive name server

dnstap-sensor DNSTAP-SENSOR is a Golang program that is used to collect passive dns data from a recursive name server and submit it to Deteque's DNSTA

Andrew Fried 2 Nov 21, 2022
Gmqtt is a flexible, high-performance MQTT broker library that fully implements the MQTT protocol V3.1.1 and V5 in golang

中文文档 Gmqtt News: MQTT V5 is now supported. But due to those new features in v5, there area lots of breaking changes. If you have any migration problem

null 817 Jan 5, 2023
Vallox RS-485 MQTT gateway to integrate Vallox RS485 ventilation device to Home Assistant via MQTT.

Vallox RS-485 MQTT gateway to integrate Vallox RS485 ventilation device to Home Assistant via MQTT. Implements Home Assistant MQTT discovery but can also be used without Home Assistant.

Pekka Vainio 1 Dec 26, 2021
Sensirion SCD30 CO2 sensor MQTT gateway with Home Assistant MQTT discovery

Sensirion SCD30 CO2 sensor MQTT gateway for Home Assistant Overview This gateway can be used to publish measurements SCD30 to mqtt. It supports Home A

Pekka Vainio 1 Oct 10, 2022
Lg-ess-mqtt - MQTT Firmware Extension for 1st generation LG ESS BESS

lg-ess-mqtt This projects is a firmware extension for the 1st generation LG ESS

Steffen Vogel 1 Oct 19, 2022