Converts Hikvision camera events to MQTT

Overview

HikSink Logo

GitHub release (latest SemVer) Docker Pulls Docker Image Size (latest by date) GitHub license GitHub Workflow Status

HikSink streams Hikvision camera and NVR events (motion, line crossing, tamper, illegal logins, etc.) to MQTT messages for consumption by home automation software like Home Assistant. Some key features of HikSink are:

  • Easy Camera Authentication: Supports digest authentication used by default by Hikvision so you don't need to lower your security settings.
  • Full Event Type Support: Automatically learns event types that HikSink doesn't yet know about.
  • Home Assistant Integration: Supports the Home Assistant MQTT discovery protocol. Provides offline notifications for individual cameras.
  • Failure hardened: Connections to cameras lost due to network issues or exceptions are automatically reestablished.
  • Low CPU and memory footprint: Written in Rust and requires less than 20 MB of memory. Can easily run on a Raspberry Pi.

For example, these are the entities discovered on a DS-2CD2185FWD-I IP camera automatically loaded into Home Assistant:

HikSink Discovered Entities

Installation

Option 1: Docker

The easiest way to run HikSink is with the provided Docker image.

  1. Download and modify the sample_config.toml file to include your MQTT and camera details.
  2. Run the docker container.
    docker run -d \
       --name=hiksink \
       --restart=unless-stopped \
       -v <path/to/config.toml>:/app/config.toml \
       cornerbit/hiksink:latest

Option 2: Running Standalone

  1. Install the rust programming language compiler.
  2. Clone the repository into a folder of your choosing.
    git clone https://github.com/CornerBit/HikSink
  3. Compile the HikSink binary.
     cd HikSink
     cargo build --release
  4. Copy the sample config and modify it to include your MQTT and camera details.
    cp sample_config.toml config.toml
  5. Run it!
     ./target/release/hik_sink

Development

A dev container is provided to ease setup and testing. It's optional, but brings along a working Home Assistant instance, MQTT server, and the rust compiler.

Some tests use the insta snapshot testing library. This is installed automatically in the dev container.

Comments
  • Anyway to make this work as HA addons instead?

    Anyway to make this work as HA addons instead?

    Would rather not install docker or MQTT since, i'm running HA on vmware workstation windows, and secondly it would probably involve more handshake process isnt it?

    opened by Buster14 2
  • Does not work with DS-2CD2T46G2-ISU.

    Does not work with DS-2CD2T46G2-ISU.

    Does not work with DS-2CD2T46G2-ISU / SL (AcuSense) camera, works fine with other cameras. Error: hik_sink::hikapi::camera: Error reconnecting to camera Could not authenticate with camera: Invalid status code after auth token sent: 500

    opened by c0de-666 2
  • Catch backtrace

    Catch backtrace

    Running without flags or options defined leads to an error that is not caught.

    $ ./bin/hik_sink 
    thread 'main' panicked at 'called `Result::unwrap()` on an `Err` value: "missing field `system`"', src/main.rs:30:58
    note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace
    
    opened by fabaff 2
  • Support to set MQTT ClientId

    Support to set MQTT ClientId

    Hello, thanks for this good software, it seems awesome work. I would like to request a small new feature. Mz MQTT broker requires a specific clientId for each user but looks like this client use a random clientId on ecah connection attemp. Looks like the used MQTT library support provided clientId. Thanks

    opened by Zolli 2
  • Newbie questions

    Newbie questions

    I'll start by saying i'm a newbie to Docker, i've got Hik-Sink working now with multiple cameras. Question though at the moment i keep having to remove the container to reconfigure...is there an easier way? I did try the cp cmd into the container but it didn't like it...like i say i'm a newbie to docker so 100% i'm probably doing it wrong!

    Great app though! Dave

    opened by daveo2k 1
  • ColorVue cameras not working

    ColorVue cameras not working

    Hello,

    I am trying to use HikSink to connect to my ColorVue cameras but unfortunately all i get is:

    2022-09-16T18:17:35.196276Z ERROR Camera coms{camera=Intrare id=intrare}: hik_sink::hikapi::camera: Error reconnecting to camera Could not authenticate with camera: Invalid status code after auth token sent: 500

    |date|stream|content| |----|------|-------| |2022-09-16T18:18:02.547409286Z|stdout|[2m2022-09-16T18:18:02.547096Z[0m [34mDEBUG[0m [1mCamera coms[0m[1m{[0m[3mcamera[0m[2m=[0mIntrare [3mid[0m[2m=[0mintrare[1m}[0m[2m:[0m [2mhyper::client::connect::http[0m[2m:[0m connecting to 192.168.1.81:65001| |2022-09-16T18:18:02.548749550Z|stdout|[2m2022-09-16T18:18:02.548630Z[0m [34mDEBUG[0m [1mCamera coms[0m[1m{[0m[3mcamera[0m[2m=[0mIntrare [3mid[0m[2m=[0mintrare[1m}[0m[2m:[0m [2mhyper::client::connect::http[0m[2m:[0m connected to 192.168.1.81:65001| |2022-09-16T18:18:02.548863301Z|stdout|[2m2022-09-16T18:18:02.548767Z[0m [34mDEBUG[0m [2mhyper::proto::h1::io[0m[2m:[0m flushed 80 bytes| |2022-09-16T18:18:02.553114121Z|stdout|[2m2022-09-16T18:18:02.553013Z[0m [34mDEBUG[0m [2mhyper::proto::h1::io[0m[2m:[0m parsed 7 headers| |2022-09-16T18:18:02.553172289Z|stdout|[2m2022-09-16T18:18:02.553024Z[0m [34mDEBUG[0m [2mhyper::proto::h1::conn[0m[2m:[0m incoming body is content-length (178 bytes)| |2022-09-16T18:18:02.553217345Z|stdout|[2m2022-09-16T18:18:02.553042Z[0m [34mDEBUG[0m [2mhyper::proto::h1::conn[0m[2m:[0m incoming body completed| |2022-09-16T18:18:02.553268169Z|stdout|[2m2022-09-16T18:18:02.553186Z[0m [34mDEBUG[0m [1mCamera coms[0m[1m{[0m[3mcamera[0m[2m=[0mIntrare [3mid[0m[2m=[0mintrare[1m}[0m[2m:[0m [2mhyper::client::connect::http[0m[2m:[0m connecting to 192.168.1.81:65001| |2022-09-16T18:18:02.554563468Z|stdout|[2m2022-09-16T18:18:02.554474Z[0m [34mDEBUG[0m [1mCamera coms[0m[1m{[0m[3mcamera[0m[2m=[0mIntrare [3mid[0m[2m=[0mintrare[1m}[0m[2m:[0m [2mhyper::client::connect::http[0m[2m:[0m connected to 192.168.1.81:65001| |2022-09-16T18:18:02.554623255Z|stdout|[2m2022-09-16T18:18:02.554550Z[0m [34mDEBUG[0m [2mhyper::proto::h1::io[0m[2m:[0m flushed 374 bytes| |2022-09-16T18:18:02.562266490Z|stdout|[2m2022-09-16T18:18:02.561980Z[0m [34mDEBUG[0m [2mhyper::proto::h1::io[0m[2m:[0m parsed 7 headers| |2022-09-16T18:18:02.562454807Z|stdout|[2m2022-09-16T18:18:02.562037Z[0m [34mDEBUG[0m [2mhyper::proto::h1::conn[0m[2m:[0m incoming body is content-length (1136 bytes)| |2022-09-16T18:18:02.562503386Z|stdout|[2m2022-09-16T18:18:02.562052Z[0m [34mDEBUG[0m [2mhyper::proto::h1::conn[0m[2m:[0m incoming body completed| |2022-09-16T18:18:02.562561834Z|stdout|[2m2022-09-16T18:18:02.562411Z[0m [34mDEBUG[0m [1mCamera coms[0m[1m{[0m[3mcamera[0m[2m=[0mIntrare [3mid[0m[2m=[0mintrare[1m}[0m[2m:[0m [2mhyper::client::connect::http[0m[2m:[0m connecting to 192.168.1.81:65001| |2022-09-16T18:18:02.563823710Z|stdout|[2m2022-09-16T18:18:02.563745Z[0m [34mDEBUG[0m [1mCamera coms[0m[1m{[0m[3mcamera[0m[2m=[0mIntrare [3mid[0m[2m=[0mintrare[1m}[0m[2m:[0m [2mhyper::client::connect::http[0m[2m:[0m connected to 192.168.1.81:65001| |2022-09-16T18:18:02.563911155Z|stdout|[2m2022-09-16T18:18:02.563828Z[0m [34mDEBUG[0m [2mhyper::proto::h1::io[0m[2m:[0m flushed 77 bytes| |2022-09-16T18:18:02.568210240Z|stdout|[2m2022-09-16T18:18:02.568039Z[0m [34mDEBUG[0m [2mhyper::proto::h1::io[0m[2m:[0m parsed 7 headers| |2022-09-16T18:18:02.568454077Z|stdout|[2m2022-09-16T18:18:02.568070Z[0m [34mDEBUG[0m [2mhyper::proto::h1::conn[0m[2m:[0m incoming body is content-length (178 bytes)| |2022-09-16T18:18:02.568528318Z|stdout|[2m2022-09-16T18:18:02.568086Z[0m [34mDEBUG[0m [2mhyper::proto::h1::conn[0m[2m:[0m incoming body completed| |2022-09-16T18:18:02.568567893Z|stdout|[2m2022-09-16T18:18:02.568264Z[0m [34mDEBUG[0m [1mCamera coms[0m[1m{[0m[3mcamera[0m[2m=[0mIntrare [3mid[0m[2m=[0mintrare[1m}[0m[2m:[0m [2mhyper::client::connect::http[0m[2m:[0m connecting to 192.168.1.81:65001| |2022-09-16T18:18:02.569325423Z|stdout|[2m2022-09-16T18:18:02.569235Z[0m [34mDEBUG[0m [1mCamera coms[0m[1m{[0m[3mcamera[0m[2m=[0mIntrare [3mid[0m[2m=[0mintrare[1m}[0m[2m:[0m [2mhyper::client::connect::http[0m[2m:[0m connected to 192.168.1.81:65001| |2022-09-16T18:18:02.569384804Z|stdout|[2m2022-09-16T18:18:02.569322Z[0m [34mDEBUG[0m [2mhyper::proto::h1::io[0m[2m:[0m flushed 368 bytes| |2022-09-16T18:18:02.591458805Z|stdout|[2m2022-09-16T18:18:02.591251Z[0m [34mDEBUG[0m [2mhyper::proto::h1::io[0m[2m:[0m parsed 7 headers| |2022-09-16T18:18:02.591633774Z|stdout|[2m2022-09-16T18:18:02.591282Z[0m [34mDEBUG[0m [2mhyper::proto::h1::conn[0m[2m:[0m incoming body is content-length (275 bytes)| |2022-09-16T18:18:02.591689834Z|stdout|[2m2022-09-16T18:18:02.591297Z[0m [34mDEBUG[0m [2mhyper::proto::h1::conn[0m[2m:[0m incoming body completed| |2022-09-16T18:18:02.591789257Z|stdout|[2m2022-09-16T18:18:02.591478Z[0m [31mERROR[0m [1mCamera coms[0m[1m{[0m[3mcamera[0m[2m=[0mIntrare [3mid[0m[2m=[0mintrare[1m}[0m[2m:[0m [2mhik_sink::hikapi::camera[0m[2m:[0m Error reconnecting to camera Could not authenticate with camera: Invalid status code after auth token sent: 500| |2022-09-16T18:18:02.591876875Z|stdout|[2m2022-09-16T18:18:02.591531Z[0m [34mDEBUG[0m [2mhik_sink::mqtt::connection[0m[2m:[0m Camera event [3mid[0m[2m=[0m"intrare" [3mevent[0m[2m=[0mDisconnected { error: "Reconnection failure: Could not authenticate with camera: Invalid status code after auth token sent: 500" }|

    This is my config:

    # Supports TRACE, DEBUG, INFO, WARN, and ERROR
    log_level = "DEBUG"
    
    [mqtt]
    address = "192.168.1.99"
    port = 1883
    username = "mosquitto"
    password = "*****"
    # Optional: Customise the client ID used when connecting to the MQTT broker
    # client_id = "hik-sink"
    # The MQTT topic under which all camera events will be published
    base_topic = "hikvision_cameras"
    home_assistant_topic = "homeassistant"
    
    # Duplicate this camera section to add multiple cameras
    [[camera]]
    name = "Intrare"
    address = "192.168.1.81"
    # Port is optional. Use this if your camera is behind an NVR.
    port = 65001 //port of the IP camera assigned by the NVR
    # The username and password of any account that has 'Notify Surveillance Center' permissions.
    username = "admin"
    password = "*****"
    

    Am i doing something wrong?

    opened by iondarie 1
  • Intercom

    Intercom

    Hello, Thanks for your beautiful work. Is it possible to manage intercom like DS-KV6113 ?

    Here you can find any information and my method to get call status

    intercom.pdf

    opened by MuadDibVV 1
  • Trigger

    Trigger "shelteralarm" unknown

    For some of my cameras the tamper alarm does not work and I get the following error. PyHik seems to have had the same issue in the past.

    Oct 02 09:40:47.673  WARN hik_sink::mqtt::manager: Camera send an alert for a trigger which does not exist camera="kamera_vorgarten_rechts" trigger=Unknown("shelteralarm")
    

    And by the way, thank you for creating HikSink. It's working so much better than the native Home Assistant integration.

    opened by giu889 1
  • Stream could not be resolved to a multipart form: Couldn't get next part of stream: Part headers invalid: invalid header name

    Stream could not be resolved to a multipart form: Couldn't get next part of stream: Part headers invalid: invalid header name

    Hi!

    First of all, thanks for creating HikSink!

    I've run into an error anytime an event is triggered. I have 5 cameras configured, all of them are DS-2CD2347G2-L and they behave the same. When an event is tiggered I get the below error and the camera reconnects. The below log is a line crossing event where I go through the line back and forth.

    2022-09-30T19:08:41.969665Z  WARN Camera coms{camera=Cam Bejarat id=cam_bejarat}: hik_sink::hikapi::camera: Camera errored: Stream could not be resolved to a multipart form: Couldn't get next part of stream: Part headers invalid: invalid header name. Attempting reconnection...
    2022-09-30T19:08:41.970575Z DEBUG hik_sink::mqtt::connection: Camera event id="cam_bejarat" event=Disconnected { error: "Stream could not be resolved to a multipart form: Couldn't get next part of stream: Part headers invalid: invalid header name" }
    

    The issue is the same with all my cameras. Firmware version: V5.7.10 build 220830

    What I tried:

    • switch from a dedicated user to admin user to limit the possibility of some user credential related issue
    • limit the enabled event types to only one.
    • switch from stable to nightly

    No joy.

    Debug logs below. Any help or idea would be appreciated :)

    Thank you!

    2022-09-30T18:53:31.502448Z  INFO hik_sink: HikSink MQTT bridge running
    2022-09-30T18:53:31.504214Z  INFO Camera coms{camera=Cam Bejarat id=cam_bejarat}: hik_sink::hikapi::camera: Initiating camera connection...
    2022-09-30T18:53:31.504541Z  INFO Camera coms{camera=Cam Oldalkert id=cam_oldalkert}: hik_sink::hikapi::camera: Initiating camera connection...
    2022-09-30T18:53:31.506854Z  INFO Camera coms{camera=Cam Udvar 1 id=cam_udvar_1}: hik_sink::hikapi::camera: Initiating camera connection...
    2022-09-30T18:53:31.506879Z  INFO Camera coms{camera=Cam Udvar 2 id=cam_udvar_2}: hik_sink::hikapi::camera: Initiating camera connection...
    2022-09-30T18:53:31.507835Z  INFO Camera coms{camera=Cam Sufni id=cam_sufni}: hik_sink::hikapi::camera: Initiating camera connection...
    2022-09-30T18:53:31.513380Z  INFO hik_sink::mqtt::connection: Connected to MQTT broker.
    2022-09-30T18:53:32.264056Z  INFO Camera coms{camera=Cam Udvar 2 id=cam_udvar_2}: hik_sink::hikapi::camera: Camera connection established
    2022-09-30T18:53:32.270981Z  INFO Camera coms{camera=Cam Sufni id=cam_sufni}: hik_sink::hikapi::camera: Camera connection established
    2022-09-30T18:53:32.275274Z  INFO Camera coms{camera=Cam Bejarat id=cam_bejarat}: hik_sink::hikapi::camera: Camera connection established
    2022-09-30T18:53:32.275319Z  INFO Camera coms{camera=Cam Udvar 1 id=cam_udvar_1}: hik_sink::hikapi::camera: Camera connection established
    2022-09-30T18:53:32.312902Z  INFO Camera coms{camera=Cam Oldalkert id=cam_oldalkert}: hik_sink::hikapi::camera: Camera connection established
    2022-09-30T18:54:04.451367Z  WARN Camera coms{camera=Cam Bejarat id=cam_bejarat}: hik_sink::hikapi::camera: Camera errored: Stream could not be resolved to a multipart form: Stream returned non-UTF-8 text: invalid utf-8 sequence of 1 bytes from index 0. Attempting reconnection...
    2022-09-30T18:54:05.198159Z  INFO Camera coms{camera=Cam Bejarat id=cam_bejarat}: hik_sink::hikapi::camera: Camera connection established
    2022-09-30T18:54:15.455199Z  WARN Camera coms{camera=Cam Bejarat id=cam_bejarat}: hik_sink::hikapi::camera: Camera errored: Stream could not be resolved to a multipart form: Couldn't get next part of stream: Part headers invalid: invalid header name. Attempting reconnection...
    2022-09-30T18:54:16.202045Z  INFO Camera coms{camera=Cam Bejarat id=cam_bejarat}: hik_sink::hikapi::camera: Camera connection established
    2022-09-30T19:07:49.902685Z  INFO hik_sink: HikSink MQTT bridge running
    2022-09-30T19:07:49.902802Z  INFO Camera coms{camera=Cam Bejarat id=cam_bejarat}: hik_sink::hikapi::camera: Initiating camera connection...
    2022-09-30T19:07:49.904496Z  INFO Camera coms{camera=Cam Oldalkert id=cam_oldalkert}: hik_sink::hikapi::camera: Initiating camera connection...
    2022-09-30T19:07:49.904717Z  INFO Camera coms{camera=Cam Udvar 1 id=cam_udvar_1}: hik_sink::hikapi::camera: Initiating camera connection...
    2022-09-30T19:07:49.904726Z DEBUG hyper::client::connect::dns: resolving host="cam-001"
    2022-09-30T19:07:49.904957Z  INFO Camera coms{camera=Cam Udvar 2 id=cam_udvar_2}: hik_sink::hikapi::camera: Initiating camera connection...
    2022-09-30T19:07:49.905184Z  INFO Camera coms{camera=Cam Sufni id=cam_sufni}: hik_sink::hikapi::camera: Initiating camera connection...
    2022-09-30T19:07:49.905330Z DEBUG hyper::client::connect::dns: resolving host="cam-002"
    2022-09-30T19:07:49.905480Z DEBUG hyper::client::connect::dns: resolving host="cam-003"
    2022-09-30T19:07:49.905658Z DEBUG hyper::client::connect::dns: resolving host="cam-004"
    2022-09-30T19:07:49.905777Z DEBUG hyper::client::connect::dns: resolving host="cam-005"
    2022-09-30T19:07:49.909891Z DEBUG Camera coms{camera=Cam Bejarat id=cam_bejarat}: hyper::client::connect::http: connecting to 192.168.15.14:80
    2022-09-30T19:07:49.911637Z DEBUG Camera coms{camera=Cam Bejarat id=cam_bejarat}: hyper::client::connect::http: connected to 192.168.15.14:80
    2022-09-30T19:07:49.911762Z DEBUG hyper::proto::h1::io: flushed 94 bytes
    2022-09-30T19:07:49.914960Z DEBUG hyper::proto::h1::io: parsed 8 headers
    2022-09-30T19:07:49.914976Z DEBUG hyper::proto::h1::conn: incoming body is content-length (178 bytes)
    2022-09-30T19:07:49.914994Z DEBUG hyper::proto::h1::conn: incoming body completed
    2022-09-30T19:07:49.915157Z DEBUG hyper::client::connect::dns: resolving host="cam-001"
    2022-09-30T19:07:49.915159Z DEBUG Camera coms{camera=Cam Oldalkert id=cam_oldalkert}: hyper::client::connect::http: connecting to 192.168.15.15:80
    2022-09-30T19:07:49.915600Z DEBUG Camera coms{camera=Cam Oldalkert id=cam_oldalkert}: hyper::client::connect::http: connected to 192.168.15.15:80
    2022-09-30T19:07:49.915690Z DEBUG hyper::proto::h1::io: flushed 94 bytes
    2022-09-30T19:07:49.917398Z DEBUG Camera coms{camera=Cam Udvar 1 id=cam_udvar_1}: hyper::client::connect::http: connecting to 192.168.15.16:80
    2022-09-30T19:07:49.917869Z DEBUG Camera coms{camera=Cam Udvar 1 id=cam_udvar_1}: hyper::client::connect::http: connected to 192.168.15.16:80
    2022-09-30T19:07:49.917977Z DEBUG hyper::proto::h1::io: flushed 94 bytes
    2022-09-30T19:07:49.921310Z DEBUG Camera coms{camera=Cam Udvar 2 id=cam_udvar_2}: hyper::client::connect::http: connecting to 192.168.15.17:80
    2022-09-30T19:07:49.922908Z DEBUG hyper::proto::h1::io: parsed 8 headers
    2022-09-30T19:07:49.922927Z DEBUG hyper::proto::h1::conn: incoming body is content-length (178 bytes)
    2022-09-30T19:07:49.922938Z DEBUG hyper::proto::h1::conn: incoming body completed
    2022-09-30T19:07:49.923160Z DEBUG Camera coms{camera=Cam Udvar 2 id=cam_udvar_2}: hyper::client::connect::http: connected to 192.168.15.17:80
    2022-09-30T19:07:49.923223Z DEBUG hyper::proto::h1::io: flushed 94 bytes
    2022-09-30T19:07:49.923246Z DEBUG hyper::proto::h1::io: parsed 8 headers
    2022-09-30T19:07:49.923250Z DEBUG hyper::proto::h1::conn: incoming body is content-length (178 bytes)
    2022-09-30T19:07:49.923255Z DEBUG hyper::proto::h1::conn: incoming body completed
    2022-09-30T19:07:49.923374Z DEBUG hyper::client::connect::dns: resolving host="cam-002"
    2022-09-30T19:07:49.923834Z DEBUG hyper::client::connect::dns: resolving host="cam-003"
    2022-09-30T19:07:49.925145Z DEBUG Camera coms{camera=Cam Sufni id=cam_sufni}: hyper::client::connect::http: connecting to 192.168.15.18:80
    2022-09-30T19:07:49.925340Z DEBUG hyper::proto::h1::io: parsed 8 headers
    2022-09-30T19:07:49.925349Z DEBUG hyper::proto::h1::conn: incoming body is content-length (178 bytes)
    2022-09-30T19:07:49.925359Z DEBUG hyper::proto::h1::conn: incoming body completed
    2022-09-30T19:07:49.925796Z DEBUG Camera coms{camera=Cam Sufni id=cam_sufni}: hyper::client::connect::http: connected to 192.168.15.18:80
    2022-09-30T19:07:49.925861Z DEBUG hyper::proto::h1::io: flushed 94 bytes
    2022-09-30T19:07:49.926184Z DEBUG hyper::client::connect::dns: resolving host="cam-004"
    2022-09-30T19:07:49.927423Z DEBUG Camera coms{camera=Cam Bejarat id=cam_bejarat}: hyper::client::connect::http: connecting to 192.168.15.14:80
    2022-09-30T19:07:49.927875Z DEBUG Camera coms{camera=Cam Bejarat id=cam_bejarat}: hyper::client::connect::http: connected to 192.168.15.14:80
    2022-09-30T19:07:49.927985Z DEBUG hyper::proto::h1::io: flushed 388 bytes
    2022-09-30T19:07:49.928212Z DEBUG hyper::proto::h1::io: parsed 8 headers
    2022-09-30T19:07:49.928219Z DEBUG hyper::proto::h1::conn: incoming body is content-length (178 bytes)
    2022-09-30T19:07:49.928229Z DEBUG hyper::proto::h1::conn: incoming body completed
    2022-09-30T19:07:49.928461Z DEBUG hyper::client::connect::dns: resolving host="cam-005"
    2022-09-30T19:07:49.929162Z DEBUG Camera coms{camera=Cam Oldalkert id=cam_oldalkert}: hyper::client::connect::http: connecting to 192.168.15.15:80
    2022-09-30T19:07:49.929590Z DEBUG Camera coms{camera=Cam Oldalkert id=cam_oldalkert}: hyper::client::connect::http: connected to 192.168.15.15:80
    2022-09-30T19:07:49.929674Z DEBUG hyper::proto::h1::io: flushed 388 bytes
    2022-09-30T19:07:49.930956Z DEBUG Camera coms{camera=Cam Udvar 1 id=cam_udvar_1}: hyper::client::connect::http: connecting to 192.168.15.16:80
    2022-09-30T19:07:49.931455Z DEBUG Camera coms{camera=Cam Udvar 1 id=cam_udvar_1}: hyper::client::connect::http: connected to 192.168.15.16:80
    2022-09-30T19:07:49.931563Z DEBUG hyper::proto::h1::io: flushed 388 bytes
    2022-09-30T19:07:49.934133Z DEBUG hyper::proto::h1::io: parsed 8 headers
    2022-09-30T19:07:49.934153Z DEBUG hyper::proto::h1::conn: incoming body is content-length (1136 bytes)
    2022-09-30T19:07:49.934190Z DEBUG hyper::proto::h1::conn: incoming body completed
    2022-09-30T19:07:49.935570Z DEBUG Camera coms{camera=Cam Sufni id=cam_sufni}: hyper::client::connect::http: connecting to 192.168.15.18:80
    2022-09-30T19:07:49.935887Z DEBUG hyper::proto::h1::io: parsed 8 headers
    2022-09-30T19:07:49.935899Z DEBUG hyper::proto::h1::conn: incoming body is content-length (1136 bytes)
    2022-09-30T19:07:49.935911Z DEBUG hyper::proto::h1::conn: incoming body completed
    2022-09-30T19:07:49.939990Z DEBUG hyper::client::connect::dns: resolving host="cam-001"
    2022-09-30T19:07:49.940715Z DEBUG Camera coms{camera=Cam Udvar 2 id=cam_udvar_2}: hyper::client::connect::http: connecting to 192.168.15.17:80
    2022-09-30T19:07:49.941130Z  INFO hik_sink::mqtt::connection: Connected to MQTT broker.
    2022-09-30T19:07:49.941693Z DEBUG hyper::proto::h1::io: parsed 8 headers
    2022-09-30T19:07:49.941920Z DEBUG hyper::proto::h1::conn: incoming body is content-length (1136 bytes)
    2022-09-30T19:07:49.942178Z DEBUG hyper::proto::h1::conn: incoming body completed
    2022-09-30T19:07:49.942633Z DEBUG hyper::client::connect::dns: resolving host="cam-003"
    2022-09-30T19:07:49.942989Z DEBUG Camera coms{camera=Cam Sufni id=cam_sufni}: hyper::client::connect::http: connected to 192.168.15.18:80
    2022-09-30T19:07:49.943308Z DEBUG hyper::proto::h1::io: flushed 388 bytes
    2022-09-30T19:07:49.943626Z DEBUG Camera coms{camera=Cam Udvar 2 id=cam_udvar_2}: hyper::client::connect::http: connected to 192.168.15.17:80
    2022-09-30T19:07:49.944243Z DEBUG hyper::proto::h1::io: flushed 388 bytes
    2022-09-30T19:07:49.956568Z DEBUG hyper::proto::h1::io: parsed 8 headers
    2022-09-30T19:07:49.957418Z DEBUG hyper::proto::h1::conn: incoming body is content-length (1136 bytes)
    2022-09-30T19:07:49.957733Z DEBUG hyper::proto::h1::conn: incoming body completed
    2022-09-30T19:07:49.958259Z DEBUG hyper::client::connect::dns: resolving host="cam-004"
    2022-09-30T19:07:49.952609Z DEBUG hyper::proto::h1::io: parsed 8 headers
    2022-09-30T19:07:49.958508Z DEBUG hyper::proto::h1::conn: incoming body is content-length (1136 bytes)
    2022-09-30T19:07:49.958567Z DEBUG hyper::proto::h1::conn: incoming body completed
    2022-09-30T19:07:49.958962Z DEBUG Camera coms{camera=Cam Bejarat id=cam_bejarat}: hyper::client::connect::http: connecting to 192.168.15.14:80
    2022-09-30T19:07:49.959134Z DEBUG hyper::client::connect::dns: resolving host="cam-005"
    2022-09-30T19:07:49.959487Z DEBUG Camera coms{camera=Cam Bejarat id=cam_bejarat}: hyper::client::connect::http: connected to 192.168.15.14:80
    2022-09-30T19:07:49.959673Z DEBUG hyper::proto::h1::io: flushed 91 bytes
    2022-09-30T19:07:49.952625Z DEBUG hyper::client::connect::dns: resolving host="cam-002"
    2022-09-30T19:07:49.958259Z DEBUG Camera coms{camera=Cam Udvar 1 id=cam_udvar_1}: hyper::client::connect::http: connecting to 192.168.15.16:80
    2022-09-30T19:07:49.960483Z DEBUG Camera coms{camera=Cam Udvar 1 id=cam_udvar_1}: hyper::client::connect::http: connected to 192.168.15.16:80
    2022-09-30T19:07:49.960688Z DEBUG hyper::proto::h1::io: flushed 91 bytes
    2022-09-30T19:07:49.961741Z DEBUG hyper::proto::h1::io: parsed 8 headers
    2022-09-30T19:07:49.961797Z DEBUG hyper::proto::h1::conn: incoming body is content-length (178 bytes)
    2022-09-30T19:07:49.961836Z DEBUG hyper::proto::h1::conn: incoming body completed
    2022-09-30T19:07:49.962077Z DEBUG hyper::client::connect::dns: resolving host="cam-001"
    2022-09-30T19:07:49.963450Z DEBUG Camera coms{camera=Cam Udvar 2 id=cam_udvar_2}: hyper::client::connect::http: connecting to 192.168.15.17:80
    2022-09-30T19:07:49.964059Z DEBUG Camera coms{camera=Cam Udvar 2 id=cam_udvar_2}: hyper::client::connect::http: connected to 192.168.15.17:80
    2022-09-30T19:07:49.964238Z DEBUG hyper::proto::h1::io: flushed 91 bytes
    2022-09-30T19:07:49.965183Z DEBUG Camera coms{camera=Cam Sufni id=cam_sufni}: hyper::client::connect::http: connecting to 192.168.15.18:80
    2022-09-30T19:07:49.965585Z DEBUG hyper::proto::h1::io: parsed 8 headers
    2022-09-30T19:07:49.965775Z DEBUG hyper::proto::h1::conn: incoming body is content-length (178 bytes)
    2022-09-30T19:07:49.965864Z DEBUG hyper::proto::h1::conn: incoming body completed
    2022-09-30T19:07:49.966119Z DEBUG hyper::client::connect::dns: resolving host="cam-003"
    2022-09-30T19:07:49.966470Z DEBUG hyper::proto::h1::io: parsed 8 headers
    2022-09-30T19:07:49.966614Z DEBUG hyper::proto::h1::conn: incoming body is content-length (178 bytes)
    2022-09-30T19:07:49.966684Z DEBUG hyper::proto::h1::conn: incoming body completed
    2022-09-30T19:07:49.966922Z DEBUG Camera coms{camera=Cam Sufni id=cam_sufni}: hyper::client::connect::http: connected to 192.168.15.18:80
    2022-09-30T19:07:49.967154Z DEBUG hyper::proto::h1::io: flushed 91 bytes
    2022-09-30T19:07:49.967283Z DEBUG Camera coms{camera=Cam Oldalkert id=cam_oldalkert}: hyper::client::connect::http: connecting to 192.168.15.15:80
    2022-09-30T19:07:49.968057Z DEBUG hyper::client::connect::dns: resolving host="cam-004"
    2022-09-30T19:07:49.968278Z DEBUG Camera coms{camera=Cam Bejarat id=cam_bejarat}: hyper::client::connect::http: connecting to 192.168.15.14:80
    2022-09-30T19:07:49.968801Z DEBUG Camera coms{camera=Cam Bejarat id=cam_bejarat}: hyper::client::connect::http: connected to 192.168.15.14:80
    2022-09-30T19:07:49.968992Z DEBUG hyper::proto::h1::io: flushed 382 bytes
    2022-09-30T19:07:49.969042Z DEBUG Camera coms{camera=Cam Oldalkert id=cam_oldalkert}: hyper::client::connect::http: connected to 192.168.15.15:80
    2022-09-30T19:07:49.969164Z DEBUG hyper::proto::h1::io: flushed 91 bytes
    2022-09-30T19:07:49.969211Z DEBUG Camera coms{camera=Cam Udvar 1 id=cam_udvar_1}: hyper::client::connect::http: connecting to 192.168.15.16:80
    2022-09-30T19:07:49.969400Z DEBUG hyper::proto::h1::io: parsed 8 headers
    2022-09-30T19:07:49.969445Z DEBUG hyper::proto::h1::conn: incoming body is content-length (178 bytes)
    2022-09-30T19:07:49.969537Z DEBUG hyper::proto::h1::conn: incoming body completed
    2022-09-30T19:07:49.969755Z DEBUG hyper::client::connect::dns: resolving host="cam-005"
    2022-09-30T19:07:49.969950Z DEBUG Camera coms{camera=Cam Udvar 1 id=cam_udvar_1}: hyper::client::connect::http: connected to 192.168.15.16:80
    2022-09-30T19:07:49.970098Z DEBUG hyper::proto::h1::io: flushed 382 bytes
    2022-09-30T19:07:49.971053Z DEBUG hyper::proto::h1::io: parsed 8 headers
    2022-09-30T19:07:49.971118Z DEBUG hyper::proto::h1::conn: incoming body is content-length (178 bytes)
    2022-09-30T19:07:49.971227Z DEBUG hyper::proto::h1::conn: incoming body completed
    2022-09-30T19:07:49.971534Z DEBUG hyper::client::connect::dns: resolving host="cam-002"
    2022-09-30T19:07:49.973302Z DEBUG Camera coms{camera=Cam Oldalkert id=cam_oldalkert}: hyper::client::connect::http: connecting to 192.168.15.15:80
    2022-09-30T19:07:49.974330Z DEBUG Camera coms{camera=Cam Sufni id=cam_sufni}: hyper::client::connect::http: connecting to 192.168.15.18:80
    2022-09-30T19:07:49.974393Z DEBUG Camera coms{camera=Cam Udvar 2 id=cam_udvar_2}: hyper::client::connect::http: connecting to 192.168.15.17:80
    2022-09-30T19:07:49.974894Z DEBUG Camera coms{camera=Cam Sufni id=cam_sufni}: hyper::client::connect::http: connected to 192.168.15.18:80
    2022-09-30T19:07:49.975179Z DEBUG hyper::proto::h1::io: flushed 382 bytes
    2022-09-30T19:07:49.975257Z DEBUG Camera coms{camera=Cam Udvar 2 id=cam_udvar_2}: hyper::client::connect::http: connected to 192.168.15.17:80
    2022-09-30T19:07:49.975407Z DEBUG hyper::proto::h1::io: flushed 382 bytes
    2022-09-30T19:07:49.975470Z DEBUG Camera coms{camera=Cam Oldalkert id=cam_oldalkert}: hyper::client::connect::http: connected to 192.168.15.15:80
    2022-09-30T19:07:49.975639Z DEBUG hyper::proto::h1::io: flushed 382 bytes
    2022-09-30T19:07:49.977009Z DEBUG hyper::proto::h1::io: parsed 8 headers
    2022-09-30T19:07:49.977136Z DEBUG hyper::proto::h1::conn: incoming body is content-length (6828 bytes)
    2022-09-30T19:07:49.977353Z DEBUG hyper::proto::h1::conn: incoming body completed
    2022-09-30T19:07:49.977771Z DEBUG hyper::client::connect::dns: resolving host="cam-001"
    2022-09-30T19:07:49.978258Z DEBUG hyper::proto::h1::io: parsed 8 headers
    2022-09-30T19:07:49.978293Z DEBUG hyper::proto::h1::conn: incoming body is content-length (7479 bytes)
    2022-09-30T19:07:49.978749Z DEBUG hyper::proto::h1::conn: incoming body completed
    2022-09-30T19:07:49.979176Z DEBUG hyper::client::connect::dns: resolving host="cam-003"
    2022-09-30T19:07:49.979853Z DEBUG Camera coms{camera=Cam Bejarat id=cam_bejarat}: hyper::client::connect::http: connecting to 192.168.15.14:80
    2022-09-30T19:07:49.980297Z DEBUG Camera coms{camera=Cam Bejarat id=cam_bejarat}: hyper::client::connect::http: connected to 192.168.15.14:80
    2022-09-30T19:07:49.980404Z DEBUG hyper::proto::h1::io: flushed 107 bytes
    2022-09-30T19:07:49.980901Z DEBUG Camera coms{camera=Cam Udvar 1 id=cam_udvar_1}: hyper::client::connect::http: connecting to 192.168.15.16:80
    2022-09-30T19:07:49.982368Z DEBUG hyper::proto::h1::io: parsed 8 headers
    2022-09-30T19:07:49.982472Z DEBUG hyper::proto::h1::conn: incoming body is content-length (7479 bytes)
    2022-09-30T19:07:49.982689Z DEBUG hyper::proto::h1::io: parsed 8 headers
    2022-09-30T19:07:49.982736Z DEBUG hyper::proto::h1::conn: incoming body is content-length (178 bytes)
    2022-09-30T19:07:49.982848Z DEBUG hyper::proto::h1::conn: incoming body completed
    2022-09-30T19:07:49.983288Z DEBUG hyper::client::connect::dns: resolving host="cam-002"
    2022-09-30T19:07:49.983543Z DEBUG hyper::proto::h1::conn: incoming body completed
    2022-09-30T19:07:49.983751Z DEBUG hyper::client::connect::dns: resolving host="cam-001"
    2022-09-30T19:07:49.983975Z DEBUG Camera coms{camera=Cam Udvar 1 id=cam_udvar_1}: hyper::client::connect::http: connected to 192.168.15.16:80
    2022-09-30T19:07:49.984110Z DEBUG hyper::proto::h1::io: flushed 107 bytes
    2022-09-30T19:07:49.985831Z DEBUG Camera coms{camera=Cam Bejarat id=cam_bejarat}: hyper::client::connect::http: connecting to 192.168.15.14:80
    2022-09-30T19:07:49.986121Z DEBUG hyper::proto::h1::io: parsed 8 headers
    2022-09-30T19:07:49.986199Z DEBUG hyper::proto::h1::conn: incoming body is content-length (8998 bytes)
    2022-09-30T19:07:49.986335Z DEBUG hyper::proto::h1::conn: incoming body completed
    2022-09-30T19:07:49.986437Z DEBUG hyper::proto::h1::io: parsed 8 headers
    2022-09-30T19:07:49.986481Z DEBUG hyper::proto::h1::conn: incoming body is content-length (7479 bytes)
    2022-09-30T19:07:49.986502Z DEBUG hyper::proto::h1::conn: incoming body completed
    2022-09-30T19:07:49.987304Z DEBUG hyper::client::connect::dns: resolving host="cam-005"
    2022-09-30T19:07:49.987467Z DEBUG Camera coms{camera=Cam Oldalkert id=cam_oldalkert}: hyper::client::connect::http: connecting to 192.168.15.15:80
    2022-09-30T19:07:49.987578Z DEBUG hyper::proto::h1::io: parsed 8 headers
    2022-09-30T19:07:49.987583Z DEBUG hyper::proto::h1::conn: incoming body is content-length (178 bytes)
    2022-09-30T19:07:49.987590Z DEBUG hyper::proto::h1::conn: incoming body completed
    2022-09-30T19:07:49.987709Z DEBUG Camera coms{camera=Cam Bejarat id=cam_bejarat}: hyper::client::connect::http: connected to 192.168.15.14:80
    2022-09-30T19:07:49.987782Z DEBUG hyper::proto::h1::io: flushed 414 bytes
    2022-09-30T19:07:49.987805Z DEBUG hyper::client::connect::dns: resolving host="cam-003"
    2022-09-30T19:07:49.989421Z DEBUG Camera coms{camera=Cam Oldalkert id=cam_oldalkert}: hyper::client::connect::http: connected to 192.168.15.15:80
    2022-09-30T19:07:49.989510Z DEBUG hyper::proto::h1::io: flushed 107 bytes
    2022-09-30T19:07:49.989536Z DEBUG Camera coms{camera=Cam Sufni id=cam_sufni}: hyper::client::connect::http: connecting to 192.168.15.18:80
    2022-09-30T19:07:49.989674Z DEBUG Camera coms{camera=Cam Udvar 1 id=cam_udvar_1}: hyper::client::connect::http: connecting to 192.168.15.16:80
    2022-09-30T19:07:49.990731Z DEBUG Camera coms{camera=Cam Udvar 1 id=cam_udvar_1}: hyper::client::connect::http: connected to 192.168.15.16:80
    2022-09-30T19:07:49.990907Z DEBUG hyper::proto::h1::io: flushed 414 bytes
    2022-09-30T19:07:49.990926Z DEBUG Camera coms{camera=Cam Sufni id=cam_sufni}: hyper::client::connect::http: connected to 192.168.15.18:80
    2022-09-30T19:07:49.991041Z DEBUG hyper::proto::h1::io: flushed 107 bytes
    2022-09-30T19:07:49.991173Z DEBUG hyper::client::connect::dns: resolving host="cam-004"
    2022-09-30T19:07:49.993079Z DEBUG hyper::proto::h1::io: parsed 8 headers
    2022-09-30T19:07:49.993166Z DEBUG hyper::proto::h1::conn: incoming body is content-length (178 bytes)
    2022-09-30T19:07:49.993197Z DEBUG hyper::proto::h1::conn: incoming body completed
    2022-09-30T19:07:49.993423Z DEBUG hyper::client::connect::dns: resolving host="cam-002"
    2022-09-30T19:07:49.993088Z DEBUG hyper::proto::h1::io: parsed 8 headers
    2022-09-30T19:07:49.993705Z DEBUG hyper::proto::h1::conn: incoming body is content-length (178 bytes)
    2022-09-30T19:07:49.993731Z DEBUG hyper::proto::h1::conn: incoming body completed
    2022-09-30T19:07:49.994553Z DEBUG hyper::client::connect::dns: resolving host="cam-005"
    2022-09-30T19:07:49.994711Z DEBUG Camera coms{camera=Cam Udvar 2 id=cam_udvar_2}: hyper::client::connect::http: connecting to 192.168.15.17:80
    2022-09-30T19:07:49.995145Z DEBUG Camera coms{camera=Cam Udvar 2 id=cam_udvar_2}: hyper::client::connect::http: connected to 192.168.15.17:80
    2022-09-30T19:07:49.995293Z DEBUG hyper::proto::h1::io: flushed 107 bytes
    2022-09-30T19:07:49.995698Z DEBUG Camera coms{camera=Cam Oldalkert id=cam_oldalkert}: hyper::client::connect::http: connecting to 192.168.15.15:80
    2022-09-30T19:07:49.996166Z DEBUG Camera coms{camera=Cam Oldalkert id=cam_oldalkert}: hyper::client::connect::http: connected to 192.168.15.15:80
    2022-09-30T19:07:49.996329Z DEBUG hyper::proto::h1::io: flushed 414 bytes
    2022-09-30T19:07:49.996355Z DEBUG Camera coms{camera=Cam Sufni id=cam_sufni}: hyper::client::connect::http: connecting to 192.168.15.18:80
    2022-09-30T19:07:49.996824Z DEBUG Camera coms{camera=Cam Sufni id=cam_sufni}: hyper::client::connect::http: connected to 192.168.15.18:80
    2022-09-30T19:07:49.997163Z DEBUG hyper::proto::h1::io: flushed 414 bytes
    2022-09-30T19:07:49.998880Z DEBUG hyper::proto::h1::io: parsed 8 headers
    2022-09-30T19:07:49.998974Z DEBUG hyper::proto::h1::conn: incoming body is content-length (178 bytes)
    2022-09-30T19:07:49.999005Z DEBUG hyper::proto::h1::conn: incoming body completed
    2022-09-30T19:07:49.999176Z DEBUG hyper::client::connect::dns: resolving host="cam-004"
    2022-09-30T19:07:50.000699Z DEBUG Camera coms{camera=Cam Udvar 2 id=cam_udvar_2}: hyper::client::connect::http: connecting to 192.168.15.17:80
    2022-09-30T19:07:50.001255Z DEBUG Camera coms{camera=Cam Udvar 2 id=cam_udvar_2}: hyper::client::connect::http: connected to 192.168.15.17:80
    2022-09-30T19:07:50.001409Z DEBUG hyper::proto::h1::io: flushed 414 bytes
    2022-09-30T19:07:50.671473Z DEBUG hyper::proto::h1::io: parsed 3 headers
    2022-09-30T19:07:50.671729Z DEBUG hyper::proto::h1::conn: incoming body is close-delimited
    2022-09-30T19:07:50.672251Z  INFO Camera coms{camera=Cam Udvar 1 id=cam_udvar_1}: hik_sink::hikapi::camera: Camera connection established
    
    2-09-30T19:07:50.672891Z DEBUG hik_sink::mqtt::connection: Camera event id="cam_udvar_1" event=Connected { info: DeviceInfo { device_name: "IP CAMERA", device_id: "bc06c000-3dc4-11b5-83fa-d4e8535f639f", model: "DS-2CD2347G2-L", serial_number: "DS-2CD2347G2-L20211018AAWRG93145625", mac_address: "d4:e8:53:5f:63:9f", firmware_version: "V5.7.10", firmware_release_date: "build 220830", device_type: "IPCamera" }, triggers: [TriggerItem { identifier: EventIdentifier { channel: Some("1"), event_type: Motion }, hik_id: "VMD-1", description: "VMD Event trigger Information" }, TriggerItem { identifier: EventIdentifier { channel: Some("1"), event_type: Tamper }, hik_id: "tamper-1", description: "shelteralarm Event trigger Information" }, TriggerItem { identifier: EventIdentifier { channel: Some("1"), event_type: DiskFull }, hik_id: "diskfull", description: "exception Information" }, TriggerItem { identifier: EventIdentifier { channel: Some("1"), event_type: DiskError }, hik_id: "diskerror", description: "exception Information" }, TriggerItem { identifier: EventIdentifier { channel: Some("1"), event_type: NicBroken }, hik_id: "nicbroken", description: "exception Information" }, TriggerItem { identifier: EventIdentifier { channel: Some("1"), event_type: IpConflict }, hik_id: "ipconflict", description: "exception Information" }, TriggerItem { identifier: EventIdentifier { channel: Some("1"), event_type: IllegalAccess }, hik_id: "illaccess", description: "exception Information" }, TriggerItem { identifier: EventIdentifier { channel: Some("1"), event_type: LineDetection }, hik_id: "linedetection-1", description: "Linedetection Event trigger Information" }, TriggerItem { identifier: EventIdentifier { channel: Some("1"), event_type: FieldDetection }, hik_id: "fielddetection-1", description: "fielddetection Event trigger Information" }, TriggerItem { identifier: EventIdentifier { channel: Some("1"), event_type: BadVideo }, hik_id: "badvideo", description: "exception Information" }, TriggerItem { identifier: EventIdentifier { channel: Some("1"), event_type: RegionEntrance }, hik_id: "regionEntrance-1", description: "RegionEntrance Event trigger Information" }, TriggerItem { identifier: EventIdentifier { channel: Some("1"), event_type: RegionExiting }, hik_id: "regionExiting-1", description: "RegionExiting Event trigger Information" }, TriggerItem { identifier: EventIdentifier { channel: Some("1"), event_type: StorageDetection }, hik_id: "storageDetection-1", description: "storageDetection Event trigger Information" }] }
    2022-09-30T19:07:50.678211Z DEBUG hyper::proto::h1::io: parsed 3 headers
    2022-09-30T19:07:50.678544Z DEBUG hyper::proto::h1::conn: incoming body is close-delimited
    2022-09-30T19:07:50.678905Z  INFO Camera coms{camera=Cam Udvar 2 id=cam_udvar_2}: hik_sink::hikapi::camera: Camera connection established
    2022-09-30T19:07:50.679386Z DEBUG hyper::proto::h1::io: parsed 3 headers
    2022-09-30T19:07:50.679513Z DEBUG hyper::proto::h1::conn: incoming body is close-delimited
    2022-09-30T19:07:50.679788Z  INFO Camera coms{camera=Cam Bejarat id=cam_bejarat}: hik_sink::hikapi::camera: Camera connection established
    2022-09-30T19:07:50.680990Z DEBUG hik_sink::mqtt::connection: Camera event id="cam_udvar_1" event=Alert(AlertItem { identifier: EventIdentifier { channel: Some("1"), event_type: VideoLoss }, active: false, regions: [], post_count: 1, description: "videoloss alarm", date: "2022-09-30T21:07:50+02:00" })
    
    2-09-30T19:07:50.681406Z DEBUG hik_sink::mqtt::connection: Camera event id="cam_udvar_2" event=Connected { info: DeviceInfo { device_name: "IP CAMERA", device_id: "bc06c000-3dc4-11b5-83fa-d4e8535f6304", model: "DS-2CD2347G2-L", serial_number: "DS-2CD2347G2-L20211018AAWRG93145470", mac_address: "d4:e8:53:5f:63:04", firmware_version: "V5.7.10", firmware_release_date: "build 220830", device_type: "IPCamera" }, triggers: [TriggerItem { identifier: EventIdentifier { channel: Some("1"), event_type: Motion }, hik_id: "VMD-1", description: "VMD Event trigger Information" }, TriggerItem { identifier: EventIdentifier { channel: Some("1"), event_type: Tamper }, hik_id: "tamper-1", description: "shelteralarm Event trigger Information" }, TriggerItem { identifier: EventIdentifier { channel: Some("1"), event_type: DiskFull }, hik_id: "diskfull", description: "exception Information" }, TriggerItem { identifier: EventIdentifier { channel: Some("1"), event_type: DiskError }, hik_id: "diskerror", description: "exception Information" }, TriggerItem { identifier: EventIdentifier { channel: Some("1"), event_type: NicBroken }, hik_id: "nicbroken", description: "exception Information" }, TriggerItem { identifier: EventIdentifier { channel: Some("1"), event_type: IpConflict }, hik_id: "ipconflict", description: "exception Information" }, TriggerItem { identifier: EventIdentifier { channel: Some("1"), event_type: IllegalAccess }, hik_id: "illaccess", description: "exception Information" }, TriggerItem { identifier: EventIdentifier { channel: Some("1"), event_type: LineDetection }, hik_id: "linedetection-1", description: "Linedetection Event trigger Information" }, TriggerItem { identifier: EventIdentifier { channel: Some("1"), event_type: FieldDetection }, hik_id: "fielddetection-1", description: "fielddetection Event trigger Information" }, TriggerItem { identifier: EventIdentifier { channel: Some("1"), event_type: BadVideo }, hik_id: "badvideo", description: "exception Information" }, TriggerItem { identifier: EventIdentifier { channel: Some("1"), event_type: RegionEntrance }, hik_id: "regionEntrance-1", description: "RegionEntrance Event trigger Information" }, TriggerItem { identifier: EventIdentifier { channel: Some("1"), event_type: RegionExiting }, hik_id: "regionExiting-1", description: "RegionExiting Event trigger Information" }, TriggerItem { identifier: EventIdentifier { channel: Some("1"), event_type: StorageDetection }, hik_id: "storageDetection-1", description: "storageDetection Event trigger Information" }] }
    2022-09-30T19:07:50.686278Z DEBUG hyper::proto::h1::io: parsed 3 headers
    2022-09-30T19:07:50.686408Z DEBUG hyper::proto::h1::conn: incoming body is close-delimited
    2022-09-30T19:07:50.686806Z  INFO Camera coms{camera=Cam Oldalkert id=cam_oldalkert}: hik_sink::hikapi::camera: Camera connection established
    2022-09-30T19:07:50.688961Z DEBUG hyper::proto::h1::io: parsed 3 headers
    2022-09-30T19:07:50.689085Z DEBUG hyper::proto::h1::conn: incoming body is close-delimited
    2022-09-30T19:07:50.689424Z  INFO Camera coms{camera=Cam Sufni id=cam_sufni}: hik_sink::hikapi::camera: Camera connection established
    
    2-09-30T19:07:50.689909Z DEBUG hik_sink::mqtt::connection: Camera event id="cam_bejarat" event=Connected { info: DeviceInfo { device_name: "IP CAMERA", device_id: "bc06c000-3dc4-11b5-83fa-d4e8535f62b5", model: "DS-2CD2347G2-L", serial_number: "DS-2CD2347G2-L20211018AAWRG93145391", mac_address: "d4:e8:53:5f:62:b5", firmware_version: "V5.7.10", firmware_release_date: "build 220830", device_type: "IPCamera" }, triggers: [TriggerItem { identifier: EventIdentifier { channel: Some("1"), event_type: Motion }, hik_id: "VMD-1", description: "VMD Event trigger Information" }, TriggerItem { identifier: EventIdentifier { channel: Some("1"), event_type: Tamper }, hik_id: "tamper-1", description: "shelteralarm Event trigger Information" }, TriggerItem { identifier: EventIdentifier { channel: Some("1"), event_type: DiskFull }, hik_id: "diskfull", description: "exception Information" }, TriggerItem { identifier: EventIdentifier { channel: Some("1"), event_type: DiskError }, hik_id: "diskerror", description: "exception Information" }, TriggerItem { identifier: EventIdentifier { channel: Some("1"), event_type: NicBroken }, hik_id: "nicbroken", description: "exception Information" }, TriggerItem { identifier: EventIdentifier { channel: Some("1"), event_type: IpConflict }, hik_id: "ipconflict", description: "exception Information" }, TriggerItem { identifier: EventIdentifier { channel: Some("1"), event_type: IllegalAccess }, hik_id: "illaccess", description: "exception Information" }, TriggerItem { identifier: EventIdentifier { channel: Some("1"), event_type: LineDetection }, hik_id: "linedetection-1", description: "Linedetection Event trigger Information" }, TriggerItem { identifier: EventIdentifier { channel: Some("1"), event_type: FieldDetection }, hik_id: "fielddetection-1", description: "fielddetection Event trigger Information" }, TriggerItem { identifier: EventIdentifier { channel: Some("1"), event_type: BadVideo }, hik_id: "badvideo", description: "exception Information" }, TriggerItem { identifier: EventIdentifier { channel: Some("1"), event_type: RegionEntrance }, hik_id: "regionEntrance-1", description: "RegionEntrance Event trigger Information" }, TriggerItem { identifier: EventIdentifier { channel: Some("1"), event_type: RegionExiting }, hik_id: "regionExiting-1", description: "RegionExiting Event trigger Information" }, TriggerItem { identifier: EventIdentifier { channel: Some("1"), event_type: StorageDetection }, hik_id: "storageDetection-1", description: "storageDetection Event trigger Information" }] }
    2022-09-30T19:07:50.691521Z DEBUG hik_sink::mqtt::connection: Camera event id="cam_udvar_2" event=Alert(AlertItem { identifier: EventIdentifier { channel: Some("1"), event_type: VideoLoss }, active: false, regions: [], post_count: 1, description: "videoloss alarm", date: "2022-09-30T21:07:51+02:00" })
    2022-09-30T19:07:50.693912Z DEBUG hik_sink::mqtt::connection: Camera event id="cam_bejarat" event=Alert(AlertItem { identifier: EventIdentifier { channel: Some("1"), event_type: VideoLoss }, active: false, regions: [], post_count: 1, description: "videoloss alarm", date: "2022-09-30T21:07:50+02:00" })
    
    2-09-30T19:07:50.694028Z DEBUG hik_sink::mqtt::connection: Camera event id="cam_oldalkert" event=Connected { info: DeviceInfo { device_name: "IP CAMERA", device_id: "e6708000-3e8d-11b5-83fb-d4e8535f655e", model: "DS-2CD2347G2-L", serial_number: "DS-2CD2347G2-L20211019AAWRG93146072", mac_address: "d4:e8:53:5f:65:5e", firmware_version: "V5.7.10", firmware_release_date: "build 220830", device_type: "IPCamera" }, triggers: [TriggerItem { identifier: EventIdentifier { channel: Some("1"), event_type: Motion }, hik_id: "VMD-1", description: "VMD Event trigger Information" }, TriggerItem { identifier: EventIdentifier { channel: Some("1"), event_type: Tamper }, hik_id: "tamper-1", description: "shelteralarm Event trigger Information" }, TriggerItem { identifier: EventIdentifier { channel: Some("1"), event_type: DiskFull }, hik_id: "diskfull", description: "exception Information" }, TriggerItem { identifier: EventIdentifier { channel: Some("1"), event_type: DiskError }, hik_id: "diskerror", description: "exception Information" }, TriggerItem { identifier: EventIdentifier { channel: Some("1"), event_type: NicBroken }, hik_id: "nicbroken", description: "exception Information" }, TriggerItem { identifier: EventIdentifier { channel: Some("1"), event_type: IpConflict }, hik_id: "ipconflict", description: "exception Information" }, TriggerItem { identifier: EventIdentifier { channel: Some("1"), event_type: IllegalAccess }, hik_id: "illaccess", description: "exception Information" }, TriggerItem { identifier: EventIdentifier { channel: Some("1"), event_type: LineDetection }, hik_id: "linedetection-1", description: "Linedetection Event trigger Information" }, TriggerItem { identifier: EventIdentifier { channel: Some("1"), event_type: FieldDetection }, hik_id: "fielddetection-1", description: "fielddetection Event trigger Information" }, TriggerItem { identifier: EventIdentifier { channel: Some("1"), event_type: BadVideo }, hik_id: "badvideo", description: "exception Information" }, TriggerItem { identifier: EventIdentifier { channel: Some("1"), event_type: RegionEntrance }, hik_id: "regionEntrance-1", description: "RegionEntrance Event trigger Information" }, TriggerItem { identifier: EventIdentifier { channel: Some("1"), event_type: RegionExiting }, hik_id: "regionExiting-1", description: "RegionExiting Event trigger Information" }, TriggerItem { identifier: EventIdentifier { channel: Some("1"), event_type: StorageDetection }, hik_id: "storageDetection-1", description: "storageDetection Event trigger Information" }] }
    2022-09-30T19:07:50.694795Z DEBUG hik_sink::mqtt::connection: Camera event id="cam_oldalkert" event=Alert(AlertItem { identifier: EventIdentifier { channel: Some("1"), event_type: VideoLoss }, active: false, regions: [], post_count: 1, description: "videoloss alarm", date: "2022-09-30T21:07:50+02:00" })
    
    2-09-30T19:07:50.694862Z DEBUG hik_sink::mqtt::connection: Camera event id="cam_sufni" event=Connected { info: DeviceInfo { device_name: "IP CAMERA", device_id: "bc06c000-3dc4-11b5-83fa-d4e8535f6461", model: "DS-2CD2347G2-L", serial_number: "DS-2CD2347G2-L20211018AAWRG93145819", mac_address: "d4:e8:53:5f:64:61", firmware_version: "V5.7.10", firmware_release_date: "build 220830", device_type: "IPCamera" }, triggers: [TriggerItem { identifier: EventIdentifier { channel: Some("1"), event_type: Motion }, hik_id: "VMD-1", description: "VMD Event trigger Information" }, TriggerItem { identifier: EventIdentifier { channel: Some("1"), event_type: Tamper }, hik_id: "tamper-1", description: "shelteralarm Event trigger Information" }, TriggerItem { identifier: EventIdentifier { channel: Some("1"), event_type: DiskFull }, hik_id: "diskfull", description: "exception Information" }, TriggerItem { identifier: EventIdentifier { channel: Some("1"), event_type: DiskError }, hik_id: "diskerror", description: "exception Information" }, TriggerItem { identifier: EventIdentifier { channel: Some("1"), event_type: NicBroken }, hik_id: "nicbroken", description: "exception Information" }, TriggerItem { identifier: EventIdentifier { channel: Some("1"), event_type: IpConflict }, hik_id: "ipconflict", description: "exception Information" }, TriggerItem { identifier: EventIdentifier { channel: Some("1"), event_type: IllegalAccess }, hik_id: "illaccess", description: "exception Information" }, TriggerItem { identifier: EventIdentifier { channel: Some("1"), event_type: LineDetection }, hik_id: "linedetection-1", description: "Linedetection Event trigger Information" }, TriggerItem { identifier: EventIdentifier { channel: Some("1"), event_type: FieldDetection }, hik_id: "fielddetection-1", description: "fielddetection Event trigger Information" }, TriggerItem { identifier: EventIdentifier { channel: Some("1"), event_type: BadVideo }, hik_id: "badvideo", description: "exception Information" }, TriggerItem { identifier: EventIdentifier { channel: Some("1"), event_type: RegionEntrance }, hik_id: "regionEntrance-1", description: "RegionEntrance Event trigger Information" }, TriggerItem { identifier: EventIdentifier { channel: Some("1"), event_type: RegionExiting }, hik_id: "regionExiting-1", description: "RegionExiting Event trigger Information" }, TriggerItem { identifier: EventIdentifier { channel: Some("1"), event_type: StorageDetection }, hik_id: "storageDetection-1", description: "storageDetection Event trigger Information" }] }
    2022-09-30T19:07:50.709741Z DEBUG hik_sink::mqtt::connection: Camera event id="cam_sufni" event=Alert(AlertItem { identifier: EventIdentifier { channel: Some("1"), event_type: VideoLoss }, active: false, regions: [], post_count: 1, description: "videoloss alarm", date: "2022-09-30T21:07:50+02:00" })
    2022-09-30T19:08:00.904111Z DEBUG hik_sink::mqtt::connection: Camera event id="cam_udvar_1" event=Alert(AlertItem { identifier: EventIdentifier { channel: Some("1"), event_type: VideoLoss }, active: false, regions: [], post_count: 1, description: "videoloss alarm", date: "2022-09-30T21:08:01+02:00" })
    2022-09-30T19:08:00.909564Z DEBUG hik_sink::mqtt::connection: Camera event id="cam_udvar_2" event=Alert(AlertItem { identifier: EventIdentifier { channel: Some("1"), event_type: VideoLoss }, active: false, regions: [], post_count: 1, description: "videoloss alarm", date: "2022-09-30T21:08:01+02:00" })
    2022-09-30T19:08:00.911319Z DEBUG hik_sink::mqtt::connection: Camera event id="cam_bejarat" event=Alert(AlertItem { identifier: EventIdentifier { channel: Some("1"), event_type: VideoLoss }, active: false, regions: [], post_count: 1, description: "videoloss alarm", date: "2022-09-30T21:08:01+02:00" })
    2022-09-30T19:08:00.913351Z DEBUG hik_sink::mqtt::connection: Camera event id="cam_sufni" event=Alert(AlertItem { identifier: EventIdentifier { channel: Some("1"), event_type: VideoLoss }, active: false, regions: [], post_count: 1, description: "videoloss alarm", date: "2022-09-30T21:08:00+02:00" })
    2022-09-30T19:08:00.926012Z DEBUG hik_sink::mqtt::connection: Camera event id="cam_oldalkert" event=Alert(AlertItem { identifier: EventIdentifier { channel: Some("1"), event_type: VideoLoss }, active: false, regions: [], post_count: 1, description: "videoloss alarm", date: "2022-09-30T21:08:00+02:00" })
    2022-09-30T19:08:11.133464Z DEBUG hik_sink::mqtt::connection: Camera event id="cam_udvar_1" event=Alert(AlertItem { identifier: EventIdentifier { channel: Some("1"), event_type: VideoLoss }, active: false, regions: [], post_count: 1, description: "videoloss alarm", date: "2022-09-30T21:08:11+02:00" })
    2022-09-30T19:08:11.138179Z DEBUG hik_sink::mqtt::connection: Camera event id="cam_udvar_2" event=Alert(AlertItem { identifier: EventIdentifier { channel: Some("1"), event_type: VideoLoss }, active: false, regions: [], post_count: 1, description: "videoloss alarm", date: "2022-09-30T21:08:11+02:00" })
    2022-09-30T19:08:11.141238Z DEBUG hik_sink::mqtt::connection: Camera event id="cam_bejarat" event=Alert(AlertItem { identifier: EventIdentifier { channel: Some("1"), event_type: VideoLoss }, active: false, regions: [], post_count: 1, description: "videoloss alarm", date: "2022-09-30T21:08:11+02:00" })
    2022-09-30T19:08:11.143756Z DEBUG hik_sink::mqtt::connection: Camera event id="cam_sufni" event=Alert(AlertItem { identifier: EventIdentifier { channel: Some("1"), event_type: VideoLoss }, active: false, regions: [], post_count: 1, description: "videoloss alarm", date: "2022-09-30T21:08:11+02:00" })
    2022-09-30T19:08:11.151441Z DEBUG hik_sink::mqtt::connection: Camera event id="cam_oldalkert" event=Alert(AlertItem { identifier: EventIdentifier { channel: Some("1"), event_type: VideoLoss }, active: false, regions: [], post_count: 1, description: "videoloss alarm", date: "2022-09-30T21:08:11+02:00" })
    2022-09-30T19:08:21.363690Z DEBUG hik_sink::mqtt::connection: Camera event id="cam_udvar_1" event=Alert(AlertItem { identifier: EventIdentifier { channel: Some("1"), event_type: VideoLoss }, active: false, regions: [], post_count: 1, description: "videoloss alarm", date: "2022-09-30T21:08:21+02:00" })
    2022-09-30T19:08:21.367989Z DEBUG hik_sink::mqtt::connection: Camera event id="cam_udvar_2" event=Alert(AlertItem { identifier: EventIdentifier { channel: Some("1"), event_type: VideoLoss }, active: false, regions: [], post_count: 1, description: "videoloss alarm", date: "2022-09-30T21:08:21+02:00" })
    2022-09-30T19:08:21.369980Z DEBUG hik_sink::mqtt::connection: Camera event id="cam_bejarat" event=Alert(AlertItem { identifier: EventIdentifier { channel: Some("1"), event_type: VideoLoss }, active: false, regions: [], post_count: 1, description: "videoloss alarm", date: "2022-09-30T21:08:21+02:00" })
    2022-09-30T19:08:21.370741Z DEBUG hik_sink::mqtt::connection: Camera event id="cam_sufni" event=Alert(AlertItem { identifier: EventIdentifier { channel: Some("1"), event_type: VideoLoss }, active: false, regions: [], post_count: 1, description: "videoloss alarm", date: "2022-09-30T21:08:21+02:00" })
    2022-09-30T19:08:21.381100Z DEBUG hik_sink::mqtt::connection: Camera event id="cam_oldalkert" event=Alert(AlertItem { identifier: EventIdentifier { channel: Some("1"), event_type: VideoLoss }, active: false, regions: [], post_count: 1, description: "videoloss alarm", date: "2022-09-30T21:08:21+02:00" })
    2022-09-30T19:08:30.942101Z DEBUG hik_sink::mqtt::connection: Camera event id="cam_bejarat" event=Alert(AlertItem { identifier: EventIdentifier { channel: Some("1"), event_type: LineDetection }, active: true, regions: [DetectionRegion { id: "1", sensitivity: 50, coordinates: [RegionCoordinates { x: 997, y: 776 }, RegionCoordinates { x: 365, y: 549 }] }], post_count: 1, description: "linedetection alarm", date: "2022-09-30T21:08:30+02:00" })
    2022-09-30T19:08:30.967569Z  WARN Camera coms{camera=Cam Bejarat id=cam_bejarat}: hik_sink::hikapi::camera: Camera errored: Stream could not be resolved to a multipart form: Stream returned non-UTF-8 text: invalid utf-8 sequence of 1 bytes from index 0. Attempting reconnection...
    2022-09-30T19:08:30.969892Z DEBUG hik_sink::mqtt::connection: Camera event id="cam_bejarat" event=Disconnected { error: "Stream could not be resolved to a multipart form: Stream returned non-UTF-8 text: invalid utf-8 sequence of 1 bytes from index 0" }
    2022-09-30T19:08:30.983549Z DEBUG hyper::client::connect::dns: resolving host="cam-001"
    2022-09-30T19:08:30.994171Z DEBUG Camera coms{camera=Cam Bejarat id=cam_bejarat}: hyper::client::connect::http: connecting to 192.168.15.14:80
    2022-09-30T19:08:30.995910Z DEBUG Camera coms{camera=Cam Bejarat id=cam_bejarat}: hyper::client::connect::http: connected to 192.168.15.14:80
    2022-09-30T19:08:30.996346Z DEBUG hyper::proto::h1::io: flushed 94 bytes
    2022-09-30T19:08:31.001024Z DEBUG hyper::proto::h1::io: parsed 8 headers
    2022-09-30T19:08:31.001081Z DEBUG hyper::proto::h1::conn: incoming body is content-length (178 bytes)
    2022-09-30T19:08:31.001104Z DEBUG hyper::proto::h1::conn: incoming body completed
    2022-09-30T19:08:31.001876Z DEBUG hyper::client::connect::dns: resolving host="cam-001"
    2022-09-30T19:08:31.006573Z DEBUG Camera coms{camera=Cam Bejarat id=cam_bejarat}: hyper::client::connect::http: connecting to 192.168.15.14:80
    2022-09-30T19:08:31.009285Z DEBUG Camera coms{camera=Cam Bejarat id=cam_bejarat}: hyper::client::connect::http: connected to 192.168.15.14:80
    2022-09-30T19:08:31.009561Z DEBUG hyper::proto::h1::io: flushed 388 bytes
    2022-09-30T19:08:31.015391Z DEBUG hyper::proto::h1::io: parsed 8 headers
    2022-09-30T19:08:31.015426Z DEBUG hyper::proto::h1::conn: incoming body is content-length (1136 bytes)
    2022-09-30T19:08:31.015441Z DEBUG hyper::proto::h1::conn: incoming body completed
    2022-09-30T19:08:31.016247Z DEBUG hyper::client::connect::dns: resolving host="cam-001"
    2022-09-30T19:08:31.019861Z DEBUG Camera coms{camera=Cam Bejarat id=cam_bejarat}: hyper::client::connect::http: connecting to 192.168.15.14:80
    2022-09-30T19:08:31.020617Z DEBUG Camera coms{camera=Cam Bejarat id=cam_bejarat}: hyper::client::connect::http: connected to 192.168.15.14:80
    2022-09-30T19:08:31.020793Z DEBUG hyper::proto::h1::io: flushed 91 bytes
    2022-09-30T19:08:31.023389Z DEBUG hyper::proto::h1::io: parsed 8 headers
    2022-09-30T19:08:31.023420Z DEBUG hyper::proto::h1::conn: incoming body is content-length (178 bytes)
    2022-09-30T19:08:31.023471Z DEBUG hyper::proto::h1::conn: incoming body completed
    2022-09-30T19:08:31.023857Z DEBUG hyper::client::connect::dns: resolving host="cam-001"
    2022-09-30T19:08:31.027151Z DEBUG Camera coms{camera=Cam Bejarat id=cam_bejarat}: hyper::client::connect::http: connecting to 192.168.15.14:80
    2022-09-30T19:08:31.028106Z DEBUG Camera coms{camera=Cam Bejarat id=cam_bejarat}: hyper::client::connect::http: connected to 192.168.15.14:80
    2022-09-30T19:08:31.028586Z DEBUG hyper::proto::h1::io: flushed 382 bytes
    2022-09-30T19:08:31.041650Z DEBUG hyper::proto::h1::io: parsed 8 headers
    2022-09-30T19:08:31.041973Z DEBUG hyper::proto::h1::conn: incoming body is content-length (6828 bytes)
    2022-09-30T19:08:31.042214Z DEBUG hyper::proto::h1::conn: incoming body completed
    2022-09-30T19:08:31.043030Z DEBUG hyper::client::connect::dns: resolving host="cam-001"
    2022-09-30T19:08:31.045210Z DEBUG Camera coms{camera=Cam Bejarat id=cam_bejarat}: hyper::client::connect::http: connecting to 192.168.15.14:80
    2022-09-30T19:08:31.045776Z DEBUG Camera coms{camera=Cam Bejarat id=cam_bejarat}: hyper::client::connect::http: connected to 192.168.15.14:80
    2022-09-30T19:08:31.046035Z DEBUG hyper::proto::h1::io: flushed 107 bytes
    2022-09-30T19:08:31.050766Z DEBUG hyper::proto::h1::io: parsed 8 headers
    2022-09-30T19:08:31.051250Z DEBUG hyper::proto::h1::conn: incoming body is content-length (178 bytes)
    2022-09-30T19:08:31.051466Z DEBUG hyper::proto::h1::conn: incoming body completed
    2022-09-30T19:08:31.052683Z DEBUG hyper::client::connect::dns: resolving host="cam-001"
    2022-09-30T19:08:31.057338Z DEBUG Camera coms{camera=Cam Bejarat id=cam_bejarat}: hyper::client::connect::http: connecting to 192.168.15.14:80
    2022-09-30T19:08:31.059640Z DEBUG Camera coms{camera=Cam Bejarat id=cam_bejarat}: hyper::client::connect::http: connected to 192.168.15.14:80
    2022-09-30T19:08:31.060307Z DEBUG hyper::proto::h1::io: flushed 414 bytes
    2022-09-30T19:08:31.594559Z DEBUG hik_sink::mqtt::connection: Camera event id="cam_udvar_1" event=Alert(AlertItem { identifier: EventIdentifier { channel: Some("1"), event_type: VideoLoss }, active: false, regions: [], post_count: 1, description: "videoloss alarm", date: "2022-09-30T21:08:31+02:00" })
    2022-09-30T19:08:31.601975Z DEBUG hik_sink::mqtt::connection: Camera event id="cam_sufni" event=Alert(AlertItem { identifier: EventIdentifier { channel: Some("1"), event_type: VideoLoss }, active: false, regions: [], post_count: 1, description: "videoloss alarm", date: "2022-09-30T21:08:31+02:00" })
    2022-09-30T19:08:31.603009Z DEBUG hik_sink::mqtt::connection: Camera event id="cam_udvar_2" event=Alert(AlertItem { identifier: EventIdentifier { channel: Some("1"), event_type: VideoLoss }, active: false, regions: [], post_count: 1, description: "videoloss alarm", date: "2022-09-30T21:08:31+02:00" })
    2022-09-30T19:08:31.610012Z DEBUG hik_sink::mqtt::connection: Camera event id="cam_oldalkert" event=Alert(AlertItem { identifier: EventIdentifier { channel: Some("1"), event_type: VideoLoss }, active: false, regions: [], post_count: 1, description: "videoloss alarm", date: "2022-09-30T21:08:31+02:00" })
    2022-09-30T19:08:31.742387Z DEBUG hyper::proto::h1::io: parsed 3 headers
    2022-09-30T19:08:31.744564Z DEBUG hyper::proto::h1::conn: incoming body is close-delimited
    2022-09-30T19:08:31.745820Z  INFO Camera coms{camera=Cam Bejarat id=cam_bejarat}: hik_sink::hikapi::camera: Camera connection established
    
    2-09-30T19:08:31.747120Z DEBUG hik_sink::mqtt::connection: Camera event id="cam_bejarat" event=Connected { info: DeviceInfo { device_name: "IP CAMERA", device_id: "bc06c000-3dc4-11b5-83fa-d4e8535f62b5", model: "DS-2CD2347G2-L", serial_number: "DS-2CD2347G2-L20211018AAWRG93145391", mac_address: "d4:e8:53:5f:62:b5", firmware_version: "V5.7.10", firmware_release_date: "build 220830", device_type: "IPCamera" }, triggers: [TriggerItem { identifier: EventIdentifier { channel: Some("1"), event_type: Motion }, hik_id: "VMD-1", description: "VMD Event trigger Information" }, TriggerItem { identifier: EventIdentifier { channel: Some("1"), event_type: Tamper }, hik_id: "tamper-1", description: "shelteralarm Event trigger Information" }, TriggerItem { identifier: EventIdentifier { channel: Some("1"), event_type: DiskFull }, hik_id: "diskfull", description: "exception Information" }, TriggerItem { identifier: EventIdentifier { channel: Some("1"), event_type: DiskError }, hik_id: "diskerror", description: "exception Information" }, TriggerItem { identifier: EventIdentifier { channel: Some("1"), event_type: NicBroken }, hik_id: "nicbroken", description: "exception Information" }, TriggerItem { identifier: EventIdentifier { channel: Some("1"), event_type: IpConflict }, hik_id: "ipconflict", description: "exception Information" }, TriggerItem { identifier: EventIdentifier { channel: Some("1"), event_type: IllegalAccess }, hik_id: "illaccess", description: "exception Information" }, TriggerItem { identifier: EventIdentifier { channel: Some("1"), event_type: LineDetection }, hik_id: "linedetection-1", description: "Linedetection Event trigger Information" }, TriggerItem { identifier: EventIdentifier { channel: Some("1"), event_type: FieldDetection }, hik_id: "fielddetection-1", description: "fielddetection Event trigger Information" }, TriggerItem { identifier: EventIdentifier { channel: Some("1"), event_type: BadVideo }, hik_id: "badvideo", description: "exception Information" }, TriggerItem { identifier: EventIdentifier { channel: Some("1"), event_type: RegionEntrance }, hik_id: "regionEntrance-1", description: "RegionEntrance Event trigger Information" }, TriggerItem { identifier: EventIdentifier { channel: Some("1"), event_type: RegionExiting }, hik_id: "regionExiting-1", description: "RegionExiting Event trigger Information" }, TriggerItem { identifier: EventIdentifier { channel: Some("1"), event_type: StorageDetection }, hik_id: "storageDetection-1", description: "storageDetection Event trigger Information" }] }
    2022-09-30T19:08:31.762136Z DEBUG hik_sink::mqtt::connection: Camera event id="cam_bejarat" event=Alert(AlertItem { identifier: EventIdentifier { channel: Some("1"), event_type: VideoLoss }, active: false, regions: [], post_count: 1, description: "videoloss alarm", date: "2022-09-30T21:08:31+02:00" })
    2022-09-30T19:08:35.939723Z DEBUG hik_sink::mqtt::connection: Camera event id="cam_bejarat" event=Alert(AlertItem { identifier: EventIdentifier { channel: Some("1"), event_type: LineDetection }, active: false, regions: [], post_count: 1, description: "linedetection alarm", date: "2022-09-30T21:08:36+02:00" })
    2022-09-30T19:08:41.825130Z DEBUG hik_sink::mqtt::connection: Camera event id="cam_udvar_1" event=Alert(AlertItem { identifier: EventIdentifier { channel: Some("1"), event_type: VideoLoss }, active: false, regions: [], post_count: 1, description: "videoloss alarm", date: "2022-09-30T21:08:42+02:00" })
    2022-09-30T19:08:41.829755Z DEBUG hik_sink::mqtt::connection: Camera event id="cam_udvar_2" event=Alert(AlertItem { identifier: EventIdentifier { channel: Some("1"), event_type: VideoLoss }, active: false, regions: [], post_count: 1, description: "videoloss alarm", date: "2022-09-30T21:08:42+02:00" })
    2022-09-30T19:08:41.831578Z DEBUG hik_sink::mqtt::connection: Camera event id="cam_sufni" event=Alert(AlertItem { identifier: EventIdentifier { channel: Some("1"), event_type: VideoLoss }, active: false, regions: [], post_count: 1, description: "videoloss alarm", date: "2022-09-30T21:08:41+02:00" })
    2022-09-30T19:08:41.852081Z DEBUG hik_sink::mqtt::connection: Camera event id="cam_oldalkert" event=Alert(AlertItem { identifier: EventIdentifier { channel: Some("1"), event_type: VideoLoss }, active: false, regions: [], post_count: 1, description: "videoloss alarm", date: "2022-09-30T21:08:41+02:00" })
    2022-09-30T19:08:41.969665Z  WARN Camera coms{camera=Cam Bejarat id=cam_bejarat}: hik_sink::hikapi::camera: Camera errored: Stream could not be resolved to a multipart form: Couldn't get next part of stream: Part headers invalid: invalid header name. Attempting reconnection...
    2022-09-30T19:08:41.970575Z DEBUG hik_sink::mqtt::connection: Camera event id="cam_bejarat" event=Disconnected { error: "Stream could not be resolved to a multipart form: Couldn't get next part of stream: Part headers invalid: invalid header name" }
    2022-09-30T19:08:41.970859Z DEBUG hyper::client::connect::dns: resolving host="cam-001"
    2022-09-30T19:08:41.974410Z DEBUG Camera coms{camera=Cam Bejarat id=cam_bejarat}: hyper::client::connect::http: connecting to 192.168.15.14:80
    2022-09-30T19:08:41.975914Z DEBUG Camera coms{camera=Cam Bejarat id=cam_bejarat}: hyper::client::connect::http: connected to 192.168.15.14:80
    2022-09-30T19:08:41.976235Z DEBUG hyper::proto::h1::io: flushed 94 bytes
    2022-09-30T19:08:41.978841Z DEBUG hyper::proto::h1::io: parsed 8 headers
    2022-09-30T19:08:41.978934Z DEBUG hyper::proto::h1::conn: incoming body is content-length (178 bytes)
    2022-09-30T19:08:41.978961Z DEBUG hyper::proto::h1::conn: incoming body completed
    2022-09-30T19:08:41.980373Z DEBUG hyper::client::connect::dns: resolving host="cam-001"
    2022-09-30T19:08:41.992687Z DEBUG Camera coms{camera=Cam Bejarat id=cam_bejarat}: hyper::client::connect::http: connecting to 192.168.15.14:80
    2022-09-30T19:08:41.993513Z DEBUG Camera coms{camera=Cam Bejarat id=cam_bejarat}: hyper::client::connect::http: connected to 192.168.15.14:80
    2022-09-30T19:08:41.994043Z DEBUG hyper::proto::h1::io: flushed 388 bytes
    2022-09-30T19:08:42.000947Z DEBUG hyper::proto::h1::io: parsed 8 headers
    2022-09-30T19:08:42.000988Z DEBUG hyper::proto::h1::conn: incoming body is content-length (1136 bytes)
    2022-09-30T19:08:42.001006Z DEBUG hyper::proto::h1::conn: incoming body completed
    2022-09-30T19:08:42.001579Z DEBUG hyper::client::connect::dns: resolving host="cam-001"
    2022-09-30T19:08:42.009088Z DEBUG Camera coms{camera=Cam Bejarat id=cam_bejarat}: hyper::client::connect::http: connecting to 192.168.15.14:80
    2022-09-30T19:08:42.009779Z DEBUG Camera coms{camera=Cam Bejarat id=cam_bejarat}: hyper::client::connect::http: connected to 192.168.15.14:80
    2022-09-30T19:08:42.009947Z DEBUG hyper::proto::h1::io: flushed 91 bytes
    2022-09-30T19:08:42.015938Z DEBUG hyper::proto::h1::io: parsed 8 headers
    2022-09-30T19:08:42.016151Z DEBUG hyper::proto::h1::conn: incoming body is content-length (178 bytes)
    2022-09-30T19:08:42.016384Z DEBUG hyper::proto::h1::conn: incoming body completed
    2022-09-30T19:08:42.017373Z DEBUG hyper::client::connect::dns: resolving host="cam-001"
    2022-09-30T19:08:42.021551Z DEBUG Camera coms{camera=Cam Bejarat id=cam_bejarat}: hyper::client::connect::http: connecting to 192.168.15.14:80
    2022-09-30T19:08:42.022384Z DEBUG Camera coms{camera=Cam Bejarat id=cam_bejarat}: hyper::client::connect::http: connected to 192.168.15.14:80
    2022-09-30T19:08:42.022826Z DEBUG hyper::proto::h1::io: flushed 382 bytes
    2022-09-30T19:08:42.032019Z DEBUG hyper::proto::h1::io: parsed 8 headers
    2022-09-30T19:08:42.032498Z DEBUG hyper::proto::h1::conn: incoming body is content-length (6828 bytes)
    2022-09-30T19:08:42.032725Z DEBUG hyper::proto::h1::conn: incoming body completed
    2022-09-30T19:08:42.033545Z DEBUG hyper::client::connect::dns: resolving host="cam-001"
    2022-09-30T19:08:42.037236Z DEBUG Camera coms{camera=Cam Bejarat id=cam_bejarat}: hyper::client::connect::http: connecting to 192.168.15.14:80
    2022-09-30T19:08:42.038276Z DEBUG Camera coms{camera=Cam Bejarat id=cam_bejarat}: hyper::client::connect::http: connected to 192.168.15.14:80
    2022-09-30T19:08:42.038574Z DEBUG hyper::proto::h1::io: flushed 107 bytes
    2022-09-30T19:08:42.040562Z DEBUG hyper::proto::h1::io: parsed 8 headers
    2022-09-30T19:08:42.040585Z DEBUG hyper::proto::h1::conn: incoming body is content-length (178 bytes)
    2022-09-30T19:08:42.040598Z DEBUG hyper::proto::h1::conn: incoming body completed
    2022-09-30T19:08:42.041114Z DEBUG hyper::client::connect::dns: resolving host="cam-001"
    2022-09-30T19:08:42.044498Z DEBUG Camera coms{camera=Cam Bejarat id=cam_bejarat}: hyper::client::connect::http: connecting to 192.168.15.14:80
    2022-09-30T19:08:42.045484Z DEBUG Camera coms{camera=Cam Bejarat id=cam_bejarat}: hyper::client::connect::http: connected to 192.168.15.14:80
    2022-09-30T19:08:42.045853Z DEBUG hyper::proto::h1::io: flushed 414 bytes
    2022-09-30T19:08:42.736584Z DEBUG hyper::proto::h1::io: parsed 3 headers
    2022-09-30T19:08:42.736816Z DEBUG hyper::proto::h1::conn: incoming body is close-delimited
    2022-09-30T19:08:42.738712Z  INFO Camera coms{camera=Cam Bejarat id=cam_bejarat}: hik_sink::hikapi::camera: Camera connection established
    
    2-09-30T19:08:42.740579Z DEBUG hik_sink::mqtt::connection: Camera event id="cam_bejarat" event=Connected { info: DeviceInfo { device_name: "IP CAMERA", device_id: "bc06c000-3dc4-11b5-83fa-d4e8535f62b5", model: "DS-2CD2347G2-L", serial_number: "DS-2CD2347G2-L20211018AAWRG93145391", mac_address: "d4:e8:53:5f:62:b5", firmware_version: "V5.7.10", firmware_release_date: "build 220830", device_type: "IPCamera" }, triggers: [TriggerItem { identifier: EventIdentifier { channel: Some("1"), event_type: Motion }, hik_id: "VMD-1", description: "VMD Event trigger Information" }, TriggerItem { identifier: EventIdentifier { channel: Some("1"), event_type: Tamper }, hik_id: "tamper-1", description: "shelteralarm Event trigger Information" }, TriggerItem { identifier: EventIdentifier { channel: Some("1"), event_type: DiskFull }, hik_id: "diskfull", description: "exception Information" }, TriggerItem { identifier: EventIdentifier { channel: Some("1"), event_type: DiskError }, hik_id: "diskerror", description: "exception Information" }, TriggerItem { identifier: EventIdentifier { channel: Some("1"), event_type: NicBroken }, hik_id: "nicbroken", description: "exception Information" }, TriggerItem { identifier: EventIdentifier { channel: Some("1"), event_type: IpConflict }, hik_id: "ipconflict", description: "exception Information" }, TriggerItem { identifier: EventIdentifier { channel: Some("1"), event_type: IllegalAccess }, hik_id: "illaccess", description: "exception Information" }, TriggerItem { identifier: EventIdentifier { channel: Some("1"), event_type: LineDetection }, hik_id: "linedetection-1", description: "Linedetection Event trigger Information" }, TriggerItem { identifier: EventIdentifier { channel: Some("1"), event_type: FieldDetection }, hik_id: "fielddetection-1", description: "fielddetection Event trigger Information" }, TriggerItem { identifier: EventIdentifier { channel: Some("1"), event_type: BadVideo }, hik_id: "badvideo", description: "exception Information" }, TriggerItem { identifier: EventIdentifier { channel: Some("1"), event_type: RegionEntrance }, hik_id: "regionEntrance-1", description: "RegionEntrance Event trigger Information" }, TriggerItem { identifier: EventIdentifier { channel: Some("1"), event_type: RegionExiting }, hik_id: "regionExiting-1", description: "RegionExiting Event trigger Information" }, TriggerItem { identifier: EventIdentifier { channel: Some("1"), event_type: StorageDetection }, hik_id: "storageDetection-1", description: "storageDetection Event trigger Information" }] }
    2022-09-30T19:08:42.745818Z DEBUG hik_sink::mqtt::connection: Camera event id="cam_bejarat" event=Alert(AlertItem { identifier: EventIdentifier { channel: Some("1"), event_type: VideoLoss }, active: false, regions: [], post_count: 1, description: "videoloss alarm", date: "2022-09-30T21:08:42+02:00" })
    2022-09-30T19:08:52.055650Z DEBUG hik_sink::mqtt::connection: Camera event id="cam_udvar_1" event=Alert(AlertItem { identifier: EventIdentifier { channel: Some("1"), event_type: VideoLoss }, active: false, regions: [], post_count: 1, description: "videoloss alarm", date: "2022-09-30T21:08:52+02:00" })
    2022-09-30T19:08:52.059421Z DEBUG hik_sink::mqtt::connection: Camera event id="cam_udvar_2" event=Alert(AlertItem { identifier: EventIdentifier { channel: Some("1"), event_type: VideoLoss }, active: false, regions: [], post_count: 1, description: "videoloss alarm", date: "2022-09-30T21:08:52+02:00" })
    2022-09-30T19:08:52.062293Z DEBUG hik_sink::mqtt::connection: Camera event id="cam_sufni" event=Alert(AlertItem { identifier: EventIdentifier { channel: Some("1"), event_type: VideoLoss }, active: false, regions: [], post_count: 1, description: "videoloss alarm", date: "2022-09-30T21:08:52+02:00" })
    2022-09-30T19:08:52.070914Z DEBUG hik_sink::mqtt::connection: Camera event id="cam_oldalkert" event=Alert(AlertItem { identifier: EventIdentifier { channel: Some("1"), event_type: VideoLoss }, active: false, regions: [], post_count: 1, description: "videoloss alarm", date: "2022-09-30T21:08:52+02:00" })
    2022-09-30T19:08:52.969989Z DEBUG hik_sink::mqtt::connection: Camera event id="cam_bejarat" event=Alert(AlertItem { identifier: EventIdentifier { channel: Some("1"), event_type: VideoLoss }, active: false, regions: [], post_count: 1, description: "videoloss alarm", date: "2022-09-30T21:08:53+02:00" })
    
    opened by gszigethy 5
  • Problem with constant reconnection:

    Problem with constant reconnection: "Camera errored: Camera closed connection. Attempting reconnection..."

    Just installed Hiksink (Standalone) and have it pointed at a Hikvision NVR. While it works, it keeps re-connecting as follows:

    2022-06-15T11:01:59.543416Z  INFO hik_sink: HikSink MQTT bridge running
    2022-06-15T11:01:59.543578Z  INFO Camera coms{camera=nvr id=nvr}: hik_sink::hikapi::camera: Initiating camera connection...
    2022-06-15T11:01:59.706182Z  INFO Camera coms{camera=nvr id=nvr}: hik_sink::hikapi::camera: Camera connection established
    2022-06-15T11:01:59.954008Z  INFO hik_sink::mqtt::connection: Connected to MQTT broker.
    2022-06-15T11:02:14.121856Z  WARN Camera coms{camera=nvr id=nvr}: hik_sink::hikapi::camera: Camera errored: Camera closed connection. Attempting reconnection...
    2022-06-15T11:02:14.294195Z  INFO Camera coms{camera=nvr id=nvr}: hik_sink::hikapi::camera: Camera connection established
    2022-06-15T11:02:50.662578Z  WARN Camera coms{camera=nvr id=nvr}: hik_sink::hikapi::camera: Camera errored: Camera closed connection. Attempting reconnection...
    2022-06-15T11:02:50.806763Z  INFO Camera coms{camera=nvr id=nvr}: hik_sink::hikapi::camera: Camera connection established
    

    Any ideas what could be causing this or if it's intended behavior? I would've thought connections should be persistent once established?

    opened by MindrustUK 6
  • TriggersInvalid EventTypeInvalid facedetection-1

    TriggersInvalid EventTypeInvalid facedetection-1

    Hello,

    i have the following errors when run the binary. 3 cams, one DS-2CD2083G2-IU and 2 DS-2CD2183G2-IU, Firmware V5.7.3 build 220112

    2022-04-25T22:52:42.922215Z INFO hik_sink: HikSink MQTT bridge running 2022-04-25T22:52:42.922579Z INFO Camera coms{camera=AU Kamera id=au_kamera}: hik_sink::hikapi::camera: Initiating camera connection... 2022-04-25T22:52:42.922624Z INFO Camera coms{camera=KB Kamera id=kb_kamera}: hik_sink::hikapi::camera: Initiating camera connection... 2022-04-25T22:52:42.922635Z INFO Camera coms{camera=ST Kamera id=st_kamera}: hik_sink::hikapi::camera: Initiating camera connection... 2022-04-25T22:52:42.925910Z INFO hik_sink::mqtt::connection: Connected to MQTT broker. 2022-04-25T22:52:42.959623Z ERROR Camera coms{camera=ST Kamera id=st_kamera}: hik_sink::hikapi::camera: Error reconnecting to camera TriggersInvalid(EventTypeInvalid("facedetection-1", "Event type contained non-alphabetic or non-numeric characters")) 2022-04-25T22:52:42.960823Z ERROR Camera coms{camera=AU Kamera id=au_kamera}: hik_sink::hikapi::camera: Error reconnecting to camera TriggersInvalid(EventTypeInvalid("facedetection-1", "Event type contained non-alphabetic or non-numeric characters")) 2022-04-25T22:52:42.969189Z ERROR Camera coms{camera=KB Kamera id=kb_kamera}: hik_sink::hikapi::camera: Error reconnecting to camera TriggersInvalid(EventTypeInvalid("facedetection-1", "Event type contained non-alphabetic or non-numeric characters")) 2022-04-25T22:52:45.994230Z ERROR Camera coms{camera=ST Kamera id=st_kamera}: hik_sink::hikapi::camera: Error reconnecting to camera TriggersInvalid(EventTypeInvalid("facedetection-1", "Event type contained non-alphabetic or non-numeric characters")) 2022-04-25T22:52:46.007562Z ERROR Camera coms{camera=KB Kamera id=kb_kamera}: hik_sink::hikapi::camera: Error reconnecting to camera TriggersInvalid(EventTypeInvalid("facedetection-1", "Event type contained non-alphabetic or non-numeric characters")) 2022-04-25T22:52:46.007644Z ERROR Camera coms{camera=AU Kamera id=au_kamera}: hik_sink::hikapi::camera: Error reconnecting to camera TriggersInvalid(EventTypeInvalid("facedetection-1", "Event type contained non-alphabetic or non-numeric characters"))

    thanks Christian

    opened by eckinga 5
  • PIR Triggers do not reset once triggered

    PIR Triggers do not reset once triggered

    Trying to use the PIR triggers on my cameras; however, using Hik-Sink, they never reset once detected, they always show "alerting": true. On the Home Assistant native integration they reset within 1s of being triggered.

    opened by shbatm 7
Releases(1.2.1)
Owner
Corner Bit
Corner Bit
MQTT over QUIC

MQuicTT ?? This is a pre-alpha project, tread carefully ?? A rustlang utility/library for MQTT over QUIC. QUIC allows us to send data over multiple co

null 29 Dec 16, 2022
Small MQTT router. Allows creating multiple inputs/outputs and run action when input triggers.

MQRT Small MQTT router. Allows creating multiple inputs/outputs and run action when input triggers. Features multi-(input/output) multiple actions tie

Nazar Gondaruk 0 Jan 4, 2022
Export statistics of Mosquitto MQTT broker (topic: $SYS) to Prometheus

Preface The Mosquitto MQTT broker provides a number of statistics on the special $SYS/# topic (see mosquitto(8)). Build requirements As a Rust program

Bobobo-bo Bo-bobo 2 Dec 15, 2022
Pure rust mqtt cilent

NOTE: Archived. No further development under this repo. Follow progress of a different implementation here Pure rust MQTT client which strives to be s

Ather Energy Pvt Ltd 201 Dec 2, 2022
This Intelligent Transportation Systems (ITS) MQTT client based on the JSon ETSI specification transcription provides a ready to connect project for the mobility

This Intelligent Transportation Systems (ITS) MQTT client based on the JSon ETSI specification transcription provides a ready to connect project for the mobility (connected and autonomous vehicles, road side units, vulnerable road users,...). Let's connect your device or application to our Intelligent Transport Systems (ITS) platform!

Orange 4 Nov 29, 2022
Subscribe to MQTT topics and push them to InfluxDB 1.x or v2

MQTT 2 InfluxDB Subscribe to MQTT topics and push them to InfluxDB 1.x or v2 Something like Telegraf for MQTT like it does with inputs.mqtt_consumer a

null 2 Feb 20, 2022
Convert TeleInfo frames from a Linky meter's serial port to Home Assistant-compatible MQTT messages.

teleinfo2mqtt-rs Convert TeleInfo frames from a Linky meter's serial port to Home Assistant-compatible MQTT messages. Overview sequenceDiagram par

Stanislas 4 Mar 19, 2024
Druid Exporter plays a fundamental role as a receiver of metrics events coming from Druid clusters, adopting the HTTP format as a means of communication

Druid Exporter plays a fundamental role as a receiver of metrics events coming from Druid clusters, adopting the HTTP format as a means of communication. In addition to this capability, its primary function is to export these metrics to Prometheus, thus allowing the creation of meaningful graphs and visualizations.

Kiwfy 3 Sep 21, 2023
Druid Exporter plays a fundamental role as a receiver of metrics events coming from Druid clusters, adopting the HTTP format as a means of communication.

Druid Exporter plays a fundamental role as a receiver of metrics events coming from Druid clusters, adopting the HTTP format as a means of communication. In addition to this capability, its primary function is to export these metrics to Prometheus, thus allowing the creation of meaningful graphs and visualizations.

Not Empty Free Software Foundation 5 Oct 24, 2023
Basic first-person fly camera for the Bevy game engine

bevy_flycam A basic first-person fly camera for Bevy 0.4 Controls WASD to move horizontally SPACE to ascend LSHIFT to descend ESC to grab/release curs

Spencer Burris 85 Dec 23, 2022
A 4X style camera for bevy.

A 4X style camera for bevy. Demo Default Key Bindings: W / A / S / D / Arrow Keys / Mouse Left - Move along the horizontal plane Q / E / Mouse Right -

null 30 Jan 4, 2023
A collection of exponentially-smoothed camera controllers for the Bevy Engine.

smooth-bevy-cameras A collection of exponentially-smoothed camera controllers for the Bevy Engine. Look Transform All controllers are based on a LookT

Duncan 122 Dec 24, 2022
TeleMQ is an experimental MQTT broker implemented in Rust language.

TeleMQ TeleMQ is an experimental MQTT broker implemented in Rust language. The broker implements MQTT version 3.1.1 specification. License This projec

null 12 Dec 27, 2022
Experimental Valve Index camera passthrough for Linux

Index camera passthrough Warning: This is still a work in progress, you could get motion sickness if you try it now The problem that the Index camera

yshui 22 Dec 1, 2022
Camera RAW to DNG file format converter

DNGLab - A camera RAW to DNG file format converter Command line tool to convert camera RAW files to Digital Negative Format (DNG). It is currently in

null 92 Jan 6, 2023
A simple camera for properly displaying tile-based low resolution pixel perfect 2D games in bevy.

Bevy Tiled Camera A simple camera for properly displaying low resolution pixel perfect 2D games in bevy. The camera will adjust the viewport to scale

sark 10 Oct 5, 2022
MQTT over QUIC

MQuicTT ?? This is a pre-alpha project, tread carefully ?? A rustlang utility/library for MQTT over QUIC. QUIC allows us to send data over multiple co

null 29 Dec 16, 2022
Small MQTT router. Allows creating multiple inputs/outputs and run action when input triggers.

MQRT Small MQTT router. Allows creating multiple inputs/outputs and run action when input triggers. Features multi-(input/output) multiple actions tie

Nazar Gondaruk 0 Jan 4, 2022
Export statistics of Mosquitto MQTT broker (topic: $SYS) to Prometheus

Preface The Mosquitto MQTT broker provides a number of statistics on the special $SYS/# topic (see mosquitto(8)). Build requirements As a Rust program

Bobobo-bo Bo-bobo 2 Dec 15, 2022
Pure rust mqtt cilent

NOTE: Archived. No further development under this repo. Follow progress of a different implementation here Pure rust MQTT client which strives to be s

Ather Energy Pvt Ltd 201 Dec 2, 2022