
* Removed apt command and made the build instructions more inclusive Removed the apt command and added it for other platforms in the main compile sections
3.7 KiB
layout, title, description, date, sidebar, comments, sharing, footer, logo, ha_category, featured, ha_release, og_image, ha_iot_class
layout | title | description | date | sidebar | comments | sharing | footer | logo | ha_category | featured | ha_release | og_image | ha_iot_class |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
page | Seven segments display | Instructions how to use OCR for seven segemnts displays into Home Assistant. | 2017-05-18 08:00 | true | false | true | true | home-assistant.png | Image Processing | false | 0.45 | /images/screenshots/ssocr.png | Local Polling |
The seven_segments
image processing platform allows you to read physical seven segments displays through Home Assistant. ssocr
is used to extract the value shown on the display which is observed by a camera.
If you are using [Hass.io](/hassio/) then just move forward to the configuration as all requirements are already fullfilled.
ssocr
needs to be available on your system. Check the installation instruction below:
$ sudo dnf -y install imlib2-devel # Fedora
$ sudo apt install libimlib2-dev # Ubuntu
$ brew install imlib2 # macOS
$ git clone https://github.com/auerswal/ssocr.git
$ cd ssocr
$ make
$ sudo make PREFIX=/usr install # On most systems
$ make deb # (Optional) This allows you to make a deb so that you apt is aware of ssocr
To enable the OCR of a seven segement display in your installation, add the following to your configuration.yaml
file:
# Example configuration.yaml entry
image_processing:
- platform: seven_segments
source:
- entity_id: camera.seven_segments
Configuration variables:
- ssocr_bin (Optional): The command line tool
ssocr
. Set it if you use a different name for the executable. Defaults tossocr
. - x_position (Optional): X coordinate of the upper left corner of the area to crop. Defaults to
0
. - y_position (Optional): Y coordinate of the upper left corner of the area to crop. Defaults to
0
. - height (Optional): Height of the area to crop. Defaults to
0
. - width (Optional): Width of the area to crop. Defaults to
0
. - rotate (Optional): Rotation of the image. Defaults to
0
. - threshold (Optional): Threshold for the difference between the digits and the background. Defaults to
0
. - digits (Optional): Number of digits in the display. Defaults to
-1
. - extra_arguments (Optional): Other arguments to use. Like
-D
,dilation
,erosion
,greyscale
,make_mono
, etc. - source array (Required): List of image sources.
- entity_id (Required): A camera entity id to get picture from.
- name (Optional): This parameter allows you to override the name of your
image_processing
entity.
{% linkable_title Setup process %}
It's suggested that the first attempt to determine the needed parameters is using ssocr
directly. This may require a couple of iterations to get the result
$ ssocr -D erosion crop 390 250 490 280 -t 20 -d 4 seven-seg.png
This would lead to the following entry for the configuration.yaml
file:
camera:
- platform: local_file
file_path: /home/homeassistant/.homeassistant/seven-seg.png
name: seven_segments
image_processing:
- platform: seven_segments
x_position: 390
y_position: 250
height: 280
width: 490
threshold: 20
digits: 4
source:
- entity_id: camera.seven_segments
With the help of a template sensor, the value can be shown as badge.
sensor:
- platform: template
sensors:
power_meter:
value_template: '{{ states.image_processing.sevensegement_ocr_seven_segments.state }}'
friendly_name: 'Ampere'
unit_of_measurement: 'A'