Home Assistant (LINUX)

Hinweis:

Dies ist eine aktualisierte Anleitung, die Docker zur Installation von Home Assistant verwendet, anstatt die Software direkt über die Python-Pakete zu installieren, wie es in unserer jetzt veralteten Anleitung beschrieben ist. Dieser Leitfaden wurde auch aktualisiert, um mit INSTAR-Kameras neueren Datums als der Full HD-Serie verwendet werden zu können. Es gibt auch eine Liste von FAQs), die bereits aktualisiert sind.

Installation

Home Assistant bietet jetzt ein Docker-Image, das aus dem Docker Hub gezogen werden kann:

docker pull homeassistant/home-assistant:stable

Um alle vom Home Assistant erzeugten Daten aufzubewahren, können wir Verzeichnisse erstellen, die später in den laufenden Container eingebunden werden können. Auf einem Linux-Hostsystem müssen Sie auch die richtigen Lese- und Schreibrechte setzen, z. B.:

(sudo) mkdir -p /opt/homeassistant/config
(sudo) chmod -R 775 /opt/homeassistant

Der Container kann nun wie folgt gestartet werden:

docker run -d --rm --privileged --net=host --name='home-assistant' -e 'TZ=Europe/Berlin' -v /opt/homeassistant/config:/config homeassistant/home-assistant:stable

Und das Web-Frontend erscheint unter http://localhost:8123:

Home Assistant with Docker

Live Video

RTSP, MJPEG und JPG Streaming

Wir empfehlen, dass Sie den unten beschriebenen ONVIF-Dienst verwenden, um das Live-Video Ihrer Kamera hinzuzufügen. Sie können den Stream aber auch manuell über die Generic Camera Integration unter Verwendung des RTSP & MJPEG Stream oder Snapshots Ihrer Kamera hinzufügen.

WebRTC

In der Regel wird es als stabiler angesehen, WebRTC für Ihren Kamera-Videostream zu verwenden. Ihre Kamera bietet noch keinen WebRTC-Dienst an - aber Sie können go2RTC zum Re-Streaming des RTSP-Streams Ihrer Kamera verwenden. Diese Einrichtung ist etwas fortgeschrittener und erfordert das Starten eines Docker-Containers, der parallel zu Ihrem Home Assistant-Container läuft.

Hinzufügen eines Kamera-Live-Streams über den ONVIF-Dienst

Stellen Sie zunächst sicher, dass der ONVIF-Dienst in der WebUI Ihrer Kamera tatsächlich aktiv ist. Wir benötigen die ONVIF WS-Security, um HomeAssitant die Verbindung zu ermöglichen - aber ich werde sie hier für den Admin-Benutzer deaktiviert lassen und im nächsten Schritt einen Benutzer mit eingeschränkten Rechten für die ONVIF-Security erstellen:

Home Assistant with Docker

Um einen ONVIF-Benutzer zu erstellen, öffnen Sie das Benutzerverwaltung Menu und klicken Sie auf das + Symbol, um einen neuen Benutzer mit der Voreinstellung Gast und der Rolle ONVIF (Admin) zu erstellen:

Home Assistant with Docker

Home Assistant with Docker

Zurück auf der Home Assistant Oberfläche gehen Sie in das Menü Einstellungen und öffnen Sie die Registerkarte Geräte & Dienste:

Home Assistant with Docker

Hier können wir nun eine neue ONVIF Integration hinzufügen:

Home Assistant with Docker

Home Assistant with Docker

Die automatische Erkennung sollte Ihre Kamera automatisch finden. Andernfalls wählen Sie, um die ONVIF-Kamera manuell hinzuzufügen:

Home Assistant with Docker

Verwenden Sie den zuvor erstellten ONVIF-Benutzer sowie die lokale IP und den ONVIF-Port Ihrer Kamera, um Ihre Kamera hinzuzufügen:

Home Assistant with Docker

Home Assistant with Docker

Nach dem Speichern Ihrer Einstellungen sollte die Kamera mit allen ONVIF-Funktionen zum Home Assistant-Dashboard hinzugefügt werden:

Home Assistant with Docker

Home Assistant with Docker

Steuern Sie Ihre Kamera über MQTT

Verbinden Sie Ihren MQTT-Broker

Um loszulegen, verbinden Sie entweder Ihre Kamera mit Ihrem bereits konfigurierten MQTT-Broker. Oder aktivieren Sie den MQTT v5-Broker auf Ihrer Kamera:

Home Assistant with Docker

Zurück auf in Home Assistant gehen Sie in das Menü Einstellungen und öffnen Sie die Registerkarte Geräte & Dienste:

Home Assistant with Docker

Hier können wir nun eine neue MQTT Integration hinzufügen:

Home Assistant with Docker

Fügen Sie die IP-Adresse Ihrer Kamera sowie den MQTT-Port und den MQTT Benutzer hinzu, die Sie zu Beginn in Ihrer Kamera konfiguriert haben:

Home Assistant with Docker

Für 2K+ WQHD-Modelle ist es auch möglich, MQTT v5 für die Verbindung zu verwenden, was in den erweiterten Einstellungen konfiguriert werden kann:

Home Assistant with Docker

Übermitteln Sie Ihre Änderungen und der Home Assistant verbindet sich mit Ihrem INSTAR MQTT Broker:

Home Assistant with Docker

Home Assistant with Docker

Add MQTT Topics to the Home Assistant UI

Nun haben Sie Zugriff auf die gesamte MQTT-Schnittstelle Ihrer Kamera und können Funktionen an Schalter, Tasten oder Schieber binden. Dies wurde bereits in einem FAQ :: Home Assistant 2022.8.6 Konfiguration für Ihren WQHD INSTAR MQTTv5 Broker beschrieben.

Anlegen der Kamera-MQTT-Entität

Wenn Sie dem oben beschriebenen Installationspfad gefolgt sind, finden Sie nun die Hauptkonfigurationsdatei unter /opt/homeassistant/config/configuration.yaml. Hier können wir einen Import für Schalterelemente hinzufügen, die wir zum Umschalten des Kamerazustands über die MQTT-API verwenden möchten:

# MQTT
# switch: !include mqtt/switches.yaml /deprecated
mqtt: !include mqtt/entities.yaml

Erstellen Sie nun den Ordner mqtt neben der Konfigurationsdatei und erstellen Sie darin die Datei entities.yaml:

mkdir mqtt
nano mqtt/entities.yaml

Hier können wir z.B. 4 Schalter erstellen, die die Privatsphärenmasken in unserer Kamera mit Hilfe der MQTT-Befehlstopics umschalten können. Wenn Sie z.B. Ihre Kamera so einstellen, dass sie das Präfix cameras und die mqtt ID 201 verwendet:

Home Assistant with Docker

Erstellen wir zunächst eine Entität für unsere Kamera, indem wir das Last-Will & Testament (LWT) Topic als Herzschlag der Kamera verwenden.

Beachten Sie bitte

Es gibt eine neue Alarmserver API für WQHD 2K+ Kameras. Die einzelnen Schritte unten sind weiterhin gültig. Nur der URL Query nennt sich jetzt &trigger anstelle von &active, die Zahlenwerte haben sich geändert und ermöglichen jetzt das auswerten mehrerer, zeitgleicher Alarmauslöser! Sie finden eine Beispiel-Implementierung der MQTT- and HTTP-Alarmserver v2 API mit Node-RED hier.

Zusätzlich können wir den MQTT-Alarmserver als Sensor hinzufügen, der bei jedem Alarm benachrichtigt wird:

sensor:
  - device:
      identifiers: in8415_office
      manufacturer: INSTAR Deutschland GmbH
      model: INSTAR 2k+ IN-8415 WLAN
      name: IN-8415 2k+ Office
      configuration_url: "http://192.168.2.201:80"
    availability:
      topic: cameras/201/status/connection
      payload_available: '{"val":"online"}'
      payload_not_available: '{"val":"offline"}'
    object_id: in8415_office_testament
    unique_id: in8415_office_testament
    name: IN-8415 LWT
    state_topic: cameras/201/status/connection
    value_template: '{{ value_json.val }}'
  - unique_id: office_alarmserver
    name: Office Alarmserver
    state_topic: cameras/201/status/alarm/triggered
    device_class: current
    value_template: '{{ value_json.val }}'

Laden Sie die Konfigurationsdatei erneut und überprüfen Sie, ob das neue Gerät nun registriert ist:

Home Assistant with Docker

Home Assistant with Docker

Das Gerät sollte mit einem Sensor erscheinen, der den Online-Status unserer Kamera anzeigt:

Home Assistant with Docker

Der Alarmserver funktioniert ebenfalls und aktualisiert das Auslöser Topic status/alarm/triggered mit den Payload-Werten 1 - 10 (oder 99 für einen manuellen Auslöser), z.B. {"val":"1"}:

  • Alarm Bereich 1 ausgelöst: -> {"val":"1"}
  • Alarm Bereich 2 ausgelöst: -> {"val":"2"}
  • Alarm Bereich 3 ausgelöst: -> {"val":"3"}
  • Alarm Bereich 4 ausgelöst: -> {"val":"4"}
  • Alarm-In / PIR ausgelöst: -> {"val":"5"}
  • Audio Alarm ausgelöst: -> {"val":"6"}
  • PIR ausgelöst & Alarm Area 1 ausgelöst: -> {"val":"7"}
  • PIR ausgelöst & Alarm Area 2 ausgelöst: -> {"val":"8"}
  • PIR ausgelöst & Alarm Area 3 ausgelöst: -> {"val":"9"}
  • PIR ausgelöst & Alarm Area 4 ausgelöst: -> {"val":"10"}
  • Manuell ausgelöst (cmd=pushhostalarm): -> {"val":"99"}

Home Assistant with Docker

Fügen die folgende Konfiguration zur Datei entities.yaml hinzu - tauschen Sie bei Bedarf die verwendeten MQTT-Topics durch beliebige Topic aus unserer MQTTv5 API. Sobald Sie die Konfiguration neugeladen haben, werden alle Topics als Entitäten angezeigt:

Home Assistant with Docker

Home Assistant with Docker

MQTT Schalter

Schalter können für Topics mit binäre Zustände verwendet werden - alles, was entweder "ein" oder "aus" sein kann:

switch:
  - unique_id: office_red_alarm_area
    name: Office Red Alarm Area
    state_topic: cameras/201/status/alarm/areas/red/enable
    command_topic: cameras/201/alarm/areas/red/enable
    qos: 1
    payload_on: '{"val":"1"}'
    payload_off: '{"val":"0"}'
    optimistic: false
    retain: false
  - unique_id: office_blue_alarm_are
    name: Office Blue Alarm Area
    state_topic: cameras/201/status/alarm/areas/blue/enable
    command_topic: cameras/201/alarm/areas/blue/enable
    qos: 1
    payload_on: '{"val":"1"}'
    payload_off: '{"val":"0"}'
    optimistic: false
    retain: false
  - unique_id: office_green_alarm_are
    name: Office Green Alarm Area
    state_topic: cameras/201/status/alarm/areas/green/enable
    command_topic: cameras/201/alarm/areas/green/enable
    qos: 1
    payload_on: '{"val":"1"}'
    payload_off: '{"val":"0"}'
    optimistic: false
    retain: false
  - unique_id: office_yellow_alarm_area
    name: Office Yellow Alarm Area
    state_topic: cameras/201/status/alarm/areas/yellow/enable
    command_topic: cameras/201/alarm/areas/yellow/enable
    qos: 1
    payload_on: '{"val":"1"}'
    payload_off: '{"val":"0"}'
    optimistic: false
    retain: false
  - unique_id: office_privacy_mask_1
    name: Office Privacy Mask 1
    state_topic: cameras/201/status/multimedia/privacy/region1/enable
    command_topic: cameras/201/multimedia/privacy/region1/enable
    qos: 1
    payload_on: '{"val":"1"}'
    payload_off: '{"val":"0"}'
    optimistic: false
    retain: false
  - unique_id: office_privacy_mask_2
    name: Office Privacy Mask 2
    state_topic: cameras/201/status/multimedia/privacy/region2/enable
    command_topic: cameras/201/multimedia/privacy/region2/enable
    qos: 1
    payload_on: '{"val":"1"}'
    payload_off: '{"val":"0"}'
    optimistic: false
    retain: false
  - unique_id: office_privacy_mask_3
    name: Office Privacy Mask 3
    state_topic: cameras/201/status/multimedia/privacy/region3/enable
    command_topic: cameras/201/multimedia/privacy/region3/enable
    qos: 1
    payload_on: '{"val":"1"}'
    payload_off: '{"val":"0"}'
    optimistic: false
    retain: false
  - unique_id: office_privacy_mask_4
    name: Office Privacy Mask 4
    state_topic: cameras/201/status/multimedia/privacy/region4/enable
    command_topic: cameras/201/multimedia/privacy/region4/enable
    qos: 1
    payload_on: '{"val":"1"}'
    payload_off: '{"val":"0"}'
    optimistic: false
    retain: false
  - unique_id: office_auto_gamma
    name: Office Auto Gamma
    state_topic: cameras/201/status/multimedia/image/gamma/auto
    command_topic: cameras/201/multimedia/image/gamma/auto
    qos: 1
    payload_on: '{"val":"1"}'
    payload_off: '{"val":"0"}'
    optimistic: false
    retain: false
  - unique_id: office_auto_denoise
    name: Office Auto Denoise
    state_topic: cameras/201/status/multimedia/image/denoise/auto
    command_topic: cameras/201/multimedia/image/denoise/auto
    qos: 1
    payload_on: '{"val":"1"}'
    payload_off: '{"val":"0"}'
    optimistic: false
    retain: false
  - unique_id: office_flip
    name: Office Flip
    state_topic: cameras/201/status/multimedia/image/transform/flip
    command_topic: cameras/201/multimedia/image/transform/flip
    qos: 1
    payload_on: '{"val":"1"}'
    payload_off: '{"val":"0"}'
    optimistic: false
    retain: false
  - unique_id: office_mirror
    name: Office Mirror
    state_topic: cameras/201/status/multimedia/image/transform/mirror
    command_topic: cameras/201/multimedia/image/transform/mirror
    qos: 1
    payload_on: '{"val":"1"}'
    payload_off: '{"val":"0"}'
    optimistic: false
    retain: false

Home Assistant with Docker

Home Assistant with Docker

MQTT Schaltflächen

Schaltflächen können für Topics verwendet werden, die zustandslose Auslöser sind - z.B. um einen Alarm oder einen Kameraneustart auszulösen:

button:
  - unique_id: office_alarm_trigger
  - name: Office Alarm Trigger
    command_topic: cameras/201/alarm/pushalarm
    payload_press: '{"val":"1"}'
    icon: mdi:alarm-light
    qos: 2
    retain: false
  - unique_id: office_reboot
    name: Office Reboot
    command_topic: system/reboot/now
    payload_press: '{"val":"1"}'
    icon: mdi:cog-refresh-outline
    qos: 2
    retain: false

Die Verwendung des Auslösers alarm/pushalarm löst einen Alarm aus, der durch den vom MQTT-Alarmserver empfangenen Wert 99 auf dem Status-Topic alarm/triggered erkannt werden kann:

Home Assistant with Docker

MQTT Schieberegler

Eine Entität des Typs Number ermöglicht die Erstellung von Schiebereglern in der Oberfläche des Home Assistant. Sie können für jedes Topic verwendet werden, das einen Zahlenbereich als Payload hat:

number:
  - unique_id: office_brightness
    name: Office Brightness
    object_id: in9408_brightness
    icon: mdi:brightness-6
    state_topic: cameras/201/status/multimedia/image/brightness
    command_topic: cameras/201/multimedia/image/brightness
    value_template: '{{ value_json.val }}'
    command_template: '{"val":"{{ value }}"}'
    min: 1
    max: 100
    step: 1
    unit_of_measurement: '%'
    qos: 1
    optimistic: false
  - unique_id: office_contrast
    name: Office Contrast
    object_id: in9408_contrast
    icon: mdi:contrast-box
    state_topic: cameras/201/status/multimedia/image/contrast
    command_topic: cameras/201/multimedia/image/contrast
    value_template: '{{ value_json.val }}'
    command_template: '{"val":"{{ value }}"}'
    min: 1
    max: 100
    step: 1
    unit_of_measurement: '%'
    qos: 1
    optimistic: false
  - unique_id: office_saturation
    name: Office Saturation
    object_id: in9408_saturation
    icon: mdi:palette-outline
    state_topic: cameras/201/status/multimedia/image/saturation
    command_topic: cameras/201/multimedia/image/saturation
    value_template: '{{ value_json.val }}'
    command_template: '{"val":"{{ value }}"}'
    min: 1
    max: 100
    step: 1
    unit_of_measurement: '%'
    qos: 1
    optimistic: false
  - unique_id: office_hue
    name: Office Hue
    object_id: in9408_hue
    icon: mdi:palette-outline
    state_topic: cameras/201/status/multimedia/image/hue
    command_topic: cameras/201/multimedia/image/hue
    value_template: '{{ value_json.val }}'
    command_template: '{"val":"{{ value }}"}'
    min: 0
    max: 360
    step: 1
    qos: 1
    optimistic: false
  - unique_id: office_sharpness
    name: Office Sharpness
    object_id: in9408_sharpness
    icon: mdi:shark-fin-outline
    state_topic: cameras/201/status/multimedia/image/sharpness
    command_topic: cameras/201/multimedia/image/sharpness
    value_template: '{{ value_json.val }}'
    command_template: '{"val":"{{ value }}"}'
    min: 1
    max: 100
    step: 1
    unit_of_measurement: '%'
    qos: 1
    optimistic: false
  - unique_id: office_vibrancy
    name: Office Vibrancy
    object_id: in9408_vibrancy
    icon: mdi:palette-outline
    state_topic: cameras/201/status/multimedia/image/vibrancy/value
    command_topic: cameras/201/multimedia/image/vibrancy/value
    value_template: '{{ value_json.val }}'
    command_template: '{"val":"{{ value }}"}'
    min: 1
    max: 255
    step: 1
    qos: 1
    optimistic: false
  - unique_id: office_gamma
    name: Office Gamma
    object_id: in9408_gamma
    icon: mdi:gamma
    state_topic: cameras/201/status/multimedia/image/gamma/preset
    command_topic: cameras/201/multimedia/image/gamma/preset
    value_template: '{{ value_json.val }}'
    command_template: '{"val":"{{ value }}"}'
    min: 1
    max: 18
    step: 1
    qos: 1
    optimistic: false
  - unique_id: office_denoise
    name: Office Denoise
    object_id: in9408_denoise
    icon: mdi:contrast-box
    state_topic: cameras/201/status/multimedia/image/denoise/preset
    command_topic: cameras/201/multimedia/image/denoise/preset
    value_template: '{{ value_json.val }}'
    command_template: '{"val":"{{ value }}"}'
    min: 0
    max: 15
    step: 1
    qos: 1
    optimistic: false
  - unique_id: office_max_iso
    name: Office Max ISO
    object_id: in9408_isomax
    icon: mdi:brightness-6
    state_topic: cameras/201/status/multimedia/image/isomax
    command_topic: cameras/201/multimedia/image/isomax
    value_template: '{{ value_json.val }}'
    command_template: '{"val":"{{ value }}"}'
    min: 1
    max: 32
    step: 1
    qos: 1
    optimistic: false
  - unique_id: office_auto_ir
    name: Office Auto IR LEDs
    object_id: in9408_autoled
    icon: mdi:lightbulb-night-outline
    state_topic: cameras/201/status/features/nightvision/autoled
    command_topic: cameras/201/features/nightvision/autoled
    value_template: '{{ value_json.val }}'
    command_template: '{"val":"{{ value }}"}'
    min: 0
    max: 2
    step: 1
    qos: 1
    optimistic: false
  - unique_id: office_auto_ircut
    name: Office Auto IRcut
    object_id: in9408_autoircut
    icon: mdi:lightbulb-night-outline
    state_topic: cameras/201/status/features/nightvision/autoircut
    command_topic: cameras/201/features/nightvision/autoircut
    value_template: '{{ value_json.val }}'
    command_template: '{"val":"{{ value }}"}'
    min: 0
    max: 2
    step: 1
    qos: 1
    optimistic: false
  - unique_id: office_red_alarm_area_sensitivity
    name: Office Red Alarm Area Sensitivity
    object_id: in9408_red_area_sense
    icon: mdi:cctv-off
    state_topic: cameras/201/status/alarm/areas/red/sensitivity
    command_topic: cameras/201/alarm/areas/red/sensitivity
    value_template: '{{ value_json.val }}'
    command_template: '{"val":"{{ value }}"}'
    min: 0
    max: 100
    step: 1
    qos: 1
    optimistic: false
  - unique_id: office_blue_alarm_area_sensitivity
    name: Office Blue Alarm Area Sensitivity
    object_id: in9408_blue_area_sense
    icon: 'mdi:cctv-off'
    state_topic: cameras/201/status/alarm/areas/blue/sensitivity
    command_topic: cameras/201/alarm/areas/blue/sensitivity
    value_template: '{{ value_json.val }}'
    command_template: '{"val":"{{ value }}"}'
    min: 0
    max: 100
    step: 1
    qos: 1
    optimistic: false
  - unique_id: office_green_alarm_area_sensitivity
    name: Office Green Alarm Area Sensitivity
    object_id: in9408_blue_area_green
    icon: mdi:cctv-off
    state_topic: cameras/201/status/alarm/areas/green/sensitivity
    command_topic: cameras/201/alarm/areas/green/sensitivity
    value_template: '{{ value_json.val }}'
    command_template: '{"val":"{{ value }}"}'
    min: 0
    max: 100
    step: 1
    qos: 1
    optimistic: false
  - unique_id: office_yellow_alarm_area_sensitivity
    name: Office Yellow Alarm Area Sensitivity
    object_id: in9408_blue_area_yellow
    icon: mdi:cctv-off
    state_topic: cameras/201/status/alarm/areas/yellow/sensitivity
    command_topic: cameras/201/alarm/areas/yellow/sensitivity
    value_template: '{{ value_json.val }}'
    command_template: '{"val":"{{ value }}"}'
    min: 0
    max: 100
    step: 1
    qos: 1
    optimistic: false

Stellen Sie den Schieberegler ein, um die Empfindlichkeit für den entsprechenden Bewegungserkennungsbereich einzustellen:

Home Assistant with Docker

INSTAR Forum

Diskutieren Sie diesen Artikel im INSTAR Forum !