home-assistant.io/source/_components/image_processing.facebox.markdown
Neil Crosby 3a499af278 Image processing scan_interval doc updates (#7097)
* Use the correct bear. An incredibly picky edit. I'm sorry.

* Move scan_interval documentation from the facebox bage up to the main image_processing page, as it it useful to all image processing entities

* Add explicit example for setting scan_interval

* Be explicit about which components are being referred to

* Add notes on microsoft face detect and microsoft face identify pages that scan_interval should be applied
2018-10-26 10:18:00 +02:00

5.1 KiB

layout title description date sidebar comments sharing footer logo ha_category featured ha_release
page Facebox Detect and recognize faces with Facebox. 2018-05-03 00:00 true false true true machine-box.png Image Processing false 0.70

The facebox image processing platform allows you to detect and recognize faces in a camera image using Facebox. The state of the entity is the number of faces detected, and recognized faces are listed in the matched_faces attribute. An image_processing.detect_face event is fired for each recognized face, and the event data provides the confidence of recognition, the name of the person, the image_id of the image associated with the match, the bounding_box that contains the face in the image, and the entity_id that processing was performed on.

{% linkable_title Setup %}

Facebox runs in a Docker container and it is recommended that you run this container on a machine with a minimum of 2 GB RAM. On your machine with Docker, run the Facebox container with:

MB_KEY="INSERT-YOUR-KEY-HERE"

sudo docker run --name=facebox --restart=always -p 8080:8080 -e "MB_KEY=$MB_KEY"  machinebox/facebox

You can run Facebox with a username and password by adding -e "MB_BASICAUTH_USER=my_username" -e "MB_BASICAUTH_PASS=my_password" but bear in mind that the component does not encrypt these credentials and this approach does not guarantee security on an unsecured network.

If you only require face detection (number of faces) you can disable face recognition by adding -e "MB_FACEBOX_DISABLE_RECOGNITION=true" to the docker run command.

{% linkable_title Configuration %}

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

# Example configuration.yaml entry
image_processing:
  - platform: facebox
    ip_address: 192.168.0.1
    port: 8080
    source:
      - entity_id: camera.local_file
        name: my_custom_name

{% configuration %} ip_address: description: The IP address of your machine hosting Facebox. required: true type: string port: description: The port which Facebox is exposed on. required: true type: string username: description: The Facebox username if you have set one. required: false type: string password: description: The Facebox password if you have set one. required: false type: string source: description: The list of image sources. required: true type: map keys: entity_id: description: A camera entity id to get picture from. required: true type: string name: description: This parameter allows you to override the name of your image_processing entity. required: false type: string {% endconfiguration %}

{% linkable_title Automations %}

Use the image_processing.detect_face events to trigger automations, and breakout the trigger.event.data using a data_template. The following example automation sends a notification when Ringo Star is recognized:

{% raw %}

- id: '12345'
  alias: Ringo Starr recognised
  trigger:
    platform: event
    event_type: image_processing.detect_face
    event_data:
      name: 'Ringo_Starr'
  action:
    service: notify.platform
    data_template:
      message: Ringo_Starr recognised with probability {{ trigger.event.data.confidence }}
      title: Door-cam notification

{% endraw %}

{% linkable_title Service facebox_teach_face %}

The service facebox_teach_face can be used to teach Facebox faces.

Service data attribute Optional Description
entity_id no Entity ID of Facebox entity.
name no The name to associate with a face.
file_path no The path to the image file.

A valid service data example:

{% raw %}

{
  "entity_id": "image_processing.facebox_local_file",
  "name": "superman",
  "file_path": "/images/superman_1.jpeg"
}

{% endraw %}

You can use an automation to receive a notification when you train a face:

{% raw %}

- id: '1533703568569'
  alias: Face taught
  trigger:
  - event_data:
      service: facebox_teach_face
    event_type: call_service
    platform: event
  condition: []
  action:
  - service: notify.pushbullet
    data_template:
      message: '{{ trigger.event.data.service_data.name }} taught
      with file {{ trigger.event.data.service_data.file_path }}'
      title: Face taught notification

{% endraw %}

Any errors on teaching will be reported in the logs. If you enable system_log events:

system_log:
  fire_event: true

you can create an automation to receive notifications on Facebox errors:

{% raw %}

- id: '1533703568577'
  alias: Facebox error
  trigger:
    platform: event
    event_type: system_log_event
  condition:
    condition: template
    value_template: '{{ "facebox" in trigger.event.data.message }}'
  action:
  - service: notify.pushbullet
    data_template:
      message: '{{ trigger.event.data.message }}'
      title: Facebox error

{% endraw %}