[system] name = "Vigilar Home Security" timezone = "America/New_York" data_dir = "/var/vigilar/data" recordings_dir = "/var/vigilar/recordings" hls_dir = "/var/vigilar/hls" log_level = "INFO" # arm_pin_hash = "" # Set via: vigilar config set-pin [mqtt] host = "127.0.0.1" port = 1883 [web] host = "0.0.0.0" port = 49735 # tls_cert = "/etc/vigilar/certs/cert.pem" # tls_key = "/etc/vigilar/certs/key.pem" username = "admin" # password_hash = "" # Set via: vigilar config set-password [zigbee2mqtt] mqtt_topic_prefix = "zigbee2mqtt" [ups] enabled = true nut_host = "127.0.0.1" nut_port = 3493 ups_name = "ups" poll_interval_s = 30 low_battery_threshold_pct = 20 critical_runtime_threshold_s = 300 shutdown_delay_s = 60 [storage] encrypt_recordings = true key_file = "/etc/vigilar/secrets/storage.key" max_disk_usage_gb = 200 free_space_floor_gb = 10 [remote] enabled = false upload_bandwidth_mbps = 22.0 remote_hls_resolution = [426, 240] remote_hls_fps = 10 remote_hls_bitrate_kbps = 500 max_remote_viewers = 4 tunnel_ip = "10.99.0.2" [alerts.local] enabled = true syslog = true desktop_notify = false [alerts.web_push] enabled = true vapid_private_key_file = "/etc/vigilar/secrets/vapid_private.pem" vapid_claim_email = "mailto:admin@vigilar.local" [alerts.email] enabled = false # smtp_host = "mail.lan" # smtp_port = 587 # from_addr = "vigilar@home.lan" # to_addr = "admin@home.lan" # use_tls = true [alerts.webhook] enabled = false # url = "" # secret = "" # --- Cameras --- # Add one [[cameras]] block per camera. [[cameras]] id = "front_door" display_name = "Front Door" rtsp_url = "rtsp://192.168.1.101:554/stream1" enabled = true record_continuous = false record_on_motion = true motion_sensitivity = 0.7 motion_min_area_px = 500 pre_motion_buffer_s = 5 post_motion_buffer_s = 30 idle_fps = 2 motion_fps = 30 retention_days = 30 resolution_capture = [1920, 1080] resolution_motion = [640, 360] [[cameras]] id = "backyard" display_name = "Backyard" rtsp_url = "rtsp://192.168.1.102:554/stream1" enabled = true record_continuous = false record_on_motion = true motion_sensitivity = 0.7 retention_days = 30 [[cameras]] id = "side_yard" display_name = "Side Yard" rtsp_url = "rtsp://192.168.1.103:554/stream1" enabled = true record_on_motion = true motion_sensitivity = 0.7 retention_days = 30 [[cameras]] id = "garage" display_name = "Garage" rtsp_url = "rtsp://192.168.1.104:554/stream1" enabled = true record_on_motion = true motion_sensitivity = 0.7 retention_days = 30 # --- Sensors --- # Add one [[sensors]] block per sensor. [[sensors]] id = "front_door_contact" display_name = "Front Door Contact" type = "CONTACT" protocol = "ZIGBEE" device_address = "0x00158d0001a2b3c4" location = "Front Door" [[sensors]] id = "pir_living_room" display_name = "Living Room PIR" type = "MOTION" protocol = "ZIGBEE" device_address = "0x00158d0001deadbe" location = "Living Room" [sensors.gpio] bounce_time_ms = 50 # --- Rules --- [[rules]] id = "intruder_alert" description = "Motion detected when armed away" conditions = [ {type = "arm_state", value = "ARMED_AWAY"}, {type = "sensor_event", sensor_id = "pir_living_room", event = "MOTION_ACTIVE"}, ] logic = "AND" actions = ["alert_all", "record_all_cameras"] cooldown_s = 120 [[rules]] id = "door_opened_armed" description = "Door contact opened while armed" conditions = [ {type = "arm_state", value = "ARMED_AWAY"}, {type = "sensor_event", sensor_id = "front_door_contact", event = "CONTACT_OPEN"}, ] logic = "AND" actions = ["alert_all"] cooldown_s = 60