home-automation-home-assistant/packages/landroid.yaml

356 lines
13 KiB
YAML

# Worx Landroid (M500 WR141E) package
# https://github.com/Barma-lej/halandroid
# Based on Landroid Bridge @MTrab virtualzone
# https://github.com/MTrab/landroid_cloud
# Cloud #############################################################
landroid_cloud:
email: !secret landroid_mail
password: !secret landroid_pass
# Switch ############################################################
switch:
- platform: template
switches:
landroid_mowing:
value_template: "{{ is_state_attr('sensor.landroid_hans_dieter_status', 'status_id', 7) }}"
turn_on:
service: script.landroid_start
turn_off:
service: script.landroid_stop
# Sensor ############################################################
# sensor.landroid_hans_dieter_battery
# sensor.landroid_hans_dieter_error
# sensor.landroid_hans_dieter_status
sensor:
- platform: template
sensors:
# Info ############
landroid_ip:
friendly_name: "IP Address"
value_template: !secret landroid_ip
icon_template: "mdi:ip-network"
landroid_sn:
friendly_name: "Landroid SN"
value_template: !secret landroid_sn
icon_template: "mdi:numeric"
landroid_mac:
friendly_name: "Landroid MAC"
value_template: !secret landroid_mac
icon_template: "mdi:barcode"
# Battery #########
# landroid_batvoltage:
# friendly_name: "Landroid BatVoltage"
# value_template: "{{ state_attr('sensor.landroid_hans_dieter_battery', 'battery_voltage') }}"
# icon_template: "mdi:battery-charging-100"
# unit_of_measurement: "V"
# landroid_battemp:
# friendly_name: "Landroid BatTemp"
# value_template: "{{ state_attr('sensor.landroid_hans_dieter_battery', 'battery_temperature') }}"
# unit_of_measurement: "°C"
# device_class: "temperature"
# landroid_batchargecycles:
# friendly_name: "Landroid batChargeCycles"
# value_template: "{{ state_attr('sensor.landroid_hans_dieter_battery', 'charge_cycles') }}"
# icon_template: "mdi:power-plug"
# landroid_batcharging:
# friendly_name: "Landroid BatCharging"
# value_template: "{{ state_attr('sensor.landroid_hans_dieter_battery', 'charging') }}"
landroid_bat:
friendly_name: "Battery level"
value_template: >-
{% if is_state_attr('sensor.landroid_hans_dieter_battery', 'charging', 1) -%}Lädt
{%- else -%}Entlädt
{%- endif %}
icon_template: >-
{% if is_state_attr('sensor.landroid_hans_dieter_battery', 'charging', 1) -%}
{%- if states('sensor.landroid_hans_dieter_battery')|float > 99 -%}mdi:battery-charging-100
{%- elif states('sensor.landroid_hans_dieter_battery')|float > 89 -%}mdi:battery-charging-90
{%- elif states('sensor.landroid_hans_dieter_battery')|float > 79 -%}mdi:battery-charging-80
{%- elif states('sensor.landroid_hans_dieter_battery')|float > 69 -%}mdi:battery-charging-70
{%- elif states('sensor.landroid_hans_dieter_battery')|float > 59 -%}mdi:battery-charging-60
{%- elif states('sensor.landroid_hans_dieter_battery')|float > 49 -%}mdi:battery-charging-50
{%- elif states('sensor.landroid_hans_dieter_battery')|float > 39 -%}mdi:battery-charging-40
{%- elif states('sensor.landroid_hans_dieter_battery')|float > 29 -%}mdi:battery-charging-30
{%- elif states('sensor.landroid_hans_dieter_battery')|float > 19 -%}mdi:battery-charging-20
{%- elif states('sensor.landroid_hans_dieter_battery')|float > 9 -%}mdi:battery-charging-10
{%- else -%}mdi:battery-charging-outline
{%- endif %}
{%- else -%}
{%- if states('sensor.landroid_hans_dieter_battery')|float > 99 -%}mdi:battery
{%- elif states('sensor.landroid_hans_dieter_battery')|float > 89 -%}mdi:battery-90
{%- elif states('sensor.landroid_hans_dieter_battery')|float > 79 -%}mdi:battery-80
{%- elif states('sensor.landroid_hans_dieter_battery')|float > 69 -%}mdi:battery-70
{%- elif states('sensor.landroid_hans_dieter_battery')|float > 59 -%}mdi:battery-60
{%- elif states('sensor.landroid_hans_dieter_battery')|float > 49 -%}mdi:battery-50
{%- elif states('sensor.landroid_hans_dieter_battery')|float > 39 -%}mdi:battery-40
{%- elif states('sensor.landroid_hans_dieter_battery')|float > 29 -%}mdi:battery-30
{%- elif states('sensor.landroid_hans_dieter_battery')|float > 19 -%}mdi:battery-20
{%- elif states('sensor.landroid_hans_dieter_battery')|float > 9 -%}mdi:battery-10
{%- else -%}mdi:battery-outline
{%- endif %}
{%- endif %}
# Status ##########
landroid_bladetime:
friendly_name: "Landroid BladeTime"
value_template: "{{ state_attr('sensor.landroid_hans_dieter_status', 'blade_time') }}"
icon_template: "mdi:fan"
unit_of_measurement: "min"
landroid_bladetime_h:
friendly_name: "Landroid BladeTime"
value_template: >
{% set t = states('sensor.landroid_bladetime') | int %}
{% if t == 0 %}
Unavailable
{% elif t > 60 %}
{{ t // 1440 }} Tg. {{ (t % 1440) // 60 }} Std. {{ t % 60 }} Min.
{% endif %}
icon_template: "mdi:fan"
unit_of_measurement: ""
landroid_totaltime:
friendly_name: "Landroid TotalTime"
value_template: "{{ state_attr('sensor.landroid_hans_dieter_status', 'work_time') }}"
icon_template: "mdi:bus-clock"
unit_of_measurement: "min"
landroid_totaltime_h:
friendly_name: "Landroid TotalTime"
value_template: >
{% set t = states('sensor.landroid_totaltime') | int %}
{% if t == 0 %}
Unavailable
{% elif t > 60 %}
{{ t // 1440 }} Tg. {{ (t % 1440) // 60 }} Std. {{ t % 60 }} Min.
{% endif %}
icon_template: "mdi:bus-clock"
unit_of_measurement: ""
landroid_dist:
friendly_name: "Landroid Dist"
value_template: "{{ state_attr('sensor.landroid_hans_dieter_status', 'distance') }}"
icon_template: "mdi:map-marker-distance"
unit_of_measurement: "m"
landroid_dist_km:
friendly_name: "Landroid Dist"
value_template: "{{ (states('sensor.landroid_dist') | float) / 1000 }}"
icon_template: "mdi:map-marker-distance"
unit_of_measurement: "km"
landroid_lastupdate:
friendly_name: "Last update"
value_template: "{{ as_timestamp(strptime( state_attr('sensor.landroid_hans_dieter_status', 'last_update'), '%H:%M:%S %d/%m/%Y')) | timestamp_custom('%d.%m.%Y %H:%M:%S') }}"
icon_template: "mdi:clock"
# -55 or higher: 4 bars
# -56 to -66: 3 bars
# -67 to -77: 2 bars
# -78 to -88: 1 bar
# -89 or lower: 0 bars
landroid_wifi:
friendly_name: "Wifi quality"
value_template: "{{ state_attr('sensor.landroid_hans_dieter_status', 'rssi') }}"
icon_template: >-
{% if state_attr('sensor.landroid_hans_dieter_status', 'rssi')|float > -56 -%}mdi:wifi-strength-4
{% elif state_attr('sensor.landroid_hans_dieter_status', 'rssi')|float > -67 -%}mdi:wifi-strength-3
{% elif state_attr('sensor.landroid_hans_dieter_status', 'rssi')|float > -78 -%}mdi:wifi-strength-2
{% elif state_attr('sensor.landroid_hans_dieter_status', 'rssi')|float > -89 -%}mdi:wifi-strength-1
{%- else -%}mdi:wifi-strength-outline
{%- endif %}
unit_of_measurement: "dBm"
landroid_yaw:
friendly_name: "Landroid Yaw"
value_template: "{{ state_attr('sensor.landroid_hans_dieter_status', 'yaw') }}"
icon_template: "mdi:axis-z-rotate-clockwise"
unit_of_measurement: "°"
landroid_roll:
friendly_name: "Landroid Roll"
value_template: "{{ state_attr('sensor.landroid_hans_dieter_status', 'roll') }}"
icon_template: "mdi:axis-x-rotate-clockwise"
unit_of_measurement: "°"
landroid_pitch:
friendly_name: "Landroid Pitch"
value_template: "{{ state_attr('sensor.landroid_hans_dieter_status', 'pitch') }}"
icon_template: "mdi:seat-flat-angled"
unit_of_measurement: "°"
# Input Boolean #####################################################
input_boolean:
landroid_raindelay_settings:
name: Raindelay Settings
icon: "mdi:file-hidden"
initial: false
landroid_timext_settings:
name: TimeExt Settings
icon: "mdi:file-hidden"
initial: false
landroid_sched_settings:
name: Scheduler Settings
icon: "mdi:file-hidden"
initial: false
landroid_info_toggle:
name: Info toggle
icon: "mdi:file-hidden"
initial: false
# Automations #######################################################
automation:
# - id: "landroid_status_notify"
# alias: "Landroid Status Notification"
# initial_state: true
# trigger:
# - platform: state
# entity_id: sensor.landroid_hans_dieter_status
# condition:
# - condition: template
# value_template: "{{ trigger.to_state.state != trigger.from_state.state }}"
# action:
# - service: persistent_notification.create
# data_template:
# title: Landroid Status
# message: "{{ trigger.from_state.state }} -> {{ trigger.to_state.state }} - {{ states('sensor.date_time') }}"
#
- id: "landroid_error_notify"
alias: "Landroid Error Notification"
initial_state: true
trigger:
- platform: state
entity_id: sensor.landroid_hans_dieter_error
condition:
- condition: template
value_template: "{{ trigger.to_state.state != trigger.from_state.state }}"
action:
- service: persistent_notification.create
data_template:
title: Landroid Status
message: "{{ trigger.from_state.state }} -> {{ trigger.to_state.state }} - {{ states('sensor.date_time') }}"
# Scripts ###########################################################
script:
# landroid_cloud.start
# landroid_cloud.stop
# landroid_cloud.pause
# Starts the mower
landroid_start:
alias: "Start the mower"
sequence:
service: landroid_cloud.start
data:
id: 473913
# Stops the mower and sends it home
landroid_stop:
alias: "Stop the mower"
sequence:
service: landroid_cloud.stop
data:
id: 473913
# Pause the mower
landroid_pause:
alias: "Pause the mower"
sequence:
service: landroid_cloud.pause
data:
id: 473913
# Customize #########################################################
homeassistant:
customize:
# Sensor ##########
sensor.landroid_hans_dieter_battery:
friendly_name: "Akkuladung"
sensor.landroid_hans_dieter_error:
friendly_name: "Fehler"
sensor.landroid_hans_dieter_status:
friendly_name: "Status"
sensor.landroid_ip:
friendly_name: "IP-Adresse"
sensor.landroid_sn:
friendly_name: "Seriennummer"
sensor.landroid_mac:
friendly_name: "MAC-Adresse"
# sensor.landroid_batvoltage:
# friendly_name: "Akkuspannung"
# sensor.landroid_battemp:
# friendly_name: "Akkutemperatur"
# sensor.landroid_batchargecycles:
# friendly_name: "Akkuladungen"
# sensor.landroid_batcharging:
# friendly_name: "Akkustatus"
sensor.landroid_bat:
friendly_name: "Akkuladung"
sensor.landroid_bladetime:
friendly_name: "Klingenarbeitszeit"
sensor.landroid_bladetime_h:
friendly_name: "Klingenarbeitszeit"
sensor.landroid_totaltime:
friendly_name: "Arbeitszeit"
sensor.landroid_totaltime_h:
friendly_name: "Arbeitszeit"
sensor.landroid_dist:
friendly_name: "Ges. Distanz"
sensor.landroid_dist_km:
friendly_name: "Ges. Distanz"
sensor.landroid_lastupdate:
friendly_name: "Aktualisiert seit"
icon: "mdi:update"
sensor.landroid_wifi:
friendly_name: "WLAN Qualität"
sensor.landroid_pitch:
friendly_name: "Nicken/Тангаж"
sensor.landroid_roll:
friendly_name: "Rollen/Крен"
sensor.landroid_yaw:
friendly_name: "Gieren/Рысканье"
# Input Boolean ###
input_boolean.landroid_raindelay_settings:
friendly_name: "Regenverzögerung"
input_boolean.landroid_timext_settings:
friendly_name: "Zeiterhöhung"
input_boolean.landroid_sched_settings:
friendly_name: "Mähplan"
input_boolean.landroid_info_toggle:
friendly_name: "Information"
# Automation ######
automation.landroid_status_notification:
friendly_name: "Landroid Status Benachrichtigung"
icon: "mdi:bell"
automation.landroid_error_notification:
friendly_name: "Landroid Fehler Benachrichtigung"
icon: "mdi:bell"
# Scripts #########
script.landroid_start:
friendly_name: "Mähen"
icon: "mdi:play"
script.landroid_pause:
friendly_name: "Mähen pausieren"
icon: "mdi:home"
script.landroid_stop:
friendly_name: "Mähen beenden"
icon: "mdi:home"