VIVOTEK


The vivotek camera platform allows you to integrate a VIVOTEK IP camera into Home Assistant.

Home Assistant will serve the images via its server, making it possible to view your IP cameras while outside of your network. The endpoint is /api/camera_proxy/camera.[name].

Configuration

To enable this camera in your installation, add the following to your configuration.yaml file:

# Example configuration.yaml entry
camera:
  - platform: vivotek
    ip_address: IP_ADDRESS
    username: USERNAME
    password: PASSWORD

Configuration Variables

ip_address string Required

The IP address of your camera, e.g., 192.168.1.2.

name string (Optional, default: VIVOTEK Camera)

This parameter allows you to override the name of your camera.

username string Required

The username for accessing your camera.

password string Required

The password for accessing your camera.

authentication string (Optional, default: basic)

Type for authenticating the requests basic or digest.

security_level string (Optional, default: admin)

The security level of the user accessing your camera. This could be admin or viewer.

ssl boolean (Optional, default: false)

Enable or disable SSL. Set to false to use an HTTP-only camera.

verify_ssl boolean (Optional, default: true)

Enable or disable SSL certificate verification. Set to false to use an HTTP-only camera, or you have a self-signed SSL certificate and haven’t installed the CA certificate to enable verification.

framerate integer (Optional, default: 2)

The number of frames-per-second (FPS) of the stream. Can cause heavy traffic on the network and/or heavy load on the camera.

stream_path string (Optional, default: live.sdp)

This parameter allows you to override the stream path.

Advanced configuration

# Example configuration.yaml entry
camera:
  - platform: vivotek
    name: Front door camera
    ip_address: 192.168.1.2
    ssl: true
    username: !secret fd_camera_username
    password: !secret fd_camera_pwd
    authentication: digest
    security_level: admin
    verify_ssl: false
    framerate: 5
    stream_path: live2.sdp

Services

Once loaded, the camera platform will expose services that can be called to perform various actions.

Available services: enable_motion_detection, disable_motion_detection, snapshot, and play_stream.

Service play_stream

Play a live stream from a camera to selected media player(s). Requires stream integration to be set up.

Service data attribute Optional Description
entity_id no Name of entity to fetch stream from, e.g., camera.front_door_camera.
media_player no Name of media player to play stream on, e.g., media_player.living_room_tv.
format yes Stream format supported by stream integration and selected media_player. Default: hls

For example, the following action in an automation would send an hls live stream to your chromecast.

action:
  service: camera.play_stream
  target:
    entity_id: camera.yourcamera
  data:
    media_player: media_player.chromecast

Service enable_motion_detection

Enable motion detection in a camera. Currently, this will enable the first event configured on the camera.

Service data attribute Optional Description
entity_id yes Name(s) of entities to enable motion detection, e.g., camera.front_door_camera.

Service disable_motion_detection

Disable the motion detection in a camera. Currently, this will disable the first event configured on the camera.

Service data attribute Optional Description
entity_id yes Name(s) of entities to disable motion detection, e.g., camera.front_door_camera.

Service snapshot

Take a snapshot from a camera.

Service data attribute Optional Description
entity_id no Name(s) of entities to create a snapshot from, e.g., camera.front_door_camera.
filename no Template of a file name. Variable is entity_id, e.g., /tmp/snapshot_{{ entity_id }}.

The path part of filename must be an entry in the allowlist_external_dirs in your homeassistant: section of your configuration.yaml file.

For example, the following action is an automation that would take a snapshot from “front_door_camera” and save it to /tmp with a timestamped filename.

action:
  service: camera.snapshot
  target:
    entity_id: camera.front_door_camera
  data:
    filename: '/tmp/yourcamera_{{ now().strftime("%Y%m%d-%H%M%S") }}.jpg'