update
@@ -1 +1 @@
|
||||
2024.7.2
|
||||
2024.10.2
|
||||
2
.gitignore
vendored
@@ -12,6 +12,8 @@ home-assistant.log.fault
|
||||
/custom_components/*
|
||||
/tts/*
|
||||
/blueprints/*
|
||||
/zigbee2mqtt/log/*
|
||||
|
||||
|
||||
# Example .gitignore file for your config dir.
|
||||
# An * ensures that everything will be ignored.
|
||||
|
||||
280
automations.yaml
@@ -34,7 +34,7 @@
|
||||
include_ambient: ambient_disabled
|
||||
include_sun: sun_disabled
|
||||
sun_elevation: 1
|
||||
include_night_lights: night_lights_disabled
|
||||
include_night_lights: night_lights_enabled
|
||||
night_lights:
|
||||
device_id: 1281186f8b90c2b00053decdf33a6d72
|
||||
night_time_delay: 5.5
|
||||
@@ -43,10 +43,10 @@
|
||||
- use_brightness
|
||||
night_light_brightness: 14
|
||||
night_lights_after_time: '20:30:30'
|
||||
night_lights_before_time: '23:00:00'
|
||||
night_lights_before_time: 06:00:00
|
||||
light_switch:
|
||||
entity_id: light.lamp_aanrecht
|
||||
motion_bypass: binary_sensor.contact_achterdeur_contact
|
||||
motion_bypass: binary_sensor.contact_achterdeur_openen
|
||||
night_lights_conditions:
|
||||
- time_enabled
|
||||
night_lights_entity_state: []
|
||||
@@ -98,7 +98,7 @@
|
||||
path: Blackshome/sensor-light47.yaml
|
||||
input:
|
||||
motion_trigger:
|
||||
- binary_sensor.beweging_badkamer_occupancy
|
||||
- binary_sensor.beweging_badkamer_bezetting
|
||||
light_switch:
|
||||
entity_id: light.lamp_badkamer
|
||||
include_light_control:
|
||||
@@ -161,7 +161,7 @@
|
||||
metadata: {}
|
||||
- type: turn_off
|
||||
device_id: 6652a530d4f2c349be36ea58904e613f
|
||||
entity_id: switch.display_woonkamer_browsee_screen
|
||||
entity_id: switch.display_woonkamer_screen
|
||||
domain: switch
|
||||
- service: scene.turn_on
|
||||
target:
|
||||
@@ -212,24 +212,24 @@
|
||||
from: 'off'
|
||||
to: 'on'
|
||||
condition:
|
||||
- condition: or
|
||||
- condition: and
|
||||
conditions:
|
||||
- condition: sun
|
||||
after: sunset
|
||||
before: sunrise
|
||||
- condition: device
|
||||
type: is_off
|
||||
device_id: 497536ba6a270af14bbc9594502c79f9
|
||||
entity_id: 5f3f158ec2ef6a1d76bd3729c55fa181
|
||||
domain: light
|
||||
- condition: numeric_state
|
||||
entity_id: sensor.ep1_woonkamer_illuminance
|
||||
below: 32
|
||||
- condition: numeric_state
|
||||
entity_id: sensor.ep1_woonkamer_illuminance
|
||||
below: 32
|
||||
- condition: device
|
||||
type: is_off
|
||||
device_id: 497536ba6a270af14bbc9594502c79f9
|
||||
entity_id: 5f3f158ec2ef6a1d76bd3729c55fa181
|
||||
domain: light
|
||||
- condition: time
|
||||
after: 00:19:00
|
||||
before: 00:23:00
|
||||
action:
|
||||
- service: scene.turn_on
|
||||
target:
|
||||
- target:
|
||||
entity_id: scene.woonkamer_sfeer_verlichting_aan
|
||||
metadata: {}
|
||||
action: scene.turn_on
|
||||
mode: single
|
||||
- id: '1670606586705'
|
||||
alias: Woonkamer - lamp sfeer/ bank sync
|
||||
@@ -318,42 +318,40 @@
|
||||
alias: slaapkamer Luuk - knop verwarming uit
|
||||
description: ''
|
||||
trigger:
|
||||
- platform: device
|
||||
domain: mqtt
|
||||
device_id: b302a6fc59c6e18c53e40eba7ef192b7
|
||||
type: click
|
||||
subtype: single
|
||||
discovery_id: 0x00158d0008ad9560 click_single
|
||||
- device_id: 2036a9ff728d3d64d360f8cef09b3e7b
|
||||
domain: zha
|
||||
platform: device
|
||||
type: remote_button_long_press
|
||||
subtype: remote_button_long_press
|
||||
condition: []
|
||||
action:
|
||||
- service: climate.set_temperature
|
||||
data:
|
||||
- data:
|
||||
temperature: 16
|
||||
target:
|
||||
entity_id: climate.kamer_luuk
|
||||
action: climate.set_temperature
|
||||
mode: single
|
||||
- id: '1678902018862'
|
||||
alias: slaapkamer luuk - longpress verwarming aan
|
||||
description: ''
|
||||
trigger:
|
||||
- platform: device
|
||||
domain: mqtt
|
||||
device_id: b302a6fc59c6e18c53e40eba7ef192b7
|
||||
type: action
|
||||
subtype: hold
|
||||
discovery_id: 0x00158d0008ad9560 action_hold
|
||||
- device_id: 2036a9ff728d3d64d360f8cef09b3e7b
|
||||
domain: zha
|
||||
platform: device
|
||||
type: remote_button_short_press
|
||||
subtype: remote_button_short_press
|
||||
condition: []
|
||||
action:
|
||||
- service: climate.set_preset_mode
|
||||
data:
|
||||
- data:
|
||||
preset_mode: None
|
||||
target:
|
||||
entity_id: climate.kamer_luuk
|
||||
- service: climate.set_temperature
|
||||
data:
|
||||
action: climate.set_preset_mode
|
||||
- data:
|
||||
temperature: 18.5
|
||||
target:
|
||||
entity_id: climate.kamer_luuk
|
||||
action: climate.set_temperature
|
||||
mode: single
|
||||
- id: '1679849595183'
|
||||
alias: woonkamer - alles uit als het licht is
|
||||
@@ -371,7 +369,7 @@
|
||||
- service: light.turn_off
|
||||
data: {}
|
||||
target:
|
||||
entity_id: light.lamp_bed_willem
|
||||
entity_id: light.lamp_bed_willem_licht
|
||||
mode: single
|
||||
- id: '1683566553338'
|
||||
alias: awtrix_sensor_power_app
|
||||
@@ -439,30 +437,13 @@
|
||||
target:
|
||||
entity_id: switch.display_woonkamer_screen
|
||||
mode: single
|
||||
- id: '1686848917898'
|
||||
alias: Tuin - automatisch water op timer
|
||||
description: ''
|
||||
trigger:
|
||||
- platform: device
|
||||
type: turned_on
|
||||
device_id: e1fd7471fc9fcde9a19ec7175a486dd9
|
||||
entity_id: switch.valve
|
||||
domain: switch
|
||||
condition: []
|
||||
action:
|
||||
- service: notify.mobile_app_iphone_van_willem
|
||||
data:
|
||||
message: Water timer gestart
|
||||
- service: script.tuin_water_op_timer
|
||||
data: {}
|
||||
mode: single
|
||||
- id: '1688631089095'
|
||||
alias: Keuken - Oven notificatie (als iemand thuis is)
|
||||
description: ''
|
||||
trigger:
|
||||
- platform: state
|
||||
entity_id:
|
||||
- sensor.oven_operation_state
|
||||
- sensor.siemens_hm676g0s6_68a40e7e43be_bsh_common_status_operationstate
|
||||
to:
|
||||
from: Run
|
||||
condition: []
|
||||
@@ -479,10 +460,10 @@
|
||||
entity_id: sensor.ble_iphone_willem
|
||||
state: keuken
|
||||
then:
|
||||
- service: notify.mobile_app_iphone_van_willem
|
||||
data:
|
||||
- data:
|
||||
message: De oven is klaar
|
||||
title: Oven
|
||||
action: notify.mobile_app_iphone_van_willem
|
||||
- if:
|
||||
- condition: device
|
||||
device_id: 1888dfa80ca38679556432ff10ab08c3
|
||||
@@ -495,10 +476,10 @@
|
||||
entity_id: sensor.ble_garmin_ilse
|
||||
state: keuken
|
||||
then:
|
||||
- service: notify.mobile_app_iphone_van_ilse
|
||||
data:
|
||||
- data:
|
||||
message: De oven is klaar
|
||||
title: Oven
|
||||
action: notify.mobile_app_iphone_van_ilse
|
||||
mode: single
|
||||
- id: '1688722609177'
|
||||
alias: Hass- daily backup
|
||||
@@ -535,10 +516,10 @@
|
||||
entity_id: device_tracker.iphone_van_willem
|
||||
type: is_home
|
||||
then:
|
||||
- service: notify.mobile_app_iphone_van_willem
|
||||
data:
|
||||
- data:
|
||||
message: De wasmachine is klaar {{ states('sensor.wasmachine_status') }}
|
||||
title: Wasmachine
|
||||
action: notify.sarah
|
||||
- if:
|
||||
- condition: device
|
||||
device_id: 1888dfa80ca38679556432ff10ab08c3
|
||||
@@ -546,25 +527,21 @@
|
||||
entity_id: device_tracker.iphone_van_ilse
|
||||
type: is_home
|
||||
then:
|
||||
- service: notify.mobile_app_iphone_van_ilse
|
||||
data:
|
||||
- data:
|
||||
message: De wasmachine is klaar
|
||||
title: wasmachine
|
||||
enabled: false
|
||||
action: notify.mobile_app_iphone_van_ilse
|
||||
enabled: true
|
||||
mode: single
|
||||
- id: '1689934123616'
|
||||
alias: Garage - beweging
|
||||
description: ''
|
||||
use_blueprint:
|
||||
path: Blackshome/sensor-light.yaml
|
||||
path: freakshock88/motion_illuminance_activated_entity.yaml
|
||||
input:
|
||||
motion_trigger:
|
||||
- binary_sensor.beweging_garage_beweging
|
||||
include_bypass: []
|
||||
include_ambient: ambient_enabled
|
||||
include_sun: sun_disabled
|
||||
light_switch:
|
||||
entity_id: light.lamp_garage
|
||||
motion_sensor: binary_sensor.beweging_garage_beweging
|
||||
target_entity: light.lamp_garage
|
||||
no_motion_wait: input_number.garage_beweging_timer
|
||||
- id: '1693231308249'
|
||||
alias: Tuin - speelhuisje contact WLED verloren
|
||||
description: ''
|
||||
@@ -1030,7 +1007,7 @@
|
||||
awtrix_displays:
|
||||
- 64af8393a844e43d5762a88a1fb2bd56
|
||||
toggle_helper: input_boolean.awtrix_power_sensor_toggle
|
||||
my_sensor: sensor.ikea_particles_temperature
|
||||
my_sensor: sensor.hvac_ir_dsplay_temperature
|
||||
my_icon: '9275'
|
||||
push_icon: '0'
|
||||
- id: '1709406707433'
|
||||
@@ -1042,20 +1019,8 @@
|
||||
awtrix_displays:
|
||||
- 64af8393a844e43d5762a88a1fb2bd56
|
||||
toggle_helper: input_boolean.awtrix_power_sensor_toggle
|
||||
my_sensor: sensor.ikea_particles_pm25
|
||||
my_sensor: sensor.aqs_woonkamer2_particulate_matter_2_5_m_concentration
|
||||
my_icon: '6641'
|
||||
- id: '1709406813204'
|
||||
alias: awtrix woonkamer - bitcoins
|
||||
description: ''
|
||||
use_blueprint:
|
||||
path: smarthomejunkie/awtrix_create_sensor_app.yaml
|
||||
input:
|
||||
awtrix_displays:
|
||||
- 64af8393a844e43d5762a88a1fb2bd56
|
||||
toggle_helper: input_boolean.awtrix_power_sensor_toggle
|
||||
my_sensor: sensor.exchange_rate_1_btc
|
||||
my_icon: '57014'
|
||||
push_icon: '0'
|
||||
- id: '1709464566779'
|
||||
alias: Assist - bose harder
|
||||
description: ''
|
||||
@@ -1166,17 +1131,16 @@
|
||||
controller_device: 90d420a2a2a3b98201fca84e124bad73
|
||||
helper_last_controller_event: input_text.bp_last_knoppen_slaapkamer_tim_action
|
||||
action_button_right_short:
|
||||
- service: light.turn_on
|
||||
target:
|
||||
- target:
|
||||
entity_id: light.rgb_slaapkamer_tim
|
||||
data:
|
||||
rgb_color:
|
||||
- '{{ (range(0, 255)|random) }}'
|
||||
- '{{ (range(0, 255)|random) }}'
|
||||
- '{{ (range(0, 255)|random) }}'
|
||||
action: light.turn_on
|
||||
action_button_left_long:
|
||||
- service: light.turn_on
|
||||
target:
|
||||
- target:
|
||||
entity_id: light.rgb_slaapkamer_tim
|
||||
data:
|
||||
brightness: '{% if state_attr("light.rgb_slaapkamer_tim","brightness") is
|
||||
@@ -1191,9 +1155,9 @@
|
||||
< 225 %} 255 {% else %} 10 {% endif %}
|
||||
|
||||
'
|
||||
action: light.turn_on
|
||||
action_button_left_short:
|
||||
- service: light.turn_on
|
||||
target:
|
||||
- target:
|
||||
entity_id: light.rgb_slaapkamer_tim
|
||||
data:
|
||||
color_temp: '{% if state_attr("light.rgb_slaapkamer_tim","color_temp") is
|
||||
@@ -1203,41 +1167,45 @@
|
||||
> 284 %} 244 {% else %} 370 {% endif %}
|
||||
|
||||
'
|
||||
action: light.turn_on
|
||||
action_button_right_long:
|
||||
- service: light.turn_on
|
||||
target:
|
||||
- target:
|
||||
entity_id: light.rgb_slaapkamer_tim
|
||||
data:
|
||||
brightness: '{% if state_attr("light.rgb_slaapkamer_tim_light","brightness")
|
||||
is none %} 32 {% elif state_attr("light.rgb_slaapkamer_tim_light","brightness")|int
|
||||
> 254 %} 224 {% elif state_attr("light.rgb_slaapkamer_tim_light","brightness")|int
|
||||
> 223 %} 192 {% elif state_attr("light.rgb_slaapkamer_tim_light","brightness")|int
|
||||
> 191 %} 160 {% elif state_attr("light.rgb_slaapkamer_tim_light","brightness")|int
|
||||
> 159 %} 128 {% elif state_attr("light.rgb_slaapkamer_tim_light","brightness")|int
|
||||
> 127 %} 64 {% elif state_attr("light.rgb_slaapkamer_tim_light","brightness")|int
|
||||
> 63 %} 32 {% elif state_attr("light.rgb_slaapkamer_tim_light","brightness")|int
|
||||
> 31 %} 16 {% elif state_attr("light.rgb_slaapkamer_tim_light","brightness")|int
|
||||
brightness: '{% if state_attr("light.rgb_slaapkamer_tim","brightness") is
|
||||
none %} 32 {% elif state_attr("light.rgb_slaapkamer_tim","brightness")|int
|
||||
> 254 %} 224 {% elif state_attr("light.rgb_slaapkamer_tim","brightness")|int
|
||||
> 223 %} 192 {% elif state_attr("light.rgb_slaapkamer_tim","brightness")|int
|
||||
> 191 %} 160 {% elif state_attr("light.rgb_slaapkamer_tim","brightness")|int
|
||||
> 159 %} 128 {% elif state_attr("light.rgb_slaapkamer_tim","brightness")|int
|
||||
> 127 %} 64 {% elif state_attr("light.rgb_slaapkamer_tim","brightness")|int
|
||||
> 63 %} 32 {% elif state_attr("light.rgb_slaapkamer_tim","brightness")|int
|
||||
> 31 %} 16 {% elif state_attr("light.rgb_slaapkamer_tim","brightness")|int
|
||||
> 15 %} 8 {% else %} 128 {% endif %}
|
||||
|
||||
'
|
||||
action: light.turn_on
|
||||
action_button_up_short:
|
||||
- service: light.turn_on
|
||||
- action: light.turn_on
|
||||
metadata: {}
|
||||
data: {}
|
||||
data:
|
||||
kelvin: 2000
|
||||
brightness_pct: 40
|
||||
target:
|
||||
entity_id: light.rgb_slaapkamer_tim
|
||||
device_id: a5c4a7221f63727d7554c259a7b76cc0
|
||||
action_button_down_short:
|
||||
- service: light.turn_off
|
||||
metadata: {}
|
||||
- metadata: {}
|
||||
data: {}
|
||||
target:
|
||||
entity_id: light.rgb_slaapkamer_tim
|
||||
- service: automation.trigger
|
||||
metadata: {}
|
||||
action: light.turn_off
|
||||
- metadata: {}
|
||||
data:
|
||||
skip_condition: true
|
||||
target:
|
||||
entity_id: automation.slaap_trainer_tim_bedtijd
|
||||
action: automation.trigger
|
||||
action_button_up_release: []
|
||||
- id: '1717308990858'
|
||||
alias: '[BP ZHA] knoppen bed willem'
|
||||
description: ''
|
||||
@@ -1246,15 +1214,14 @@
|
||||
input:
|
||||
aqara_mini_switch: 61c4022b7cb861ed4c60ea3b7336baa9
|
||||
button_single_press_left:
|
||||
- service: light.toggle
|
||||
metadata: {}
|
||||
- action: light.toggle
|
||||
data:
|
||||
brightness_pct: 35
|
||||
color_temp: 153
|
||||
target:
|
||||
entity_id: light.hvac_ir_rgb_slaapkamer_neopixel_light
|
||||
entity_id: light.airco_ir_slaapkamer_neopixel_light
|
||||
button_single_press_right:
|
||||
- service: light.toggle
|
||||
- action: light.toggle
|
||||
metadata: {}
|
||||
data:
|
||||
brightness_pct: 15
|
||||
@@ -1262,23 +1229,23 @@
|
||||
target:
|
||||
device_id: bfdb32c651d6c4a4301613f69523ce68
|
||||
button_double_press_left:
|
||||
- service: light.turn_on
|
||||
- action: light.turn_on
|
||||
metadata: {}
|
||||
data:
|
||||
color_temp: 153
|
||||
brightness_pct: 100
|
||||
target:
|
||||
entity_id: light.hvac_ir_rgb_slaapkamer_neopixel_light
|
||||
entity_id: light.airco_ir_slaapkamer_neopixel_light
|
||||
button_long_press_left:
|
||||
- service: light.turn_on
|
||||
- action: light.turn_on
|
||||
metadata: {}
|
||||
data:
|
||||
color_temp: 153
|
||||
brightness_step_pct: 29
|
||||
target:
|
||||
entity_id: light.hvac_ir_rgb_slaapkamer_neopixel_light
|
||||
entity_id: light.airco_ir_slaapkamer_neopixel_light
|
||||
button_double_press_right:
|
||||
- service: light.turn_on
|
||||
- action: light.turn_on
|
||||
target:
|
||||
device_id:
|
||||
- bfdb32c651d6c4a4301613f69523ce68
|
||||
@@ -1286,7 +1253,7 @@
|
||||
kelvin: 2000
|
||||
brightness_pct: 100
|
||||
button_long_press_right:
|
||||
- service: light.turn_on
|
||||
- action: light.turn_on
|
||||
target:
|
||||
entity_id: light.lamp_bed_willem_licht
|
||||
data:
|
||||
@@ -1298,9 +1265,80 @@
|
||||
entity_id: 50a2b15de13d2e3f2d7e26c302ccd3ff
|
||||
type: set_position
|
||||
position: 100
|
||||
alias: open curtains
|
||||
button_long_press_both:
|
||||
- device_id: cc0db2acf0bb2018d46ad2ffd2f89df1
|
||||
domain: cover
|
||||
entity_id: 50a2b15de13d2e3f2d7e26c302ccd3ff
|
||||
type: set_position
|
||||
position: 0
|
||||
alias: close curtains
|
||||
- id: '1724443240070'
|
||||
alias: Hal - wc toggle lamp with switch
|
||||
description: ''
|
||||
trigger:
|
||||
- platform: state
|
||||
entity_id:
|
||||
- binary_sensor.lamp_wc_input_0_input
|
||||
condition: []
|
||||
action:
|
||||
- type: toggle
|
||||
device_id: d97258d7ca7eb0ede371b5b2bd3b4aa9
|
||||
entity_id: 284f2fcf6ebea7b570fa9c0dbf50468c
|
||||
domain: light
|
||||
mode: single
|
||||
- id: '1727243468459'
|
||||
alias: Lader gestopt
|
||||
description: ''
|
||||
triggers:
|
||||
- entity_id:
|
||||
- sensor.smartevse_state
|
||||
from: Charging
|
||||
trigger: state
|
||||
for:
|
||||
hours: 0
|
||||
minutes: 10
|
||||
seconds: 0
|
||||
conditions: []
|
||||
actions:
|
||||
- action: notify.mobile_app_iphone_van_willem
|
||||
data:
|
||||
message: Lader gestopt
|
||||
- if:
|
||||
- condition: state
|
||||
entity_id: input_boolean.vaatwasser_aan_als_laden_klaar_is
|
||||
state: 'on'
|
||||
then:
|
||||
- action: script.keuken_vaatwasser_start
|
||||
metadata: {}
|
||||
data: {}
|
||||
- action: input_boolean.turn_off
|
||||
target:
|
||||
entity_id: input_boolean.vaatwasser_aan_als_laden_klaar_is
|
||||
data: {}
|
||||
mode: single
|
||||
- id: '1728146645423'
|
||||
alias: Watchman report
|
||||
description: ''
|
||||
trigger:
|
||||
- type: value
|
||||
platform: device
|
||||
device_id: f4f17ad4d0592f9dc6844ef6530627d4
|
||||
entity_id: 099f4db4a8bd40575d544ee542242c74
|
||||
domain: sensor
|
||||
above: 0
|
||||
- type: value
|
||||
platform: device
|
||||
device_id: f4f17ad4d0592f9dc6844ef6530627d4
|
||||
entity_id: 9d1f623158feb4e90e2519ce917d52a6
|
||||
domain: sensor
|
||||
above: 0
|
||||
condition: []
|
||||
action:
|
||||
- action: watchman.report
|
||||
metadata: {}
|
||||
data:
|
||||
create_file: false
|
||||
chunk_size: false
|
||||
send_notification: true
|
||||
mode: single
|
||||
|
||||
@@ -26,4 +26,5 @@ homeassistant:
|
||||
logger:
|
||||
default: warning
|
||||
#logs:
|
||||
#custom_components.kia_uvo: debug
|
||||
|
||||
|
||||
|
||||
11
depr_packages/monstera.yaml
Normal file
@@ -0,0 +1,11 @@
|
||||
# Example configuration.yaml entry
|
||||
---
|
||||
plant:
|
||||
monstera:
|
||||
sensors:
|
||||
moisture: sensor.monstera_moisture
|
||||
battery: sensor.monstera_battery
|
||||
temperature: sensor.monstera_temperature
|
||||
conductivity: sensor.monstera_conductivity
|
||||
brightness: sensor.monstera_illuminance
|
||||
min_moisture: 20
|
||||
@@ -1,27 +0,0 @@
|
||||
# ---
|
||||
# platform: afvalinfo
|
||||
# id: Thuis # (optional, default = '') add some extra naming to make identification of multiple afvalinfo sensors easier
|
||||
# resources: # (at least 1 required)
|
||||
# - type: gft #(type is required)
|
||||
# friendly_name: GFT #(friendly_name is optional)
|
||||
# - type: kerstboom
|
||||
# friendly_name: Kerstboom
|
||||
# - type: pbd
|
||||
# friendly_name: Pmd
|
||||
# - type: papier
|
||||
# friendly_name: Papier
|
||||
# - type: restafval
|
||||
# friendly_name: Restafval
|
||||
# - type: trash_type_today
|
||||
# friendly_name: Afval voor vandaag
|
||||
# - type: trash_type_tomorrow
|
||||
# friendly_name: Afval voor morgen
|
||||
# location: sint-michielsgestel #(required, default = sliedrecht) name of the 'gemeente'
|
||||
# postcode: 5275 BV #(required, default = 3361AB)
|
||||
# streetnumber: 16 #(required, default = 1)
|
||||
# #diftarcode: 12345678 #(optional, default = '')
|
||||
# #streetnumbersuffix: "" #(optional, default = '')
|
||||
# #dateformat: '%d-%m-%Y' (optional, default = %d-%m-%Y) day-month-year
|
||||
# locale: "nl" #(optional, default = 'en')
|
||||
# timespanindays: 365 #(optional, default = 365) number of days to look into the future
|
||||
# notrashtext: "geen" #(Optional, default = 'none') the text to show for the today and tomorrow sensor when there is no trash to collect
|
||||
@@ -1,6 +0,0 @@
|
||||
---
|
||||
platform: bitcoin
|
||||
currency: EUR
|
||||
display_options:
|
||||
- exchangerate
|
||||
- trade_volume_btc
|
||||
@@ -103,9 +103,9 @@ sensor:
|
||||
travel_ASML_name: >
|
||||
{{ state_attr('sensor.werk_asml','friendly_name') }}
|
||||
travel_Euretco_time: >
|
||||
{{ state_attr('sensor.reistijd_hoeverlaken','duration') | round(2) }}
|
||||
{{ state_attr('sensor.werk_ilse','duration') | round(2) }}
|
||||
travel_Euretco_name: >
|
||||
{{ state_attr('sensor.reistijd_hoeverlaken','friendly_name') }}
|
||||
{{ state_attr('sensor.werk_ilse','friendly_name') }}
|
||||
sun_next_rising: >
|
||||
{{ state_attr('Sun.sun', 'next_rising') }}
|
||||
sun_next_setting: >
|
||||
|
||||
@@ -27,7 +27,7 @@ packages:
|
||||
connection: !include common/wifi.yaml
|
||||
status: !include templates/status.yaml
|
||||
logger: !include templates/nologger.yaml
|
||||
#bt_proxy: !include common/bluetooth.yaml
|
||||
bt_proxy: !include common/bluetooth.yaml
|
||||
#sensors
|
||||
#mmwave: !include sensors/ld2420.yaml
|
||||
pmsc: !include sensors/pmsx0003.yaml
|
||||
|
||||
@@ -21,7 +21,7 @@ substitutions:
|
||||
|
||||
packages:
|
||||
board: !include boards/esp32_wroom_arduino.yaml
|
||||
i2c: !include interfaces/i2c_a.yaml
|
||||
i2c: !include interfaces/i2c_a_slow.yaml
|
||||
device_base: !include common/common.yaml
|
||||
connection: !include common/wifi.yaml
|
||||
status: !include templates/status.yaml
|
||||
@@ -29,7 +29,7 @@ packages:
|
||||
bt_proxy: !include common/bluetooth.yaml
|
||||
|
||||
#sensors
|
||||
#mmwave: !include sensors/ld2410.yaml
|
||||
#mmwave: !include sensors/ld2420.yaml
|
||||
pms: !include sensors/pm1006.yaml
|
||||
co2: !include sensors/scd30.yaml
|
||||
tvoc: !include sensors/sgp30.yaml
|
||||
|
||||
@@ -12,10 +12,12 @@ substitutions:
|
||||
subnet: !secret ip_subnet
|
||||
ip: !secret badkamerradfan_ip
|
||||
pin_temp: GPIO3
|
||||
pin_pwm: GPIO4
|
||||
pin_tach: GPIO2
|
||||
pin_pwm: GPIO2
|
||||
pin_tach1: GPIO6
|
||||
pin_tach2: GPIO7
|
||||
pin_tach3: GPIO9
|
||||
pin_status: GPIO8
|
||||
ledc_freq: "16000"
|
||||
ledc_freq: "1000"
|
||||
|
||||
packages:
|
||||
board: !include boards/esp32-C3.yaml
|
||||
@@ -23,6 +25,7 @@ packages:
|
||||
connection: !include common/wifi.yaml
|
||||
status: !include templates/status.yaml
|
||||
logger: !include templates/logger.yaml
|
||||
bt_proxy: !include common/bluetooth.yaml
|
||||
|
||||
output:
|
||||
- platform: ledc
|
||||
@@ -35,7 +38,7 @@ fan:
|
||||
output: pwm1
|
||||
name: "Badkamer radiator Fan"
|
||||
id: badkamerfan
|
||||
restore_mode: RESTORE_DEFAULT_ON
|
||||
restore_mode: RESTORE_DEFAULT_OFF
|
||||
|
||||
# Example configuration entry
|
||||
one_wire:
|
||||
@@ -45,7 +48,7 @@ one_wire:
|
||||
# Individual sensors
|
||||
sensor:
|
||||
- platform: dallas_temp
|
||||
address: 0x59800000081fd028
|
||||
address: 0xb1800000081e5a28
|
||||
name: "Radiataor Temperature"
|
||||
id: radtemperature
|
||||
on_value_range:
|
||||
@@ -56,6 +59,52 @@ sensor:
|
||||
then:
|
||||
- fan.turn_off: badkamerfan
|
||||
|
||||
- platform: pulse_counter
|
||||
pin:
|
||||
number: ${pin_tach1}
|
||||
mode:
|
||||
input: true
|
||||
pullup: true
|
||||
name: fan1 PWM
|
||||
id: fan_pulse1
|
||||
unit_of_measurement: 'RPM'
|
||||
filters:
|
||||
- multiply: 0.5
|
||||
count_mode:
|
||||
rising_edge: INCREMENT
|
||||
falling_edge: DISABLE
|
||||
update_interval: 3s
|
||||
- platform: pulse_counter
|
||||
pin:
|
||||
number: ${pin_tach2}
|
||||
mode:
|
||||
input: true
|
||||
pullup: true
|
||||
name: fan2 PWM
|
||||
id: fan_pulse2
|
||||
unit_of_measurement: 'RPM'
|
||||
filters:
|
||||
- multiply: 0.5
|
||||
count_mode:
|
||||
rising_edge: INCREMENT
|
||||
falling_edge: DISABLE
|
||||
update_interval: 3s
|
||||
- platform: pulse_counter
|
||||
pin:
|
||||
number: ${pin_tach3}
|
||||
mode:
|
||||
input: true
|
||||
pullup: true
|
||||
name: fan3 PWM
|
||||
id: fan_pulse3
|
||||
unit_of_measurement: 'RPM'
|
||||
filters:
|
||||
- multiply: 0.5
|
||||
count_mode:
|
||||
rising_edge: INCREMENT
|
||||
falling_edge: DISABLE
|
||||
update_interval: 3s
|
||||
|
||||
number:
|
||||
- platform: template
|
||||
name: "Fan on temp"
|
||||
@@ -75,4 +124,4 @@ number:
|
||||
max_value: 65
|
||||
restore_value: True
|
||||
initial_value: 24
|
||||
step: 1
|
||||
step: 1
|
||||
|
||||
14
esphome/boards/esp32-C3_idf.yaml
Executable file
@@ -0,0 +1,14 @@
|
||||
---
|
||||
esp32:
|
||||
board: esp32-c3-devkitm-1
|
||||
framework:
|
||||
type: esp-idf
|
||||
sdkconfig_options:
|
||||
CONFIG_BT_BLE_50_FEATURES_SUPPORTED: y
|
||||
CONFIG_BT_BLE_42_FEATURES_SUPPORTED: y
|
||||
CONFIG_ESP_TASK_WDT_TIMEOUT_S: "10"
|
||||
|
||||
esphome:
|
||||
platformio_options:
|
||||
board_build.mcu: esp32c3
|
||||
board_build.variant: esp32c3
|
||||
5
esphome/boards/esp32-gen.yaml
Executable file
@@ -0,0 +1,5 @@
|
||||
---
|
||||
esp32:
|
||||
board: ${board}
|
||||
framework:
|
||||
type: ${framework}
|
||||
4
esphome/boards/esp32_wroom_idf.yaml
Executable file
@@ -0,0 +1,4 @@
|
||||
esp32:
|
||||
board: esp32dev
|
||||
framework:
|
||||
type: esp-idf
|
||||
@@ -4,7 +4,7 @@ esp32:
|
||||
flash_size: 16MB
|
||||
framework:
|
||||
type: esp-idf
|
||||
version: 4.4.6
|
||||
#version: 4.4.6
|
||||
sdkconfig_options:
|
||||
CONFIG_ESP32S3_DEFAULT_CPU_FREQ_240: "y"
|
||||
CONFIG_ESP32S3_DATA_CACHE_64KB: "y"
|
||||
@@ -27,6 +27,9 @@ external_components:
|
||||
- source: github://pr#5230
|
||||
components: esp_adf
|
||||
refresh: 0s
|
||||
- source: github://jesserockz/esphome-components
|
||||
components: [file]
|
||||
refresh: 0s
|
||||
# - source: github://X-Ryl669/esphome@esp-adf-take2 #pr#5230
|
||||
# components: [esp_adf]
|
||||
# refresh: 0s
|
||||
|
||||
58
esphome/boards/esp32s3box_custom.yaml
Normal file
@@ -0,0 +1,58 @@
|
||||
---
|
||||
esp32:
|
||||
board: esp32s3box
|
||||
flash_size: 16MB
|
||||
framework:
|
||||
type: esp-idf
|
||||
sdkconfig_options:
|
||||
CONFIG_ESP32S3_DEFAULT_CPU_FREQ_240: "y"
|
||||
CONFIG_ESP32S3_DATA_CACHE_64KB: "y"
|
||||
CONFIG_ESP32S3_DATA_CACHE_LINE_64B: "y"
|
||||
CONFIG_AUDIO_BOARD_CUSTOM: "y"
|
||||
CONFIG_ESP32_S3_BOX_3_BOARD: "y"
|
||||
components:
|
||||
- name: esp32_s3_box_3_board
|
||||
source: github://jesserockz/esp32-s3-box-3-board@main
|
||||
refresh: 0s
|
||||
# components:
|
||||
# - name: esp32_s3_box_3_board
|
||||
# source: github://X-Ryl669/esp32-s3-box-3-board@main
|
||||
# refresh: 0s
|
||||
psram:
|
||||
mode: octal
|
||||
speed: 80MHz
|
||||
|
||||
external_components:
|
||||
- source:
|
||||
type: git
|
||||
url: https://github.com/gnumpi/esphome_audio
|
||||
ref: dev-next
|
||||
components: [ adf_pipeline, i2s_audio ]
|
||||
refresh: 0s
|
||||
# - source: github://X-Ryl669/esphome@esp-adf-take2 #pr#5230
|
||||
# components: [esp_adf]
|
||||
# refresh: 0s
|
||||
# - source: github://X-Ryl669/esphome@at581x
|
||||
# components: at581x
|
||||
# refresh: 0s
|
||||
# - source: github://pr#5894 #5198
|
||||
# components: [ahtxx]
|
||||
# refresh: 60s
|
||||
|
||||
esphome:
|
||||
name: ${device_name}
|
||||
friendly_name: ${friendly_name}
|
||||
min_version: 2024.7.0
|
||||
platformio_options:
|
||||
board_build.flash_mode: dio
|
||||
on_boot:
|
||||
priority: 600
|
||||
then:
|
||||
- light.turn_on:
|
||||
id: led
|
||||
brightness: 100%
|
||||
- display.page.show: loading_page
|
||||
- component.update: s3_box_lcd
|
||||
project:
|
||||
name: "BigBobbas.s3box"
|
||||
version: ${version}
|
||||
29
esphome/bt-proxy-hal.yaml
Normal file
@@ -0,0 +1,29 @@
|
||||
substitutions:
|
||||
device_name: "btproxyhal"
|
||||
friendly_name: "BT_proxy_hal"
|
||||
comment: "ESP32-c3 proxy"
|
||||
location: "hal"
|
||||
board: "esp32-c3-devkitm-1"
|
||||
framework: arduino
|
||||
api_password: !secret bt_proxy_hal_api
|
||||
ota_password: !secret ota_password
|
||||
wifi_ssid: !secret wifi_ssid
|
||||
wifi_password: !secret wifi_password
|
||||
gateway: !secret ip_gateway
|
||||
subnet: !secret ip_subnet
|
||||
ip: !secret bt_proxy_hal_ip
|
||||
#pin_status: GPIO8
|
||||
# update_interval: 10s
|
||||
# pin_sda: GPIO8
|
||||
# pin_scl: GPIO9
|
||||
|
||||
|
||||
packages:
|
||||
board: !include boards/esp32-gen.yaml
|
||||
connection: !include common/wifi_btprox.yaml
|
||||
device_base: !include common/common.yaml
|
||||
logger: !include templates/logger.yaml
|
||||
#status: !include templates/status.yaml
|
||||
btproxy: !include templates/bt_proxy.yaml
|
||||
#bme: !include sensors/bme280.yaml
|
||||
#i2c: !include interfaces/i2c_a.yaml
|
||||
24
esphome/bt-proxy-keuken.yaml
Normal file
@@ -0,0 +1,24 @@
|
||||
substitutions:
|
||||
device_name: "btproxykeuken"
|
||||
friendly_name: "BT_proxy_keuken"
|
||||
comment: "ESP32-c3 proxy"
|
||||
location: "keuken"
|
||||
board: "esp32-c3-devkitm-1"
|
||||
framework: arduino
|
||||
api_password: !secret bt_proxy_keuken_api
|
||||
ota_password: !secret ota_password
|
||||
wifi_ssid: !secret wifi_ssid
|
||||
wifi_password: !secret wifi_password
|
||||
gateway: !secret ip_gateway
|
||||
subnet: !secret ip_subnet
|
||||
ip: !secret bt_proxy_keuken_ip
|
||||
pin_status: GPIO8
|
||||
|
||||
|
||||
packages:
|
||||
board: !include boards/esp32-gen.yaml
|
||||
connection: !include common/wifi_btprox.yaml
|
||||
device_base: !include common/common.yaml
|
||||
logger: !include templates/logger.yaml
|
||||
btproxy: !include templates/bt_proxy.yaml
|
||||
|
||||
24
esphome/bt-proxy-speelkamer.yaml
Normal file
@@ -0,0 +1,24 @@
|
||||
substitutions:
|
||||
device_name: "btproxyspeelkamer"
|
||||
friendly_name: "BT_proxy_speelkamer"
|
||||
comment: "ESP32-c3 proxy"
|
||||
location: "speelkamer"
|
||||
board: "esp32-c3-devkitm-1"
|
||||
framework: arduino
|
||||
api_password: !secret bt_proxy_speelkamer_api
|
||||
ota_password: !secret ota_password
|
||||
wifi_ssid: !secret wifi_ssid
|
||||
wifi_password: !secret wifi_password
|
||||
gateway: !secret ip_gateway
|
||||
subnet: !secret ip_subnet
|
||||
ip: !secret bt_proxy_speelkamer_ip
|
||||
pin_status: GPIO8
|
||||
|
||||
|
||||
packages:
|
||||
board: !include boards/esp32-gen.yaml
|
||||
connection: !include common/wifi_btprox.yaml
|
||||
device_base: !include common/common.yaml
|
||||
logger: !include templates/logger.yaml
|
||||
btproxy: !include templates/bt_proxy.yaml
|
||||
|
||||
26
esphome/bt-proxy-woonkamer.yaml
Normal file
@@ -0,0 +1,26 @@
|
||||
substitutions:
|
||||
device_name: "btproxywoonkamer"
|
||||
friendly_name: "BT_proxy_woonkamer"
|
||||
comment: "ESP32-c3 proxy"
|
||||
location: "woonkamer"
|
||||
board: "esp32-c3-devkitm-1"
|
||||
framework: arduino
|
||||
|
||||
api_password: !secret bt_proxy_woonkamer_api
|
||||
ota_password: !secret ota_password
|
||||
wifi_ssid: !secret wifi_ssid
|
||||
wifi_password: !secret wifi_password
|
||||
gateway: !secret ip_gateway
|
||||
subnet: !secret ip_subnet
|
||||
ip: !secret bt_proxy_woonkamer_ip
|
||||
pin_status: GPIO8
|
||||
|
||||
|
||||
packages:
|
||||
board: !include boards/esp32-gen.yaml
|
||||
connection: !include common/wifi_btprox.yaml
|
||||
device_base: !include common/common.yaml
|
||||
logger: !include templates/logger.yaml
|
||||
#status: !include templates/status.yaml
|
||||
btproxy: !include templates/bt_proxy.yaml
|
||||
|
||||
27
esphome/bt-proxy-zolder.yaml
Normal file
@@ -0,0 +1,27 @@
|
||||
substitutions:
|
||||
device_name: "btproxyzolder"
|
||||
friendly_name: "BT_proxy_zolder"
|
||||
comment: "ESP32-c3 proxy"
|
||||
location: "zolder"
|
||||
board: "esp32-c3-devkitm-1"
|
||||
#framework: esp-idf
|
||||
framework: arduino
|
||||
|
||||
api_password: !secret bt_proxy_zolder_api
|
||||
ota_password: !secret ota_password
|
||||
wifi_ssid: !secret wifi_ssid
|
||||
wifi_password: !secret wifi_password
|
||||
gateway: !secret ip_gateway
|
||||
subnet: !secret ip_subnet
|
||||
ip: !secret bt_proxy_zolder_ip
|
||||
pin_status: GPIO8
|
||||
|
||||
|
||||
packages:
|
||||
board: !include boards/esp32-gen.yaml
|
||||
connection: !include common/wifi_btprox.yaml
|
||||
device_base: !include common/common.yaml
|
||||
logger: !include templates/logger.yaml
|
||||
#status: !include templates/status.yaml
|
||||
btproxy: !include templates/bt_proxy.yaml
|
||||
|
||||
1904
esphome/cfg_old/esp32-s3-box-3_vacustom.yaml
Normal file
@@ -5,8 +5,15 @@
|
||||
# window: 1100ms # default 30ms
|
||||
# active: true
|
||||
|
||||
bluetooth_proxy:
|
||||
esp32_ble_tracker:
|
||||
scan_parameters:
|
||||
interval: 1100ms
|
||||
window: 1100ms
|
||||
active: true
|
||||
|
||||
bluetooth_proxy:
|
||||
active: true
|
||||
#cache_services: true #needs idf
|
||||
|
||||
# binary_sensor:
|
||||
# - platform: ble_presence
|
||||
|
||||
30
esphome/common/bluetooth_idf.yaml
Executable file
@@ -0,0 +1,30 @@
|
||||
---
|
||||
# esp32_ble_tracker:
|
||||
# scan_parameters:
|
||||
# interval: 1100ms # default 320ms
|
||||
# window: 1100ms # default 30ms
|
||||
# active: true
|
||||
|
||||
esp32_ble_tracker:
|
||||
scan_parameters:
|
||||
interval: 1100ms
|
||||
window: 1100ms
|
||||
active: true
|
||||
|
||||
bluetooth_proxy:
|
||||
active: true
|
||||
cache_services: true
|
||||
|
||||
# binary_sensor:
|
||||
# - platform: ble_presence
|
||||
# mac_address: C8:B8:49:1F:07:7C
|
||||
# name: "BLE tracker 1"
|
||||
|
||||
# sensor:
|
||||
# - platform: ble_rssi
|
||||
# mac_address: C8:B8:49:1F:07:7C
|
||||
# name: "BLE tracker 1"
|
||||
|
||||
# text_sensor:
|
||||
# - platform: ble_scanner
|
||||
# name: "BLE Devices Scanner"
|
||||
@@ -1,5 +1,7 @@
|
||||
ota:
|
||||
password: ${ota_password}
|
||||
- platform: esphome
|
||||
id: my_ota
|
||||
password: ${ota_password}
|
||||
|
||||
api:
|
||||
encryption:
|
||||
|
||||
@@ -19,7 +19,7 @@ wifi:
|
||||
subnet: ${subnet}
|
||||
dns1: 192.169.2.15
|
||||
dns2: 1.1.1.1
|
||||
# use_address: 192.168.2.63 #when changing fixed IP
|
||||
#use_address: 192.168.2.235 #when changing fixed IP
|
||||
|
||||
# Enable fallback hotspot (captive portal) in case wifi connection fails
|
||||
ap:
|
||||
|
||||
59
esphome/common/wifi_btprox.yaml
Executable file
@@ -0,0 +1,59 @@
|
||||
|
||||
# Enable Home Assistant API
|
||||
api:
|
||||
encryption:
|
||||
key: ${api_password}
|
||||
|
||||
ota:
|
||||
- platform: esphome
|
||||
id: my_ota
|
||||
password: ${ota_password}
|
||||
|
||||
wifi:
|
||||
ssid: ${wifi_ssid}
|
||||
password: ${wifi_password}
|
||||
fast_connect: True
|
||||
output_power: "8.5"
|
||||
manual_ip:
|
||||
static_ip: ${ip}
|
||||
gateway: ${gateway}
|
||||
subnet: ${subnet}
|
||||
dns1: 192.169.2.15
|
||||
dns2: 1.1.1.1
|
||||
#use_address: 192.168.2.235 #when changing fixed IP
|
||||
|
||||
# Enable fallback hotspot (captive portal) in case wifi connection fails
|
||||
ap:
|
||||
ssid: ${device_name}
|
||||
password: ${wifi_password}
|
||||
|
||||
captive_portal:
|
||||
|
||||
sensor:
|
||||
- platform: wifi_signal
|
||||
name: "WiFi Signal "
|
||||
update_interval: 10s
|
||||
|
||||
text_sensor:
|
||||
- platform: wifi_info
|
||||
ip_address:
|
||||
name: IP Address
|
||||
icon: mdi:wifi-strength-2
|
||||
id: ipaddr
|
||||
ssid:
|
||||
name: "Connected SSID"
|
||||
id: ssid
|
||||
icon: mdi:wifi-strength-2
|
||||
entity_category: diagnostic
|
||||
|
||||
bssid:
|
||||
name: "Connected BSSID"
|
||||
id: bssid
|
||||
icon: mdi:wifi-strength-2
|
||||
entity_category: diagnostic
|
||||
|
||||
mac_address:
|
||||
name: "WiFi Mac Address"
|
||||
id: macaddress
|
||||
icon: mdi:wifi-strength-2
|
||||
entity_category: diagnostic
|
||||
72
esphome/common/wifi_voice_custom.yaml
Executable file
@@ -0,0 +1,72 @@
|
||||
|
||||
# Enable Home Assistant API
|
||||
api:
|
||||
encryption:
|
||||
key: ${api_password}
|
||||
on_client_connected:
|
||||
- lambda: |-
|
||||
id(api_connection) = true;
|
||||
- component.update: s3_box_lcd
|
||||
- script.execute: saver_enabled
|
||||
on_client_disconnected:
|
||||
- lambda: |-
|
||||
id(api_connection) = false;
|
||||
|
||||
ota:
|
||||
password: ${ota_password}
|
||||
platform: esphome
|
||||
|
||||
wifi:
|
||||
ssid: ${wifi_ssid}
|
||||
password: ${wifi_password}
|
||||
fast_connect: True
|
||||
manual_ip:
|
||||
static_ip: ${ip}
|
||||
gateway: ${gateway}
|
||||
subnet: ${subnet}
|
||||
dns1: 192.169.2.15
|
||||
dns2: 1.1.1.1
|
||||
# use_address: 192.168.2.63 #when changing fixed IP
|
||||
|
||||
# Enable fallback hotspot (captive portal) in case wifi connection fails
|
||||
ap:
|
||||
ssid: ${device_name}
|
||||
password: ${wifi_password}
|
||||
|
||||
on_connect:
|
||||
- lambda: |-
|
||||
id(wifi_connection) = true;
|
||||
- display.page.show: idle_page
|
||||
- component.update: s3_box_lcd
|
||||
on_disconnect:
|
||||
- lambda: |-
|
||||
id(wifi_connection) = false;
|
||||
|
||||
sensor:
|
||||
- platform: wifi_signal
|
||||
name: "WiFi Signal "
|
||||
update_interval: 10s
|
||||
|
||||
text_sensor:
|
||||
- platform: wifi_info
|
||||
ip_address:
|
||||
name: IP Address
|
||||
icon: mdi:wifi-strength-2
|
||||
id: ipaddr
|
||||
ssid:
|
||||
name: "Connected SSID"
|
||||
id: ssid
|
||||
icon: mdi:wifi-strength-2
|
||||
entity_category: diagnostic
|
||||
|
||||
bssid:
|
||||
name: "Connected BSSID"
|
||||
id: bssid
|
||||
icon: mdi:wifi-strength-2
|
||||
entity_category: diagnostic
|
||||
|
||||
mac_address:
|
||||
name: "WiFi Mac Address"
|
||||
id: macaddress
|
||||
icon: mdi:wifi-strength-2
|
||||
entity_category: diagnostic
|
||||
@@ -17,6 +17,7 @@ packages:
|
||||
connection: !include common/wifi_nosens.yaml
|
||||
logger: !include templates/logger.yaml
|
||||
|
||||
|
||||
#add include
|
||||
esphome:
|
||||
includes:
|
||||
|
||||
@@ -34,6 +34,7 @@ packages:
|
||||
logger: !include templates/logger.yaml
|
||||
i2c: !include interfaces/i2c_a.yaml
|
||||
bluetooth: !include common/bluetooth.yaml
|
||||
bt_proxy: !include common/bluetooth.yaml
|
||||
|
||||
improv_serial:
|
||||
|
||||
|
||||
@@ -47,67 +47,89 @@ api:
|
||||
|
||||
esphome:
|
||||
on_boot:
|
||||
- priority: -200.0
|
||||
then:
|
||||
# - stepper.report_position: # Set stepper to global variable
|
||||
# id: stepper_motor
|
||||
# position: !lambda return id(stepper_motor_global);
|
||||
# - stepper.set_target: # Set stepper to global variable
|
||||
# id: stepper_motor
|
||||
# target: !lambda return id(stepper_motor_global);
|
||||
# # - sensor.template.publish:
|
||||
# # id: motor_hal
|
||||
# # state: !lambda return id(hall_pos_global);
|
||||
# - if: # If blind is Closed
|
||||
# condition:
|
||||
# - lambda: 'return id(stepper_motor_global) == 0;'
|
||||
# then: # Publish state etc.
|
||||
# - cover.template.publish:
|
||||
# id: ${blinds_name}
|
||||
# state: CLOSED
|
||||
# current_operation: IDLE
|
||||
# - if: # If blind is Open
|
||||
# condition:
|
||||
# - lambda: 'return id(stepper_motor_global) == id(endstop).state;'
|
||||
# then: # Publish state etc.
|
||||
# - cover.template.publish:
|
||||
# id: ${blinds_name}
|
||||
# state: OPEN
|
||||
# current_operation: IDLE
|
||||
# - if: # If blind is Neither
|
||||
# condition:
|
||||
# - lambda: 'return (id(stepper_motor_global) != 0) && (id(stepper_motor_global) != id(endstop).state);'
|
||||
# then: # # Publish state etc.
|
||||
# - cover.template.publish:
|
||||
# id: ${blinds_name}
|
||||
# position: !lambda 'return (float(float(id(stepper_motor).current_position) / float(id(endstop).state)));'
|
||||
# current_operation: IDLE
|
||||
priority: -100
|
||||
then:
|
||||
- number.set:
|
||||
id: endstop_open
|
||||
value: !lambda "return id(endstop_open_global);"
|
||||
- number.set:
|
||||
id: endstop_closed
|
||||
value: !lambda "return id(endstop_close_global);"
|
||||
- number.set:
|
||||
id: calibration_max
|
||||
value: !lambda "return id(calibration_max_global);"
|
||||
|
||||
globals:
|
||||
# - id: stepper_motor_global # Integer for storing the stepper position in case of reboot
|
||||
# type: int
|
||||
# restore_value: True
|
||||
# initial_value: '0'
|
||||
|
||||
# - id: openclosed # Boolean to store OPEN/CLOSED state
|
||||
# type: bool
|
||||
# restore_value: True
|
||||
# initial_value: '0'
|
||||
|
||||
- id: hall_pos_global
|
||||
type: int
|
||||
restore_value: True
|
||||
initial_value: '0'
|
||||
|
||||
- id: hall_pos_old
|
||||
- id: endstop_open_global
|
||||
type: int
|
||||
restore_value: False
|
||||
restore_value: True
|
||||
initial_value: '0'
|
||||
- id: endstop_close_global
|
||||
type: int
|
||||
restore_value: True
|
||||
initial_value: '0'
|
||||
- id: calibration_max_global
|
||||
type: int
|
||||
restore_value: True
|
||||
initial_value: '250'
|
||||
|
||||
number:
|
||||
- platform: template
|
||||
id: endstop_open
|
||||
min_value: -50
|
||||
max_value: 50
|
||||
step: 1
|
||||
name: endstop open
|
||||
optimistic: true
|
||||
on_value:
|
||||
then:
|
||||
- globals.set:
|
||||
id: endstop_open_global
|
||||
value: !lambda "return x;"
|
||||
- logger.log: "endstop open stored"
|
||||
- platform: template
|
||||
id: endstop_closed
|
||||
min_value: -50
|
||||
max_value: 50
|
||||
step: 1
|
||||
name: enstop closed
|
||||
optimistic: true
|
||||
on_value:
|
||||
then:
|
||||
- globals.set:
|
||||
id: endstop_close_global
|
||||
value: !lambda "return x;"
|
||||
- logger.log: "endstop open stored"
|
||||
- platform: template
|
||||
id: calibration_max
|
||||
min_value: 0
|
||||
max_value: 1000
|
||||
step: 1
|
||||
name: calibration max
|
||||
optimistic: true
|
||||
on_value:
|
||||
then:
|
||||
- globals.set:
|
||||
id: calibration_max_global
|
||||
value: !lambda "return x;"
|
||||
- logger.log: "calirbation max stored"
|
||||
|
||||
- platform: template
|
||||
name: Stepper Control
|
||||
min_value: -100
|
||||
max_value: 100
|
||||
step: 1
|
||||
set_action:
|
||||
then:
|
||||
- stepper.set_target:
|
||||
id: stepper_motor
|
||||
target: !lambda 'return x;'
|
||||
|
||||
sensor:
|
||||
# - platform: template
|
||||
# id: stepper_pos
|
||||
# name: stepper_pos
|
||||
- platform: template
|
||||
id: motor_hal
|
||||
name: motor_hal
|
||||
@@ -134,7 +156,7 @@ binary_sensor:
|
||||
on_release:
|
||||
- then:
|
||||
- lambda: |-
|
||||
static int motorvalue;
|
||||
static int motorvalue = id(hall_pos_global);
|
||||
if(id(halldirection).state){
|
||||
motorvalue += 1;
|
||||
}
|
||||
@@ -146,177 +168,148 @@ binary_sensor:
|
||||
ESP_LOGD("on sensor", "motor hall: %d", motorvalue);
|
||||
|
||||
|
||||
# number:
|
||||
# - platform: template
|
||||
# name: endstop Control
|
||||
# id: endstop
|
||||
# min_value: 0
|
||||
# max_value: 2000
|
||||
# step: 1
|
||||
# mode: slider
|
||||
# unit_of_measurement: steps
|
||||
# restore_value: True
|
||||
# optimistic: True
|
||||
|
||||
stepper:
|
||||
- platform: a4988
|
||||
id: stepper_motor
|
||||
step_pin: ${pin_mot_stp}
|
||||
dir_pin: ${pin_mot_dir}
|
||||
max_speed: 200
|
||||
|
||||
# Optional:
|
||||
sleep_pin: ${pin_mot_slp}
|
||||
acceleration: inf
|
||||
deceleration: inf
|
||||
|
||||
cover:
|
||||
|
||||
button:
|
||||
- platform: template
|
||||
name: Dining Room Blinds
|
||||
id: ${blinds_name}
|
||||
open_action:
|
||||
then:
|
||||
- logger.log: "Opening"
|
||||
- stepper.set_target:
|
||||
id: stepper_motor
|
||||
target: 750
|
||||
- while:
|
||||
condition:
|
||||
lambda: 'return id(stepper_motor).current_position < id(endstop).state;'
|
||||
then:
|
||||
- cover.template.publish:
|
||||
id: ${blinds_name}
|
||||
position: !lambda 'return (float(float(id(stepper_motor).current_position) / float(id(endstop).state)));'
|
||||
current_operation: OPENING
|
||||
- delay: 1000 ms
|
||||
- globals.set: # Set global to current position
|
||||
id: stepper_motor_global
|
||||
value: !lambda return id(stepper_motor).current_position;
|
||||
- sensor.template.publish:
|
||||
id: stepper_pos
|
||||
state: !lambda return id(stepper_motor).current_position;
|
||||
- globals.set: # Set toggle to OPEN (No need for 'optimistic mode')
|
||||
id: openclosed
|
||||
value: '1'
|
||||
- cover.template.publish:
|
||||
id: ${blinds_name}
|
||||
state: OPEN
|
||||
current_operation: IDLE
|
||||
id: Calibrate_blinds
|
||||
name: Calibrate blinds
|
||||
on_press:
|
||||
# reset all params
|
||||
- globals.set:
|
||||
id: hall_pos_global
|
||||
value: "0"
|
||||
#tell stepper that he is in the middle
|
||||
- stepper.report_position:
|
||||
id: stepper_motor
|
||||
position: !lambda "return uint32_t(id(calibration_max));"
|
||||
# It's best to call set_target directly after report_position, so that the stepper doesn't move
|
||||
- stepper.set_target:
|
||||
id: stepper_motor
|
||||
target: !lambda "return uint32_t(id(calibration_max));"
|
||||
#calibrate closed_endstop
|
||||
- stepper.set_target:
|
||||
id: stepper_motor
|
||||
target: 0
|
||||
- while:
|
||||
condition:
|
||||
lambda: 'return id(hall_pos_global) > -10;'
|
||||
then:
|
||||
- logger.log:
|
||||
format: "hal pos = %i; stepper pos = %i"
|
||||
args: [id(hall_pos_global), id(stepper_motor).current_position]
|
||||
|
||||
|
||||
|
||||
# cover:
|
||||
# - platform: template
|
||||
# name: Dining Room Blinds
|
||||
# id: ${blinds_name}
|
||||
# open_action:
|
||||
# then:
|
||||
# - logger.log: "Opening"
|
||||
# - stepper.set_target:
|
||||
# id: stepper_motor
|
||||
# target: 750
|
||||
# - while:
|
||||
# condition:
|
||||
# lambda: 'return id(stepper_motor).current_position < id(endstop).state;'
|
||||
# then:
|
||||
# - cover.template.publish:
|
||||
# id: ${blinds_name}
|
||||
# position: !lambda 'return (float(float(id(stepper_motor).current_position) / float(id(endstop).state)));'
|
||||
# current_operation: OPENING
|
||||
# - delay: 1000 ms
|
||||
# - globals.set: # Set global to current position
|
||||
# id: stepper_motor_global
|
||||
# value: !lambda return id(stepper_motor).current_position;
|
||||
# - sensor.template.publish:
|
||||
# id: stepper_pos
|
||||
# state: !lambda return id(stepper_motor).current_position;
|
||||
# - globals.set: # Set toggle to OPEN (No need for 'optimistic mode')
|
||||
# id: openclosed
|
||||
# value: '1'
|
||||
# - cover.template.publish:
|
||||
# id: ${blinds_name}
|
||||
# state: OPEN
|
||||
# current_operation: IDLE
|
||||
close_action:
|
||||
then:
|
||||
- logger.log: "Closing"
|
||||
- stepper.set_target: # Send stepper to 0
|
||||
id: stepper_motor
|
||||
target: '0'
|
||||
- while:
|
||||
condition:
|
||||
lambda: 'return id(stepper_motor).current_position > 0;'
|
||||
then:
|
||||
- cover.template.publish:
|
||||
id: ${blinds_name}
|
||||
position: !lambda 'return (float(float(id(stepper_motor).current_position) / float(id(endstop).state)));'
|
||||
current_operation: CLOSING
|
||||
- delay: 1000 ms
|
||||
- globals.set: # Set global to current position
|
||||
id: stepper_motor_global
|
||||
value: !lambda return id(stepper_motor).current_position;
|
||||
- sensor.template.publish:
|
||||
id: stepper_pos
|
||||
state: !lambda return id(stepper_motor).current_position;
|
||||
- globals.set: # Set toggle to CLOSED (No need for 'optimistic mode')
|
||||
id: openclosed
|
||||
value: '0'
|
||||
- cover.template.publish:
|
||||
id: ${blinds_name}
|
||||
state: CLOSED
|
||||
current_operation: IDLE
|
||||
position_action:
|
||||
then:
|
||||
- stepper.set_target:
|
||||
id: stepper_motor
|
||||
target: !lambda return int(id(endstop).state * pos);
|
||||
- while:
|
||||
condition:
|
||||
lambda: 'return id(stepper_motor).current_position != int(id(endstop).state * pos);'
|
||||
then:
|
||||
- cover.template.publish:
|
||||
id: ${blinds_name}
|
||||
position: !lambda 'return (float(float(id(stepper_motor).current_position) / float(id(endstop).state)));'
|
||||
- delay: 1000 ms
|
||||
- globals.set: # Set global to current position
|
||||
id: stepper_motor_global
|
||||
value: !lambda return id(stepper_motor).current_position;
|
||||
- sensor.template.publish:
|
||||
id: stepper_pos
|
||||
state: !lambda return id(stepper_motor).current_position;
|
||||
- cover.template.publish:
|
||||
id: ${blinds_name}
|
||||
position: !lambda 'return (float(float(id(stepper_motor).current_position) / float(id(endstop).state)));'
|
||||
current_operation: IDLE
|
||||
stop_action:
|
||||
then:
|
||||
- stepper.set_target:
|
||||
id: stepper_motor
|
||||
target: !lambda return id(stepper_motor).current_position;
|
||||
- globals.set: # Set global to current position
|
||||
id: stepper_motor_global
|
||||
value: !lambda return id(stepper_motor).current_position;
|
||||
- sensor.template.publish:
|
||||
id: stepper_pos
|
||||
state: !lambda return id(stepper_motor).current_position;
|
||||
- cover.template.publish:
|
||||
id: ${blinds_name}
|
||||
position: !lambda 'return (float(float(id(stepper_motor).current_position) / float(id(endstop).state)));'
|
||||
current_operation: IDLE
|
||||
has_position: true
|
||||
device_class: blind
|
||||
# - while:
|
||||
# condition:
|
||||
# lambda: 'return id(stepper_motor).current_position > 0;'
|
||||
# then:
|
||||
# - cover.template.publish:
|
||||
# id: ${blinds_name}
|
||||
# position: !lambda 'return (float(float(id(stepper_motor).current_position) / float(id(endstop).state)));'
|
||||
# current_operation: CLOSING
|
||||
# - delay: 1000 ms
|
||||
# - globals.set: # Set global to current position
|
||||
# id: stepper_motor_global
|
||||
# value: !lambda return id(stepper_motor).current_position;
|
||||
# - sensor.template.publish:
|
||||
# id: stepper_pos
|
||||
# state: !lambda return id(stepper_motor).current_position;
|
||||
# - globals.set: # Set toggle to CLOSED (No need for 'optimistic mode')
|
||||
# id: openclosed
|
||||
# value: '0'
|
||||
# - cover.template.publish:
|
||||
# id: ${blinds_name}
|
||||
# state: CLOSED
|
||||
# current_operation: IDLE
|
||||
# position_action:
|
||||
# then:
|
||||
# - stepper.set_target:
|
||||
# id: stepper_motor
|
||||
# target: !lambda return int(id(endstop).state * pos);
|
||||
# - while:
|
||||
# condition:
|
||||
# lambda: 'return id(stepper_motor).current_position != int(id(endstop).state * pos);'
|
||||
# then:
|
||||
# - cover.template.publish:
|
||||
# id: ${blinds_name}
|
||||
# position: !lambda 'return (float(float(id(stepper_motor).current_position) / float(id(endstop).state)));'
|
||||
# - delay: 1000 ms
|
||||
# - globals.set: # Set global to current position
|
||||
# id: stepper_motor_global
|
||||
# value: !lambda return id(stepper_motor).current_position;
|
||||
# - sensor.template.publish:
|
||||
# id: stepper_pos
|
||||
# state: !lambda return id(stepper_motor).current_position;
|
||||
# - cover.template.publish:
|
||||
# id: ${blinds_name}
|
||||
# position: !lambda 'return (float(float(id(stepper_motor).current_position) / float(id(endstop).state)));'
|
||||
# current_operation: IDLE
|
||||
# stop_action:
|
||||
# then:
|
||||
# - stepper.set_target:
|
||||
# id: stepper_motor
|
||||
# target: !lambda return id(stepper_motor).current_position;
|
||||
# - globals.set: # Set global to current position
|
||||
# id: stepper_motor_global
|
||||
# value: !lambda return id(stepper_motor).current_position;
|
||||
# - sensor.template.publish:
|
||||
# id: stepper_pos
|
||||
# state: !lambda return id(stepper_motor).current_position;
|
||||
# - cover.template.publish:
|
||||
# id: ${blinds_name}
|
||||
# position: !lambda 'return (float(float(id(stepper_motor).current_position) / float(id(endstop).state)));'
|
||||
# current_operation: IDLE
|
||||
# has_position: true
|
||||
# device_class: blind
|
||||
|
||||
|
||||
# switch:
|
||||
# - platform: template
|
||||
# name: Reset Blinds
|
||||
# id: calibrate
|
||||
# turn_on_action:
|
||||
# - lambda: |-
|
||||
# bool stall = false;
|
||||
# long steps = 40;
|
||||
# int oldpos = id(hall_pos_global);
|
||||
# while(!stall)
|
||||
# {
|
||||
# id(stepper_motor).set_target(steps);
|
||||
# if(oldpos != id(hall_pos_global)){
|
||||
# steps+=40;
|
||||
# }else{
|
||||
# stall = true;
|
||||
# ESP_LOGD("reset", "end_pos1 %d", steps);
|
||||
# }
|
||||
# oldpos = id(hall_pos_global);
|
||||
# }
|
||||
# id(calibrate).publish_state(false);
|
||||
# //rotate to stall
|
||||
# - stepper.set_target:
|
||||
# id: stepper_motor
|
||||
# target: !lambda 'return id(endstop).state * 2;'
|
||||
# - wait_until:
|
||||
# lambda: 'return id(stepper_motor).current_position == id(endstop).state*2;'
|
||||
# - delay: 1s
|
||||
# - stepper.set_target:
|
||||
# id: stepper_motor
|
||||
# target: '0'
|
||||
# - globals.set: # Set global to current position
|
||||
# id: stepper_motor_global
|
||||
# value: !lambda return id(stepper_motor).current_position;
|
||||
# - sensor.template.publish:
|
||||
# id: stepper_pos
|
||||
# state: !lambda return id(stepper_motor).current_position;
|
||||
# - globals.set: # Set toggle to CLOSED (No need for 'optimistic mode')
|
||||
# id: openclosed
|
||||
# value: '0'
|
||||
# - cover.template.publish:
|
||||
# id: ${blinds_name}
|
||||
# state: CLOSED
|
||||
# current_operation: IDLE
|
||||
# - globals.set:
|
||||
# id: hall_pos_global
|
||||
# value: '0'
|
||||
|
||||
|
||||
27
esphome/esp32-s3-box-3-voiceasist.yaml
Normal file
@@ -0,0 +1,27 @@
|
||||
substitutions:
|
||||
name: "esp32-s3-box-3-voiceasist"
|
||||
friendly_name: ESP32 S3 Box 3 5a7a54
|
||||
gateway: !secret ip_gateway
|
||||
subnet: !secret ip_subnet
|
||||
ip: !secret esp32-s3-box-3_ip
|
||||
|
||||
packages:
|
||||
esphome.voice-assistant: github://esphome/wake-word-voice-assistants/esp32-s3-box-3/esp32-s3-box-3.yaml@main
|
||||
esphome:
|
||||
name: ${name}
|
||||
name_add_mac_suffix: false
|
||||
friendly_name: ${friendly_name}
|
||||
api:
|
||||
encryption:
|
||||
key: GKxKZNt/5rJJNTEoAvh1PLVESiUQRGnf1zWSHWZAnUw=
|
||||
|
||||
|
||||
wifi:
|
||||
ssid: !secret wifi_ssid
|
||||
password: !secret wifi_password
|
||||
manual_ip:
|
||||
static_ip: ${ip}
|
||||
gateway: ${gateway}
|
||||
subnet: ${subnet}
|
||||
dns1: 192.169.2.15
|
||||
dns2: 1.1.1.1
|
||||
@@ -22,9 +22,9 @@ packages:
|
||||
connection: !include common/wifi.yaml
|
||||
device_base: !include common/common.yaml
|
||||
climate: !include templates/climate_nosens.yaml
|
||||
#status: !include templates/status.yaml
|
||||
status: !include templates/nostatus.yaml
|
||||
logger: !include templates/nologger.yaml
|
||||
button: !include templates/button.yaml
|
||||
#button: !include templates/button.yaml
|
||||
|
||||
light:
|
||||
- platform: neopixelbus
|
||||
@@ -39,12 +39,12 @@ light:
|
||||
effects:
|
||||
- random:
|
||||
name: "Random"
|
||||
transition_length: 4s
|
||||
update_interval: 5s
|
||||
transition_length: 2s
|
||||
update_interval: 7s
|
||||
- addressable_rainbow:
|
||||
name: Rainbow Effect
|
||||
speed: 20
|
||||
width: 17
|
||||
speed: 16
|
||||
width: 4
|
||||
|
||||
|
||||
#GPIO4 - status
|
||||
|
||||
@@ -31,6 +31,7 @@ packages:
|
||||
#status: !include templates/status.yaml
|
||||
logger: !include templates/logger.yaml
|
||||
sht3x: !include sensors/sht3x.yaml
|
||||
smsl: !include templates/remote_smsl.yaml
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -11,4 +11,5 @@ ethernet:
|
||||
gateway: ${gateway}
|
||||
subnet: ${subnet}
|
||||
dns1: ${dns1}
|
||||
dns2: ${dns2}
|
||||
dns2: ${dns2}
|
||||
#use_address: 192.168.2.235 #when changing fixed IP
|
||||
|
||||
6
esphome/interfaces/i2c_a_slow.yaml
Executable file
@@ -0,0 +1,6 @@
|
||||
i2c:
|
||||
- id: bus_a
|
||||
sda: ${pin_sda}
|
||||
scl: ${pin_scl}
|
||||
frequency: 50kHz
|
||||
scan: true
|
||||
17
esphome/interfaces/s3box_i2c.yaml
Normal file
@@ -0,0 +1,17 @@
|
||||
---
|
||||
i2c:
|
||||
- id: bus_a
|
||||
sda: ${pin_sda_a}
|
||||
scl: ${pin_scl_a}
|
||||
scan: false
|
||||
sda_pullup_enabled: true
|
||||
scl_pullup_enabled: true
|
||||
frequency: 100kHz
|
||||
|
||||
- sda: ${pin_sda_b}
|
||||
scl: ${pin_scl_b}
|
||||
scan: false
|
||||
sda_pullup_enabled: true
|
||||
scl_pullup_enabled: true
|
||||
frequency: 50kHz
|
||||
id: bus_b
|
||||
31
esphome/interfaces/s3box_ir.yaml
Normal file
@@ -0,0 +1,31 @@
|
||||
---
|
||||
switch:
|
||||
- platform: gpio
|
||||
id: enable_ir
|
||||
name: "IR Power"
|
||||
pin:
|
||||
number: GPIO44
|
||||
inverted: true
|
||||
restore_mode: ALWAYS_ON
|
||||
|
||||
remote_receiver:
|
||||
id: rcvr
|
||||
pin:
|
||||
number: 38
|
||||
inverted: true
|
||||
dump: all
|
||||
rmt_channel: 4
|
||||
memory_blocks: 4
|
||||
|
||||
# on_pronto:
|
||||
# then:
|
||||
# - lambda: 'id(ir_signals_vector).push_back(x.data);'
|
||||
# - component.update: s3_box_lcd
|
||||
|
||||
remote_transmitter:
|
||||
id: irtx
|
||||
pin:
|
||||
number: 39
|
||||
inverted: false
|
||||
carrier_duty_percent: 50%
|
||||
rmt_channel: 0
|
||||
@@ -18,6 +18,7 @@ packages:
|
||||
connection: !include common/wifi.yaml
|
||||
device_base: !include common/common.yaml
|
||||
logger: !include templates/logger.yaml
|
||||
|
||||
|
||||
#parameter list: https://tools.remeha.nl/wp-content/uploads/sites/3/2020/08/Lijst-van-parameters-voor-GTW08.pdf
|
||||
#modbus registers
|
||||
|
||||
@@ -20,12 +20,6 @@ packages:
|
||||
bt_proxy: !include common/bluetooth.yaml
|
||||
logger: !include templates/nologger.yaml
|
||||
|
||||
web_server:
|
||||
port: 80
|
||||
local: true
|
||||
js_include: "include/www.js"
|
||||
js_url: ""
|
||||
|
||||
binary_sensor:
|
||||
- platform: gpio
|
||||
pin:
|
||||
@@ -60,7 +54,7 @@ light:
|
||||
variant: ws2812X
|
||||
pin: ${pin_leds}
|
||||
num_leds: 1
|
||||
name: "${device_name}_RGB_Light"
|
||||
name: moon
|
||||
id: RGB_Light
|
||||
effects:
|
||||
- random:
|
||||
|
||||
@@ -1,59 +1,48 @@
|
||||
|
||||
uart:
|
||||
- !include ../interfaces/uart_ld2420.yaml
|
||||
|
||||
external_components:
|
||||
- source: github://descipher/esphome@component.ld2420
|
||||
#github://pr#4847
|
||||
components: [ ld2420 ]
|
||||
refresh: 1days
|
||||
|
||||
# Example configuration entry
|
||||
ld2420:
|
||||
uart_id: uart_ld
|
||||
presence_time_window: 120s
|
||||
detection_gate_min: 1
|
||||
detection_gate_max: 12
|
||||
g0_move_threshold: 60000
|
||||
g0_still_threshold: 40000
|
||||
g1_move_threshold: 30000
|
||||
g1_still_threshold: 20000
|
||||
g2_move_threshold: 400
|
||||
g2_still_threshold: 200
|
||||
g3_move_threshold: 250
|
||||
g3_still_threshold: 200
|
||||
g4_move_threshold: 250
|
||||
g4_still_threshold: 200
|
||||
g5_move_threshold: 250
|
||||
g5_still_threshold: 200
|
||||
g6_move_threshold: 250
|
||||
g6_still_threshold: 200
|
||||
g7_move_threshold: 250
|
||||
g7_still_threshold: 150
|
||||
g8_move_threshold: 250
|
||||
g8_still_threshold: 150
|
||||
g9_move_threshold: 250
|
||||
g9_still_threshold: 100
|
||||
g10_move_threshold: 250
|
||||
g10_still_threshold: 100
|
||||
g11_move_threshold: 250
|
||||
g11_still_threshold: 100
|
||||
g12_move_threshold: 250
|
||||
g12_still_threshold: 100
|
||||
g13_move_threshold: 200
|
||||
g13_still_threshold: 100
|
||||
g14_move_threshold: 200
|
||||
g14_still_threshold: 100
|
||||
g15_move_threshold: 200
|
||||
g15_still_threshold: 100
|
||||
|
||||
text_sensor:
|
||||
- platform: ld2420
|
||||
fw_version:
|
||||
name: LD2420 Firmware
|
||||
|
||||
sensor:
|
||||
- platform: ld2420
|
||||
moving_distance:
|
||||
name : Moving Distance
|
||||
|
||||
|
||||
binary_sensor:
|
||||
- platform: ld2420
|
||||
has_target:
|
||||
name: Presence
|
||||
name: Presence
|
||||
|
||||
select:
|
||||
- platform: ld2420
|
||||
operating_mode:
|
||||
name: Operating Mode
|
||||
|
||||
number:
|
||||
- platform: ld2420
|
||||
presence_timeout:
|
||||
name: Detection Presence Timeout
|
||||
min_gate_distance:
|
||||
name: Detection Gate Minimum
|
||||
max_gate_distance:
|
||||
name: Detection Gate Maximum
|
||||
# See "Number" section below for detail
|
||||
gate_select:
|
||||
name: Select Gate to Set
|
||||
still_threshold:
|
||||
name: Set Still Threshold Value
|
||||
move_threshold:
|
||||
name: Set Move Threshold Value
|
||||
|
||||
button:
|
||||
- platform: ld2420
|
||||
apply_config:
|
||||
name: Apply Config
|
||||
factory_reset:
|
||||
name: Factory Reset
|
||||
restart_module:
|
||||
name: Restart Module
|
||||
revert_config:
|
||||
name: Undo Edits
|
||||
11
esphome/sensors/s3box_aht20.yaml
Normal file
@@ -0,0 +1,11 @@
|
||||
---
|
||||
sensor:
|
||||
- platform: aht10
|
||||
i2c_id: bus_b
|
||||
variant: AHT20
|
||||
temperature:
|
||||
name: "Temperature"
|
||||
id: temp_local
|
||||
humidity:
|
||||
name: "Humidity"
|
||||
update_interval: 60s
|
||||
29
esphome/sensors/s3box_battery.yaml
Normal file
@@ -0,0 +1,29 @@
|
||||
---
|
||||
sensor:
|
||||
- platform: adc
|
||||
pin: ${pin_vbatt}
|
||||
name: "Battery voltage"
|
||||
id: battery_voltage
|
||||
unit_of_measurement: "V"
|
||||
accuracy_decimals: 1
|
||||
device_class: "voltage"
|
||||
entity_category: "diagnostic"
|
||||
disabled_by_default: true
|
||||
update_interval: 30s
|
||||
attenuation: auto
|
||||
filters:
|
||||
- multiply: 4.11
|
||||
|
||||
- platform: copy
|
||||
id: battery_percent
|
||||
source_id: battery_voltage
|
||||
name: "Battery level"
|
||||
unit_of_measurement: "%"
|
||||
accuracy_decimals: 0
|
||||
device_class: "battery"
|
||||
entity_category: "diagnostic"
|
||||
filters:
|
||||
- lambda: return (x - 2.7) / (4.2 - 2.7) * 100;
|
||||
- clamp:
|
||||
min_value: 0
|
||||
max_value: 100
|
||||
@@ -11,7 +11,7 @@ sensor:
|
||||
accuracy_decimals: 1
|
||||
temperature_offset: 1.5 °C
|
||||
address: 0x61
|
||||
update_interval: 1s
|
||||
update_interval: 5s
|
||||
|
||||
button:
|
||||
- platform: template
|
||||
|
||||
20
esphome/templates/bt_proxy.yaml
Normal file
@@ -0,0 +1,20 @@
|
||||
---
|
||||
esp32_ble_tracker:
|
||||
id: ble_tracker
|
||||
scan_parameters:
|
||||
continuous: false
|
||||
|
||||
bluetooth_proxy:
|
||||
active: true
|
||||
|
||||
|
||||
esphome:
|
||||
on_boot: #this is to avoid slow startup time because of BT and WiFi "interactions?" , check https://github.com/esphome/issues/issues/2941#issuecomment-1331851692
|
||||
priority: 250
|
||||
then:
|
||||
- wait_until:
|
||||
condition:
|
||||
wifi.connected:
|
||||
- lambda: >
|
||||
id(ble_tracker).set_scan_continuous(true);
|
||||
id(ble_tracker).start_scan();
|
||||
@@ -6,4 +6,6 @@ logger:
|
||||
sensor: ERROR
|
||||
cover: ERROR
|
||||
switch: ERROR
|
||||
wifi: ERROR
|
||||
wifi: ERROR
|
||||
pulse_counter: ERROR
|
||||
remote_receiver: DEBUG
|
||||
@@ -1,3 +1,9 @@
|
||||
# disable logging
|
||||
logger:
|
||||
baud_rate: 0
|
||||
baud_rate: 0
|
||||
logs:
|
||||
display: ERROR
|
||||
sensor: ERROR
|
||||
cover: ERROR
|
||||
switch: ERROR
|
||||
wifi: ERROR
|
||||
12
esphome/templates/nostatus.yaml
Executable file
@@ -0,0 +1,12 @@
|
||||
|
||||
output:
|
||||
- platform: gpio
|
||||
pin: ${pin_status}
|
||||
id: status_led
|
||||
|
||||
|
||||
light:
|
||||
- platform: binary
|
||||
name: "status_led"
|
||||
output: status_led
|
||||
restore_mode: Restore_and_off
|
||||
62
esphome/templates/remote_smsl.yaml
Normal file
@@ -0,0 +1,62 @@
|
||||
---
|
||||
button:
|
||||
- platform: template
|
||||
name: SMSL Source
|
||||
id: smsl_source
|
||||
icon: mdi:audio-input-stereo-minijack
|
||||
on_press:
|
||||
- remote_transmitter.transmit_nec:
|
||||
address: 0x3412
|
||||
command: 0xF807
|
||||
command_repeats: 1
|
||||
# - remote_transmitter.transmit_pronto:
|
||||
# data: "0000 006D 0022 0000 0159 00AE 0015 0016 0015 0043 0014 0016 0015 0016 0015 0043 0014 0016 0015 0016 0015 0017 0015 0016 0015 0016 0015 0043 0014 0016 0015 0043 0014 0043 0014 0017 0015 0017 0015 0043 0014 0043 0014 0043 0014 0016 0016 0015 0016 0015 0016 0015 0016 0016 0016 0015 0016 0015 0016 0015 0016 0042 0015 0041 0016 0041 0016 0042 0015 0042 0015 0181"
|
||||
- platform: template
|
||||
name: SMSL power
|
||||
id: smsl_power
|
||||
icon: mdi:power
|
||||
on_press:
|
||||
- remote_transmitter.transmit_nec:
|
||||
address: 0x3412
|
||||
command: 0xFE01
|
||||
command_repeats: 1
|
||||
- platform: template
|
||||
name: SMSL up
|
||||
id: smsl_up
|
||||
icon: mdi:volume-plus
|
||||
on_press:
|
||||
- remote_transmitter.transmit_nec:
|
||||
address: 0x3412
|
||||
command: 0xFD02
|
||||
command_repeats: 1
|
||||
- platform: template
|
||||
name: SMSL down
|
||||
id: smsl_down
|
||||
icon: mdi:volume-minus
|
||||
on_press:
|
||||
- remote_transmitter.transmit_nec:
|
||||
address: 0x3412
|
||||
command: 0xF906
|
||||
command_repeats: 1
|
||||
- platform: template
|
||||
name: SMSL mute
|
||||
id: smsl_mute
|
||||
icon: mdi:volume-mute
|
||||
on_press:
|
||||
- remote_transmitter.transmit_nec:
|
||||
address: 0x3412
|
||||
command: 0xF609
|
||||
command_repeats: 1
|
||||
|
||||
|
||||
# smsl amp
|
||||
# NEC: address=0x3412
|
||||
# source 0xF807 - wierdness :/
|
||||
# up 0xFD02
|
||||
# down 0xF906
|
||||
# power 0xFE01
|
||||
# mute 0xF609
|
||||
# function 0xF708
|
||||
# ok 0xFB04
|
||||
# left 0xFC03
|
||||
# right 0xFA05
|
||||
@@ -28,7 +28,8 @@ packages:
|
||||
# connection: !include common/wifi.yaml
|
||||
device_base: !include common/common.yaml
|
||||
ethernet: !include interfaces/eth_LAN8720A.yaml
|
||||
# bt_proxy: !include templates/ble_proxy.yaml
|
||||
bt_proxy: !include common/bluetooth.yaml
|
||||
|
||||
ota: !include common/ota.yaml
|
||||
logger: !include templates/nologger.yaml
|
||||
uptimesensor: !include sensors/uptime.yaml
|
||||
BIN
image/0537c85c3b2dc86d9e72120fa175bd44/512x512
Normal file
|
After Width: | Height: | Size: 32 KiB |
BIN
image/0537c85c3b2dc86d9e72120fa175bd44/original
Normal file
|
After Width: | Height: | Size: 850 KiB |
BIN
image/16df76932123343d963de6a61a89549a/512x512
Normal file
|
After Width: | Height: | Size: 59 KiB |
BIN
image/16df76932123343d963de6a61a89549a/original
Normal file
|
After Width: | Height: | Size: 1.0 MiB |
BIN
image/ca015d676094fab70bfa1c0747650537/512x512
Normal file
|
After Width: | Height: | Size: 26 KiB |
BIN
image/ca015d676094fab70bfa1c0747650537/original
Normal file
|
After Width: | Height: | Size: 69 KiB |
@@ -1,16 +1,44 @@
|
||||
---
|
||||
# influxdb:
|
||||
# host: a0d7b954-influxdb
|
||||
# port: 8086
|
||||
# database: homeassistant
|
||||
# username: homeassistant
|
||||
# password: !secret influxdb
|
||||
# max_retries: 3
|
||||
# default_measurement: state
|
||||
# include:
|
||||
# domains:
|
||||
# # - sensor
|
||||
# # - binary_sensor
|
||||
# # - sun
|
||||
# entity_globs:
|
||||
# - sensor.modbus_*
|
||||
influxdb:
|
||||
# host: a0d7b954-influxdb
|
||||
# port: 8086
|
||||
# database: homeassistant
|
||||
# username: homeassistant
|
||||
# password: !secret influxdb
|
||||
# max_retries: 3
|
||||
# default_measurement: state
|
||||
# include:
|
||||
# domains:
|
||||
# # - sensor
|
||||
# # - binary_sensor
|
||||
# # - sun
|
||||
# entity_globs:
|
||||
# - sensor.modbus_*
|
||||
|
||||
api_version: 2 # Ensure the version matches your InfluxDB instance.
|
||||
ssl: false # Can omit this if using https.
|
||||
host: 192.168.2.195
|
||||
port: 8086
|
||||
token: 7lfykKI2wfK90MBdeuu9zFFMBPaF5fl_GbRT2DJuPcbU1cRbFwso_cDtG_fxLeyWF8IZeLr-2enl1_Z79a4L6Q==
|
||||
organization: thuis # The InfluxDB organisation that the bucket will belong to.
|
||||
bucket: hass # The name of the bucket where the data will be saved
|
||||
include:
|
||||
entities:
|
||||
- weather.forecast_home
|
||||
- sensor.modbus_aanvoer_apparaat
|
||||
- sensor.modbus_aanvoer_wp
|
||||
- sensor.modbus_buitentemperatuur
|
||||
- sensor.modbus_compressor_starts
|
||||
- sensor.modbus_retour_apparaat
|
||||
- sensor.modbus_retour_wp
|
||||
- sensor.modbus_seizoensmodus_actief
|
||||
- sensor.modbus_teller_starts_backup1
|
||||
- sensor.modbus_teller_branderstarts
|
||||
- sensor.modbus_werkelijke_waterdruk
|
||||
- sensor.warmtepomp_electric_consumption_kwh_2
|
||||
- sensor.laadpaal_meter_energy
|
||||
- sensor.wasmachine_opsomming_afgeleverd
|
||||
- sensor.bodem_sensor_vochtigheid_aarde
|
||||
- sensor.bodem_sensor_temperatuur
|
||||
- sensor.zoutlamp_opsomming_afgeleverd
|
||||
- sensor.server_electric_consumption_kwh
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
---
|
||||
plant:
|
||||
plant_zolder_lepelplant:
|
||||
sensors:
|
||||
moisture: sensor.plant_sensor2_soil_moisture
|
||||
#battery: sensor.my_sensor_battery
|
||||
temperature: sensor.plant_sensor2_temperature_bme280
|
||||
conductivity: sensor.plant_sensor2_soil_conductivity
|
||||
brightness: sensor.plant_sensor2_bh1750_illuminance
|
||||
min_moisture: 20
|
||||
# plant:
|
||||
# plant_zolder_lepelplant:
|
||||
# sensors:
|
||||
# moisture: sensor.plant_sensor2_soil_moisture
|
||||
# #battery: sensor.my_sensor_battery
|
||||
# temperature: sensor.plant_sensor2_temperature_bme280
|
||||
# conductivity: sensor.plant_sensor2_soil_conductivity
|
||||
# brightness: sensor.plant_sensor2_bh1750_illuminance
|
||||
# min_moisture: 20
|
||||
|
||||
11
integrations/telegram.yaml
Normal file
@@ -0,0 +1,11 @@
|
||||
---
|
||||
telegram_bot:
|
||||
- platform: polling
|
||||
api_key: "7224749574:AAHBrPhHkibEU9KJsnQ0bAHO-cB_sXRun1I"
|
||||
allowed_chat_ids:
|
||||
- 17370240
|
||||
|
||||
notify:
|
||||
- platform: telegram
|
||||
name: "sarah"
|
||||
chat_id: 17370240
|
||||
4
integrations/zha.yaml
Normal file
@@ -0,0 +1,4 @@
|
||||
---
|
||||
zha:
|
||||
enable_quirks: true
|
||||
custom_quirks_path: /config/zha_quirks/
|
||||
2642
scenes.yaml
376
scripts.yaml
@@ -24,21 +24,15 @@ tuin_water_op_timer:
|
||||
device_id: e1fd7471fc9fcde9a19ec7175a486dd9
|
||||
entity_id: b5d0e849686502315a2ae0904be553c9
|
||||
domain: switch
|
||||
- type: is_open
|
||||
condition: device
|
||||
device_id: dc10219c8d3c20e7e126548014043a5f
|
||||
entity_id: 9db1315f061dba32ad7099d81e1872aa
|
||||
domain: binary_sensor
|
||||
sequence:
|
||||
- service: notify.mobile_app_iphone_van_willem
|
||||
data:
|
||||
- data:
|
||||
message: Water uit
|
||||
- stop: ''
|
||||
action: notify.mobile_app_iphone_van_willem
|
||||
default:
|
||||
- service: notify.mobile_app_iphone_van_willem
|
||||
data:
|
||||
- data:
|
||||
message: Controleer beregening
|
||||
title: Let op!
|
||||
action: notify.mobile_app_iphone_van_willem
|
||||
mode: single
|
||||
icon: mdi:water-opacity
|
||||
'1663069218288':
|
||||
@@ -77,8 +71,8 @@ haloween:
|
||||
- service: light.turn_off
|
||||
target:
|
||||
entity_id:
|
||||
- light.rgb_lamp_tuin_rechts_voor_3_light_9
|
||||
- light.rgb_lamp_tuin_rechts_voor_2_light_8
|
||||
- light.rgb_lamp_tuin_rechts_voor_3
|
||||
- light.rgb_lamp_tuin_rechts_voor_2
|
||||
data: {}
|
||||
- delay:
|
||||
hours: 0
|
||||
@@ -99,8 +93,8 @@ haloween:
|
||||
brightness_pct: 100
|
||||
target:
|
||||
entity_id:
|
||||
- light.rgb_lamp_tuin_rechts_voor_3_light_9
|
||||
- light.rgb_lamp_tuin_rechts_voor_2_light_8
|
||||
- light.rgb_lamp_tuin_rechts_voor_3
|
||||
- light.rgb_lamp_tuin_rechts_voor_2
|
||||
- service: light.turn_on
|
||||
data:
|
||||
rgb_color:
|
||||
@@ -111,7 +105,7 @@ haloween:
|
||||
brightness_pct: 100
|
||||
target:
|
||||
entity_id:
|
||||
- light.rgb_lamp_tuin_rechts_light_7
|
||||
- light.rgb_lamp_tuin_rechts
|
||||
- delay:
|
||||
hours: 0
|
||||
minutes: 0
|
||||
@@ -122,11 +116,11 @@ haloween:
|
||||
led_tuin_fireworks:
|
||||
alias: ' Tuin - ledstrip Fireworks'
|
||||
sequence:
|
||||
- service: select.select_option
|
||||
- data:
|
||||
option: Fireworks
|
||||
action: select.select_option
|
||||
target:
|
||||
entity_id: select.ledstrip_huisje_preset
|
||||
data:
|
||||
option: Fireworks
|
||||
mode: single
|
||||
icon: mdi:firework
|
||||
led_tuin_twinkle:
|
||||
@@ -139,34 +133,6 @@ led_tuin_twinkle:
|
||||
option: Twinkel
|
||||
mode: single
|
||||
icon: mdi:string-lights
|
||||
kia_preheat:
|
||||
alias: Kia - preheat
|
||||
sequence:
|
||||
- service: kia_uvo.start_climate
|
||||
data:
|
||||
device_id: b50e634242a175e32f229b1bc05f0b6b
|
||||
temperature: 20
|
||||
heating: '1'
|
||||
mode: single
|
||||
icon: mdi:heat-wave
|
||||
kia_stop_preheat:
|
||||
alias: Kia - stop preheat
|
||||
sequence:
|
||||
- service: kia_uvo.stop_climate
|
||||
data:
|
||||
device_id: b50e634242a175e32f229b1bc05f0b6b
|
||||
mode: single
|
||||
icon: mdi:close-octagon
|
||||
kia_preheat_defrost:
|
||||
alias: Kia - preheat + defrost
|
||||
sequence:
|
||||
- service: kia_uvo.start_climate
|
||||
data:
|
||||
device_id: b50e634242a175e32f229b1bc05f0b6b
|
||||
temperature: 21
|
||||
heating: '1'
|
||||
mode: single
|
||||
icon: mdi:heat-wave
|
||||
keuken_delay_aanrecht_uit:
|
||||
alias: Keuken - delay aanrecht uit
|
||||
sequence:
|
||||
@@ -392,7 +358,7 @@ radio_keuken_qmusic:
|
||||
sequence:
|
||||
- service: media_player.play_media
|
||||
target:
|
||||
entity_id: media_player.woonkamer
|
||||
entity_id: media_player.bose_woonkamer
|
||||
data:
|
||||
media_content_id: media-source://radio_browser/003d3c6f-e183-11e9-a8ba-52543be04c81
|
||||
media_content_type: audio/mpeg
|
||||
@@ -446,7 +412,7 @@ radio_keuken_slamfm:
|
||||
sequence:
|
||||
- service: media_player.play_media
|
||||
target:
|
||||
entity_id: media_player.woonkamer
|
||||
entity_id: media_player.bose_woonkamer
|
||||
data:
|
||||
media_content_id: media-source://radio_browser/962e7e22-0601-11e8-ae97-52543be04c81
|
||||
media_content_type: audio/mpeg
|
||||
@@ -475,18 +441,6 @@ sonos_keuken_mute:
|
||||
entity_id: media_player.keuken
|
||||
mode: single
|
||||
icon: mdi:volume-mute
|
||||
nieuw_script:
|
||||
alias: House in den pauze
|
||||
sequence:
|
||||
- service: media_player.play_media
|
||||
data_template:
|
||||
entity_id: media_player.spotify_master_bedroom
|
||||
media_content_id: spotify:user:spotify:playlist:IDECb4VFgyb
|
||||
media_content_type: PLAYLIST
|
||||
target:
|
||||
device_id: 24d1977346e9fc44d02e017911d3e285
|
||||
mode: single
|
||||
icon: mdi:multimedia
|
||||
reset_meter:
|
||||
alias: reset_meter
|
||||
sequence:
|
||||
@@ -555,17 +509,6 @@ woonkamer_koelen_turbo:
|
||||
entity_id: climate.airco_ir_woonkamer_airco
|
||||
mode: single
|
||||
icon: mdi:hvac
|
||||
kia_koelen:
|
||||
alias: Kia - koelen
|
||||
sequence:
|
||||
- service: kia_uvo.start_climate
|
||||
data:
|
||||
device_id: b50e634242a175e32f229b1bc05f0b6b
|
||||
temperature: 22
|
||||
heating: '0'
|
||||
climate: true
|
||||
mode: single
|
||||
icon: mdi:car-seat-cooler
|
||||
tuin_alles_aan:
|
||||
alias: Tuin - alles aan
|
||||
sequence:
|
||||
@@ -576,8 +519,8 @@ tuin_alles_aan:
|
||||
entity_id: switch.lamp_speelhuisje_2
|
||||
- service: light.turn_on
|
||||
data:
|
||||
brightness_pct: 80
|
||||
color_name: orange
|
||||
kelvin: 2000
|
||||
brightness_pct: 79
|
||||
target:
|
||||
entity_id: light.tuin_lamp_blokbomen
|
||||
- service: light.turn_on
|
||||
@@ -591,8 +534,8 @@ tuin_alles_aan:
|
||||
milliseconds: 0
|
||||
- service: light.turn_on
|
||||
data:
|
||||
brightness_pct: 80
|
||||
color_name: orange
|
||||
kelvin: 2000
|
||||
brightness_pct: 79
|
||||
target:
|
||||
entity_id: light.tuin_lamp_voortuin_struiken
|
||||
- delay:
|
||||
@@ -602,8 +545,8 @@ tuin_alles_aan:
|
||||
milliseconds: 0
|
||||
- service: light.turn_on
|
||||
data:
|
||||
brightness_pct: 80
|
||||
color_name: orange
|
||||
kelvin: 2000
|
||||
brightness_pct: 79
|
||||
target:
|
||||
entity_id: light.tuin_lamp_voortuin_pad_rechts
|
||||
- delay:
|
||||
@@ -613,8 +556,8 @@ tuin_alles_aan:
|
||||
milliseconds: 0
|
||||
- service: light.turn_on
|
||||
data:
|
||||
brightness_pct: 80
|
||||
color_name: orange
|
||||
kelvin: 2000
|
||||
brightness_pct: 79
|
||||
target:
|
||||
entity_id: light.tuin_lamp_achtertuin_rest
|
||||
- device_id: 15d642c4506394e005141bc068830751
|
||||
@@ -636,12 +579,6 @@ tuin_alles_aan:
|
||||
data: {}
|
||||
target:
|
||||
entity_id: light.lamp_speelhuisje
|
||||
- service: light.turn_on
|
||||
data:
|
||||
brightness_pct: 80
|
||||
color_name: orange
|
||||
target:
|
||||
entity_id: light.lamp_spot_afdak
|
||||
- service: light.turn_on
|
||||
data:
|
||||
brightness_pct: 80
|
||||
@@ -700,10 +637,6 @@ tuin_alles_uit:
|
||||
target:
|
||||
entity_id: light.lamp_speelhuisje
|
||||
data: {}
|
||||
- service: light.turn_off
|
||||
target:
|
||||
entity_id: light.lamp_spot_afdak
|
||||
data: {}
|
||||
- service: light.turn_off
|
||||
data: {}
|
||||
target:
|
||||
@@ -859,14 +792,14 @@ tuin_nacht:
|
||||
sequence:
|
||||
- service: light.turn_on
|
||||
data:
|
||||
color_temp: 500
|
||||
brightness_pct: 3
|
||||
kelvin: 2000
|
||||
brightness_pct: 15
|
||||
target:
|
||||
entity_id: light.tuin_lamp_blokbomen
|
||||
- service: light.turn_on
|
||||
data: {}
|
||||
target:
|
||||
entity_id: light.lamp_tuin_en_garage_l1
|
||||
entity_id: light.lamp_tuin_garage
|
||||
- delay:
|
||||
hours: 0
|
||||
minutes: 0
|
||||
@@ -874,7 +807,7 @@ tuin_nacht:
|
||||
milliseconds: 0
|
||||
- service: light.turn_on
|
||||
data:
|
||||
color_temp: 500
|
||||
kelvin: 2000
|
||||
brightness_pct: 15
|
||||
target:
|
||||
entity_id: light.tuin_lamp_voortuin_struiken
|
||||
@@ -885,7 +818,7 @@ tuin_nacht:
|
||||
milliseconds: 0
|
||||
- service: light.turn_on
|
||||
data:
|
||||
color_temp: 500
|
||||
kelvin: 2000
|
||||
brightness_pct: 15
|
||||
target:
|
||||
entity_id: light.tuin_lamp_voortuin_pad_rechts
|
||||
@@ -941,3 +874,258 @@ bed_time_clean:
|
||||
data: {}
|
||||
description: ''
|
||||
icon: mdi:vacuum-outline
|
||||
zolder_koelen:
|
||||
alias: Zolder - koelen
|
||||
sequence:
|
||||
- data:
|
||||
hvac_mode: cool
|
||||
temperature: 23
|
||||
target:
|
||||
entity_id: climate.airco_4
|
||||
action: climate.set_temperature
|
||||
- delay:
|
||||
hours: 0
|
||||
minutes: 0
|
||||
seconds: 5
|
||||
milliseconds: 0
|
||||
- data:
|
||||
fan_mode: auto
|
||||
target:
|
||||
entity_id: climate.airco_4
|
||||
action: climate.set_fan_mode
|
||||
mode: single
|
||||
icon: mdi:hvac
|
||||
description: ''
|
||||
zolder_verwarmen:
|
||||
alias: zolder - verwarmen
|
||||
sequence:
|
||||
- action: climate.set_temperature
|
||||
data:
|
||||
hvac_mode: heat
|
||||
temperature: 20
|
||||
target:
|
||||
entity_id: climate.airco_4
|
||||
- delay:
|
||||
hours: 0
|
||||
minutes: 0
|
||||
seconds: 5
|
||||
milliseconds: 0
|
||||
- action: climate.set_fan_mode
|
||||
data:
|
||||
fan_mode: auto
|
||||
target:
|
||||
entity_id: climate.airco_4
|
||||
mode: single
|
||||
icon: mdi:heat-wave
|
||||
description: ''
|
||||
stofzuiger_start_all:
|
||||
alias: stofzuiger - start (all)
|
||||
sequence:
|
||||
- action: vacuum.start
|
||||
metadata: {}
|
||||
data: {}
|
||||
target:
|
||||
device_id: b99930765798a4796ca3ebb87e84299e
|
||||
description: ''
|
||||
icon: mdi:robot-vacuum
|
||||
grover_clean_eetkamer_woonkamer:
|
||||
mode: queued
|
||||
alias: Roborock Room Cleaning
|
||||
max: 30
|
||||
sequence:
|
||||
- choose:
|
||||
- conditions:
|
||||
- condition: or
|
||||
conditions:
|
||||
- condition: state
|
||||
entity_id: vacuum.grover
|
||||
state: cleaning
|
||||
- condition: state
|
||||
entity_id: vacuum.grover
|
||||
state: error
|
||||
sequence:
|
||||
- wait_for_trigger:
|
||||
- platform: state
|
||||
entity_id: vacuum.grover
|
||||
to: returning
|
||||
- platform: state
|
||||
entity_id: vacuum.grover
|
||||
to: Docked
|
||||
continue_on_timeout: false
|
||||
timeout: 01:30:00
|
||||
- target:
|
||||
device_id: vacuum.grover
|
||||
data_template:
|
||||
command: app_segment_clean
|
||||
params: '{% set room_id = states("input_number.roborock_room_enum_eetkamer")
|
||||
| int %} {{ room_id }}
|
||||
|
||||
'
|
||||
action: vacuum.send_command
|
||||
- wait_for_trigger:
|
||||
- platform: state
|
||||
entity_id: vacuum.grover
|
||||
to: returning
|
||||
- platform: state
|
||||
entity_id: vacuum.grover
|
||||
to: docked
|
||||
continue_on_timeout: false
|
||||
timeout: 01:30:00
|
||||
- conditions:
|
||||
- condition: or
|
||||
conditions:
|
||||
- condition: state
|
||||
entity_id: vacuum.grover
|
||||
state: returning
|
||||
- condition: state
|
||||
entity_id: vacuum.grover
|
||||
state: docked
|
||||
- condition: state
|
||||
entity_id: vacuum.grover
|
||||
state: idle
|
||||
sequence:
|
||||
- target:
|
||||
device_id: vacuum.grover
|
||||
data_template:
|
||||
command: app_segment_clean
|
||||
params: '{% set room_id = states("input_number.roborock_room_enum_woonkamer")
|
||||
| int %} {{ room_id }}
|
||||
|
||||
'
|
||||
action: vacuum.send_command
|
||||
- wait_for_trigger:
|
||||
- platform: state
|
||||
entity_id: vacuum.grover
|
||||
to: returning
|
||||
- platform: state
|
||||
entity_id: vacuum.grover
|
||||
to: docked
|
||||
continue_on_timeout: false
|
||||
timeout: 01:30:00
|
||||
default: []
|
||||
grover_clean_keuken:
|
||||
alias: Grover - clean Keuken
|
||||
sequence:
|
||||
- if:
|
||||
- condition: state
|
||||
entity_id: input_select.stofzuiger_verdiepingen
|
||||
state: Boven
|
||||
then:
|
||||
- action: script.woonkamer_roborock_selecteer_beneden
|
||||
metadata: {}
|
||||
data: {}
|
||||
- delay:
|
||||
hours: 0
|
||||
minutes: 0
|
||||
seconds: 15
|
||||
milliseconds: 0
|
||||
- action: vacuum.send_command
|
||||
metadata: {}
|
||||
data:
|
||||
command: app_segment_clean
|
||||
params: '{% set room_id = states("input_number.roborock_room_enum_keuken") |
|
||||
int %} {{ room_id }}
|
||||
|
||||
'
|
||||
target:
|
||||
device_id: b99930765798a4796ca3ebb87e84299e
|
||||
description: ''
|
||||
icon: mdi:robot-vacuum
|
||||
fields: {}
|
||||
oven_preheat:
|
||||
alias: Oven preheat
|
||||
sequence:
|
||||
- action: home_connect_alt.start_program
|
||||
data:
|
||||
options:
|
||||
- key: Cooking.Oven.Option.FastPreHeat
|
||||
value: true
|
||||
- key: Cooking.Oven.Option.SetpointTemperature
|
||||
value: 180
|
||||
- key: BSH.Common.Option.Duration
|
||||
value: 1200
|
||||
program_key: Cooking.Oven.Program.HeatingMode.HotAir
|
||||
device_id: 7f3553c6228085ca77f09c2cb79114bc
|
||||
description: ''
|
||||
icon: mdi:stove
|
||||
keuken_vaatwasser_start:
|
||||
alias: Keuken - vaatwasser start
|
||||
sequence:
|
||||
- action: home_connect_alt.start_program
|
||||
data:
|
||||
validate: true
|
||||
device_id: 36c964af9128f66e4d805461232853d2
|
||||
program_key: Dishcare.Dishwasher.Program.Auto2
|
||||
options:
|
||||
- key: Dishcare.Dishwasher.Option.VarioSpeedPlus
|
||||
value: true
|
||||
description: ''
|
||||
icon: mdi:dishwasher
|
||||
grover_clean_woonkamer:
|
||||
alias: Grover - clean Woonkamer
|
||||
sequence:
|
||||
- if:
|
||||
- condition: state
|
||||
entity_id: input_select.stofzuiger_verdiepingen
|
||||
state: Boven
|
||||
then:
|
||||
- action: script.woonkamer_roborock_selecteer_beneden
|
||||
metadata: {}
|
||||
data: {}
|
||||
- delay:
|
||||
hours: 0
|
||||
minutes: 0
|
||||
seconds: 15
|
||||
milliseconds: 0
|
||||
- action: vacuum.send_command
|
||||
metadata: {}
|
||||
data:
|
||||
command: app_segment_clean
|
||||
params: '{% set room_id = states("input_number.roborock_room_enum_woonkamer")
|
||||
| int %} {{ room_id }}
|
||||
|
||||
'
|
||||
target:
|
||||
device_id: b99930765798a4796ca3ebb87e84299e
|
||||
description: ''
|
||||
icon: mdi:robot-vacuum
|
||||
fields: {}
|
||||
grover_clean_eetkamer:
|
||||
alias: Grover - clean Eetkamer
|
||||
sequence:
|
||||
- if:
|
||||
- condition: state
|
||||
entity_id: input_select.stofzuiger_verdiepingen
|
||||
state: Boven
|
||||
then:
|
||||
- action: script.woonkamer_roborock_selecteer_beneden
|
||||
metadata: {}
|
||||
data: {}
|
||||
- delay:
|
||||
hours: 0
|
||||
minutes: 0
|
||||
seconds: 15
|
||||
milliseconds: 0
|
||||
- action: vacuum.send_command
|
||||
metadata: {}
|
||||
data:
|
||||
command: app_segment_clean
|
||||
params: '{% set room_id = states("input_number.roborock_room_enum_eetkamer")
|
||||
| int %} {{ room_id }}
|
||||
|
||||
'
|
||||
target:
|
||||
device_id: b99930765798a4796ca3ebb87e84299e
|
||||
description: ''
|
||||
icon: mdi:robot-vacuum
|
||||
fields: {}
|
||||
generate_watchman_report:
|
||||
alias: generate_watchman_report
|
||||
sequence:
|
||||
- action: watchman.report
|
||||
data:
|
||||
create_file: false
|
||||
send_notification: true
|
||||
parse_config: true
|
||||
description: ''
|
||||
icon: mdi:alert
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
#
|
||||
ios-light-mode-blue-red-alternative:
|
||||
# Global
|
||||
background-image: "center / cover no-repeat fixed url('/hacsfiles/themes/ios-themes/homekit-bg-blue-red.jpg')"
|
||||
background-image: "center / cover no-repeat fixed url('/local/ios-themes/homekit-bg-blue-red.jpg')"
|
||||
lovelace-background: var(--background-image)
|
||||
primary-color: "#ff9409" # from Apple systemOrange light mode
|
||||
light-primary-color: "#2c2c2e" # (icons on left menu) (light: systemGray5 from iOS dark mode, dark: XXX)
|
||||
@@ -94,7 +94,7 @@ ios-light-mode-blue-red-alternative:
|
||||
#
|
||||
ios-light-mode-blue-red:
|
||||
# Global
|
||||
background-image: "center / cover no-repeat fixed url('/hacsfiles/themes/ios-themes/homekit-bg-blue-red.jpg')"
|
||||
background-image: "center / cover no-repeat fixed url('https://cdn.jsdelivr.net/gh/basnijholt/lovelace-ios-themes@a37376d918fcfe4785be99910dc9a7200ac37da9/themes/homekit-bg-blue-red.jpg')"
|
||||
lovelace-background: var(--background-image)
|
||||
primary-color: "#ff9409" # from Apple systemOrange light mode
|
||||
light-primary-color: "#2c2c2e" # (icons on left menu) (light: systemGray5 from iOS dark mode, dark: XXX)
|
||||
@@ -183,7 +183,7 @@ ios-light-mode-blue-red:
|
||||
#
|
||||
ios-dark-mode-blue-red-alternative:
|
||||
# Global
|
||||
background-image: "center / cover no-repeat fixed url('/hacsfiles/themes/ios-themes/homekit-bg-blue-red.jpg')"
|
||||
background-image: "center / cover no-repeat fixed url('/local/ios-themes/homekit-bg-blue-red.jpg')"
|
||||
lovelace-background: var(--background-image)
|
||||
primary-color: "#ff9f09" # from Apple systemOrange dark mode
|
||||
light-primary-color: "#B6B6C1" # (icons on left menu) (light: systemGray5 from iOS dark mode, dark: XXX)
|
||||
@@ -272,7 +272,7 @@ ios-dark-mode-blue-red-alternative:
|
||||
#
|
||||
ios-dark-mode-blue-red:
|
||||
# Global
|
||||
background-image: "center / cover no-repeat fixed url('/hacsfiles/themes/ios-themes/homekit-bg-blue-red.jpg')"
|
||||
background-image: "center / cover no-repeat fixed url('https://cdn.jsdelivr.net/gh/basnijholt/lovelace-ios-themes@a37376d918fcfe4785be99910dc9a7200ac37da9/themes/homekit-bg-blue-red.jpg')"
|
||||
lovelace-background: var(--background-image)
|
||||
primary-color: "#ff9f09" # from Apple systemOrange dark mode
|
||||
light-primary-color: "#B6B6C1" # (icons on left menu) (light: systemGray5 from iOS dark mode, dark: XXX)
|
||||
@@ -361,7 +361,7 @@ ios-dark-mode-blue-red:
|
||||
#
|
||||
ios-light-mode-dark-blue-alternative:
|
||||
# Global
|
||||
background-image: "center / cover no-repeat fixed url('/hacsfiles/themes/ios-themes/homekit-bg-dark-blue.jpg')"
|
||||
background-image: "center / cover no-repeat fixed url('/local/ios-themes/homekit-bg-dark-blue.jpg')"
|
||||
lovelace-background: var(--background-image)
|
||||
primary-color: "#ff9409" # from Apple systemOrange light mode
|
||||
light-primary-color: "#2c2c2e" # (icons on left menu) (light: systemGray5 from iOS dark mode, dark: XXX)
|
||||
@@ -450,7 +450,7 @@ ios-light-mode-dark-blue-alternative:
|
||||
#
|
||||
ios-light-mode-dark-blue:
|
||||
# Global
|
||||
background-image: "center / cover no-repeat fixed url('/hacsfiles/themes/ios-themes/homekit-bg-dark-blue.jpg')"
|
||||
background-image: "center / cover no-repeat fixed url('https://cdn.jsdelivr.net/gh/basnijholt/lovelace-ios-themes@a37376d918fcfe4785be99910dc9a7200ac37da9/themes/homekit-bg-dark-blue.jpg')"
|
||||
lovelace-background: var(--background-image)
|
||||
primary-color: "#ff9409" # from Apple systemOrange light mode
|
||||
light-primary-color: "#2c2c2e" # (icons on left menu) (light: systemGray5 from iOS dark mode, dark: XXX)
|
||||
@@ -539,7 +539,7 @@ ios-light-mode-dark-blue:
|
||||
#
|
||||
ios-dark-mode-dark-blue-alternative:
|
||||
# Global
|
||||
background-image: "center / cover no-repeat fixed url('/hacsfiles/themes/ios-themes/homekit-bg-dark-blue.jpg')"
|
||||
background-image: "center / cover no-repeat fixed url('/local/ios-themes/homekit-bg-dark-blue.jpg')"
|
||||
lovelace-background: var(--background-image)
|
||||
primary-color: "#ff9f09" # from Apple systemOrange dark mode
|
||||
light-primary-color: "#B6B6C1" # (icons on left menu) (light: systemGray5 from iOS dark mode, dark: XXX)
|
||||
@@ -628,7 +628,7 @@ ios-dark-mode-dark-blue-alternative:
|
||||
#
|
||||
ios-dark-mode-dark-blue:
|
||||
# Global
|
||||
background-image: "center / cover no-repeat fixed url('/hacsfiles/themes/ios-themes/homekit-bg-dark-blue.jpg')"
|
||||
background-image: "center / cover no-repeat fixed url('https://cdn.jsdelivr.net/gh/basnijholt/lovelace-ios-themes@a37376d918fcfe4785be99910dc9a7200ac37da9/themes/homekit-bg-dark-blue.jpg')"
|
||||
lovelace-background: var(--background-image)
|
||||
primary-color: "#ff9f09" # from Apple systemOrange dark mode
|
||||
light-primary-color: "#B6B6C1" # (icons on left menu) (light: systemGray5 from iOS dark mode, dark: XXX)
|
||||
@@ -717,7 +717,7 @@ ios-dark-mode-dark-blue:
|
||||
#
|
||||
ios-light-mode-dark-green-alternative:
|
||||
# Global
|
||||
background-image: "center / cover no-repeat fixed url('/hacsfiles/themes/ios-themes/homekit-bg-dark-green.jpg')"
|
||||
background-image: "center / cover no-repeat fixed url('/local/ios-themes/homekit-bg-dark-green.jpg')"
|
||||
lovelace-background: var(--background-image)
|
||||
primary-color: "#ff9409" # from Apple systemOrange light mode
|
||||
light-primary-color: "#2c2c2e" # (icons on left menu) (light: systemGray5 from iOS dark mode, dark: XXX)
|
||||
@@ -806,7 +806,7 @@ ios-light-mode-dark-green-alternative:
|
||||
#
|
||||
ios-light-mode-dark-green:
|
||||
# Global
|
||||
background-image: "center / cover no-repeat fixed url('/hacsfiles/themes/ios-themes/homekit-bg-dark-green.jpg')"
|
||||
background-image: "center / cover no-repeat fixed url('https://cdn.jsdelivr.net/gh/basnijholt/lovelace-ios-themes@a37376d918fcfe4785be99910dc9a7200ac37da9/themes/homekit-bg-dark-green.jpg')"
|
||||
lovelace-background: var(--background-image)
|
||||
primary-color: "#ff9409" # from Apple systemOrange light mode
|
||||
light-primary-color: "#2c2c2e" # (icons on left menu) (light: systemGray5 from iOS dark mode, dark: XXX)
|
||||
@@ -895,7 +895,7 @@ ios-light-mode-dark-green:
|
||||
#
|
||||
ios-dark-mode-dark-green-alternative:
|
||||
# Global
|
||||
background-image: "center / cover no-repeat fixed url('/hacsfiles/themes/ios-themes/homekit-bg-dark-green.jpg')"
|
||||
background-image: "center / cover no-repeat fixed url('/local/ios-themes/homekit-bg-dark-green.jpg')"
|
||||
lovelace-background: var(--background-image)
|
||||
primary-color: "#ff9f09" # from Apple systemOrange dark mode
|
||||
light-primary-color: "#B6B6C1" # (icons on left menu) (light: systemGray5 from iOS dark mode, dark: XXX)
|
||||
@@ -984,7 +984,7 @@ ios-dark-mode-dark-green-alternative:
|
||||
#
|
||||
ios-dark-mode-dark-green:
|
||||
# Global
|
||||
background-image: "center / cover no-repeat fixed url('/hacsfiles/themes/ios-themes/homekit-bg-dark-green.jpg')"
|
||||
background-image: "center / cover no-repeat fixed url('https://cdn.jsdelivr.net/gh/basnijholt/lovelace-ios-themes@a37376d918fcfe4785be99910dc9a7200ac37da9/themes/homekit-bg-dark-green.jpg')"
|
||||
lovelace-background: var(--background-image)
|
||||
primary-color: "#ff9f09" # from Apple systemOrange dark mode
|
||||
light-primary-color: "#B6B6C1" # (icons on left menu) (light: systemGray5 from iOS dark mode, dark: XXX)
|
||||
@@ -1073,7 +1073,7 @@ ios-dark-mode-dark-green:
|
||||
#
|
||||
ios-light-mode-light-blue-alternative:
|
||||
# Global
|
||||
background-image: "center / cover no-repeat fixed url('/hacsfiles/themes/ios-themes/homekit-bg-light-blue.jpg')"
|
||||
background-image: "center / cover no-repeat fixed url('/local/ios-themes/homekit-bg-light-blue.jpg')"
|
||||
lovelace-background: var(--background-image)
|
||||
primary-color: "#ff9409" # from Apple systemOrange light mode
|
||||
light-primary-color: "#2c2c2e" # (icons on left menu) (light: systemGray5 from iOS dark mode, dark: XXX)
|
||||
@@ -1162,7 +1162,7 @@ ios-light-mode-light-blue-alternative:
|
||||
#
|
||||
ios-light-mode-light-blue:
|
||||
# Global
|
||||
background-image: "center / cover no-repeat fixed url('/hacsfiles/themes/ios-themes/homekit-bg-light-blue.jpg')"
|
||||
background-image: "center / cover no-repeat fixed url('https://cdn.jsdelivr.net/gh/basnijholt/lovelace-ios-themes@a37376d918fcfe4785be99910dc9a7200ac37da9/themes/homekit-bg-light-blue.jpg')"
|
||||
lovelace-background: var(--background-image)
|
||||
primary-color: "#ff9409" # from Apple systemOrange light mode
|
||||
light-primary-color: "#2c2c2e" # (icons on left menu) (light: systemGray5 from iOS dark mode, dark: XXX)
|
||||
@@ -1251,7 +1251,7 @@ ios-light-mode-light-blue:
|
||||
#
|
||||
ios-dark-mode-light-blue-alternative:
|
||||
# Global
|
||||
background-image: "center / cover no-repeat fixed url('/hacsfiles/themes/ios-themes/homekit-bg-light-blue.jpg')"
|
||||
background-image: "center / cover no-repeat fixed url('/local/ios-themes/homekit-bg-light-blue.jpg')"
|
||||
lovelace-background: var(--background-image)
|
||||
primary-color: "#ff9f09" # from Apple systemOrange dark mode
|
||||
light-primary-color: "#B6B6C1" # (icons on left menu) (light: systemGray5 from iOS dark mode, dark: XXX)
|
||||
@@ -1340,7 +1340,7 @@ ios-dark-mode-light-blue-alternative:
|
||||
#
|
||||
ios-dark-mode-light-blue:
|
||||
# Global
|
||||
background-image: "center / cover no-repeat fixed url('/hacsfiles/themes/ios-themes/homekit-bg-light-blue.jpg')"
|
||||
background-image: "center / cover no-repeat fixed url('https://cdn.jsdelivr.net/gh/basnijholt/lovelace-ios-themes@a37376d918fcfe4785be99910dc9a7200ac37da9/themes/homekit-bg-light-blue.jpg')"
|
||||
lovelace-background: var(--background-image)
|
||||
primary-color: "#ff9f09" # from Apple systemOrange dark mode
|
||||
light-primary-color: "#B6B6C1" # (icons on left menu) (light: systemGray5 from iOS dark mode, dark: XXX)
|
||||
@@ -1429,7 +1429,7 @@ ios-dark-mode-light-blue:
|
||||
#
|
||||
ios-light-mode-light-green-alternative:
|
||||
# Global
|
||||
background-image: "center / cover no-repeat fixed url('/hacsfiles/themes/ios-themes/homekit-bg-light-green.jpg')"
|
||||
background-image: "center / cover no-repeat fixed url('/local/ios-themes/homekit-bg-light-green.jpg')"
|
||||
lovelace-background: var(--background-image)
|
||||
primary-color: "#ff9409" # from Apple systemOrange light mode
|
||||
light-primary-color: "#2c2c2e" # (icons on left menu) (light: systemGray5 from iOS dark mode, dark: XXX)
|
||||
@@ -1518,7 +1518,7 @@ ios-light-mode-light-green-alternative:
|
||||
#
|
||||
ios-light-mode-light-green:
|
||||
# Global
|
||||
background-image: "center / cover no-repeat fixed url('/hacsfiles/themes/ios-themes/homekit-bg-light-green.jpg')"
|
||||
background-image: "center / cover no-repeat fixed url('https://cdn.jsdelivr.net/gh/basnijholt/lovelace-ios-themes@a37376d918fcfe4785be99910dc9a7200ac37da9/themes/homekit-bg-light-green.jpg')"
|
||||
lovelace-background: var(--background-image)
|
||||
primary-color: "#ff9409" # from Apple systemOrange light mode
|
||||
light-primary-color: "#2c2c2e" # (icons on left menu) (light: systemGray5 from iOS dark mode, dark: XXX)
|
||||
@@ -1607,7 +1607,7 @@ ios-light-mode-light-green:
|
||||
#
|
||||
ios-dark-mode-light-green-alternative:
|
||||
# Global
|
||||
background-image: "center / cover no-repeat fixed url('/hacsfiles/themes/ios-themes/homekit-bg-light-green.jpg')"
|
||||
background-image: "center / cover no-repeat fixed url('/local/ios-themes/homekit-bg-light-green.jpg')"
|
||||
lovelace-background: var(--background-image)
|
||||
primary-color: "#ff9f09" # from Apple systemOrange dark mode
|
||||
light-primary-color: "#B6B6C1" # (icons on left menu) (light: systemGray5 from iOS dark mode, dark: XXX)
|
||||
@@ -1696,7 +1696,7 @@ ios-dark-mode-light-green-alternative:
|
||||
#
|
||||
ios-dark-mode-light-green:
|
||||
# Global
|
||||
background-image: "center / cover no-repeat fixed url('/hacsfiles/themes/ios-themes/homekit-bg-light-green.jpg')"
|
||||
background-image: "center / cover no-repeat fixed url('https://cdn.jsdelivr.net/gh/basnijholt/lovelace-ios-themes@a37376d918fcfe4785be99910dc9a7200ac37da9/themes/homekit-bg-light-green.jpg')"
|
||||
lovelace-background: var(--background-image)
|
||||
primary-color: "#ff9f09" # from Apple systemOrange dark mode
|
||||
light-primary-color: "#B6B6C1" # (icons on left menu) (light: systemGray5 from iOS dark mode, dark: XXX)
|
||||
@@ -1785,7 +1785,7 @@ ios-dark-mode-light-green:
|
||||
#
|
||||
ios-light-mode-orange-alternative:
|
||||
# Global
|
||||
background-image: "center / cover no-repeat fixed url('/hacsfiles/themes/ios-themes/homekit-bg-orange.jpg')"
|
||||
background-image: "center / cover no-repeat fixed url('/local/ios-themes/homekit-bg-orange.jpg')"
|
||||
lovelace-background: var(--background-image)
|
||||
primary-color: "#ff9409" # from Apple systemOrange light mode
|
||||
light-primary-color: "#2c2c2e" # (icons on left menu) (light: systemGray5 from iOS dark mode, dark: XXX)
|
||||
@@ -1874,7 +1874,7 @@ ios-light-mode-orange-alternative:
|
||||
#
|
||||
ios-light-mode-orange:
|
||||
# Global
|
||||
background-image: "center / cover no-repeat fixed url('/hacsfiles/themes/ios-themes/homekit-bg-orange.jpg')"
|
||||
background-image: "center / cover no-repeat fixed url('https://cdn.jsdelivr.net/gh/basnijholt/lovelace-ios-themes@a37376d918fcfe4785be99910dc9a7200ac37da9/themes/homekit-bg-orange.jpg')"
|
||||
lovelace-background: var(--background-image)
|
||||
primary-color: "#ff9409" # from Apple systemOrange light mode
|
||||
light-primary-color: "#2c2c2e" # (icons on left menu) (light: systemGray5 from iOS dark mode, dark: XXX)
|
||||
@@ -1963,7 +1963,7 @@ ios-light-mode-orange:
|
||||
#
|
||||
ios-dark-mode-orange-alternative:
|
||||
# Global
|
||||
background-image: "center / cover no-repeat fixed url('/hacsfiles/themes/ios-themes/homekit-bg-orange.jpg')"
|
||||
background-image: "center / cover no-repeat fixed url('/local/ios-themes/homekit-bg-orange.jpg')"
|
||||
lovelace-background: var(--background-image)
|
||||
primary-color: "#ff9f09" # from Apple systemOrange dark mode
|
||||
light-primary-color: "#B6B6C1" # (icons on left menu) (light: systemGray5 from iOS dark mode, dark: XXX)
|
||||
@@ -2052,7 +2052,7 @@ ios-dark-mode-orange-alternative:
|
||||
#
|
||||
ios-dark-mode-orange:
|
||||
# Global
|
||||
background-image: "center / cover no-repeat fixed url('/hacsfiles/themes/ios-themes/homekit-bg-orange.jpg')"
|
||||
background-image: "center / cover no-repeat fixed url('https://cdn.jsdelivr.net/gh/basnijholt/lovelace-ios-themes@a37376d918fcfe4785be99910dc9a7200ac37da9/themes/homekit-bg-orange.jpg')"
|
||||
lovelace-background: var(--background-image)
|
||||
primary-color: "#ff9f09" # from Apple systemOrange dark mode
|
||||
light-primary-color: "#B6B6C1" # (icons on left menu) (light: systemGray5 from iOS dark mode, dark: XXX)
|
||||
@@ -2141,7 +2141,7 @@ ios-dark-mode-orange:
|
||||
#
|
||||
ios-light-mode-red-alternative:
|
||||
# Global
|
||||
background-image: "center / cover no-repeat fixed url('/hacsfiles/themes/ios-themes/homekit-bg-red.jpg')"
|
||||
background-image: "center / cover no-repeat fixed url('/local/ios-themes/homekit-bg-red.jpg')"
|
||||
lovelace-background: var(--background-image)
|
||||
primary-color: "#ff9409" # from Apple systemOrange light mode
|
||||
light-primary-color: "#2c2c2e" # (icons on left menu) (light: systemGray5 from iOS dark mode, dark: XXX)
|
||||
@@ -2230,7 +2230,7 @@ ios-light-mode-red-alternative:
|
||||
#
|
||||
ios-light-mode-red:
|
||||
# Global
|
||||
background-image: "center / cover no-repeat fixed url('/hacsfiles/themes/ios-themes/homekit-bg-red.jpg')"
|
||||
background-image: "center / cover no-repeat fixed url('https://cdn.jsdelivr.net/gh/basnijholt/lovelace-ios-themes@a37376d918fcfe4785be99910dc9a7200ac37da9/themes/homekit-bg-red.jpg')"
|
||||
lovelace-background: var(--background-image)
|
||||
primary-color: "#ff9409" # from Apple systemOrange light mode
|
||||
light-primary-color: "#2c2c2e" # (icons on left menu) (light: systemGray5 from iOS dark mode, dark: XXX)
|
||||
@@ -2319,7 +2319,7 @@ ios-light-mode-red:
|
||||
#
|
||||
ios-dark-mode-red-alternative:
|
||||
# Global
|
||||
background-image: "center / cover no-repeat fixed url('/hacsfiles/themes/ios-themes/homekit-bg-red.jpg')"
|
||||
background-image: "center / cover no-repeat fixed url('/local/ios-themes/homekit-bg-red.jpg')"
|
||||
lovelace-background: var(--background-image)
|
||||
primary-color: "#ff9f09" # from Apple systemOrange dark mode
|
||||
light-primary-color: "#B6B6C1" # (icons on left menu) (light: systemGray5 from iOS dark mode, dark: XXX)
|
||||
@@ -2408,7 +2408,7 @@ ios-dark-mode-red-alternative:
|
||||
#
|
||||
ios-dark-mode-red:
|
||||
# Global
|
||||
background-image: "center / cover no-repeat fixed url('/hacsfiles/themes/ios-themes/homekit-bg-red.jpg')"
|
||||
background-image: "center / cover no-repeat fixed url('https://cdn.jsdelivr.net/gh/basnijholt/lovelace-ios-themes@a37376d918fcfe4785be99910dc9a7200ac37da9/themes/homekit-bg-red.jpg')"
|
||||
lovelace-background: var(--background-image)
|
||||
primary-color: "#ff9f09" # from Apple systemOrange dark mode
|
||||
light-primary-color: "#B6B6C1" # (icons on left menu) (light: systemGray5 from iOS dark mode, dark: XXX)
|
||||
|
||||
62
www/community/Ultra-Vehicle-Card/localize.js
Normal file
@@ -0,0 +1,62 @@
|
||||
import { dedupingMixin } from "https://unpkg.com/@polymer/polymer@3.4.1/lib/utils/mixin.js?module";
|
||||
|
||||
const LocalizeMixin = dedupingMixin(
|
||||
(superClass) =>
|
||||
class extends superClass {
|
||||
static get properties() {
|
||||
return {
|
||||
hass: Object,
|
||||
localize: Function,
|
||||
};
|
||||
}
|
||||
|
||||
connectedCallback() {
|
||||
super.connectedCallback();
|
||||
this.loadResources(this.hass.language);
|
||||
}
|
||||
|
||||
async loadResources(language) {
|
||||
let resources;
|
||||
const languagesToTry = [language, language.split('-')[0], 'en'];
|
||||
|
||||
for (const lang of languagesToTry) {
|
||||
try {
|
||||
resources = await this.loadTranslationFile(lang);
|
||||
if (resources) {
|
||||
break;
|
||||
}
|
||||
} catch (e) {
|
||||
console.error(`Failed to load translations for ${lang}:`, e);
|
||||
}
|
||||
}
|
||||
|
||||
if (!resources) {
|
||||
console.warn('No translations could be loaded. Using default strings.');
|
||||
resources = {};
|
||||
}
|
||||
|
||||
this.localize = (key, ...args) => {
|
||||
const translatedValue = key.split('.').reduce((o, i) => o && o[i], resources);
|
||||
if (translatedValue === undefined) return key;
|
||||
return translatedValue;
|
||||
};
|
||||
}
|
||||
|
||||
loadTranslationFile(lang) {
|
||||
const url = `./translations/${lang}.js`;
|
||||
return import(url)
|
||||
.then(module => {
|
||||
if (typeof module.default !== 'object') {
|
||||
throw new Error('Translation file does not export a default object');
|
||||
}
|
||||
return module.default;
|
||||
})
|
||||
.catch(error => {
|
||||
console.error(`Failed to load translations for ${lang}:`, error);
|
||||
return null;
|
||||
});
|
||||
}
|
||||
}
|
||||
);
|
||||
|
||||
export const localize = LocalizeMixin;
|
||||
167
www/community/Ultra-Vehicle-Card/sensors.js
Normal file
@@ -0,0 +1,167 @@
|
||||
export function formatEntityValue(entity, useFormattedEntities, hass, localize) {
|
||||
if (!entity || !hass) return null;
|
||||
|
||||
// If formatting is not enabled, return the state as-is
|
||||
if (!useFormattedEntities) {
|
||||
return entity.state;
|
||||
}
|
||||
|
||||
// Use Home Assistant's built-in formatting functions
|
||||
if (typeof hass.formatEntityState === 'function') {
|
||||
return hass.formatEntityState(entity);
|
||||
}
|
||||
|
||||
// Fallback to basic formatting if Home Assistant functions are not available
|
||||
return entity.state;
|
||||
}
|
||||
|
||||
function formatBinaryState(state, attributes, hass, localize) {
|
||||
const isOn = state.toLowerCase() === 'on';
|
||||
if (attributes.device_class) {
|
||||
const key = `state.${attributes.device_class}.${isOn ? 'on' : 'off'}`;
|
||||
return hass.localize(`component.binary_sensor.${key}`) || localize(key) || (isOn ? 'On' : 'Off');
|
||||
}
|
||||
return isOn ? 'On' : 'Off';
|
||||
}
|
||||
|
||||
function formatDeviceTrackerState(state, attributes) {
|
||||
const locationName = attributes.location_name || state;
|
||||
if (locationName.toLowerCase() === 'home') {
|
||||
return 'Home';
|
||||
} else if (locationName.toLowerCase() === 'not_home') {
|
||||
return 'Away';
|
||||
} else {
|
||||
return locationName.split('_').map(word => word.charAt(0).toUpperCase() + word.slice(1)).join(' ');
|
||||
}
|
||||
}
|
||||
|
||||
function formatSensorState(state, attributes) {
|
||||
if (isISODateString(state)) {
|
||||
return formatChargingEndTime(state);
|
||||
}
|
||||
if (!isNaN(parseFloat(state))) {
|
||||
// Remove trailing zeros and decimal point if necessary
|
||||
return formatNumberWithCommas(parseFloat(state).toFixed(0));
|
||||
}
|
||||
return formatGenericState(state);
|
||||
}
|
||||
|
||||
function formatGenericState(state) {
|
||||
// Convert snake_case to Title Case
|
||||
return state.split('_').map(word => word.charAt(0).toUpperCase() + word.slice(1)).join(' ');
|
||||
}
|
||||
|
||||
export async function getIconActiveState(entityId, hass, config) {
|
||||
const state = hass.states[entityId];
|
||||
if (!state) return false;
|
||||
const stateStr = state.state.toLowerCase();
|
||||
|
||||
|
||||
// Check custom active and inactive states from config
|
||||
const activeState = config.activeState;
|
||||
const inactiveState = config.inactiveState;
|
||||
|
||||
if (activeState) {
|
||||
if (activeState === 'default') {
|
||||
return isActiveState(stateStr);
|
||||
} else if (activeState.startsWith('template:')) {
|
||||
const templateResp = await (new Promise((resolve, reject) => {
|
||||
hass.connection.subscribeMessage(
|
||||
(msg) => resolve(msg),
|
||||
{
|
||||
type: "render_template",
|
||||
template: activeState.slice(9),
|
||||
}
|
||||
)
|
||||
}));
|
||||
return templateResp.result === true ? true : false;
|
||||
} else if (activeState.startsWith('attribute:')) {
|
||||
const [, attributeName, attributeValue] = activeState.split(':');
|
||||
return state.attributes[attributeName] === attributeValue;
|
||||
} else if (activeState.startsWith('option:')) {
|
||||
return stateStr === activeState.split(':')[1].toLowerCase();
|
||||
} else {
|
||||
return stateStr === activeState.toLowerCase();
|
||||
}
|
||||
}
|
||||
|
||||
if (inactiveState) {
|
||||
if (inactiveState === 'default') {
|
||||
return !isActiveState(stateStr);
|
||||
} else if (inactiveState.startsWith('template:')) {
|
||||
const renderResult = await hass.callApi("post", "template", {template: inactiveState.slice(9)});
|
||||
return renderResult === "True" ? true : false;
|
||||
} else if (inactiveState.startsWith('attribute:')) {
|
||||
const [, attributeName, attributeValue] = inactiveState.split(':');
|
||||
return state.attributes[attributeName] !== attributeValue;
|
||||
} else if (inactiveState.startsWith('option:')) {
|
||||
return stateStr !== inactiveState.split(':')[1].toLowerCase();
|
||||
} else {
|
||||
return stateStr !== inactiveState.toLowerCase();
|
||||
}
|
||||
}
|
||||
|
||||
// If no custom states are set, use the default behavior
|
||||
return isActiveState(stateStr);
|
||||
}
|
||||
|
||||
function isActiveState(state) {
|
||||
const activeStates = [
|
||||
"on", "active", "open", "connected", "running", "true", "1", "home", "above_horizon",
|
||||
"charging", "full", "yes", "online", "present",
|
||||
"armed", "occupied", "unlocked", "playing", "motion", "engaged", "awake", "detected"
|
||||
];
|
||||
return activeStates.includes(state);
|
||||
}
|
||||
|
||||
export function formatBinarySensorState(state, attributes) {
|
||||
return state;
|
||||
}
|
||||
|
||||
export function isEngineOn(engineOnEntity) {
|
||||
if (!engineOnEntity) return false;
|
||||
|
||||
const state = engineOnEntity.state.toLowerCase();
|
||||
const attributes = engineOnEntity.attributes;
|
||||
|
||||
// Check attributes for 'engine_on' status
|
||||
if (attributes) {
|
||||
for (const [key, value] of Object.entries(attributes)) {
|
||||
if (typeof value === 'string' && value.toLowerCase() === 'on') {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Handle boolean entities
|
||||
if (['on', 'off', 'true', 'false'].includes(state)) {
|
||||
return state === 'on' || state === 'true';
|
||||
}
|
||||
|
||||
// Handle numeric entities
|
||||
if (!isNaN(state)) {
|
||||
return parseFloat(state) > 0;
|
||||
}
|
||||
|
||||
// Handle string-based entities
|
||||
const engineOnStates = ['on', 'running', 'active', 'true'];
|
||||
return engineOnStates.includes(state);
|
||||
}
|
||||
|
||||
function formatNumberWithCommas(number) {
|
||||
return number.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ",");
|
||||
}
|
||||
|
||||
function isISODateString(value) {
|
||||
return /^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(\.\d{3})?Z$/.test(value);
|
||||
}
|
||||
|
||||
function formatChargingEndTime(isoDateString) {
|
||||
const date = new Date(isoDateString);
|
||||
const hours = date.getHours();
|
||||
const minutes = date.getMinutes();
|
||||
const ampm = hours >= 12 ? "PM" : "AM";
|
||||
const formattedHours = hours % 12 || 12;
|
||||
const formattedMinutes = minutes < 10 ? `0${minutes}` : minutes;
|
||||
return `${formattedHours}:${formattedMinutes} ${ampm}`;
|
||||
}
|
||||
213
www/community/Ultra-Vehicle-Card/state-dropdown.js
Normal file
@@ -0,0 +1,213 @@
|
||||
import { html, LitElement } from "https://unpkg.com/lit-element@2.4.0/lit-element.js?module";
|
||||
|
||||
class StateDropdown extends LitElement {
|
||||
static get properties() {
|
||||
return {
|
||||
hass: { type: Object },
|
||||
config: { type: Object },
|
||||
entityId: { type: String },
|
||||
stateType: { type: String }, // 'inactive' or 'active'
|
||||
value: { type: String },
|
||||
templateValue: { type: String },
|
||||
attributeValue: { type: String },
|
||||
disableDropdown: { type: Boolean },
|
||||
localize: { type: Function },
|
||||
};
|
||||
}
|
||||
|
||||
constructor() {
|
||||
super();
|
||||
this.value = 'default';
|
||||
this.templateValue = '';
|
||||
this.attributeValue = '';
|
||||
this.disableDropdown = false;
|
||||
this.localize = (key) => key; // Default to returning the key if no localize function is provided
|
||||
}
|
||||
|
||||
updated(changedProperties) {
|
||||
super.updated(changedProperties);
|
||||
if (changedProperties.has('config') || changedProperties.has('stateType')) {
|
||||
this._updateValueFromConfig();
|
||||
}
|
||||
}
|
||||
|
||||
_updateValueFromConfig() {
|
||||
const configValue = this.config[`${this.stateType}State`];
|
||||
if (configValue) {
|
||||
if (configValue.startsWith('template:')) {
|
||||
this.value = 'template';
|
||||
this.templateValue = configValue.slice(9);
|
||||
} else if (configValue.startsWith('attribute:')) {
|
||||
const [, attributeName, attributeValue] = configValue.split(':');
|
||||
this.value = `attribute:${attributeName}`;
|
||||
this.attributeValue = attributeValue || '';
|
||||
} else {
|
||||
this.value = configValue;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
render() {
|
||||
const options = this._getOptions();
|
||||
const isTemplateSelected = this.value === 'template';
|
||||
|
||||
return html`
|
||||
<style>
|
||||
:host {
|
||||
display: block;
|
||||
}
|
||||
ha-select {
|
||||
width: 100%;
|
||||
}
|
||||
.template-input, .attribute-input {
|
||||
margin-top: 8px;
|
||||
}
|
||||
.beta-warning {
|
||||
color: #ff9800;
|
||||
font-weight: bold;
|
||||
margin-top: 4px;
|
||||
margin-bottom: 4px;
|
||||
}
|
||||
ha-select[disabled] {
|
||||
opacity: 0.5;
|
||||
pointer-events: none;
|
||||
}
|
||||
</style>
|
||||
<div @click="${this._handleContainerClick}" class="${isTemplateSelected ? 'template-selected' : ''}" data-state-type="${this.stateType}">
|
||||
<ha-select
|
||||
.value=${this.value}
|
||||
@selected=${this._valueChanged}
|
||||
@closed=${this._handleClick}
|
||||
?disabled=${this.disableDropdown}
|
||||
>
|
||||
${options.map(option => html`
|
||||
<mwc-list-item .value=${option.value}>${option.label}</mwc-list-item>
|
||||
`)}
|
||||
</ha-select>
|
||||
${this.value === 'template' ? html`
|
||||
<div class="template-info">
|
||||
<h4>${this.localize("editor.template_mode")}</h4>
|
||||
<p>${this.localize("editor.template_mode_description")}</p>
|
||||
</div>
|
||||
<div class="template-input">
|
||||
${this._renderTemplateInput()}
|
||||
</div>
|
||||
` : ''}
|
||||
${this.value.startsWith('attribute:') ? html`
|
||||
<div class="attribute-input">
|
||||
<ha-textfield
|
||||
.value=${this.attributeValue}
|
||||
@input=${this._attributeValueChanged}
|
||||
placeholder="Enter attribute value"
|
||||
style="width: 100%;"
|
||||
></ha-textfield>
|
||||
</div>
|
||||
` : ''}
|
||||
</div>
|
||||
`;
|
||||
}
|
||||
|
||||
_handleContainerClick(e) {
|
||||
e.stopPropagation();
|
||||
}
|
||||
|
||||
_getOptions() {
|
||||
const options = [
|
||||
{ value: 'default', label: 'Default' },
|
||||
{ value: 'template', label: 'Template' },
|
||||
];
|
||||
|
||||
if (this.entityId && this.hass.states[this.entityId]) {
|
||||
const entity = this.hass.states[this.entityId];
|
||||
|
||||
if (entity.attributes.options) {
|
||||
entity.attributes.options.forEach(option => {
|
||||
options.push({ value: `option:${option}`, label: `Option: ${option}` });
|
||||
});
|
||||
}
|
||||
|
||||
Object.keys(entity.attributes).forEach(attr => {
|
||||
if (attr !== 'options' && attr !== 'friendly_name' && attr !== 'icon') {
|
||||
options.push({ value: `attribute:${attr}`, label: `Attribute: ${attr}` });
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
return options;
|
||||
}
|
||||
|
||||
_renderTemplateInput() {
|
||||
return html`
|
||||
<ha-code-editor
|
||||
mode="jinja2"
|
||||
.value=${this.templateValue}
|
||||
@value-changed=${this._templateChanged}
|
||||
dir="ltr"
|
||||
autocomplete-entities
|
||||
autocomplete-icons
|
||||
.hass=${this.hass}
|
||||
style="width: 100%; overflow: hidden; resize: vertical;"
|
||||
></ha-code-editor>
|
||||
`;
|
||||
}
|
||||
|
||||
_valueChanged(e) {
|
||||
e.stopPropagation();
|
||||
const newValue = e.target.value;
|
||||
this.value = newValue;
|
||||
|
||||
if (newValue === 'template') {
|
||||
this._updateConfig(`template:${this.templateValue}`);
|
||||
} else if (newValue.startsWith('attribute:')) {
|
||||
this._updateConfig(`${newValue}:${this.attributeValue}`);
|
||||
} else {
|
||||
this._updateConfig(newValue);
|
||||
}
|
||||
|
||||
this.requestUpdate();
|
||||
|
||||
// Dispatch an event to notify the parent component about the template selection
|
||||
const event = new CustomEvent('template-selected', {
|
||||
detail: { selected: newValue === 'template', stateType: this.stateType },
|
||||
bubbles: true,
|
||||
composed: true
|
||||
});
|
||||
this.dispatchEvent(event);
|
||||
}
|
||||
|
||||
_handleClick(e) {
|
||||
e.stopPropagation();
|
||||
}
|
||||
|
||||
_updateConfig(newValue) {
|
||||
const newConfig = {
|
||||
...this.config,
|
||||
[`${this.stateType}State`]: newValue,
|
||||
};
|
||||
|
||||
const event = new CustomEvent('state-dropdown-changed', {
|
||||
detail: {
|
||||
config: newConfig,
|
||||
entityId: this.entityId,
|
||||
stateType: this.stateType,
|
||||
attributeValue: this.attributeValue
|
||||
},
|
||||
bubbles: true,
|
||||
composed: true
|
||||
});
|
||||
this.dispatchEvent(event);
|
||||
}
|
||||
|
||||
_templateChanged(e) {
|
||||
e.stopPropagation();
|
||||
this.templateValue = e.detail.value;
|
||||
this._updateConfig(`template:${this.templateValue}`);
|
||||
}
|
||||
|
||||
_attributeValueChanged(e) {
|
||||
this.attributeValue = e.target.value;
|
||||
this._updateConfig(`${this.value}:${this.attributeValue}`);
|
||||
}
|
||||
}
|
||||
|
||||
customElements.define('state-dropdown', StateDropdown);
|
||||
1124
www/community/Ultra-Vehicle-Card/styles.js
Normal file
287
www/community/Ultra-Vehicle-Card/translations/da.js
Normal file
@@ -0,0 +1,287 @@
|
||||
export default {
|
||||
common: {
|
||||
battery: "Batteri",
|
||||
fuel: "Brændstof",
|
||||
range: "Rækkevidde",
|
||||
charging: "Oplader",
|
||||
mileage: "Kilometerstand",
|
||||
location: "Placering",
|
||||
car_state: "Bilstatus",
|
||||
charge_limit: "Opladningsgrænse",
|
||||
engine_on: "Motor Tændt",
|
||||
away: "Ikke Hjemme",
|
||||
charging_end_time: "Opladningen slutter",
|
||||
charging_ending_soon: "Opladning er snart færdig",
|
||||
charging_ending_in: "Opladning slutter om",
|
||||
charging_until: "Oplader indtil",
|
||||
minutes: "minutter",
|
||||
minute: "minut",
|
||||
hours: "timer",
|
||||
hour: "time",
|
||||
state: {
|
||||
default: {
|
||||
on: "Tændt",
|
||||
off: "Slukket"
|
||||
}
|
||||
}
|
||||
},
|
||||
vehicle_types: {
|
||||
ev: "Elbil",
|
||||
fuel: "Benzin-/Dieselbil",
|
||||
hybrid: "Hybridbil"
|
||||
},
|
||||
editor: {
|
||||
title: "Ultra Vehicle Card",
|
||||
layout_type: "Layout Type",
|
||||
single_column: "Enkelt Kolonne",
|
||||
double_column: "Dobbelt Kolonne",
|
||||
card_title: "Korttitel",
|
||||
vehicle_type: "Køretøjstype",
|
||||
unit_type: "Enhedstype",
|
||||
engine_on_image: "Motor Tændt Billede",
|
||||
engine_on_image_height: "Motor Tændt Billedhøjde",
|
||||
engine_off_image: "Motor Slukket Billede",
|
||||
engine_off_image_height: "Motor Slukket Billedhøjde",
|
||||
engine_on_image_section: "Motor Tændt Billedindstillinger",
|
||||
show_battery: "Vis Batteri",
|
||||
show_battery_range: "Vis Batterirækkevidde",
|
||||
show_fuel: "Vis Brændstof",
|
||||
show_fuel_range: "Vis Brændstofrækkevidde",
|
||||
show_location: "Vis Placering",
|
||||
show_mileage: "Vis Kilometerstand",
|
||||
show_car_state: "Vis Bilstatus",
|
||||
show_charge_limit: "Vis Opladningsgrænse",
|
||||
hybrid_display_order: "Hybridvisningsrækkefølge",
|
||||
fuel_first: "Brændstof Først",
|
||||
battery_first: "Batteri Først",
|
||||
images: "Billeder",
|
||||
main_image: "Hovedbillede",
|
||||
charging_image: "Opladningsbillede",
|
||||
enter_image_url: "Indtast Billedets URL",
|
||||
upload_image: "Upload Billede",
|
||||
entity_settings: "Entitetsindstillinger",
|
||||
battery_level: "Batteriniveau",
|
||||
battery_range: "Batterirækkevidde",
|
||||
fuel_level: "Brændstofniveau",
|
||||
fuel_range: "Brændstofrækkevidde",
|
||||
charging_status: "Opladningsstatus",
|
||||
location: "Placering",
|
||||
mileage: "Kilometerstand",
|
||||
car_state: "Bilstatus",
|
||||
charge_limit: "Opladningsgrænse",
|
||||
engine_on: "Motor Tændt",
|
||||
add_entity: "Tilføj Entitet",
|
||||
add_row_separator: "Tilføj Rækkeseparator",
|
||||
custom_icons: "Brugerdefinerede Ikoner",
|
||||
inactive_icon: "Inaktivt Ikon",
|
||||
active_icon: "Aktivt Ikon",
|
||||
no_icon: "INTET IKON",
|
||||
inactive_icon_color: "Inaktiv Ikonfarve",
|
||||
active_icon_color: "Aktiv Ikonfarve",
|
||||
icon_style: "Ikonstil",
|
||||
icon_size: "Ikonstørrelse",
|
||||
icon_size_description: "Størrelsen på ikonet.",
|
||||
icon_label_position: "Placering af ikonetiket",
|
||||
left: "Venstre",
|
||||
top: "Top",
|
||||
right: "Højre",
|
||||
bottom: "Bund",
|
||||
interaction: "Interaktion",
|
||||
colors: "Farver",
|
||||
cardBackgroundColor: "Kort Baggrundsfarve",
|
||||
barBackgroundColor: "Bar Baggrundsfarve",
|
||||
barBorderColor: "Bar Kantfarve",
|
||||
barFillColor: "Bar Fyldfarve",
|
||||
limitIndicatorColor: "Grænseindikatorfarve",
|
||||
infoTextColor: "Info Tekstfarve",
|
||||
carStateTextColor: "Bilstatus Tekstfarve",
|
||||
rangeTextColor: "Rækkevidde Tekstfarve",
|
||||
percentageTextColor: "Procent Tekstfarve",
|
||||
none: "Ingen",
|
||||
local_url: "local/url",
|
||||
entity: "Entitet",
|
||||
search_entities: "Søg Entiteter",
|
||||
battery_level_description: "Vælg den entitet, der repræsenterer batteriniveauet i dit køretøj.",
|
||||
battery_range_description: "Vælg den entitet, der repræsenterer den resterende rækkevidde af din elbil.",
|
||||
charging_status_description: "Vælg den entitet, der angiver, om dit køretøj oplader.",
|
||||
charge_limit_description: "Vælg den entitet, der repræsenterer opladningsgrænsen for dit køretøj.",
|
||||
location_description: "Vælg den entitet, der angiver køretøjets nuværende placering.",
|
||||
mileage_description: "Vælg den entitet, der repræsenterer den samlede kilometerstand eller kilometertæller for dit køretøj.",
|
||||
car_state_description: "Vælg den entitet, der repræsenterer køretøjets aktuelle tilstand (f.eks. parkeret, kører, oplader).",
|
||||
icon_grid_description: "Tilføj entiteter til ikongitteret. Søg og vælg entiteter for at tilføje dem. Brug trækgrebet for at ændre rækkefølgen på entiteterne. Klik på ikonet for at ændre det, og brug (×) for at fjerne en entitet fra gitteret.",
|
||||
custom_colors_description: "Tilpas farverne på forskellige elementer for at matche din foretrukne stil eller tema.",
|
||||
row_separator: "Rækkeseparator",
|
||||
add_row_separator: "Tilføj Rækkeseparator",
|
||||
separator_color: "Separator Farve",
|
||||
separator_color_description: "Vælg farven til rækkeseparatoren.",
|
||||
transparent: "Transparent",
|
||||
set_color: "Indstil Farve",
|
||||
separator_height: "Separator Højde",
|
||||
separator_height_description: "Indstil højden på rækkeseparatoren i pixels.",
|
||||
icon_gap_size: "Ikonafstand",
|
||||
icon_gap_description: "Indstil afstanden mellem ikoner i pixels.",
|
||||
horizontal_alignment: "Horisontal Justering",
|
||||
vertical_alignment: "Vertikal Justering",
|
||||
inactive_icon: "Inaktivt Ikon",
|
||||
active_icon: "Aktivt Ikon",
|
||||
no_icon: "INTET IKON",
|
||||
inactive_icon_color: "Inaktiv Ikonfarve",
|
||||
active_icon_color: "Aktiv Ikonfarve",
|
||||
icon_style: "Ikonstil",
|
||||
icon_size: "Ikonstørrelse",
|
||||
icon_size_description: "Størrelsen på ikonet.",
|
||||
icon_label_position: "Placering af ikonetiket",
|
||||
interaction: "Interaktion",
|
||||
more_info: "Mere Info",
|
||||
bottom: "Bund",
|
||||
select_entity: "Vælg en Entitet",
|
||||
entity_provides_image: "Denne entitet leverer billedet til visningen.",
|
||||
separator_color: "Separator Farve",
|
||||
separator_color_description: "Vælg farven til rækkeseparatoren.",
|
||||
inactive_icon_color: "Inaktiv Ikonfarve",
|
||||
active_icon_color: "Aktiv Ikonfarve",
|
||||
custom_colors_description: "Tilpas farverne på forskellige elementer for at matche din foretrukne stil eller tema.",
|
||||
toggle: "Skift",
|
||||
navigate: "Naviger",
|
||||
url: "Åbn URL",
|
||||
trigger: "Trigger",
|
||||
none: "Ingen",
|
||||
formatted_entities: "Formaterede Entiteter",
|
||||
formatted_entities_description: "Ryd op i entitetsværdier ved at afrunde tal, erstatte understregninger med mellemrum, kapitalisere ord og tilføje kommaer til store tal.",
|
||||
fuel_level_description: "Vælg den entitet, der repræsenterer brændstofniveauet i dit køretøj.",
|
||||
fuel_range_description: "Vælg den entitet, der repræsenterer den resterende brændstofrækkevidde i dit køretøj.",
|
||||
engine_on_description: "Vælg den entitet, der angiver, om køretøjets motor er tændt.",
|
||||
main_image_height: "Hovedbilledhøjde",
|
||||
charging_image_height: "Opladningsbilledhøjde",
|
||||
main_image_section: "Hovedbilledindstillinger",
|
||||
charging_image_section: "Opladningsbilledindstillinger",
|
||||
use_bar_gradient: "Brug Bar Gradient",
|
||||
bar_gradient_description: "Aktiver en farvegradient for statusbjælken. Dette giver dig mulighed for at indstille flere farvestop for en mere dynamisk visuel repræsentation af køretøjets status.",
|
||||
percentage: "Procent",
|
||||
color: "Farve",
|
||||
cardTitleColor: "Kort Titelfarve",
|
||||
add_gradient_stop: "Tilføj Gradient Stop",
|
||||
reset_all_colors: "Nulstil Alle Farver",
|
||||
reset_all_icon_colors: "Nulstil Alle Ikonfarver",
|
||||
settings: "Indstillinger",
|
||||
icon_grid: "Ikongitter",
|
||||
customize: "Tilpas",
|
||||
inactive_custom_label: "Inaktiv brugerdefineret etiket",
|
||||
active_custom_label: "Aktiv brugerdefineret etiket",
|
||||
custom_label_placeholder: "Indtast brugerdefineret etiket"
|
||||
},
|
||||
device_class: {
|
||||
battery: {
|
||||
on: "Lav",
|
||||
off: "Normal"
|
||||
},
|
||||
battery_charging: {
|
||||
on: "Oplader",
|
||||
off: "Oplader Ikke"
|
||||
},
|
||||
carbon_monoxide: {
|
||||
on: "Registreret",
|
||||
off: "Intet Registreret"
|
||||
},
|
||||
cold: {
|
||||
on: "Koldt",
|
||||
off: "Normal"
|
||||
},
|
||||
connectivity: {
|
||||
on: "Forbundet",
|
||||
off: "Ikke Forbundet"
|
||||
},
|
||||
door: {
|
||||
on: "Åben",
|
||||
off: "Lukket"
|
||||
},
|
||||
garage_door: {
|
||||
on: "Åben",
|
||||
off: "Lukket"
|
||||
},
|
||||
gas: {
|
||||
on: "Registreret",
|
||||
off: "Ikke Registreret"
|
||||
},
|
||||
heat: {
|
||||
on: "Varmt",
|
||||
off: "Normal"
|
||||
},
|
||||
light: {
|
||||
on: "Registreret",
|
||||
off: "Ikke Registreret"
|
||||
},
|
||||
lock: {
|
||||
on: "Ulåst",
|
||||
off: "Låst"
|
||||
},
|
||||
moisture: {
|
||||
on: "Vådt",
|
||||
off: "Tørt"
|
||||
},
|
||||
motion: {
|
||||
on: "Registreret",
|
||||
off: "Ikke Registreret"
|
||||
},
|
||||
moving: {
|
||||
on: "I Bevægelse",
|
||||
off: "Standset"
|
||||
},
|
||||
occupancy: {
|
||||
on: "Optaget",
|
||||
off: "Ledig"
|
||||
},
|
||||
opening: {
|
||||
on: "Åben",
|
||||
off: "Lukket"
|
||||
},
|
||||
plug: {
|
||||
on: "Tilsluttet",
|
||||
off: "Frakoblet"
|
||||
},
|
||||
power: {
|
||||
on: "Registreret",
|
||||
off: "Ingen Strøm"
|
||||
},
|
||||
presence: {
|
||||
on: "Hjemme",
|
||||
off: "Ikke Hjemme"
|
||||
},
|
||||
problem: {
|
||||
on: "Problem",
|
||||
off: "OK"
|
||||
},
|
||||
running: {
|
||||
on: "Kører",
|
||||
off: "Standset"
|
||||
},
|
||||
safety: {
|
||||
on: "Usikkert",
|
||||
off: "Sikkert"
|
||||
},
|
||||
smoke: {
|
||||
on: "Registreret",
|
||||
off: "Ikke Registreret"
|
||||
},
|
||||
sound: {
|
||||
on: "Registreret",
|
||||
off: "Ikke Registreret"
|
||||
},
|
||||
tamper: {
|
||||
on: "Registreret",
|
||||
off: "Ikke Registreret"
|
||||
},
|
||||
update: {
|
||||
on: "Tilgængelig",
|
||||
off: "Opdateret"
|
||||
},
|
||||
vibration: {
|
||||
on: "Registreret",
|
||||
off: "Ikke Registreret"
|
||||
},
|
||||
window: {
|
||||
on: "Åben",
|
||||
off: "Lukket"
|
||||
}
|
||||
}
|
||||
}
|
||||
265
www/community/Ultra-Vehicle-Card/translations/de.js
Normal file
@@ -0,0 +1,265 @@
|
||||
export default {
|
||||
common: {
|
||||
battery: "Batterie",
|
||||
fuel: "Kraftstoff",
|
||||
range: "Reichweite",
|
||||
charging: "Laden",
|
||||
mileage: "Kilometerstand",
|
||||
location: "Standort",
|
||||
car_state: "Fahrzeugzustand",
|
||||
charge_limit: "Ladelimit",
|
||||
engine_on: "Motor an",
|
||||
away: "Abwesend",
|
||||
charging_end_time: "Ladeende",
|
||||
charging_ending_soon: "Ladevorgang endet bald",
|
||||
charging_ending_in: "Ladevorgang endet in",
|
||||
charging_until: "Laden bis",
|
||||
minutes: "Minuten",
|
||||
minute: "Minute",
|
||||
hours: "Stunden",
|
||||
hour: "Stunde",
|
||||
state: {
|
||||
default: {
|
||||
on: "An",
|
||||
off: "Aus"
|
||||
}
|
||||
}
|
||||
},
|
||||
vehicle_types: {
|
||||
ev: "Elektrofahrzeug",
|
||||
fuel: "Kraftstofffahrzeug",
|
||||
hybrid: "Hybridfahrzeug"
|
||||
},
|
||||
editor: {
|
||||
title: "Ultra Fahrzeugkarte",
|
||||
card_title: "Kartentitel",
|
||||
vehicle_type: "Fahrzeugtyp",
|
||||
unit_type: "Einheitentyp",
|
||||
show_battery: "Batterie anzeigen",
|
||||
show_battery_range: "Batteriereichweite anzeigen",
|
||||
show_fuel: "Kraftstoff anzeigen",
|
||||
show_fuel_range: "Kraftstoffreichweite anzeigen",
|
||||
show_location: "Standort anzeigen",
|
||||
show_mileage: "Kilometerstand anzeigen",
|
||||
show_car_state: "Fahrzeugzustand anzeigen",
|
||||
show_charge_limit: "Ladelimit anzeigen",
|
||||
hybrid_display_order: "Hybridanzeige-Reihenfolge",
|
||||
fuel_first: "Kraftstoff zuerst",
|
||||
battery_first: "Batterie zuerst",
|
||||
images: "Bilder",
|
||||
main_image: "Hauptbild",
|
||||
charging_image: "Ladebild",
|
||||
enter_image_url: "Bild-URL eingeben",
|
||||
upload_image: "Bild hochladen",
|
||||
entity_settings: "Entitätseinstellungen",
|
||||
battery_level: "Batteriestand",
|
||||
battery_range: "Batteriereichweite",
|
||||
fuel_level: "Kraftstoffstand",
|
||||
fuel_range: "Kraftstoffreichweite",
|
||||
charging_status: "Ladestatus",
|
||||
location: "Standort",
|
||||
mileage: "Kilometerstand",
|
||||
car_state: "Fahrzeugzustand",
|
||||
charge_limit: "Ladelimit",
|
||||
engine_on: "Motor an",
|
||||
icon_grid: "Symbol-Raster",
|
||||
add_entity: "Entität hinzufügen",
|
||||
add_row_separator: "Zeilentrennzeichen hinzufügen",
|
||||
custom_icons: "Benutzerdefinierte Symbole",
|
||||
inactive_icon: "Inaktives Symbol",
|
||||
active_icon: "Aktives Symbol",
|
||||
no_icon: "KEIN SYMBOL",
|
||||
inactive_icon_color: "Inaktive Symbolfarbe",
|
||||
active_icon_color: "Aktive Symbolfarbe",
|
||||
icon_style: "Symbolstil",
|
||||
icon_size: "Symbolgröße",
|
||||
icon_size_description: "Größe des Symbols.",
|
||||
icon_label_position: "Position der Symbolbeschriftung",
|
||||
left: "Links",
|
||||
top: "Oben",
|
||||
right: "Rechts",
|
||||
bottom: "Unten",
|
||||
interaction: "Interaktion",
|
||||
colors: "Farben",
|
||||
cardBackgroundColor: "Kartenhintergrundfarbe",
|
||||
barBackgroundColor: "Balkenhintergrundfarbe",
|
||||
barBorderColor: "Balkenrahmenfarbe",
|
||||
barFillColor: "Balkenfüllfarbe",
|
||||
limitIndicatorColor: "Limitindikatorfarbe",
|
||||
infoTextColor: "Infotextfarbe",
|
||||
carStateTextColor: "Fahrzeugzustandtextfarbe",
|
||||
rangeTextColor: "Reichweitentextfarbe",
|
||||
percentageTextColor: "Prozenttextfarbe",
|
||||
none: "Keine",
|
||||
local_url: "Lokal/URL",
|
||||
entity: "Entität",
|
||||
search_entities: "Entitäten suchen",
|
||||
battery_level_description: "Wählen Sie die Entität, die den Batteriestand Ihres Fahrzeugs repräsentiert.",
|
||||
battery_range_description: "Wählen Sie die Entität, die die verbleibende Reichweite Ihres Elektrofahrzeugs repräsentiert.",
|
||||
charging_status_description: "Wählen Sie die Entität, die anzeigt, ob Ihr Fahrzeug gerade lädt.",
|
||||
charge_limit_description: "Wählen Sie die Entität, die das eingestellte Ladelimit für Ihr Fahrzeug repräsentiert.",
|
||||
location_description: "Wählen Sie die Entität, die den aktuellen Standort Ihres Fahrzeugs angibt.",
|
||||
mileage_description: "Wählen Sie die Entität, die den Gesamtkilometerstand oder die Tachoanzeige Ihres Fahrzeugs repräsentiert.",
|
||||
car_state_description: "Wählen Sie die Entität, die den aktuellen Zustand Ihres Fahrzeugs repräsentiert (z.B. geparkt, fahrend, ladend).",
|
||||
icon_grid_description: "Fügen Sie Entitäten zum Symbol-Raster hinzu. Suchen und wählen Sie Entitäten zum Hinzufügen. Verwenden Sie den Ziehgriff, um Entitäten neu anzuordnen. Klicken Sie auf das Symbol, um es zu ändern, und verwenden Sie (×), um eine Entität aus dem Raster zu entfernen.",
|
||||
custom_colors_description: "Passen Sie die Farben verschiedener Elemente in der Karte an Ihren bevorzugten Stil oder Ihr Thema an.",
|
||||
row_separator: "Zeilentrennzeichen",
|
||||
add_row_separator: "Zeilentrennzeichen hinzufügen",
|
||||
separator_color: "Trennzeichenfarbe",
|
||||
separator_color_description: "Wählen Sie die Farbe für das Zeilentrennzeichen.",
|
||||
transparent: "Transparent",
|
||||
set_color: "Farbe festlegen",
|
||||
separator_height: "Trennzeichenhöhe",
|
||||
separator_height_description: "Legen Sie die Höhe des Zeilentrennzeichens in Pixeln fest.",
|
||||
icon_gap_size: "Symbollückengrößen",
|
||||
icon_gap_description: "Legen Sie den Abstand zwischen Symbolen in Pixeln fest.",
|
||||
horizontal_alignment: "Horizontale Ausrichtung",
|
||||
vertical_alignment: "Vertikale Ausrichtung",
|
||||
more_info: "Mehr Informationen",
|
||||
select_entity: "Entität auswählen",
|
||||
entity_provides_image: "Diese Entität stellt das Bild für die Anzeige bereit.",
|
||||
toggle: "Umschalten",
|
||||
navigate: "Navigieren",
|
||||
url: "URL öffnen",
|
||||
trigger: "Auslösen",
|
||||
formatted_entities: "Formatierte Entitäten",
|
||||
formatted_entities_description: "Bereinigen Sie Entitätswerte, indem Sie Zahlen runden, Unterstriche durch Leerzeichen ersetzen, Wörter großschreiben und große Zahlen mit Kommas versehen.",
|
||||
fuel_level_description: "Wählen Sie die Entität, die den Kraftstoffstand Ihres Fahrzeugs repräsentiert.",
|
||||
fuel_range_description: "Wählen Sie die Entität, die die verbleibende Kraftstoffreichweite Ihres Fahrzeugs repräsentiert.",
|
||||
engine_on_description: "Wählen Sie die Entität, die anzeigt, ob der Motor Ihres Fahrzeugs gerade läuft.",
|
||||
main_image_height: "Hauptbildhöhe",
|
||||
charging_image_height: "Ladebildhöhe",
|
||||
main_image_section: "Hauptbild-Einstellungen",
|
||||
charging_image_section: "Ladebild-Einstellungen",
|
||||
layout_type: "Layout-Typ",
|
||||
single_column: "Einzelspalte",
|
||||
double_column: "Doppelspalte",
|
||||
engine_on_image: "Bild für Motor an",
|
||||
engine_on_image_height: "Höhe des Bildes für Motor an",
|
||||
engine_off_image: "Bild für Motor aus",
|
||||
engine_off_image_height: "Höhe des Bildes für Motor aus",
|
||||
engine_on_image_section: "Einstellungen für Bild mit Motor an",
|
||||
use_bar_gradient: "Balkengradient verwenden",
|
||||
bar_gradient_description: "Aktivieren Sie einen Farbverlauf für den Fortschrittsbalken. Dies ermöglicht es Ihnen, mehrere Farbstopps für eine dynamischere visuelle Darstellung des Fahrzeugstatus festzulegen.",
|
||||
percentage: "Prozentsatz",
|
||||
color: "Farbe",
|
||||
add_gradient_stop: "Gradientenstopp hinzufügen",
|
||||
inactive_custom_label: "Inaktives benutzerdefiniertes Label",
|
||||
active_custom_label: "Aktives benutzerdefiniertes Label",
|
||||
custom_label_placeholder: "Benutzerdefiniertes Label eingeben"
|
||||
},
|
||||
device_class: {
|
||||
battery: {
|
||||
on: "Niedrig",
|
||||
off: "Normal"
|
||||
},
|
||||
battery_charging: {
|
||||
on: "Lädt",
|
||||
off: "Lädt nicht"
|
||||
},
|
||||
carbon_monoxide: {
|
||||
on: "Erkannt",
|
||||
off: "Frei"
|
||||
},
|
||||
cold: {
|
||||
on: "Kalt",
|
||||
off: "Normal"
|
||||
},
|
||||
connectivity: {
|
||||
on: "Verbunden",
|
||||
off: "Getrennt"
|
||||
},
|
||||
door: {
|
||||
on: "Offen",
|
||||
off: "Geschlossen"
|
||||
},
|
||||
garage_door: {
|
||||
on: "Offen",
|
||||
off: "Geschlossen"
|
||||
},
|
||||
gas: {
|
||||
on: "Erkannt",
|
||||
off: "Frei"
|
||||
},
|
||||
heat: {
|
||||
on: "Heiß",
|
||||
off: "Normal"
|
||||
},
|
||||
light: {
|
||||
on: "Erkannt",
|
||||
off: "Frei"
|
||||
},
|
||||
lock: {
|
||||
on: "Entriegelt",
|
||||
off: "Verriegelt"
|
||||
},
|
||||
moisture: {
|
||||
on: "Feucht",
|
||||
off: "Trocken"
|
||||
},
|
||||
motion: {
|
||||
on: "Erkannt",
|
||||
off: "Frei"
|
||||
},
|
||||
moving: {
|
||||
on: "Bewegt sich",
|
||||
off: "Steht"
|
||||
},
|
||||
occupancy: {
|
||||
on: "Belegt",
|
||||
off: "Frei"
|
||||
},
|
||||
opening: {
|
||||
on: "Offen",
|
||||
off: "Geschlossen"
|
||||
},
|
||||
plug: {
|
||||
on: "Eingesteckt",
|
||||
off: "Ausgesteckt"
|
||||
},
|
||||
power: {
|
||||
on: "Erkannt",
|
||||
off: "Kein Strom"
|
||||
},
|
||||
presence: {
|
||||
on: "Zuhause",
|
||||
off: "Abwesend"
|
||||
},
|
||||
problem: {
|
||||
on: "Problem",
|
||||
off: "OK"
|
||||
},
|
||||
running: {
|
||||
on: "Läuft",
|
||||
off: "Läuft nicht"
|
||||
},
|
||||
safety: {
|
||||
on: "Unsicher",
|
||||
off: "Sicher"
|
||||
},
|
||||
smoke: {
|
||||
on: "Erkannt",
|
||||
off: "Frei"
|
||||
},
|
||||
sound: {
|
||||
on: "Erkannt",
|
||||
off: "Frei"
|
||||
},
|
||||
tamper: {
|
||||
on: "Erkannt",
|
||||
off: "Frei"
|
||||
},
|
||||
update: {
|
||||
on: "Verfügbar",
|
||||
off: "Aktuell"
|
||||
},
|
||||
vibration: {
|
||||
on: "Erkannt",
|
||||
off: "Frei"
|
||||
},
|
||||
window: {
|
||||
on: "Offen",
|
||||
off: "Geschlossen"
|
||||
}
|
||||
}
|
||||
}
|
||||
268
www/community/Ultra-Vehicle-Card/translations/en-GB.js
Normal file
@@ -0,0 +1,268 @@
|
||||
export default {
|
||||
common: {
|
||||
battery: "Battery",
|
||||
fuel: "Fuel",
|
||||
range: "Range",
|
||||
charging: "Charging",
|
||||
mileage: "Mileage",
|
||||
location: "Location",
|
||||
car_state: "Car State",
|
||||
charge_limit: "Charge Limit",
|
||||
engine_on: "Engine On",
|
||||
away: "Away",
|
||||
charging_end_time: "Charging End Time",
|
||||
charging_ending_soon: "Charging ending soon",
|
||||
charging_ending_in: "Charging ending in",
|
||||
charging_until: "Charging until",
|
||||
minutes: "minutes",
|
||||
minute: "minute",
|
||||
hours: "hours",
|
||||
hour: "hour",
|
||||
state: {
|
||||
default: {
|
||||
on: "On",
|
||||
off: "Off"
|
||||
}
|
||||
}
|
||||
},
|
||||
vehicle_types: {
|
||||
ev: "Electric Vehicle",
|
||||
fuel: "Fuel Vehicle",
|
||||
hybrid: "Hybrid"
|
||||
},
|
||||
editor: {
|
||||
title: "Ultra Vehicle Card",
|
||||
card_title: "Card Title",
|
||||
vehicle_type: "Vehicle Type",
|
||||
unit_type: "Unit Type",
|
||||
show_battery: "Show Battery",
|
||||
show_battery_range: "Show Battery Range",
|
||||
show_fuel: "Show Fuel",
|
||||
show_fuel_range: "Show Fuel Range",
|
||||
show_location: "Show Location",
|
||||
show_mileage: "Show Mileage",
|
||||
show_car_state: "Show Car State",
|
||||
show_charge_limit: "Show Charge Limit",
|
||||
hybrid_display_order: "Hybrid Display Order",
|
||||
fuel_first: "Fuel First",
|
||||
battery_first: "Battery First",
|
||||
images: "Images",
|
||||
main_image: "Main Image",
|
||||
charging_image: "Charging Image",
|
||||
enter_image_url: "Enter image URL",
|
||||
upload_image: "Upload Image",
|
||||
entity_settings: "Entity Settings",
|
||||
battery_level: "Battery Level",
|
||||
battery_range: "Battery Range",
|
||||
fuel_level: "Fuel Level",
|
||||
fuel_range: "Fuel Range",
|
||||
charging_status: "Charging Status",
|
||||
location: "Location",
|
||||
mileage: "Mileage",
|
||||
car_state: "Car State",
|
||||
charge_limit: "Charge Limit",
|
||||
engine_on: "Engine On",
|
||||
icon_grid: "Icon Grid",
|
||||
add_entity: "Add Entity",
|
||||
add_row_separator: "Add Row Separator",
|
||||
custom_icons: "Custom Icons",
|
||||
inactive_icon: "Inactive Icon",
|
||||
active_icon: "Active Icon",
|
||||
no_icon: "NO ICON",
|
||||
inactive_icon_color: "Inactive Icon Colour",
|
||||
active_icon_color: "Active Icon Colour",
|
||||
icon_style: "Icon Style",
|
||||
icon_size: "Icon Size",
|
||||
icon_size_description: "Size of the icon.",
|
||||
icon_label_position: "Icon Label Position",
|
||||
left: "Left",
|
||||
top: "Top",
|
||||
right: "Right",
|
||||
bottom: "Bottom",
|
||||
interaction: "Interaction",
|
||||
colors: "Colours",
|
||||
cardBackgroundColor: "Card Background Colour",
|
||||
barBackgroundColor: "Bar Background Colour",
|
||||
barBorderColor: "Bar Border Colour",
|
||||
barFillColor: "Bar Fill Colour",
|
||||
limitIndicatorColor: "Limit Indicator Colour",
|
||||
infoTextColor: "Info Text Colour",
|
||||
carStateTextColor: "Car State Text Colour",
|
||||
rangeTextColor: "Range Text Colour",
|
||||
percentageTextColor: "Percentage Text Colour",
|
||||
none: "None",
|
||||
local_url: "Local/URL",
|
||||
entity: "Entity",
|
||||
search_entities: "Search Entities",
|
||||
battery_level_description: "Select the entity that represents the battery level of your vehicle.",
|
||||
battery_range_description: "Select the entity that represents the remaining range of your electric vehicle.",
|
||||
charging_status_description: "Select the entity that indicates whether your vehicle is currently charging.",
|
||||
charge_limit_description: "Select the entity that represents the charging limit set for your vehicle.",
|
||||
location_description: "Select the entity that provides the current location of your vehicle.",
|
||||
mileage_description: "Select the entity that represents the total mileage or odometer reading of your vehicle.",
|
||||
car_state_description: "Select the entity that represents the current state of your vehicle (e.g., parked, driving, charging).",
|
||||
icon_grid_description: "Add entities to the icon grid. Search and select entities to add. Use the drag handle to reorder entities. Click on the icon to change it, and use (×) to remove an entity from the grid.",
|
||||
custom_colors_description: "Customize the colors of various elements in the card to match your preferred style or theme.",
|
||||
row_separator: "Row Separator",
|
||||
add_row_separator: "Add Row Separator",
|
||||
separator_color: "Separator Colour",
|
||||
separator_color_description: "Choose the colour for the row separator.",
|
||||
transparent: "Transparent",
|
||||
set_color: "Set Colour",
|
||||
separator_height: "Separator Height",
|
||||
separator_height_description: "Set the height of the row separator in pixels.",
|
||||
icon_gap_size: "Icon Gap Size",
|
||||
icon_gap_description: "Set the gap between icons in pixels.",
|
||||
horizontal_alignment: "Horizontal Alignment",
|
||||
vertical_alignment: "Vertical Alignment",
|
||||
more_info: "More Info",
|
||||
select_entity: "Select an Entity",
|
||||
entity_provides_image: "This entity provides the image for the display.",
|
||||
toggle: "Toggle",
|
||||
navigate: "Navigate",
|
||||
url: "Open URL",
|
||||
trigger: "Trigger",
|
||||
formatted_entities: "Formatted Entities",
|
||||
formatted_entities_description: "Clean up entity values by rounding numbers, replacing underscores with spaces, capitalizing words, and adding commas to large numbers.",
|
||||
fuel_level_description: "Select the entity that represents the fuel level of your vehicle.",
|
||||
fuel_range_description: "Select the entity that represents the remaining fuel range of your vehicle.",
|
||||
engine_on_description: "Select the entity that indicates whether your vehicle's engine is currently running.",
|
||||
main_image_height: "Main Image Height",
|
||||
charging_image_height: "Charging Image Height",
|
||||
main_image_section: "Main Image Settings",
|
||||
charging_image_section: "Charging Image Settings",
|
||||
layout_type: "Layout Type",
|
||||
single_column: "Single Column",
|
||||
double_column: "Double Column",
|
||||
engine_on_image: "Engine On Image",
|
||||
engine_on_image_height: "Engine On Image Height",
|
||||
engine_off_image: "Engine Off Image",
|
||||
engine_off_image_height: "Engine Off Image Height",
|
||||
engine_on_image_section: "Engine On Image Settings",
|
||||
use_bar_gradient: "Use Bar Gradient",
|
||||
bar_gradient_description: "Enable a colour gradient for the progress bar. This allows you to set multiple colour stops for a more dynamic visual representation of the vehicle's status.",
|
||||
percentage: "Percentage",
|
||||
color: "Colour",
|
||||
add_gradient_stop: "Add Gradient Stop",
|
||||
reset_all_colors: "Reset All Colours",
|
||||
reset_all_icon_colors: "Reset All Icon Colours",
|
||||
settings: "Settings",
|
||||
customize: "Customise",
|
||||
template_mode: "Template Mode",
|
||||
template_mode_description: "Enter your template code below. To exit template mode, select a different state from the dropdown above. Use {{ true }} and {{ false }} like statements to represent on and off states."
|
||||
},
|
||||
device_class: {
|
||||
battery: {
|
||||
on: "Low",
|
||||
off: "Normal"
|
||||
},
|
||||
battery_charging: {
|
||||
on: "Charging",
|
||||
off: "Not Charging"
|
||||
},
|
||||
carbon_monoxide: {
|
||||
on: "Detected",
|
||||
off: "Clear"
|
||||
},
|
||||
cold: {
|
||||
on: "Cold",
|
||||
off: "Normal"
|
||||
},
|
||||
connectivity: {
|
||||
on: "Connected",
|
||||
off: "Disconnected"
|
||||
},
|
||||
door: {
|
||||
on: "Open",
|
||||
off: "Closed"
|
||||
},
|
||||
garage_door: {
|
||||
on: "Open",
|
||||
off: "Closed"
|
||||
},
|
||||
gas: {
|
||||
on: "Detected",
|
||||
off: "Clear"
|
||||
},
|
||||
heat: {
|
||||
on: "Hot",
|
||||
off: "Normal"
|
||||
},
|
||||
light: {
|
||||
on: "Detected",
|
||||
off: "Clear"
|
||||
},
|
||||
lock: {
|
||||
on: "Unlocked",
|
||||
off: "Locked"
|
||||
},
|
||||
moisture: {
|
||||
on: "Wet",
|
||||
off: "Dry"
|
||||
},
|
||||
motion: {
|
||||
on: "Detected",
|
||||
off: "Clear"
|
||||
},
|
||||
moving: {
|
||||
on: "Moving",
|
||||
off: "Stopped"
|
||||
},
|
||||
occupancy: {
|
||||
on: "Occupied",
|
||||
off: "Clear"
|
||||
},
|
||||
opening: {
|
||||
on: "Open",
|
||||
off: "Closed"
|
||||
},
|
||||
plug: {
|
||||
on: "Plugged In",
|
||||
off: "Unplugged"
|
||||
},
|
||||
power: {
|
||||
on: "Detected",
|
||||
off: "No Power"
|
||||
},
|
||||
presence: {
|
||||
on: "Home",
|
||||
off: "Away"
|
||||
},
|
||||
problem: {
|
||||
on: "Problem",
|
||||
off: "OK"
|
||||
},
|
||||
running: {
|
||||
on: "Running",
|
||||
off: "Not Running"
|
||||
},
|
||||
safety: {
|
||||
on: "Unsafe",
|
||||
off: "Safe"
|
||||
},
|
||||
smoke: {
|
||||
on: "Detected",
|
||||
off: "Clear"
|
||||
},
|
||||
sound: {
|
||||
on: "Detected",
|
||||
off: "Clear"
|
||||
},
|
||||
tamper: {
|
||||
on: "Detected",
|
||||
off: "Clear"
|
||||
},
|
||||
update: {
|
||||
on: "Available",
|
||||
off: "Up-to-date"
|
||||
},
|
||||
vibration: {
|
||||
on: "Detected",
|
||||
off: "Clear"
|
||||
},
|
||||
window: {
|
||||
on: "Open",
|
||||
off: "Closed"
|
||||
}
|
||||
}
|
||||
}
|
||||
289
www/community/Ultra-Vehicle-Card/translations/en.js
Normal file
@@ -0,0 +1,289 @@
|
||||
export default {
|
||||
common: {
|
||||
battery: "Battery",
|
||||
fuel: "Fuel",
|
||||
range: "Range",
|
||||
charging: "Charging",
|
||||
mileage: "Mileage",
|
||||
location: "Location",
|
||||
car_state: "Car State",
|
||||
charge_limit: "Charge Limit",
|
||||
engine_on: "Engine On",
|
||||
away: "Away",
|
||||
charging_end_time: "Charging End Time",
|
||||
charging_ending_soon: "Charging ending soon",
|
||||
charging_ending_in: "Charging ending in",
|
||||
charging_until: "Charging until",
|
||||
minutes: "minutes",
|
||||
minute: "minute",
|
||||
hours: "hours",
|
||||
hour: "hour",
|
||||
state: {
|
||||
default: {
|
||||
on: "On",
|
||||
off: "Off"
|
||||
}
|
||||
}
|
||||
},
|
||||
vehicle_types: {
|
||||
ev: "Electric Vehicle",
|
||||
fuel: "Fuel Vehicle",
|
||||
hybrid: "Hybrid"
|
||||
},
|
||||
editor: {
|
||||
title: "Ultra Vehicle Card",
|
||||
layout_type: "Layout Type",
|
||||
single_column: "Single Column",
|
||||
double_column: "Double Column",
|
||||
card_title: "Card Title",
|
||||
vehicle_type: "Vehicle Type",
|
||||
unit_type: "Unit Type",
|
||||
engine_on_image: "Engine On Image",
|
||||
engine_on_image_height: "Engine On Image Height",
|
||||
engine_off_image: "Engine Off Image",
|
||||
engine_off_image_height: "Engine Off Image Height",
|
||||
engine_on_image_section: "Engine On Image Settings",
|
||||
show_battery: "Show Battery",
|
||||
show_battery_range: "Show Battery Range",
|
||||
show_fuel: "Show Fuel",
|
||||
show_fuel_range: "Show Fuel Range",
|
||||
show_location: "Show Location",
|
||||
show_mileage: "Show Mileage",
|
||||
show_car_state: "Show Car State",
|
||||
show_charge_limit: "Show Charge Limit",
|
||||
hybrid_display_order: "Hybrid Display Order",
|
||||
fuel_first: "Fuel First",
|
||||
battery_first: "Battery First",
|
||||
images: "Images",
|
||||
main_image: "Main Image",
|
||||
charging_image: "Charging Image",
|
||||
enter_image_url: "Enter image URL",
|
||||
upload_image: "Upload Image",
|
||||
entity_settings: "Entity Settings",
|
||||
battery_level: "Battery Level",
|
||||
battery_range: "Battery Range",
|
||||
fuel_level: "Fuel Level",
|
||||
fuel_range: "Fuel Range",
|
||||
charging_status: "Charging Status",
|
||||
location: "Location",
|
||||
mileage: "Mileage",
|
||||
car_state: "Car State",
|
||||
charge_limit: "Charge Limit",
|
||||
engine_on: "Engine On",
|
||||
add_entity: "Add Entity",
|
||||
add_row_separator: "Add Row Separator",
|
||||
custom_icons: "Custom Icons",
|
||||
inactive_icon: "Inactive Icon",
|
||||
active_icon: "Active Icon",
|
||||
no_icon: "NO ICON",
|
||||
inactive_icon_color: "Inactive Icon Color",
|
||||
active_icon_color: "Active Icon Color",
|
||||
icon_style: "Icon Style",
|
||||
icon_size: "Icon Size",
|
||||
icon_size_description: "Size of the icon.",
|
||||
icon_label_position: "Icon Label Position",
|
||||
left: "Left",
|
||||
top: "Top",
|
||||
right: "Right",
|
||||
bottom: "Bottom",
|
||||
interaction: "Interaction",
|
||||
colors: "Colors",
|
||||
cardBackgroundColor: "Card Background Color",
|
||||
barBackgroundColor: "Bar Background Color",
|
||||
barBorderColor: "Bar Border Color",
|
||||
barFillColor: "Bar Fill Color",
|
||||
limitIndicatorColor: "Limit Indicator Color",
|
||||
infoTextColor: "Info Text Color",
|
||||
carStateTextColor: "Car State Text Color",
|
||||
rangeTextColor: "Range Text Color",
|
||||
percentageTextColor: "Percentage Text Color",
|
||||
none: "None",
|
||||
local_url: "Local/URL",
|
||||
entity: "Entity",
|
||||
search_entities: "Search Entities",
|
||||
battery_level_description: "Select the entity that represents the battery level of your vehicle.",
|
||||
battery_range_description: "Select the entity that represents the remaining range of your electric vehicle.",
|
||||
charging_status_description: "Select the entity that indicates whether your vehicle is currently charging.",
|
||||
charge_limit_description: "Select the entity that represents the charging limit set for your vehicle.",
|
||||
location_description: "Select the entity that provides the current location of your vehicle.",
|
||||
mileage_description: "Select the entity that represents the total mileage or odometer reading of your vehicle.",
|
||||
car_state_description: "Select the entity that represents the current state of your vehicle (e.g., parked, driving, charging).",
|
||||
icon_grid_description: "Add entities to the icon grid. Search and select entities to add. Use the drag handle to reorder entities. Click on the icon to change it, and use (×) to remove an entity from the grid.",
|
||||
custom_colors_description: "Customize the colors of various elements in the card to match your preferred style or theme.",
|
||||
row_separator: "Row Separator",
|
||||
add_row_separator: "Add Row Separator",
|
||||
separator_color: "Separator Color",
|
||||
separator_color_description: "Choose the color for the row separator.",
|
||||
transparent: "Transparent",
|
||||
set_color: "Set Color",
|
||||
separator_height: "Separator Height",
|
||||
separator_height_description: "Set the height of the row separator in pixels.",
|
||||
icon_gap_size: "Icon Gap Size",
|
||||
icon_gap_description: "Set the gap between icons in pixels.",
|
||||
horizontal_alignment: "Horizontal Alignment",
|
||||
vertical_alignment: "Vertical Alignment",
|
||||
inactive_icon: "Inactive Icon",
|
||||
active_icon: "Active Icon",
|
||||
no_icon: "NO ICON",
|
||||
inactive_icon_color: "Inactive Icon Color",
|
||||
active_icon_color: "Active Icon Color",
|
||||
icon_style: "Icon Style",
|
||||
icon_size: "Icon Size",
|
||||
icon_size_description: "Size of the icon.",
|
||||
icon_label_position: "Icon Label Position",
|
||||
interaction: "Interaction",
|
||||
more_info: "More Info",
|
||||
bottom: "Bottom",
|
||||
select_entity: "Select an Entity",
|
||||
entity_provides_image: "This entity provides the image for the display.",
|
||||
separator_color: "Separator Color",
|
||||
separator_color_description: "Choose the color for the row separator.",
|
||||
inactive_icon_color: "Inactive Icon Color",
|
||||
active_icon_color: "Active Icon Color",
|
||||
custom_colors_description: "Customize the colors of various elements in the card to match your preferred style or theme.",
|
||||
toggle: "Toggle",
|
||||
navigate: "Navigate",
|
||||
url: "Open URL",
|
||||
trigger: "Trigger",
|
||||
none: "None",
|
||||
formatted_entities: "Formatted Entities",
|
||||
formatted_entities_description: "Clean up entity values by rounding numbers, replacing underscores with spaces, capitalizing words, and adding commas to large numbers.",
|
||||
fuel_level_description: "Select the entity that represents the fuel level of your vehicle.",
|
||||
fuel_range_description: "Select the entity that represents the remaining fuel range of your vehicle.",
|
||||
engine_on_description: "Select the entity that indicates whether your vehicle's engine is currently running.",
|
||||
main_image_height: "Main Image Height",
|
||||
charging_image_height: "Charging Image Height",
|
||||
main_image_section: "Main Image Settings",
|
||||
charging_image_section: "Charging Image Settings",
|
||||
use_bar_gradient: "Use Bar Gradient",
|
||||
bar_gradient_description: "Enable a color gradient for the progress bar. This allows you to set multiple color stops for a more dynamic visual representation of the vehicle's status.",
|
||||
percentage: "Percentage",
|
||||
color: "Color",
|
||||
cardTitleColor: "Card Title Color",
|
||||
add_gradient_stop: "Add Gradient Stop",
|
||||
reset_all_colors: "Reset All Colors",
|
||||
reset_all_icon_colors: "Reset All Icon Colors",
|
||||
settings: "Settings",
|
||||
icon_grid: "Icon Grid",
|
||||
customize: "Customize",
|
||||
inactive_custom_label: "Inactive Custom Label",
|
||||
active_custom_label: "Active Custom Label",
|
||||
custom_label_placeholder: "Enter custom label",
|
||||
template_mode: "Template Mode",
|
||||
template_mode_description: "Enter your template code below. To exit template mode, select a different state from the dropdown above. Use {{ true }} and {{ false }} like statements to represent on and off states."
|
||||
},
|
||||
device_class: {
|
||||
battery: {
|
||||
on: "Low",
|
||||
off: "Normal"
|
||||
},
|
||||
battery_charging: {
|
||||
on: "Charging",
|
||||
off: "Not Charging"
|
||||
},
|
||||
carbon_monoxide: {
|
||||
on: "Detected",
|
||||
off: "Clear"
|
||||
},
|
||||
cold: {
|
||||
on: "Cold",
|
||||
off: "Normal"
|
||||
},
|
||||
connectivity: {
|
||||
on: "Connected",
|
||||
off: "Disconnected"
|
||||
},
|
||||
door: {
|
||||
on: "Open",
|
||||
off: "Closed"
|
||||
},
|
||||
garage_door: {
|
||||
on: "Open",
|
||||
off: "Closed"
|
||||
},
|
||||
gas: {
|
||||
on: "Detected",
|
||||
off: "Clear"
|
||||
},
|
||||
heat: {
|
||||
on: "Hot",
|
||||
off: "Normal"
|
||||
},
|
||||
light: {
|
||||
on: "Detected",
|
||||
off: "Clear"
|
||||
},
|
||||
lock: {
|
||||
on: "Unlocked",
|
||||
off: "Locked"
|
||||
},
|
||||
moisture: {
|
||||
on: "Wet",
|
||||
off: "Dry"
|
||||
},
|
||||
motion: {
|
||||
on: "Detected",
|
||||
off: "Clear"
|
||||
},
|
||||
moving: {
|
||||
on: "Moving",
|
||||
off: "Stopped"
|
||||
},
|
||||
occupancy: {
|
||||
on: "Occupied",
|
||||
off: "Clear"
|
||||
},
|
||||
opening: {
|
||||
on: "Open",
|
||||
off: "Closed"
|
||||
},
|
||||
plug: {
|
||||
on: "Plugged In",
|
||||
off: "Unplugged"
|
||||
},
|
||||
power: {
|
||||
on: "Detected",
|
||||
off: "No Power"
|
||||
},
|
||||
presence: {
|
||||
on: "Home",
|
||||
off: "Away"
|
||||
},
|
||||
problem: {
|
||||
on: "Problem",
|
||||
off: "OK"
|
||||
},
|
||||
running: {
|
||||
on: "Running",
|
||||
off: "Not Running"
|
||||
},
|
||||
safety: {
|
||||
on: "Unsafe",
|
||||
off: "Safe"
|
||||
},
|
||||
smoke: {
|
||||
on: "Detected",
|
||||
off: "Clear"
|
||||
},
|
||||
sound: {
|
||||
on: "Detected",
|
||||
off: "Clear"
|
||||
},
|
||||
tamper: {
|
||||
on: "Detected",
|
||||
off: "Clear"
|
||||
},
|
||||
update: {
|
||||
on: "Available",
|
||||
off: "Up-to-date"
|
||||
},
|
||||
vibration: {
|
||||
on: "Detected",
|
||||
off: "Clear"
|
||||
},
|
||||
window: {
|
||||
on: "Open",
|
||||
off: "Closed"
|
||||
}
|
||||
}
|
||||
}
|
||||
268
www/community/Ultra-Vehicle-Card/translations/es.js
Normal file
@@ -0,0 +1,268 @@
|
||||
export default {
|
||||
common: {
|
||||
battery: "Batería",
|
||||
fuel: "Combustible",
|
||||
range: "Autonomía",
|
||||
charging: "Cargando",
|
||||
mileage: "Kilometraje",
|
||||
location: "Ubicación",
|
||||
car_state: "Estado del coche",
|
||||
charge_limit: "Límite de carga",
|
||||
engine_on: "Motor encendido",
|
||||
away: "Fuera",
|
||||
charging_end_time: "Fin de carga",
|
||||
charging_ending_soon: "Carga finalizando pronto",
|
||||
charging_ending_in: "Carga finalizando en",
|
||||
charging_until: "Cargando hasta",
|
||||
minutes: "minutos",
|
||||
minute: "minuto",
|
||||
hours: "horas",
|
||||
hour: "hora",
|
||||
state: {
|
||||
default: {
|
||||
on: "Encendido",
|
||||
off: "Apagado"
|
||||
}
|
||||
}
|
||||
},
|
||||
vehicle_types: {
|
||||
ev: "Vehículo eléctrico",
|
||||
fuel: "Vehículo de combustible",
|
||||
hybrid: "Híbrido"
|
||||
},
|
||||
editor: {
|
||||
title: "Tarjeta Ultra de Vehículo",
|
||||
card_title: "Título de la tarjeta",
|
||||
vehicle_type: "Tipo de vehículo",
|
||||
unit_type: "Tipo de unidad",
|
||||
show_battery: "Mostrar batería",
|
||||
show_battery_range: "Mostrar autonomía de batería",
|
||||
show_fuel: "Mostrar combustible",
|
||||
show_fuel_range: "Mostrar autonomía de combustible",
|
||||
show_location: "Mostrar ubicación",
|
||||
show_mileage: "Mostrar kilometraje",
|
||||
show_car_state: "Mostrar estado del coche",
|
||||
show_charge_limit: "Mostrar límite de carga",
|
||||
hybrid_display_order: "Orden de visualización híbrida",
|
||||
fuel_first: "Combustible primero",
|
||||
battery_first: "Batería primero",
|
||||
images: "Imágenes",
|
||||
main_image: "Imagen principal",
|
||||
charging_image: "Imagen de carga",
|
||||
enter_image_url: "Introducir URL de imagen",
|
||||
upload_image: "Subir imagen",
|
||||
entity_settings: "Configuración de entidades",
|
||||
battery_level: "Nivel de batería",
|
||||
battery_range: "Autonomía de batería",
|
||||
fuel_level: "Nivel de combustible",
|
||||
fuel_range: "Autonomía de combustible",
|
||||
charging_status: "Estado de carga",
|
||||
location: "Ubicación",
|
||||
mileage: "Kilometraje",
|
||||
car_state: "Estado del coche",
|
||||
charge_limit: "Límite de carga",
|
||||
engine_on: "Motor encendido",
|
||||
icon_grid: "Cuadrícula de iconos",
|
||||
add_entity: "Añadir entidad",
|
||||
add_row_separator: "Añadir separador de fila",
|
||||
custom_icons: "Iconos personalizados",
|
||||
inactive_icon: "Icono inactivo",
|
||||
active_icon: "Icono activo",
|
||||
no_icon: "SIN ICONO",
|
||||
inactive_icon_color: "Color de icono inactivo",
|
||||
active_icon_color: "Color de icono activo",
|
||||
icon_style: "Estilo de icono",
|
||||
icon_size: "Tamaño de icono",
|
||||
icon_size_description: "Tamaño del icono.",
|
||||
icon_label_position: "Posición de la etiqueta del icono",
|
||||
left: "Izquierda",
|
||||
top: "Arriba",
|
||||
right: "Derecha",
|
||||
bottom: "Abajo",
|
||||
interaction: "Interacción",
|
||||
colors: "Colores",
|
||||
cardBackgroundColor: "Color de fondo de la tarjeta",
|
||||
barBackgroundColor: "Color de fondo de la barra",
|
||||
barBorderColor: "Color del borde de la barra",
|
||||
barFillColor: "Color de relleno de la barra",
|
||||
limitIndicatorColor: "Color del indicador de límite",
|
||||
infoTextColor: "Color del texto de información",
|
||||
carStateTextColor: "Color del texto del estado del coche",
|
||||
rangeTextColor: "Color del texto de autonomía",
|
||||
percentageTextColor: "Color del texto de porcentaje",
|
||||
none: "Ninguno",
|
||||
local_url: "Local/URL",
|
||||
entity: "Entidad",
|
||||
search_entities: "Buscar entidades",
|
||||
battery_level_description: "Seleccione la entidad que representa el nivel de batería de su vehículo.",
|
||||
battery_range_description: "Seleccione la entidad que representa la autonomía restante de su vehículo eléctrico.",
|
||||
charging_status_description: "Seleccione la entidad que indica si su vehículo está cargando actualmente.",
|
||||
charge_limit_description: "Seleccione la entidad que representa el límite de carga establecido para su vehículo.",
|
||||
location_description: "Seleccione la entidad que proporciona la ubicación actual de su vehículo.",
|
||||
mileage_description: "Seleccione la entidad que representa el kilometraje total o la lectura del odómetro de su vehículo.",
|
||||
car_state_description: "Seleccione la entidad que representa el estado actual de su vehículo (por ejemplo, estacionado, en movimiento, cargando).",
|
||||
icon_grid_description: "Añada entidades a la cuadrícula de iconos. Busque y seleccione entidades para añadir. Use el controlador de arrastre para reordenar entidades. Haga clic en el icono para cambiarlo y use (×) para eliminar una entidad de la cuadrícula.",
|
||||
custom_colors_description: "Personalice los colores de varios elementos en la tarjeta para que coincidan con su estilo o tema preferido.",
|
||||
row_separator: "Separador de fila",
|
||||
add_row_separator: "Añadir separador de fila",
|
||||
separator_color: "Color del separador",
|
||||
separator_color_description: "Elija el color para el separador de fila.",
|
||||
transparent: "Transparente",
|
||||
set_color: "Establecer color",
|
||||
separator_height: "Altura del separador",
|
||||
separator_height_description: "Establezca la altura del separador de fila en píxeles.",
|
||||
icon_gap_size: "Tamaño del espacio entre iconos",
|
||||
icon_gap_description: "Establezca el espacio entre iconos en píxeles.",
|
||||
horizontal_alignment: "Alineación horizontal",
|
||||
vertical_alignment: "Alineación vertical",
|
||||
more_info: "Más información",
|
||||
select_entity: "Seleccionar una entidad",
|
||||
entity_provides_image: "Esta entidad proporciona la imagen para la visualización.",
|
||||
toggle: "Alternar",
|
||||
navigate: "Navegar",
|
||||
url: "Abrir URL",
|
||||
trigger: "Activar",
|
||||
formatted_entities: "Entidades formateadas",
|
||||
formatted_entities_description: "Limpie los valores de las entidades redondeando números, reemplazando guiones bajos con espacios, capitalizando palabras y agregando comas a números grandes.",
|
||||
fuel_level_description: "Seleccione la entidad que representa el nivel de combustible de su vehículo.",
|
||||
fuel_range_description: "Seleccione la entidad que representa la autonomía de combustible restante de su vehículo.",
|
||||
engine_on_description: "Seleccione la entidad que indica si el motor de su vehículo está actualmente en funcionamiento.",
|
||||
main_image_height: "Altura de la imagen principal",
|
||||
charging_image_height: "Altura de la imagen de carga",
|
||||
main_image_section: "Configuración de la imagen principal",
|
||||
charging_image_section: "Configuración de la imagen de carga",
|
||||
layout_type: "Tipo de diseño",
|
||||
single_column: "Columna única",
|
||||
double_column: "Doble columna",
|
||||
engine_on_image: "Imagen de motor encendido",
|
||||
engine_on_image_height: "Altura de la imagen de motor encendido",
|
||||
engine_off_image: "Imagen de motor apagado",
|
||||
engine_off_image_height: "Altura de la imagen de motor apagado",
|
||||
engine_on_image_section: "Configuración de la imagen de motor encendido",
|
||||
use_bar_gradient: "Usar gradiente en la barra",
|
||||
bar_gradient_description: "Habilita un gradiente de color para la barra de progreso. Esto te permite establecer múltiples puntos de color para una representación visual más dinámica del estado del vehículo.",
|
||||
percentage: "Porcentaje",
|
||||
color: "Color",
|
||||
add_gradient_stop: "Añadir punto de gradiente",
|
||||
customize: "Personalizar",
|
||||
inactive_custom_label: "Etiqueta personalizada inactiva",
|
||||
active_custom_label: "Etiqueta personalizada activa",
|
||||
custom_label_placeholder: "Ingrese etiqueta personalizada",
|
||||
template_mode: "Modo plantilla",
|
||||
template_mode_description: "Ingrese su código de plantilla a continuación. Para salir del modo plantilla, seleccione un estado diferente del menú desplegable de arriba. Use {{ true }} y {{ false }} como expresiones para representar los estados de encendido y apagado."
|
||||
},
|
||||
device_class: {
|
||||
battery: {
|
||||
on: "Baja",
|
||||
off: "Normal"
|
||||
},
|
||||
battery_charging: {
|
||||
on: "Cargando",
|
||||
off: "No cargando"
|
||||
},
|
||||
carbon_monoxide: {
|
||||
on: "Detectado",
|
||||
off: "Despejado"
|
||||
},
|
||||
cold: {
|
||||
on: "Frío",
|
||||
off: "Normal"
|
||||
},
|
||||
connectivity: {
|
||||
on: "Conectado",
|
||||
off: "Desconectado"
|
||||
},
|
||||
door: {
|
||||
on: "Abierta",
|
||||
off: "Cerrada"
|
||||
},
|
||||
garage_door: {
|
||||
on: "Abierta",
|
||||
off: "Cerrada"
|
||||
},
|
||||
gas: {
|
||||
on: "Detectado",
|
||||
off: "Despejado"
|
||||
},
|
||||
heat: {
|
||||
on: "Caliente",
|
||||
off: "Normal"
|
||||
},
|
||||
light: {
|
||||
on: "Detectada",
|
||||
off: "Despejado"
|
||||
},
|
||||
lock: {
|
||||
on: "Desbloqueado",
|
||||
off: "Bloqueado"
|
||||
},
|
||||
moisture: {
|
||||
on: "Húmedo",
|
||||
off: "Seco"
|
||||
},
|
||||
motion: {
|
||||
on: "Detectado",
|
||||
off: "Despejado"
|
||||
},
|
||||
moving: {
|
||||
on: "Moviéndose",
|
||||
off: "Parado"
|
||||
},
|
||||
occupancy: {
|
||||
on: "Ocupado",
|
||||
off: "Despejado"
|
||||
},
|
||||
opening: {
|
||||
on: "Abierto",
|
||||
off: "Cerrado"
|
||||
},
|
||||
plug: {
|
||||
on: "Enchufado",
|
||||
off: "Desenchufado"
|
||||
},
|
||||
power: {
|
||||
on: "Detectada",
|
||||
off: "Sin energía"
|
||||
},
|
||||
presence: {
|
||||
on: "En casa",
|
||||
off: "Fuera"
|
||||
},
|
||||
problem: {
|
||||
on: "Problema",
|
||||
off: "OK"
|
||||
},
|
||||
running: {
|
||||
on: "Funcionando",
|
||||
off: "Parado"
|
||||
},
|
||||
safety: {
|
||||
on: "Inseguro",
|
||||
off: "Seguro"
|
||||
},
|
||||
smoke: {
|
||||
on: "Detectado",
|
||||
off: "Despejado"
|
||||
},
|
||||
sound: {
|
||||
on: "Detectado",
|
||||
off: "Despejado"
|
||||
},
|
||||
tamper: {
|
||||
on: "Detectado",
|
||||
off: "Despejado"
|
||||
},
|
||||
update: {
|
||||
on: "Disponible",
|
||||
off: "Actualizado"
|
||||
},
|
||||
vibration: {
|
||||
on: "Detectada",
|
||||
off: "Despejado"
|
||||
},
|
||||
window: {
|
||||
on: "Abierta",
|
||||
off: "Cerrada"
|
||||
}
|
||||
}
|
||||
}
|
||||
268
www/community/Ultra-Vehicle-Card/translations/fr.js
Normal file
@@ -0,0 +1,268 @@
|
||||
export default {
|
||||
common: {
|
||||
battery: "Batterie",
|
||||
fuel: "Carburant",
|
||||
range: "Autonomie",
|
||||
charging: "Chargement",
|
||||
mileage: "Kilométrage",
|
||||
location: "Emplacement",
|
||||
car_state: "État du véhicule",
|
||||
charge_limit: "Limite de charge",
|
||||
engine_on: "Moteur en marche",
|
||||
away: "Absent",
|
||||
charging_end_time: "Fin de charge",
|
||||
charging_ending_soon: "Charge se terminant bientôt",
|
||||
charging_ending_in: "Charge se terminant dans",
|
||||
charging_until: "Charge jusqu'à",
|
||||
minutes: "minutes",
|
||||
minute: "minute",
|
||||
hours: "heures",
|
||||
hour: "heure",
|
||||
state: {
|
||||
default: {
|
||||
on: "Allumé",
|
||||
off: "Éteint"
|
||||
}
|
||||
}
|
||||
},
|
||||
vehicle_types: {
|
||||
ev: "Véhicule électrique",
|
||||
fuel: "Véhicule à carburant",
|
||||
hybrid: "Hybride"
|
||||
},
|
||||
editor: {
|
||||
title: "Carte Ultra Véhicule",
|
||||
card_title: "Titre de la carte",
|
||||
vehicle_type: "Type de véhicule",
|
||||
unit_type: "Type d'unité",
|
||||
show_battery: "Afficher la batterie",
|
||||
show_battery_range: "Afficher l'autonomie de la batterie",
|
||||
show_fuel: "Afficher le carburant",
|
||||
show_fuel_range: "Afficher l'autonomie du carburant",
|
||||
show_location: "Afficher l'emplacement",
|
||||
show_mileage: "Afficher le kilométrage",
|
||||
show_car_state: "Afficher l'état du véhicule",
|
||||
show_charge_limit: "Afficher la limite de charge",
|
||||
hybrid_display_order: "Ordre d'affichage hybride",
|
||||
fuel_first: "Carburant en premier",
|
||||
battery_first: "Batterie en premier",
|
||||
images: "Images",
|
||||
main_image: "Image principale",
|
||||
charging_image: "Image de charge",
|
||||
enter_image_url: "Entrer l'URL de l'image",
|
||||
upload_image: "Télécharger une image",
|
||||
entity_settings: "Paramètres des entités",
|
||||
battery_level: "Niveau de batterie",
|
||||
battery_range: "Autonomie de la batterie",
|
||||
fuel_level: "Niveau de carburant",
|
||||
fuel_range: "Autonomie du carburant",
|
||||
charging_status: "État de charge",
|
||||
location: "Emplacement",
|
||||
mileage: "Kilométrage",
|
||||
car_state: "État du véhicule",
|
||||
charge_limit: "Limite de charge",
|
||||
engine_on: "Moteur en marche",
|
||||
icon_grid: "Grille d'icônes",
|
||||
add_entity: "Ajouter une entité",
|
||||
add_row_separator: "Ajouter un séparateur de ligne",
|
||||
custom_icons: "Icônes personnalisées",
|
||||
inactive_icon: "Icône inactive",
|
||||
active_icon: "Icône active",
|
||||
no_icon: "PAS D'ICÔNE",
|
||||
inactive_icon_color: "Couleur de l'icône inactive",
|
||||
active_icon_color: "Couleur de l'icône active",
|
||||
icon_style: "Style d'icône",
|
||||
icon_size: "Taille de l'icône",
|
||||
icon_size_description: "Taille de l'icône.",
|
||||
icon_label_position: "Position de l'étiquette de l'icône",
|
||||
left: "Gauche",
|
||||
top: "Haut",
|
||||
right: "Droite",
|
||||
bottom: "Bas",
|
||||
interaction: "Interaction",
|
||||
colors: "Couleurs",
|
||||
cardBackgroundColor: "Couleur de fond de la carte",
|
||||
barBackgroundColor: "Couleur de fond de la barre",
|
||||
barBorderColor: "Couleur de bordure de la barre",
|
||||
barFillColor: "Couleur de remplissage de la barre",
|
||||
limitIndicatorColor: "Couleur de l'indicateur de limite",
|
||||
infoTextColor: "Couleur du texte d'information",
|
||||
carStateTextColor: "Couleur du texte d'état du véhicule",
|
||||
rangeTextColor: "Couleur du texte d'autonomie",
|
||||
percentageTextColor: "Couleur du texte de pourcentage",
|
||||
none: "Aucun",
|
||||
local_url: "Local/URL",
|
||||
entity: "Entité",
|
||||
search_entities: "Rechercher des entités",
|
||||
battery_level_description: "Sélectionnez l'entité qui représente le niveau de batterie de votre véhicule.",
|
||||
battery_range_description: "Sélectionnez l'entité qui représente l'autonomie restante de votre véhicule électrique.",
|
||||
charging_status_description: "Sélectionnez l'entité qui indique si votre véhicule est actuellement en charge.",
|
||||
charge_limit_description: "Sélectionnez l'entité qui représente la limite de charge définie pour votre véhicule.",
|
||||
location_description: "Sélectionnez l'entité qui fournit l'emplacement actuel de votre véhicule.",
|
||||
mileage_description: "Sélectionnez l'entité qui représente le kilométrage total ou la lecture de l'odomètre de votre véhicule.",
|
||||
car_state_description: "Sélectionnez l'entité qui représente l'état actuel de votre véhicule (par exemple, stationné, en mouvement, en charge).",
|
||||
icon_grid_description: "Ajoutez des entités à la grille d'icônes. Recherchez et sélectionnez des entités à ajouter. Utilisez la poignée de glissement pour réorganiser les entités. Cliquez sur l'icône pour la modifier et utilisez (×) pour supprimer une entité de la grille.",
|
||||
custom_colors_description: "Personnalisez les couleurs de divers éléments de la carte pour correspondre à votre style ou thème préféré.",
|
||||
row_separator: "Séparateur de ligne",
|
||||
add_row_separator: "Ajouter un séparateur de ligne",
|
||||
separator_color: "Couleur du séparateur",
|
||||
separator_color_description: "Choisissez la couleur du séparateur de ligne.",
|
||||
transparent: "Transparent",
|
||||
set_color: "Définir la couleur",
|
||||
separator_height: "Hauteur du séparateur",
|
||||
separator_height_description: "Définissez la hauteur du séparateur de ligne en pixels.",
|
||||
icon_gap_size: "Taille de l'espace entre les icônes",
|
||||
icon_gap_description: "Définissez l'espace entre les icônes en pixels.",
|
||||
horizontal_alignment: "Alignement horizontal",
|
||||
vertical_alignment: "Alignement vertical",
|
||||
more_info: "Plus d'informations",
|
||||
select_entity: "Sélectionner une entité",
|
||||
entity_provides_image: "Cette entité fournit l'image pour l'affichage.",
|
||||
toggle: "Basculer",
|
||||
navigate: "Naviguer",
|
||||
url: "Ouvrir l'URL",
|
||||
trigger: "Déclencher",
|
||||
formatted_entities: "Entités formatées",
|
||||
formatted_entities_description: "Nettoyez les valeurs des entités en arrondissant les nombres, en remplaçant les tirets bas par des espaces, en mettant les mots en majuscules et en ajoutant des virgules aux grands nombres.",
|
||||
fuel_level_description: "Sélectionnez l'entité qui représente le niveau de carburant de votre véhicule.",
|
||||
fuel_range_description: "Sélectionnez l'entité qui représente l'autonomie de carburant restante de votre véhicule.",
|
||||
engine_on_description: "Sélectionnez l'entité qui indique si le moteur de votre véhicule est actuellement en marche.",
|
||||
main_image_height: "Hauteur de l'image principale",
|
||||
charging_image_height: "Hauteur de l'image de charge",
|
||||
main_image_section: "Paramètres de l'image principale",
|
||||
charging_image_section: "Paramètres de l'image de charge",
|
||||
layout_type: "Type de mise en page",
|
||||
single_column: "Colonne unique",
|
||||
double_column: "Double colonne",
|
||||
engine_on_image: "Image moteur en marche",
|
||||
engine_on_image_height: "Hauteur de l'image moteur en marche",
|
||||
engine_off_image: "Image moteur arrêté",
|
||||
engine_off_image_height: "Hauteur de l'image moteur arrêté",
|
||||
engine_on_image_section: "Paramètres de l'image moteur en marche",
|
||||
use_bar_gradient: "Utiliser un dégradé pour la barre",
|
||||
bar_gradient_description: "Activer un dégradé de couleur pour la barre de progression. Cela vous permet de définir plusieurs arrêts de couleur pour une représentation visuelle plus dynamique de l'état du véhicule.",
|
||||
percentage: "Pourcentage",
|
||||
color: "Couleur",
|
||||
add_gradient_stop: "Ajouter un arrêt de dégradé",
|
||||
customize: "Personnaliser",
|
||||
inactive_custom_label: "Étiquette personnalisée inactive",
|
||||
active_custom_label: "Étiquette personnalisée active",
|
||||
custom_label_placeholder: "Entrez une étiquette personnalisée",
|
||||
template_mode: "Mode modèle",
|
||||
template_mode_description: "Entrez votre code de modèle ci-dessous. Pour quitter le mode modèle, sélectionnez un état différent dans la liste déroulante ci-dessus. Utilisez {{ true }} et {{ false }} comme expressions pour représenter les états activé et désactivé."
|
||||
},
|
||||
device_class: {
|
||||
battery: {
|
||||
on: "Faible",
|
||||
off: "Normal"
|
||||
},
|
||||
battery_charging: {
|
||||
on: "En charge",
|
||||
off: "Pas en charge"
|
||||
},
|
||||
carbon_monoxide: {
|
||||
on: "Détecté",
|
||||
off: "Aucun"
|
||||
},
|
||||
cold: {
|
||||
on: "Froid",
|
||||
off: "Normal"
|
||||
},
|
||||
connectivity: {
|
||||
on: "Connecté",
|
||||
off: "Déconnecté"
|
||||
},
|
||||
door: {
|
||||
on: "Ouverte",
|
||||
off: "Fermée"
|
||||
},
|
||||
garage_door: {
|
||||
on: "Ouverte",
|
||||
off: "Fermée"
|
||||
},
|
||||
gas: {
|
||||
on: "Détecté",
|
||||
off: "Aucun"
|
||||
},
|
||||
heat: {
|
||||
on: "Chaud",
|
||||
off: "Normal"
|
||||
},
|
||||
light: {
|
||||
on: "Détectée",
|
||||
off: "Aucune"
|
||||
},
|
||||
lock: {
|
||||
on: "Déverrouillé",
|
||||
off: "Verrouillé"
|
||||
},
|
||||
moisture: {
|
||||
on: "Humide",
|
||||
off: "Sec"
|
||||
},
|
||||
motion: {
|
||||
on: "Détecté",
|
||||
off: "Aucun"
|
||||
},
|
||||
moving: {
|
||||
on: "En mouvement",
|
||||
off: "Arrêté"
|
||||
},
|
||||
occupancy: {
|
||||
on: "Occupé",
|
||||
off: "Libre"
|
||||
},
|
||||
opening: {
|
||||
on: "Ouvert",
|
||||
off: "Fermé"
|
||||
},
|
||||
plug: {
|
||||
on: "Branché",
|
||||
off: "Débranché"
|
||||
},
|
||||
power: {
|
||||
on: "Détectée",
|
||||
off: "Pas d'alimentation"
|
||||
},
|
||||
presence: {
|
||||
on: "Présent",
|
||||
off: "Absent"
|
||||
},
|
||||
problem: {
|
||||
on: "Problème",
|
||||
off: "OK"
|
||||
},
|
||||
running: {
|
||||
on: "En marche",
|
||||
off: "Arrêté"
|
||||
},
|
||||
safety: {
|
||||
on: "Dangereux",
|
||||
off: "Sûr"
|
||||
},
|
||||
smoke: {
|
||||
on: "Détectée",
|
||||
off: "Aucune"
|
||||
},
|
||||
sound: {
|
||||
on: "Détecté",
|
||||
off: "Aucun"
|
||||
},
|
||||
tamper: {
|
||||
on: "Détectée",
|
||||
off: "Aucune"
|
||||
},
|
||||
update: {
|
||||
on: "Disponible",
|
||||
off: "À jour"
|
||||
},
|
||||
vibration: {
|
||||
on: "Détectée",
|
||||
off: "Aucune"
|
||||
},
|
||||
window: {
|
||||
on: "Ouverte",
|
||||
off: "Fermée"
|
||||
}
|
||||
}
|
||||
}
|
||||
273
www/community/Ultra-Vehicle-Card/translations/nb.js
Normal file
@@ -0,0 +1,273 @@
|
||||
export default {
|
||||
common: {
|
||||
battery: "Batteri",
|
||||
fuel: "Drivstoff",
|
||||
range: "Rekkevidde",
|
||||
charging: "Lader",
|
||||
mileage: "Kilometerstand",
|
||||
location: "Plassering",
|
||||
car_state: "Bilstatus",
|
||||
charge_limit: "Ladelimit",
|
||||
engine_on: "Motor på",
|
||||
away: "Borte",
|
||||
charging_end_time: "Ladeslutt",
|
||||
charging_ending_soon: "Lading avsluttes snart",
|
||||
charging_ending_in: "Lading avsluttes om",
|
||||
charging_until: "Lader til",
|
||||
minutes: "minutter",
|
||||
minute: "minutt",
|
||||
hours: "timer",
|
||||
hour: "time",
|
||||
state: {
|
||||
default: {
|
||||
on: "På",
|
||||
off: "Av"
|
||||
}
|
||||
}
|
||||
},
|
||||
vehicle_types: {
|
||||
ev: "Elektrisk kjøretøy",
|
||||
fuel: "Drivstoffkjøretøy",
|
||||
hybrid: "Hybrid"
|
||||
},
|
||||
editor: {
|
||||
title: "Ultra Kjøretøykort",
|
||||
card_title: "Korttittel",
|
||||
vehicle_type: "Kjøretøytype",
|
||||
unit_type: "Enhetstype",
|
||||
show_battery: "Vis batteri",
|
||||
show_battery_range: "Vis batterirekkevidde",
|
||||
show_fuel: "Vis drivstoff",
|
||||
show_fuel_range: "Vis drivstoffrekkevidde",
|
||||
show_location: "Vis plassering",
|
||||
show_mileage: "Vis kilometerstand",
|
||||
show_car_state: "Vis bilstatus",
|
||||
show_charge_limit: "Vis ladelimit",
|
||||
hybrid_display_order: "Hybrid visningsrekkefølge",
|
||||
fuel_first: "Drivstoff først",
|
||||
battery_first: "Batteri først",
|
||||
images: "Bilder",
|
||||
main_image: "Hovedbilde",
|
||||
charging_image: "Ladebilde",
|
||||
enter_image_url: "Skriv inn bilde-URL",
|
||||
upload_image: "Last opp bilde",
|
||||
entity_settings: "Enhetsinnstillinger",
|
||||
battery_level: "Batterinivå",
|
||||
battery_range: "Batterirekkevidde",
|
||||
fuel_level: "Drivstoffnivå",
|
||||
fuel_range: "Drivstoffrekkevidde",
|
||||
charging_status: "Ladestatus",
|
||||
location: "Plassering",
|
||||
mileage: "Kilometerstand",
|
||||
car_state: "Bilstatus",
|
||||
charge_limit: "Ladelimit",
|
||||
engine_on: "Motor på",
|
||||
icon_grid: "Ikonrutenett",
|
||||
add_entity: "Legg til enhet",
|
||||
add_row_separator: "Legg til radskiller",
|
||||
custom_icons: "Tilpassede ikoner",
|
||||
inactive_icon: "Inaktivt ikon",
|
||||
active_icon: "Aktivt ikon",
|
||||
no_icon: "INGEN IKON",
|
||||
inactive_icon_color: "Inaktiv ikonfarge",
|
||||
active_icon_color: "Aktiv ikonfarge",
|
||||
icon_style: "Ikonstil",
|
||||
icon_size: "Ikonstørrelse",
|
||||
icon_size_description: "Størrelse på ikonet.",
|
||||
icon_label_position: "Ikonetikettposisjon",
|
||||
left: "Venstre",
|
||||
top: "Topp",
|
||||
right: "Høyre",
|
||||
bottom: "Bunn",
|
||||
interaction: "Interaksjon",
|
||||
colors: "Farger",
|
||||
cardBackgroundColor: "Kortbakgrunnsfarge",
|
||||
barBackgroundColor: "Linjebakgrunnsfarge",
|
||||
barBorderColor: "Linjekantfarge",
|
||||
barFillColor: "Linjefyllfarge",
|
||||
limitIndicatorColor: "Limitindikatorfarge",
|
||||
infoTextColor: "Infotekstfarge",
|
||||
carStateTextColor: "Bilstatustekstfarge",
|
||||
rangeTextColor: "Rekkeviddtekstfarge",
|
||||
percentageTextColor: "Prosenttekstfarge",
|
||||
none: "Ingen",
|
||||
local_url: "Lokal/URL",
|
||||
entity: "Enhet",
|
||||
search_entities: "Søk enheter",
|
||||
battery_level_description: "Velg enheten som representerer batterinivået til kjøretøyet ditt.",
|
||||
battery_range_description: "Velg enheten som representerer gjenværende rekkevidde for ditt elektriske kjøretøy.",
|
||||
charging_status_description: "Velg enheten som indikerer om kjøretøyet ditt lader for øyeblikket.",
|
||||
charge_limit_description: "Velg enheten som representerer ladelimiten satt for kjøretøyet ditt.",
|
||||
location_description: "Velg enheten som gir den nåværende plasseringen til kjøretøyet ditt.",
|
||||
mileage_description: "Velg enheten som representerer total kjørelengde eller kilometerstand for kjøretøyet ditt.",
|
||||
car_state_description: "Velg enheten som representerer den nåværende tilstanden til kjøretøyet ditt (f.eks. parkert, kjrer, lader).",
|
||||
icon_grid_description: "Legg til enheter i ikonrutenettet. Søk og velg enheter å legge til. Bruk drahåndtaket for å omorganisere enheter. Klikk på ikonet for å endre det, og bruk (×) for å fjerne en enhet fra rutenettet.",
|
||||
custom_colors_description: "Tilpass fargene på ulike elementer i kortet for å matche din foretrukne stil eller tema.",
|
||||
row_separator: "Radskiller",
|
||||
add_row_separator: "Legg til radskiller",
|
||||
separator_color: "Skillefarge",
|
||||
separator_color_description: "Velg farge for radskilleren.",
|
||||
transparent: "Gjennomsiktig",
|
||||
set_color: "Sett farge",
|
||||
separator_height: "Skillerhøyde",
|
||||
separator_height_description: "Sett høyden på radskilleren i piksler.",
|
||||
icon_gap_size: "Ikongapstørrelse",
|
||||
icon_gap_description: "Sett gapet mellom ikoner i piksler.",
|
||||
horizontal_alignment: "Horisontal justering",
|
||||
vertical_alignment: "Vertikal justering",
|
||||
more_info: "Mer info",
|
||||
select_entity: "Velg en enhet",
|
||||
entity_provides_image: "Denne enheten gir bildet for visningen.",
|
||||
toggle: "Veksle",
|
||||
navigate: "Naviger",
|
||||
url: "Åpne URL",
|
||||
trigger: "Utløs",
|
||||
formatted_entities: "Formaterte enheter",
|
||||
formatted_entities_description: "Rens enhetsverdier ved å runde av tall, erstatte understreker med mellomrom, kapitalisere ord og legge til komma i store tall.",
|
||||
fuel_level_description: "Velg enheten som representerer drivstoffnivået til kjøretøyet ditt.",
|
||||
fuel_range_description: "Velg enheten som representerer gjenværende drivstoffrekkevidde for kjøretøyet ditt.",
|
||||
engine_on_description: "Velg enheten som indikerer om motoren til kjøretøyet ditt er i gang.",
|
||||
main_image_height: "Hovedbildehøyde",
|
||||
charging_image_height: "Ladebildehøyde",
|
||||
main_image_section: "Hovedbildeinnstillinger",
|
||||
charging_image_section: "Ladebildeinnstillinger",
|
||||
layout_type: "Layouttype",
|
||||
single_column: "Enkeltkolonne",
|
||||
double_column: "Dobbeltkolonne",
|
||||
engine_on_image: "Bilde for motor på",
|
||||
engine_on_image_height: "Høyde på bilde for motor på",
|
||||
engine_off_image: "Bilde for motor av",
|
||||
engine_off_image_height: "Høyde på bilde for motor av",
|
||||
engine_on_image_section: "Innstillinger for bilde med motor på",
|
||||
use_bar_gradient: "Bruk gradientlinje",
|
||||
bar_gradient_description: "Aktiver en fargegradient for fremdriftslinjen. Dette lar deg sette flere fargepunkter for en mer dynamisk visuell representasjon av kjøretøyets status.",
|
||||
percentage: "Prosent",
|
||||
color: "Farge",
|
||||
add_gradient_stop: "Legg til gradientstoppunkt",
|
||||
reset_all_colors: "Tilbakestill alle farger",
|
||||
reset_all_icon_colors: "Tilbakestill alle ikonfarger",
|
||||
settings: "Innstillinger",
|
||||
customize: "Tilpass",
|
||||
icon_grid: "Ikonrutenett",
|
||||
customize: "Tilpass",
|
||||
inactive_custom_label: "Inaktiv tilpasset etikett",
|
||||
active_custom_label: "Aktiv tilpasset etikett",
|
||||
custom_label_placeholder: "Skriv inn tilpasset etikett",
|
||||
template_mode: "Mal-modus",
|
||||
template_mode_description: "Skriv inn malkoden din nedenfor. For å avslutte mal-modus, velg en annen tilstand fra rullegardinmenyen ovenfor. Bruk {{ true }} og {{ false }} som uttrykk for å representere på- og av-tilstander."
|
||||
},
|
||||
device_class: {
|
||||
battery: {
|
||||
on: "Lav",
|
||||
off: "Normal"
|
||||
},
|
||||
battery_charging: {
|
||||
on: "Lader",
|
||||
off: "Lader ikke"
|
||||
},
|
||||
carbon_monoxide: {
|
||||
on: "Oppdaget",
|
||||
off: "Klar"
|
||||
},
|
||||
cold: {
|
||||
on: "Kald",
|
||||
off: "Normal"
|
||||
},
|
||||
connectivity: {
|
||||
on: "Tilkoblet",
|
||||
off: "Frakoblet"
|
||||
},
|
||||
door: {
|
||||
on: "Åpen",
|
||||
off: "Lukket"
|
||||
},
|
||||
garage_door: {
|
||||
on: "Åpen",
|
||||
off: "Lukket"
|
||||
},
|
||||
gas: {
|
||||
on: "Oppdaget",
|
||||
off: "Klar"
|
||||
},
|
||||
heat: {
|
||||
on: "Varm",
|
||||
off: "Normal"
|
||||
},
|
||||
light: {
|
||||
on: "Oppdaget",
|
||||
off: "Klar"
|
||||
},
|
||||
lock: {
|
||||
on: "Ulåst",
|
||||
off: "Låst"
|
||||
},
|
||||
moisture: {
|
||||
on: "Fuktig",
|
||||
off: "Tørr"
|
||||
},
|
||||
motion: {
|
||||
on: "Oppdaget",
|
||||
off: "Klar"
|
||||
},
|
||||
moving: {
|
||||
on: "Beveger seg",
|
||||
off: "Stoppet"
|
||||
},
|
||||
occupancy: {
|
||||
on: "Opptatt",
|
||||
off: "Klar"
|
||||
},
|
||||
opening: {
|
||||
on: "Åpen",
|
||||
off: "Lukket"
|
||||
},
|
||||
plug: {
|
||||
on: "Tilkoblet",
|
||||
off: "Frakoblet"
|
||||
},
|
||||
power: {
|
||||
on: "Oppdaget",
|
||||
off: "Ingen strøm"
|
||||
},
|
||||
presence: {
|
||||
on: "Hjemme",
|
||||
off: "Borte"
|
||||
},
|
||||
problem: {
|
||||
on: "Problem",
|
||||
off: "OK"
|
||||
},
|
||||
running: {
|
||||
on: "Kjører",
|
||||
off: "Kjører ikke"
|
||||
},
|
||||
safety: {
|
||||
on: "Usikker",
|
||||
off: "Sikker"
|
||||
},
|
||||
smoke: {
|
||||
on: "Oppdaget",
|
||||
off: "Klar"
|
||||
},
|
||||
sound: {
|
||||
on: "Oppdaget",
|
||||
off: "Klar"
|
||||
},
|
||||
tamper: {
|
||||
on: "Oppdaget",
|
||||
off: "Klar"
|
||||
},
|
||||
update: {
|
||||
on: "Tilgjengelig",
|
||||
off: "Oppdatert"
|
||||
},
|
||||
vibration: {
|
||||
on: "Oppdaget",
|
||||
off: "Klar"
|
||||
},
|
||||
window: {
|
||||
on: "Åpen",
|
||||
off: "Lukket"
|
||||
}
|
||||
}
|
||||
}
|
||||
272
www/community/Ultra-Vehicle-Card/translations/nl.js
Normal file
@@ -0,0 +1,272 @@
|
||||
export default {
|
||||
common: {
|
||||
battery: "Accu",
|
||||
fuel: "Brandstof",
|
||||
range: "Bereik",
|
||||
charging: "Opladen",
|
||||
mileage: "Kilometerstand",
|
||||
location: "Locatie",
|
||||
car_state: "Autostatus",
|
||||
charge_limit: "Oplaadlimiet",
|
||||
engine_on: "Motor aan",
|
||||
away: "Afwezig",
|
||||
charging_end_time: "Einde oplaadtijd",
|
||||
charging_ending_soon: "Opladen eindigt binnenkort",
|
||||
charging_ending_in: "Opladen eindigt over",
|
||||
charging_until: "Opladen tot",
|
||||
minutes: "minuten",
|
||||
minute: "minuut",
|
||||
hours: "uren",
|
||||
hour: "uur",
|
||||
state: {
|
||||
default: {
|
||||
on: "Aan",
|
||||
off: "Uit"
|
||||
}
|
||||
}
|
||||
},
|
||||
vehicle_types: {
|
||||
ev: "Elektrisch voertuig",
|
||||
fuel: "Brandstofvoertuig",
|
||||
hybrid: "Hybride"
|
||||
},
|
||||
editor: {
|
||||
title: "Ultra Voertuigkaart",
|
||||
card_title: "Kaarttitel",
|
||||
vehicle_type: "Voertuigtype",
|
||||
unit_type: "Eenheidstype",
|
||||
show_battery: "Toon accu",
|
||||
show_battery_range: "Toon accubereik",
|
||||
show_fuel: "Toon brandstof",
|
||||
show_fuel_range: "Toon brandstofbereik",
|
||||
show_location: "Toon locatie",
|
||||
show_mileage: "Toon kilometerstand",
|
||||
show_car_state: "Toon autostatus",
|
||||
show_charge_limit: "Toon oplaadlimiet",
|
||||
hybrid_display_order: "Hybride weergavevolgorde",
|
||||
fuel_first: "Brandstof eerst",
|
||||
battery_first: "Accu eerst",
|
||||
images: "Afbeeldingen",
|
||||
main_image: "Hoofdafbeelding",
|
||||
charging_image: "Oplaadafbeelding",
|
||||
enter_image_url: "Voer afbeeldings-URL in",
|
||||
upload_image: "Upload afbeelding",
|
||||
entity_settings: "Entiteitsinstellingen",
|
||||
battery_level: "Accuniveau",
|
||||
battery_range: "Accubereik",
|
||||
fuel_level: "Brandstofniveau",
|
||||
fuel_range: "Brandstofbereik",
|
||||
charging_status: "Oplaadstatus",
|
||||
location: "Locatie",
|
||||
mileage: "Kilometerstand",
|
||||
car_state: "Autostatus",
|
||||
charge_limit: "Oplaadlimiet",
|
||||
engine_on: "Motor aan",
|
||||
icon_grid: "Iconenraster",
|
||||
add_entity: "Entiteit toevoegen",
|
||||
add_row_separator: "Rijscheiding toevoegen",
|
||||
custom_icons: "Aangepaste iconen",
|
||||
inactive_icon: "Inactief icoon",
|
||||
active_icon: "Actief icoon",
|
||||
no_icon: "GEEN ICOON",
|
||||
inactive_icon_color: "Inactieve icoonkleur",
|
||||
active_icon_color: "Actieve icoonkleur",
|
||||
icon_style: "Icoonstijl",
|
||||
icon_size: "Icoongrootte",
|
||||
icon_size_description: "Grootte van het icoon.",
|
||||
icon_label_position: "Positie icoonlabel",
|
||||
left: "Links",
|
||||
top: "Boven",
|
||||
right: "Rechts",
|
||||
bottom: "Onder",
|
||||
interaction: "Interactie",
|
||||
colors: "Kleuren",
|
||||
cardBackgroundColor: "Kaartachtergrondkleur",
|
||||
barBackgroundColor: "Balkachtergrondkleur",
|
||||
barBorderColor: "Balkrandkleur",
|
||||
barFillColor: "Balkvulkleur",
|
||||
limitIndicatorColor: "Limietindicatorkleur",
|
||||
infoTextColor: "Infotekstkleur",
|
||||
carStateTextColor: "Autostatustekstkleur",
|
||||
rangeTextColor: "Bereiktekstkleur",
|
||||
percentageTextColor: "Percentagetekstkleur",
|
||||
none: "Geen",
|
||||
local_url: "Lokaal/URL",
|
||||
entity: "Entiteit",
|
||||
search_entities: "Zoek entiteiten",
|
||||
battery_level_description: "Selecteer de entiteit die het accuniveau van uw voertuig weergeeft.",
|
||||
battery_range_description: "Selecteer de entiteit die het resterende bereik van uw elektrische voertuig weergeeft.",
|
||||
charging_status_description: "Selecteer de entiteit die aangeeft of uw voertuig momenteel aan het opladen is.",
|
||||
charge_limit_description: "Selecteer de entiteit die de ingestelde oplaadlimiet voor uw voertuig weergeeft.",
|
||||
location_description: "Selecteer de entiteit die de huidige locatie van uw voertuig weergeeft.",
|
||||
mileage_description: "Selecteer de entiteit die de totale kilometerstand of kilometertellerstand van uw voertuig weergeeft.",
|
||||
car_state_description: "Selecteer de entiteit die de huidige status van uw voertuig weergeeft (bijv. geparkeerd, rijdend, opladen).",
|
||||
icon_grid_description: "Voeg entiteiten toe aan het iconenraster. Zoek en selecteer entiteiten om toe te voegen. Gebruik de sleepgreep om entiteiten te herschikken. Klik op het icoon om het te wijzigen en gebruik (×) om een entiteit uit het raster te verwijderen.",
|
||||
custom_colors_description: "Pas de kleuren van verschillende elementen in de kaart aan om te passen bij uw voorkeurssstijl of thema.",
|
||||
row_separator: "Rijscheiding",
|
||||
add_row_separator: "Rijscheiding toevoegen",
|
||||
separator_color: "Scheidingskleur",
|
||||
separator_color_description: "Kies de kleur voor de rijscheiding.",
|
||||
transparent: "Transparant",
|
||||
set_color: "Kleur instellen",
|
||||
separator_height: "Scheidingshoogte",
|
||||
separator_height_description: "Stel de hoogte van de rijscheiding in pixels in.",
|
||||
icon_gap_size: "Icoonafstandgrootte",
|
||||
icon_gap_description: "Stel de afstand tussen iconen in pixels in.",
|
||||
horizontal_alignment: "Horizontale uitlijning",
|
||||
vertical_alignment: "Verticale uitlijning",
|
||||
more_info: "Meer info",
|
||||
select_entity: "Selecteer een entiteit",
|
||||
entity_provides_image: "Deze entiteit levert de afbeelding voor de weergave.",
|
||||
toggle: "Schakelen",
|
||||
navigate: "Navigeren",
|
||||
url: "URL openen",
|
||||
trigger: "Activeren",
|
||||
formatted_entities: "Geformatteerde entiteiten",
|
||||
formatted_entities_description: "Maak entiteitswaarden op door getallen af te ronden, underscores te vervangen door spaties, woorden te kapitaliseren en komma's toe te voegen aan grote getallen.",
|
||||
fuel_level_description: "Selecteer de entiteit die het brandstofniveau van uw voertuig weergeeft.",
|
||||
fuel_range_description: "Selecteer de entiteit die het resterende brandstofbereik van uw voertuig weergeeft.",
|
||||
engine_on_description: "Selecteer de entiteit die aangeeft of de motor van uw voertuig momenteel draait.",
|
||||
main_image_height: "Hoofdafbeeldingshoogte",
|
||||
charging_image_height: "Oplaadafbeeldingshoogte",
|
||||
main_image_section: "Hoofdafbeeldingsinstellingen",
|
||||
charging_image_section: "Oplaadafbeeldingsinstellingen",
|
||||
layout_type: "Lay-outtype",
|
||||
single_column: "Enkele kolom",
|
||||
double_column: "Dubbele kolom",
|
||||
engine_on_image: "Afbeelding voor motor aan",
|
||||
engine_on_image_height: "Hoogte van afbeelding voor motor aan",
|
||||
engine_off_image: "Afbeelding voor motor uit",
|
||||
engine_off_image_height: "Hoogte van afbeelding voor motor uit",
|
||||
engine_on_image_section: "Instellingen voor afbeelding met motor aan",
|
||||
use_bar_gradient: "Gebruik balkgradiënt",
|
||||
bar_gradient_description: "Schakel een kleurgradiënt in voor de voortgangsbalk. Hiermee kunt u meerdere kleurstops instellen voor een meer dynamische visuele weergave van de voertuigstatus.",
|
||||
percentage: "Percentage",
|
||||
color: "Kleur",
|
||||
add_gradient_stop: "Voeg gradiëntstop toe",
|
||||
reset_all_colors: "Alle kleuren resetten",
|
||||
reset_all_icon_colors: "Alle icoonkleuren resetten",
|
||||
settings: "Instellingen",
|
||||
icon_grid: "Iconenraster",
|
||||
customize: "Aanpassen",
|
||||
inactive_custom_label: "Inactief aangepast label",
|
||||
active_custom_label: "Actief aangepast label",
|
||||
custom_label_placeholder: "Voer aangepast label in",
|
||||
template_mode: "Sjabloonmodus",
|
||||
template_mode_description: "Voer hieronder uw sjablooncode in. Om de sjabloonmodus te verlaten, selecteert u een andere status uit de bovenstaande vervolgkeuzelijst. Gebruik {{ true }} en {{ false }} als uitdrukkingen om aan- en uit-toestanden weer te geven."
|
||||
},
|
||||
device_class: {
|
||||
battery: {
|
||||
on: "Laag",
|
||||
off: "Normaal"
|
||||
},
|
||||
battery_charging: {
|
||||
on: "Opladen",
|
||||
off: "Niet opladen"
|
||||
},
|
||||
carbon_monoxide: {
|
||||
on: "Gedetecteerd",
|
||||
off: "Vrij"
|
||||
},
|
||||
cold: {
|
||||
on: "Koud",
|
||||
off: "Normaal"
|
||||
},
|
||||
connectivity: {
|
||||
on: "Verbonden",
|
||||
off: "Niet verbonden"
|
||||
},
|
||||
door: {
|
||||
on: "Open",
|
||||
off: "Gesloten"
|
||||
},
|
||||
garage_door: {
|
||||
on: "Open",
|
||||
off: "Gesloten"
|
||||
},
|
||||
gas: {
|
||||
on: "Gedetecteerd",
|
||||
off: "Vrij"
|
||||
},
|
||||
heat: {
|
||||
on: "Heet",
|
||||
off: "Normaal"
|
||||
},
|
||||
light: {
|
||||
on: "Gedetecteerd",
|
||||
off: "Vrij"
|
||||
},
|
||||
lock: {
|
||||
on: "Ontgrendeld",
|
||||
off: "Vergrendeld"
|
||||
},
|
||||
moisture: {
|
||||
on: "Vochtig",
|
||||
off: "Droog"
|
||||
},
|
||||
motion: {
|
||||
on: "Gedetecteerd",
|
||||
off: "Vrij"
|
||||
},
|
||||
moving: {
|
||||
on: "Bewegend",
|
||||
off: "Gestopt"
|
||||
},
|
||||
occupancy: {
|
||||
on: "Bezet",
|
||||
off: "Vrij"
|
||||
},
|
||||
opening: {
|
||||
on: "Open",
|
||||
off: "Gesloten"
|
||||
},
|
||||
plug: {
|
||||
on: "Aangesloten",
|
||||
off: "Niet aangesloten"
|
||||
},
|
||||
power: {
|
||||
on: "Gedetecteerd",
|
||||
off: "Geen stroom"
|
||||
},
|
||||
presence: {
|
||||
on: "Thuis",
|
||||
off: "Afwezig"
|
||||
},
|
||||
problem: {
|
||||
on: "Probleem",
|
||||
off: "OK"
|
||||
},
|
||||
running: {
|
||||
on: "Actief",
|
||||
off: "Inactief"
|
||||
},
|
||||
safety: {
|
||||
on: "Onveilig",
|
||||
off: "Veilig"
|
||||
},
|
||||
smoke: {
|
||||
on: "Gedetecteerd",
|
||||
off: "Vrij"
|
||||
},
|
||||
sound: {
|
||||
on: "Gedetecteerd",
|
||||
off: "Vrij"
|
||||
},
|
||||
tamper: {
|
||||
on: "Gedetecteerd",
|
||||
off: "Vrij"
|
||||
},
|
||||
update: {
|
||||
on: "Beschikbaar",
|
||||
off: "Bijgewerkt"
|
||||
},
|
||||
vibration: {
|
||||
on: "Gedetecteerd",
|
||||
off: "Vrij"
|
||||
},
|
||||
window: {
|
||||
on: "Open",
|
||||
off: "Gesloten"
|
||||
}
|
||||
}
|
||||
}
|
||||
272
www/community/Ultra-Vehicle-Card/translations/nn.js
Normal file
@@ -0,0 +1,272 @@
|
||||
export default {
|
||||
common: {
|
||||
battery: "Batteri",
|
||||
fuel: "Drivstoff",
|
||||
range: "Rekkevidde",
|
||||
charging: "Lading",
|
||||
mileage: "Kilometerstand",
|
||||
location: "Plassering",
|
||||
car_state: "Bilstatus",
|
||||
charge_limit: "Ladelimit",
|
||||
engine_on: "Motor på",
|
||||
away: "Borte",
|
||||
charging_end_time: "Ladeslutt",
|
||||
charging_ending_soon: "Lading avsluttast snart",
|
||||
charging_ending_in: "Lading avsluttast om",
|
||||
charging_until: "Lader til",
|
||||
minutes: "minutt",
|
||||
minute: "minutt",
|
||||
hours: "timar",
|
||||
hour: "time",
|
||||
state: {
|
||||
default: {
|
||||
on: "På",
|
||||
off: "Av"
|
||||
}
|
||||
}
|
||||
},
|
||||
vehicle_types: {
|
||||
ev: "Elektrisk køyretøy",
|
||||
fuel: "Drivstoffkøyretøy",
|
||||
hybrid: "Hybrid"
|
||||
},
|
||||
editor: {
|
||||
title: "Ultra Køyretøykort",
|
||||
card_title: "Korttittel",
|
||||
vehicle_type: "Køyretøytype",
|
||||
unit_type: "Einingstype",
|
||||
show_battery: "Vis batteri",
|
||||
show_battery_range: "Vis batterirekkevidde",
|
||||
show_fuel: "Vis drivstoff",
|
||||
show_fuel_range: "Vis drivstoffrekkevidde",
|
||||
show_location: "Vis plassering",
|
||||
show_mileage: "Vis kilometerstand",
|
||||
show_car_state: "Vis bilstatus",
|
||||
show_charge_limit: "Vis ladelimit",
|
||||
hybrid_display_order: "Hybrid visingsrekkjefølgje",
|
||||
fuel_first: "Drivstoff først",
|
||||
battery_first: "Batteri først",
|
||||
images: "Bilete",
|
||||
main_image: "Hovudbilete",
|
||||
charging_image: "Ladebilete",
|
||||
enter_image_url: "Skriv inn bilete-URL",
|
||||
upload_image: "Last opp bilete",
|
||||
entity_settings: "Einingsinnstillingar",
|
||||
battery_level: "Batterinivå",
|
||||
battery_range: "Batterirekkevidde",
|
||||
fuel_level: "Drivstoffnivå",
|
||||
fuel_range: "Drivstoffrekkevidde",
|
||||
charging_status: "Ladestatus",
|
||||
location: "Plassering",
|
||||
mileage: "Kilometerstand",
|
||||
car_state: "Bilstatus",
|
||||
charge_limit: "Ladelimit",
|
||||
engine_on: "Motor på",
|
||||
icon_grid: "Ikonrutenett",
|
||||
add_entity: "Legg til eining",
|
||||
add_row_separator: "Legg til radskiljar",
|
||||
custom_icons: "Tilpassa ikon",
|
||||
inactive_icon: "Inaktivt ikon",
|
||||
active_icon: "Aktivt ikon",
|
||||
no_icon: "INGA IKON",
|
||||
inactive_icon_color: "Inaktiv ikonfarge",
|
||||
active_icon_color: "Aktiv ikonfarge",
|
||||
icon_style: "Ikonstil",
|
||||
icon_size: "Ikonstorleik",
|
||||
icon_size_description: "Storleik på ikonet.",
|
||||
icon_label_position: "Ikonetikettposisjon",
|
||||
left: "Venstre",
|
||||
top: "Topp",
|
||||
right: "Høgre",
|
||||
bottom: "Botn",
|
||||
interaction: "Interaksjon",
|
||||
colors: "Fargar",
|
||||
cardBackgroundColor: "Kortbakgrunnsfarge",
|
||||
barBackgroundColor: "Linjebakgrunnsfarge",
|
||||
barBorderColor: "Linjekantfarge",
|
||||
barFillColor: "Linjefyllfarge",
|
||||
limitIndicatorColor: "Limitindikatorfarge",
|
||||
infoTextColor: "Infotekstfarge",
|
||||
carStateTextColor: "Bilstatustekstfarge",
|
||||
rangeTextColor: "Rekkjeviddetekstfarge",
|
||||
percentageTextColor: "Prosenttekstfarge",
|
||||
none: "Ingen",
|
||||
local_url: "Lokal/URL",
|
||||
entity: "Eining",
|
||||
search_entities: "Søk einingar",
|
||||
battery_level_description: "Vel eininga som representerer batterinivået til køyretøyet ditt.",
|
||||
battery_range_description: "Vel eininga som representerer attverande rekkevidde for det elektriske køyretøyet ditt.",
|
||||
charging_status_description: "Vel eininga som indikerer om køyretøyet ditt ladar for augneblinken.",
|
||||
charge_limit_description: "Vel eininga som representerer ladelimiten sett for køyretøyet ditt.",
|
||||
location_description: "Vel eininga som gir den noverande plasseringa til køyretøyet ditt.",
|
||||
mileage_description: "Vel eininga som representerer total køyrelengd eller kilometerstand for køyretøyet ditt.",
|
||||
car_state_description: "Vel eininga som representerer den noverande tilstanden til køyretøyet ditt (t.d. parkert, køyrer, ladar).",
|
||||
icon_grid_description: "Legg til einingar i ikonrutenettet. Søk og vel einingar å leggje til. Bruk drahandtaket for å omorganisere einingar. Klikk på ikonet for å endre det, og bruk (×) for å fjerne ei eining frå rutenettet.",
|
||||
custom_colors_description: "Tilpass fargane på ulike element i kortet for å matche din føretrekte stil eller tema.",
|
||||
row_separator: "Radskiljar",
|
||||
add_row_separator: "Legg til radskiljar",
|
||||
separator_color: "Skiljarfarge",
|
||||
separator_color_description: "Vel farge for radskiljaren.",
|
||||
transparent: "Gjennomsiktig",
|
||||
set_color: "Set farge",
|
||||
separator_height: "Skiljarhøgd",
|
||||
separator_height_description: "Set høgda på radskiljaren i pikslar.",
|
||||
icon_gap_size: "Ikongapstorleik",
|
||||
icon_gap_description: "Set gapet mellom ikon i pikslar.",
|
||||
horizontal_alignment: "Horisontal justering",
|
||||
vertical_alignment: "Vertikal justering",
|
||||
more_info: "Meir info",
|
||||
select_entity: "Vel ei eining",
|
||||
entity_provides_image: "Denne eininga gir biletet for visinga.",
|
||||
toggle: "Veksle",
|
||||
navigate: "Naviger",
|
||||
url: "Opne URL",
|
||||
trigger: "Utløys",
|
||||
formatted_entities: "Formaterte einingar",
|
||||
formatted_entities_description: "Reins einingsverdiar ved å runde av tal, erstatte understrek med mellomrom, kapitalisere ord og leggje til komma i store tal.",
|
||||
fuel_level_description: "Vel eininga som representerer drivstoffnivået til køyretøyet ditt.",
|
||||
fuel_range_description: "Vel eininga som representerer attverande drivstoffrekkevidde for køyretøyet ditt.",
|
||||
engine_on_description: "Vel eininga som indikerer om motoren til køyretøyet ditt er i gang.",
|
||||
main_image_height: "Hovudbiletehøgd",
|
||||
charging_image_height: "Ladebiletehøgd",
|
||||
main_image_section: "Hovudbiletinnstillingar",
|
||||
charging_image_section: "Ladebiletinnstillingar",
|
||||
layout_type: "Layouttype",
|
||||
single_column: "Enkelkolonne",
|
||||
double_column: "Dobbeltkolonne",
|
||||
engine_on_image: "Bilete for motor på",
|
||||
engine_on_image_height: "Høgd på bilete for motor på",
|
||||
engine_off_image: "Bilete for motor av",
|
||||
engine_off_image_height: "Høgd på bilete for motor av",
|
||||
engine_on_image_section: "Innstillingar for bilete med motor på",
|
||||
use_bar_gradient: "Bruk gradientlinje",
|
||||
bar_gradient_description: "Aktiver ein fargegradient for framdriftslinjen. Dette lar deg setje fleire fargepunkt for ein meir dynamisk visuell representasjon av køyretøyet sin status.",
|
||||
percentage: "Prosent",
|
||||
color: "Farge",
|
||||
add_gradient_stop: "Legg til gradientstoppunkt",
|
||||
reset_all_colors: "Tilbakestill alle farger",
|
||||
reset_all_icon_colors: "Tilbakestill alle ikonfarger",
|
||||
settings: "Innstillinger",
|
||||
icon_grid: "Ikonrutenett",
|
||||
customize: "Tilpass",
|
||||
inactive_custom_label: "Inaktiv tilpassa etikett",
|
||||
active_custom_label: "Aktiv tilpassa etikett",
|
||||
custom_label_placeholder: "Skriv inn tilpassa etikett",
|
||||
template_mode: "Malskildringsmodus",
|
||||
template_mode_description: "Skriv inn malskildringa di nedanfor. For å gå ut av malskildringsmodus, vel ein annan tilstand frå nedtrekkslista ovanfor. Bruk {{ true }} og {{ false }} som uttrykk for å representere på- og av-tilstandar."
|
||||
},
|
||||
device_class: {
|
||||
battery: {
|
||||
on: "Låg",
|
||||
off: "Normal"
|
||||
},
|
||||
battery_charging: {
|
||||
on: "Ladar",
|
||||
off: "Ladar ikkje"
|
||||
},
|
||||
carbon_monoxide: {
|
||||
on: "Oppdaga",
|
||||
off: "Klart"
|
||||
},
|
||||
cold: {
|
||||
on: "Kald",
|
||||
off: "Normal"
|
||||
},
|
||||
connectivity: {
|
||||
on: "Tilkopla",
|
||||
off: "Fråkopla"
|
||||
},
|
||||
door: {
|
||||
on: "Open",
|
||||
off: "Lukka"
|
||||
},
|
||||
garage_door: {
|
||||
on: "Open",
|
||||
off: "Lukka"
|
||||
},
|
||||
gas: {
|
||||
on: "Oppdaga",
|
||||
off: "Klart"
|
||||
},
|
||||
heat: {
|
||||
on: "Varm",
|
||||
off: "Normal"
|
||||
},
|
||||
light: {
|
||||
on: "Oppdaga",
|
||||
off: "Klart"
|
||||
},
|
||||
lock: {
|
||||
on: "Ulåst",
|
||||
off: "Låst"
|
||||
},
|
||||
moisture: {
|
||||
on: "Fuktig",
|
||||
off: "Tørt"
|
||||
},
|
||||
motion: {
|
||||
on: "Oppdaga",
|
||||
off: "Klart"
|
||||
},
|
||||
moving: {
|
||||
on: "Rører seg",
|
||||
off: "Stoppa"
|
||||
},
|
||||
occupancy: {
|
||||
on: "Opptatt",
|
||||
off: "Klart"
|
||||
},
|
||||
opening: {
|
||||
on: "Open",
|
||||
off: "Lukka"
|
||||
},
|
||||
plug: {
|
||||
on: "Tilkopla",
|
||||
off: "Fråkopla"
|
||||
},
|
||||
power: {
|
||||
on: "Oppdaga",
|
||||
off: "Ingen straum"
|
||||
},
|
||||
presence: {
|
||||
on: "Heime",
|
||||
off: "Borte"
|
||||
},
|
||||
problem: {
|
||||
on: "Problem",
|
||||
off: "OK"
|
||||
},
|
||||
running: {
|
||||
on: "Køyrer",
|
||||
off: "Køyrer ikkje"
|
||||
},
|
||||
safety: {
|
||||
on: "Utrygt",
|
||||
off: "Trygt"
|
||||
},
|
||||
smoke: {
|
||||
on: "Oppdaga",
|
||||
off: "Klart"
|
||||
},
|
||||
sound: {
|
||||
on: "Oppdaga",
|
||||
off: "Klart"
|
||||
},
|
||||
tamper: {
|
||||
on: "Oppdaga",
|
||||
off: "Klart"
|
||||
},
|
||||
update: {
|
||||
on: "Tilgjengeleg",
|
||||
off: "Oppdatert"
|
||||
},
|
||||
vibration: {
|
||||
on: "Oppdaga",
|
||||
off: "Klart"
|
||||
},
|
||||
window: {
|
||||
on: "Open",
|
||||
off: "Lukka"
|
||||
}
|
||||
}
|
||||
}
|
||||
272
www/community/Ultra-Vehicle-Card/translations/sv.js
Normal file
@@ -0,0 +1,272 @@
|
||||
export default {
|
||||
common: {
|
||||
battery: "Batteri",
|
||||
fuel: "Bränsle",
|
||||
range: "Räckvidd",
|
||||
charging: "Laddar",
|
||||
mileage: "Körsträcka",
|
||||
location: "Plats",
|
||||
car_state: "Bilstatus",
|
||||
charge_limit: "Laddgräns",
|
||||
engine_on: "Motor på",
|
||||
away: "Borta",
|
||||
charging_end_time: "Laddning slutar",
|
||||
charging_ending_soon: "Laddning avslutas snart",
|
||||
charging_ending_in: "Laddning avslutas om",
|
||||
charging_until: "Laddar till",
|
||||
minutes: "minuter",
|
||||
minute: "minut",
|
||||
hours: "timmar",
|
||||
hour: "timme",
|
||||
state: {
|
||||
default: {
|
||||
on: "På",
|
||||
off: "Av"
|
||||
}
|
||||
}
|
||||
},
|
||||
vehicle_types: {
|
||||
ev: "Elfordon",
|
||||
fuel: "Bränslefordon",
|
||||
hybrid: "Hybrid"
|
||||
},
|
||||
editor: {
|
||||
title: "Ultra Fordonskort",
|
||||
card_title: "Korttitel",
|
||||
vehicle_type: "Fordonstyp",
|
||||
unit_type: "Enhetstyp",
|
||||
show_battery: "Visa batteri",
|
||||
show_battery_range: "Visa batteriräckvidd",
|
||||
show_fuel: "Visa bränsle",
|
||||
show_fuel_range: "Visa bränsleräckvidd",
|
||||
show_location: "Visa plats",
|
||||
show_mileage: "Visa körsträcka",
|
||||
show_car_state: "Visa bilstatus",
|
||||
show_charge_limit: "Visa laddgräns",
|
||||
hybrid_display_order: "Hybridvisningsordning",
|
||||
fuel_first: "Bränsle först",
|
||||
battery_first: "Batteri först",
|
||||
images: "Bilder",
|
||||
main_image: "Huvudbild",
|
||||
charging_image: "Laddningsbild",
|
||||
enter_image_url: "Ange bild-URL",
|
||||
upload_image: "Ladda upp bild",
|
||||
entity_settings: "Enhetsinställningar",
|
||||
battery_level: "Batterinivå",
|
||||
battery_range: "Batteriräckvidd",
|
||||
fuel_level: "Bränslenivå",
|
||||
fuel_range: "Bränsleräckvidd",
|
||||
charging_status: "Laddningsstatus",
|
||||
location: "Plats",
|
||||
mileage: "Körsträcka",
|
||||
car_state: "Bilstatus",
|
||||
charge_limit: "Laddgräns",
|
||||
engine_on: "Motor på",
|
||||
icon_grid: "Ikonrutnät",
|
||||
add_entity: "Lägg till enhet",
|
||||
add_row_separator: "Lägg till radavskiljare",
|
||||
custom_icons: "Anpassade ikoner",
|
||||
inactive_icon: "Inaktiv ikon",
|
||||
active_icon: "Aktiv ikon",
|
||||
no_icon: "INGEN IKON",
|
||||
inactive_icon_color: "Inaktiv ikonfärg",
|
||||
active_icon_color: "Aktiv ikonfärg",
|
||||
icon_style: "Ikonstil",
|
||||
icon_size: "Ikonstorlek",
|
||||
icon_size_description: "Storlek på ikonen.",
|
||||
icon_label_position: "Ikonetikettposition",
|
||||
left: "Vänster",
|
||||
top: "Topp",
|
||||
right: "Höger",
|
||||
bottom: "Botten",
|
||||
interaction: "Interaktion",
|
||||
colors: "Färger",
|
||||
cardBackgroundColor: "Kortbakgrundsfärg",
|
||||
barBackgroundColor: "Stapelbakgrundsfärg",
|
||||
barBorderColor: "Stapelkantfärg",
|
||||
barFillColor: "Stapelfyllnadsfärg",
|
||||
limitIndicatorColor: "Gränsindikatorsfärg",
|
||||
infoTextColor: "Infotextfärg",
|
||||
carStateTextColor: "Bilstatustextfärg",
|
||||
rangeTextColor: "Räckviddsextfärg",
|
||||
percentageTextColor: "Procenttextfärg",
|
||||
none: "Ingen",
|
||||
local_url: "Lokal/URL",
|
||||
entity: "Enhet",
|
||||
search_entities: "Sök enheter",
|
||||
battery_level_description: "Välj enheten som representerar batterinivån för ditt fordon.",
|
||||
battery_range_description: "Välj enheten som representerar återstående räckvidd för ditt elfordon.",
|
||||
charging_status_description: "Välj enheten som indikerar om ditt fordon för närvarande laddas.",
|
||||
charge_limit_description: "Välj enheten som representerar laddgränsen inställd för ditt fordon.",
|
||||
location_description: "Välj enheten som ger den aktuella platsen för ditt fordon.",
|
||||
mileage_description: "Välj enheten som representerar total körsträcka eller vägmätarställning för ditt fordon.",
|
||||
car_state_description: "Välj enheten som representerar det aktuella tillståndet för ditt fordon (t.ex. parkerad, kör, laddar).",
|
||||
icon_grid_description: "Lägg till enheter i ikonrutnätet. Sök och välj enheter att lägga till. Använd draghandtaget för att omorganisera enheter. Klicka på ikonen för att ändra den och använd (×) för att ta bort en enhet från rutnätet.",
|
||||
custom_colors_description: "Anpassa färgerna på olika element i kortet för att matcha din föredragna stil eller tema.",
|
||||
row_separator: "Radavskiljare",
|
||||
add_row_separator: "Lägg till radavskiljare",
|
||||
separator_color: "Avskiljarfärg",
|
||||
separator_color_description: "Välj färg för radavskiljaren.",
|
||||
transparent: "Transparent",
|
||||
set_color: "Ställ in färg",
|
||||
separator_height: "Avskiljarhöjd",
|
||||
separator_height_description: "Ställ in höjden på radavskiljaren i pixlar.",
|
||||
icon_gap_size: "Ikonavståndsstorlek",
|
||||
icon_gap_description: "Ställ in avståndet mellan ikoner i pixlar.",
|
||||
horizontal_alignment: "Horisontell justering",
|
||||
vertical_alignment: "Vertikal justering",
|
||||
more_info: "Mer info",
|
||||
select_entity: "Välj en enhet",
|
||||
entity_provides_image: "Denna enhet tillhandahåller bilden för visningen.",
|
||||
toggle: "Växla",
|
||||
navigate: "Navigera",
|
||||
url: "Öppna URL",
|
||||
trigger: "Utlös",
|
||||
formatted_entities: "Formaterade enheter",
|
||||
formatted_entities_description: "Rensa enhetsvärden genom att avrunda tal, ersätta understreck med mellanslag, kapitalisera ord och lägga till kommatecken i stora tal.",
|
||||
fuel_level_description: "Välj enheten som representerar bränslenivån för ditt fordon.",
|
||||
fuel_range_description: "Välj enheten som representerar återstående bränsleräckvidd för ditt fordon.",
|
||||
engine_on_description: "Välj enheten som indikerar om motorn på ditt fordon för närvarande är igång.",
|
||||
main_image_height: "Huvudbildhöjd",
|
||||
charging_image_height: "Laddningsbildhöjd",
|
||||
main_image_section: "Huvudbildinställningar",
|
||||
charging_image_section: "Laddningsbildinställningar",
|
||||
layout_type: "Layouttyp",
|
||||
single_column: "Enkel kolumn",
|
||||
double_column: "Dubbel kolumn",
|
||||
engine_on_image: "Bild för motor på",
|
||||
engine_on_image_height: "Höjd på bild för motor på",
|
||||
engine_off_image: "Bild för motor av",
|
||||
engine_off_image_height: "Höjd på bild för motor av",
|
||||
engine_on_image_section: "Inställningar för bild med motor på",
|
||||
use_bar_gradient: "Använd gradientfält",
|
||||
bar_gradient_description: "Aktivera en färggradient för förloppsfältet. Detta låter dig ställa in flera färgstopp för en mer dynamisk visuell representation av fordonets status.",
|
||||
percentage: "Procent",
|
||||
color: "Färg",
|
||||
add_gradient_stop: "Lägg till gradientstop",
|
||||
reset_all_colors: "Återställ alla färger",
|
||||
reset_all_icon_colors: "Återställ alla ikonfärger",
|
||||
settings: "Inställningar",
|
||||
icon_grid: "Ikonrutnät", // This entry already exists
|
||||
customize: "Anpassa", // This entry already exists
|
||||
inactive_custom_label: "Inaktiv anpassad etikett",
|
||||
active_custom_label: "Aktiv anpassad etikett",
|
||||
custom_label_placeholder: "Ange anpassad etikett",
|
||||
template_mode: "Mallläge",
|
||||
template_mode_description: "Ange din mallkod nedan. För att avsluta mallläget, välj ett annat tillstånd från rullgardinsmenyn ovan. Använd {{ true }} och {{ false }} som uttryck för att representera på- och av-tillstånd."
|
||||
},
|
||||
device_class: {
|
||||
battery: {
|
||||
on: "Låg",
|
||||
off: "Normal"
|
||||
},
|
||||
battery_charging: {
|
||||
on: "Laddar",
|
||||
off: "Laddar inte"
|
||||
},
|
||||
carbon_monoxide: {
|
||||
on: "Detekterad",
|
||||
off: "Klar"
|
||||
},
|
||||
cold: {
|
||||
on: "Kall",
|
||||
off: "Normal"
|
||||
},
|
||||
connectivity: {
|
||||
on: "Ansluten",
|
||||
off: "Frånkopplad"
|
||||
},
|
||||
door: {
|
||||
on: "Öppen",
|
||||
off: "Stängd"
|
||||
},
|
||||
garage_door: {
|
||||
on: "Öppen",
|
||||
off: "Stängd"
|
||||
},
|
||||
gas: {
|
||||
on: "Detekterad",
|
||||
off: "Klar"
|
||||
},
|
||||
heat: {
|
||||
on: "Varm",
|
||||
off: "Normal"
|
||||
},
|
||||
light: {
|
||||
on: "Detekterad",
|
||||
off: "Klar"
|
||||
},
|
||||
lock: {
|
||||
on: "Olåst",
|
||||
off: "Låst"
|
||||
},
|
||||
moisture: {
|
||||
on: "Fuktig",
|
||||
off: "Torr"
|
||||
},
|
||||
motion: {
|
||||
on: "Detekterad",
|
||||
off: "Klar"
|
||||
},
|
||||
moving: {
|
||||
on: "Rör sig",
|
||||
off: "Stillastående"
|
||||
},
|
||||
occupancy: {
|
||||
on: "Upptagen",
|
||||
off: "Klar"
|
||||
},
|
||||
opening: {
|
||||
on: "Öppen",
|
||||
off: "Stängd"
|
||||
},
|
||||
plug: {
|
||||
on: "Inkopplad",
|
||||
off: "Urkopplad"
|
||||
},
|
||||
power: {
|
||||
on: "Detekterad",
|
||||
off: "Ingen ström"
|
||||
},
|
||||
presence: {
|
||||
on: "Hemma",
|
||||
off: "Borta"
|
||||
},
|
||||
problem: {
|
||||
on: "Problem",
|
||||
off: "OK"
|
||||
},
|
||||
running: {
|
||||
on: "Kör",
|
||||
off: "Kör inte"
|
||||
},
|
||||
safety: {
|
||||
on: "Osäker",
|
||||
off: "Säker"
|
||||
},
|
||||
smoke: {
|
||||
on: "Detekterad",
|
||||
off: "Klar"
|
||||
},
|
||||
sound: {
|
||||
on: "Detekterad",
|
||||
off: "Klar"
|
||||
},
|
||||
tamper: {
|
||||
on: "Detekterad",
|
||||
off: "Klar"
|
||||
},
|
||||
update: {
|
||||
on: "Tillgänglig",
|
||||
off: "Uppdaterad"
|
||||
},
|
||||
vibration: {
|
||||
on: "Detekterad",
|
||||
off: "Klar"
|
||||
},
|
||||
window: {
|
||||
on: "Öppet",
|
||||
off: "Stängt"
|
||||
}
|
||||
}
|
||||
}
|
||||
3358
www/community/Ultra-Vehicle-Card/ultra-vehicle-card-editor.js
Normal file
1705
www/community/Ultra-Vehicle-Card/ultra-vehicle-card.js
Normal file
9
www/community/Ultra-Vehicle-Card/version.js
Normal file
@@ -0,0 +1,9 @@
|
||||
// Upon any change to this file update 'import ... from 'version.js?v=0'' with a newer version number.
|
||||
// In all files importing this file.
|
||||
|
||||
let version = 'undefined';
|
||||
function setVersion(value) {
|
||||
version = value;
|
||||
}
|
||||
|
||||
export { version, setVersion };
|
||||
257
www/community/air-visual-card/air-visual-card-editor.js
Normal file
@@ -0,0 +1,257 @@
|
||||
// I Used weather-card-editor.js from Weather Card as template
|
||||
// https://github.com/bramkragten/weather-card
|
||||
// 2023-02-25 card editor is likely broken as it doesn't show entities,
|
||||
|
||||
const fireEvent = (node, type, detail, options) => {
|
||||
options = options || {};
|
||||
detail = detail === null || detail === undefined ? {} : detail;
|
||||
const event = new Event(type, {
|
||||
bubbles: options.bubbles === undefined ? true : options.bubbles,
|
||||
cancelable: Boolean(options.cancelable),
|
||||
composed: options.composed === undefined ? true : options.composed,
|
||||
});
|
||||
event.detail = detail;
|
||||
node.dispatchEvent(event);
|
||||
return event;
|
||||
};
|
||||
|
||||
if (
|
||||
!customElements.get("ha-switch") &&
|
||||
customElements.get("paper-toggle-button")
|
||||
) {
|
||||
customElements.define("ha-switch", customElements.get("paper-toggle-button"));
|
||||
}
|
||||
|
||||
const LitElement = customElements.get("hui-masonry-view") ? Object.getPrototypeOf(customElements.get("hui-masonry-view")) : Object.getPrototypeOf(customElements.get("hui-view"));
|
||||
const html = LitElement.prototype.html;
|
||||
const css = LitElement.prototype.css;
|
||||
|
||||
const HELPERS = window.loadCardHelpers();
|
||||
|
||||
export class AirVisualCardEditor extends LitElement {
|
||||
setConfig(config) {
|
||||
this._config = { ...config };
|
||||
}
|
||||
|
||||
static get properties() {
|
||||
return { hass: {}, _config: {} };
|
||||
}
|
||||
|
||||
get _air_pollution_level() {
|
||||
return this._config.air_pollution_level || "sensor.u_s_air_pollution_level";
|
||||
}
|
||||
|
||||
get _air_quality_index() {
|
||||
return this._config.air_quality_index || "sensor.u_s_air_quality_index";
|
||||
}
|
||||
|
||||
get _main_pollutant() {
|
||||
return this._config.main_pollutant || "sensor.u_s_main_pollutant";
|
||||
}
|
||||
|
||||
get _country() {
|
||||
return this._config.country || "";
|
||||
}
|
||||
|
||||
get _city() {
|
||||
return this._config.city || "";
|
||||
}
|
||||
|
||||
get _icons() {
|
||||
return this._config.icons || "/hacsfiles/air-visual-card";
|
||||
}
|
||||
|
||||
get _weather() {
|
||||
return this._config.weather || "weather.home";
|
||||
}
|
||||
|
||||
get _speed_unit() {
|
||||
return this._config.speed_unit || "mp/h";
|
||||
}
|
||||
get _unit_of_measurement() {
|
||||
return this._config.unit_of_measurement || "AQI";
|
||||
}
|
||||
get _hide_title() {
|
||||
return this._config.hide_title !== false;
|
||||
}
|
||||
|
||||
get _hide_face() {
|
||||
return this._config.hide_face !== true;
|
||||
}
|
||||
get _hide_weather() {
|
||||
return this._config.hide_weather !== false;
|
||||
}
|
||||
|
||||
// WHAT DOES THIS DO?
|
||||
firstUpdated() {
|
||||
HELPERS.then(help => {
|
||||
if (help.importMoreInfoControl) {
|
||||
help.importMoreInfoControl("fan");
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
render() {
|
||||
if (!this.hass) {
|
||||
return html``;
|
||||
}
|
||||
|
||||
// WHAT DOES THIS DO?
|
||||
const entities = Object.keys(this.hass.states).filter(
|
||||
(eid) => eid.substr(0, eid.indexOf(".")) === "sensor"
|
||||
);
|
||||
|
||||
return html`
|
||||
<div class="card-config">
|
||||
<div>
|
||||
${customElements.get("ha-entity-picker")
|
||||
? html`
|
||||
<ha-entity-picker
|
||||
label="Air Pollution Level Sensor Entity"
|
||||
.hass="${this.hass}"
|
||||
.value="${this._air_pollution_level}"
|
||||
.configValue=${"air_pollution_level"}
|
||||
domain-filter="sensor"
|
||||
@change="${this._valueChanged}"
|
||||
allow-custom-entity
|
||||
></ha-entity-picker>
|
||||
`
|
||||
: html``}
|
||||
|
||||
<ha-entity-picker
|
||||
label="Air Quality Index Sensor"
|
||||
.hass="${this.hass}"
|
||||
.value="${this._air_quality_index}"
|
||||
.configValue=${"air_quality_index"}
|
||||
domain-filter="sensor"
|
||||
@change="${this._valueChanged}"
|
||||
allow-custom-entity
|
||||
></ha-entity-picker>
|
||||
|
||||
<ha-entity-picker
|
||||
label="Main Pollutant Sensor"
|
||||
.hass="${this.hass}"
|
||||
.value="${this._main_pollutant}"
|
||||
.configValue=${"main_pollutant"}
|
||||
domain-filter="sensor"
|
||||
@change="${this._valueChanged}"
|
||||
allow-custom-entity
|
||||
></ha-entity-picker>
|
||||
|
||||
<ha-entity-picker
|
||||
label="Weather Entity (Optional)"
|
||||
.hass="${this.hass}"
|
||||
.value="${this._weather}"
|
||||
.configValue=${"weather"}
|
||||
@change="${this._valueChanged}"
|
||||
allow-custom-entity
|
||||
></ha-entity-picker>
|
||||
|
||||
<paper-input
|
||||
label="City Name (Optional)"
|
||||
.value="${this._city}"
|
||||
.configValue="${"city"}"
|
||||
@value-changed="${this._valueChanged}"
|
||||
></paper-input>
|
||||
|
||||
<paper-input
|
||||
label="Country Name (Optional)"
|
||||
.value="${this._country}"
|
||||
.configValue="${"country"}"
|
||||
@value-changed="${this._valueChanged}"
|
||||
></paper-input>
|
||||
|
||||
<paper-input
|
||||
label="Speed Unit (Optional)"
|
||||
.value="${this._speed_unit}"
|
||||
.configValue="${"speed_unit"}"
|
||||
@value-changed="${this._valueChanged}"
|
||||
></paper-input>
|
||||
|
||||
<paper-input
|
||||
label="Unit of Measurement (Optional)"
|
||||
.value="${this._unit_of_measurement}"
|
||||
.configValue="${"unit_of_measurement"}"
|
||||
@value-changed="${this._valueChanged}"
|
||||
></paper-input>
|
||||
|
||||
<paper-input
|
||||
label="Icons location (Optional)"
|
||||
.value="${this._icons}"
|
||||
.configValue="${"icons"}"
|
||||
@value-changed="${this._valueChanged}"
|
||||
></paper-input>
|
||||
|
||||
<div class="switches">
|
||||
<div class="switch">
|
||||
<ha-switch
|
||||
.checked=${this._hide_title}
|
||||
.configValue="${"hide_title"}"
|
||||
@change="${this._valueChanged}"
|
||||
></ha-switch
|
||||
><span>Hide Title</span>
|
||||
</div>
|
||||
<div class="switch">
|
||||
<ha-switch
|
||||
.checked=${this._hide_weather}
|
||||
.configValue="${"hide_weather"}"
|
||||
@change="${this._valueChanged}"
|
||||
></ha-switch
|
||||
><span>Hide Weather</span>
|
||||
</div>
|
||||
<div class="switch">
|
||||
<ha-switch
|
||||
.checked=${this._hide_face}
|
||||
.configValue="${"hide_face"}"
|
||||
@change="${this._valueChanged}"
|
||||
></ha-switch
|
||||
><span>Hide Face</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
`;
|
||||
}
|
||||
|
||||
_valueChanged(ev) {
|
||||
if (!this._config || !this.hass) {
|
||||
return;
|
||||
}
|
||||
const target = ev.target;
|
||||
if (this[`_${target.configValue}`] === target.value) {
|
||||
return;
|
||||
}
|
||||
if (target.configValue) {
|
||||
if (target.value === "") {
|
||||
delete this._config[target.configValue];
|
||||
} else {
|
||||
this._config = {
|
||||
...this._config,
|
||||
[target.configValue]:
|
||||
target.checked !== undefined ? target.checked : target.value,
|
||||
};
|
||||
}
|
||||
}
|
||||
fireEvent(this, "config-changed", { config: this._config });
|
||||
}
|
||||
|
||||
static get styles() {
|
||||
return css`
|
||||
.switches {
|
||||
margin: 8px 0;
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
}
|
||||
.switch {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-items: center;
|
||||
}
|
||||
.switches span {
|
||||
padding: 0 16px;
|
||||
}
|
||||
`;
|
||||
}
|
||||
}
|
||||
|
||||
customElements.define("air-visual-card-editor", AirVisualCardEditor);
|
||||
518
www/community/air-visual-card/air-visual-card.js
Normal file
@@ -0,0 +1,518 @@
|
||||
// To study:
|
||||
// Plant Picture Card: https://github.com/badguy99/PlantPictureCard/blob/master/dist/PlantPictureCard.js
|
||||
// UPDATE FOR EACH RELEASE!!! From aftership-card. Version # is hard-coded for now.
|
||||
console.info(
|
||||
`%c AIR-VISUAL-CARD \n%c Version 2.0.3`,
|
||||
'color: orange; font-weight: bold; background: black',
|
||||
'color: white; font-weight: bold; background: dimgray',
|
||||
);
|
||||
|
||||
// From weather-card
|
||||
const fireEvent = (node, type, detail, options) => {
|
||||
options = options || {};
|
||||
detail = detail === null || detail === undefined ? {} : detail;
|
||||
const event = new Event(type, {
|
||||
bubbles: options.bubbles === undefined ? true : options.bubbles,
|
||||
cancelable: Boolean(options.cancelable),
|
||||
composed: options.composed === undefined ? true : options.composed
|
||||
});
|
||||
event.detail = detail;
|
||||
node.dispatchEvent(event);
|
||||
return event;
|
||||
};
|
||||
|
||||
let oldStates = {}
|
||||
|
||||
class AirVisualCard extends HTMLElement {
|
||||
// Placeholder for lovelace card editor
|
||||
// static getConfigElement() {
|
||||
// return document.createElement("air-visual-card-editor");
|
||||
// }
|
||||
|
||||
static async getConfigElement() {
|
||||
await import("./air-visual-card-editor.js");
|
||||
return document.createElement("air-visual-card-editor");
|
||||
}
|
||||
|
||||
static getStubConfig() {
|
||||
return { air_pollution_level: "sensor.u_s_air_pollution_level",
|
||||
air_quality_index: "sensor.u_s_air_quality_index",
|
||||
main_pollutant: "sensor.u_s_main_pollutant",
|
||||
weather: "weather.home",
|
||||
hide_weather: 1,
|
||||
hide_title: 1,
|
||||
unit_of_measurement: "AQI",
|
||||
hide_face: 0
|
||||
}
|
||||
}
|
||||
|
||||
constructor() {
|
||||
super();
|
||||
this.attachShadow({ mode: 'open' });
|
||||
}
|
||||
|
||||
setConfig(config) {
|
||||
const root = this.shadowRoot;
|
||||
if (root.lastChild) root.removeChild(root.lastChild);
|
||||
|
||||
const re = new RegExp("(sensor)");
|
||||
if (!re.test(config.air_quality_index.split('.')[0])) throw new Error('Please define a sensor entity.');
|
||||
|
||||
|
||||
const cardConfig = Object.assign({}, config);
|
||||
const card = document.createElement('ha-card');
|
||||
const content = document.createElement('div');
|
||||
const style = document.createElement('style');
|
||||
|
||||
style.textContent = `
|
||||
ha-card {
|
||||
/* sample css */
|
||||
background-color: rgba(0,0,0,0);
|
||||
box-shadow: none;
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
body {
|
||||
margin: 0;
|
||||
font-family: Arial, Helvetica, sans-serif;
|
||||
}
|
||||
|
||||
.grid-container {
|
||||
display: grid;
|
||||
grid-template-areas: "city city city" "face aqiSensor aplSensor" "face country mainPollutantSensor" "temp humidity wind";
|
||||
grid-template-columns: 85px 30% auto;
|
||||
grid-template-rows: auto auto auto auto;
|
||||
grid-gap: 0;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.city {
|
||||
grid-area: city;
|
||||
font-size: 1.6em;
|
||||
font-weight: bold;
|
||||
color: var(--primary-text-color);
|
||||
filter: opacity(80%);
|
||||
padding-bottom: 5px;
|
||||
}
|
||||
|
||||
.face {
|
||||
border-radius: var(--ha-card-border-radius) 0px 0px ${cardConfig.hide_weather ? 'var(--ha-card-border-radius)' : '0px'};
|
||||
grid-area: face;
|
||||
justify-items: center;
|
||||
align-items: center;
|
||||
display: grid;
|
||||
}
|
||||
|
||||
.face img {
|
||||
display: block;
|
||||
height: 60px;
|
||||
}
|
||||
|
||||
.aqiSensor {
|
||||
grid-area: aqiSensor;
|
||||
font-size: 3em;
|
||||
height: 60px;
|
||||
padding-top: 4px;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
border-radius: ${cardConfig.hide_face ? 'var(--ha-card-border-radius)' : '0px'} 0px 0px 0px;
|
||||
}
|
||||
|
||||
.aplSensor {
|
||||
grid-area: aplSensor;
|
||||
font-size: 1.4em;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
border-radius: 0px var(--ha-card-border-radius) 0px 0px;
|
||||
}
|
||||
|
||||
.mainPollutantSensor {
|
||||
grid-area: mainPollutantSensor;
|
||||
border-radius: 0px 0px ${cardConfig.hide_weather ? 'var(--ha-card-border-radius)' : '0px'} 0px ;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
padding: 0px 0px 5px 0px;
|
||||
}
|
||||
|
||||
.mainPollutantSensorText {
|
||||
background-color: white;
|
||||
border-radius: 4px;
|
||||
font-size: 0.9em;
|
||||
font-weight: bold;
|
||||
width: 70%;
|
||||
|
||||
}
|
||||
|
||||
.country {
|
||||
grid-area: country;
|
||||
border-radius: 0px 0px 0px ${cardConfig.hide_face ? 'var(--ha-card-border-radius)' : '0px'};
|
||||
}
|
||||
|
||||
.temp {
|
||||
grid-area: temp;
|
||||
text-align: left;
|
||||
font-size: 1.2em;
|
||||
background-color: rgba(255,255,255,0.2);
|
||||
color: var(--text-color);
|
||||
border-radius: 0px 0px 0px var(--ha-card-border-radius);
|
||||
border-bottom: 1px solid rgba(230, 230, 230, 1);
|
||||
border-left: 1px solid rgba(230, 230, 230, 1);
|
||||
border-right: 1px solid rgba(230, 230, 230, 1);
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
}
|
||||
.temp img {
|
||||
width: 34px;
|
||||
padding-right: 2px;
|
||||
|
||||
}
|
||||
|
||||
.humidity {
|
||||
grid-area: humidity;
|
||||
color: var(--text-color);
|
||||
border-bottom: 1px solid rgba(230, 230, 230, 1);
|
||||
background-color: rgba(255,255,255,0.2);
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
padding: 5px 0px 5px 0px;
|
||||
}
|
||||
.humidity img {
|
||||
height: 25px;
|
||||
padding-right: 2px;
|
||||
}
|
||||
|
||||
.wind {
|
||||
grid-area: wind;
|
||||
background-color: rgba(255,255,255,0.2);
|
||||
color: var(--text-color);
|
||||
border-radius: 0px 0px var(--ha-card-border-radius) 0px;
|
||||
border-bottom: 1px solid rgba(230, 230, 230, 1);
|
||||
border-right: 1px solid rgba(230, 230, 230, 1);
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
}
|
||||
.wind img {
|
||||
height: 14px;
|
||||
padding-right: 2px;
|
||||
}
|
||||
`
|
||||
content.innerHTML = `
|
||||
<div id='content'>
|
||||
</div>
|
||||
`;
|
||||
|
||||
card.appendChild(content);
|
||||
card.appendChild(style);
|
||||
root.appendChild(card);
|
||||
oldStates = {}
|
||||
this._config = cardConfig;
|
||||
}
|
||||
|
||||
shouldNotUpdate(config, hass) {
|
||||
let clone = JSON.parse(JSON.stringify(config))
|
||||
delete clone["city"]
|
||||
delete clone["type"]
|
||||
delete clone["icons"]
|
||||
delete clone["hide_title"]
|
||||
delete clone["hide_face"]
|
||||
delete clone["hide_weather"]
|
||||
delete clone["weather"]
|
||||
delete clone["speed_unit"]
|
||||
let states = {}
|
||||
for (let entity of Object.values(clone)) {
|
||||
states[entity] = hass.states[entity]
|
||||
}
|
||||
if (JSON.stringify(oldStates) === JSON.stringify(states)) {
|
||||
return true
|
||||
}
|
||||
oldStates = states
|
||||
return false
|
||||
}
|
||||
|
||||
set hass(hass) {
|
||||
const config = this._config;
|
||||
const root = this.shadowRoot;
|
||||
const card = root.lastChild;
|
||||
if (this.shouldNotUpdate(config, hass)) {
|
||||
return
|
||||
}
|
||||
|
||||
const hideTitle = config.hide_title ? 1 : 0;
|
||||
const hideFace = config.hide_face ? 1 : 0;
|
||||
const hideAQI = config.hide_aqi ? 1 : 0;
|
||||
const hideAPL = config.hide_apl ? 1 : 0;
|
||||
const hideWeather = config.hide_weather || !config.weather ? 1 : 0;
|
||||
const speedUnit = config.speed_unit || 'mp/h';
|
||||
// points to local directory created by HACS installation
|
||||
const iconDirectory = config.icons || "/hacsfiles/air-visual-card";
|
||||
const country = config.country || 'US';
|
||||
const city = config.city || '';
|
||||
const weatherEntity = config.weather || '';
|
||||
// value is used as a string instead of integer in order for
|
||||
const aqiSensor = { name: 'aqiSensor', config: config.air_quality_index || null, value: 0 };
|
||||
const aplSensor = { name: 'aplSensor', config: config.air_pollution_level || null, value: 0 };
|
||||
const mainPollutantSensor = { name: 'mainPollutantSensor', config: config.main_pollutant || null, value: 0 };
|
||||
const sensorList = [aqiSensor, aplSensor, mainPollutantSensor];
|
||||
|
||||
const unitOfMeasurement = config.unit_of_measurement || 'AQI';
|
||||
|
||||
const AQIbgColor = {
|
||||
|
||||
'1': `#B0E867`,
|
||||
'2': '#E3C143',
|
||||
'3': '#E48B4E',
|
||||
'4': '#E45F5E',
|
||||
'5': '#986EA9',
|
||||
'6': '#A5516B',
|
||||
};
|
||||
const AQIfaceColor = {
|
||||
'1': `#A8E05F`,
|
||||
'2': '#FDD64B',
|
||||
'3': '#FF9B57',
|
||||
'4': '#FE6A69',
|
||||
'5': '#A97ABC',
|
||||
'6': '#A87383',
|
||||
};
|
||||
const AQIfontColor = {
|
||||
'1': `#718B3A`,
|
||||
'2': '#A57F23',
|
||||
'3': '#B25826',
|
||||
'4': '#AF2C3B',
|
||||
'5': '#634675',
|
||||
'6': '#683E51',
|
||||
};
|
||||
|
||||
const weatherIcons = {
|
||||
'clear-night': 'mdi:weather-night',
|
||||
'cloudy': 'mdi:weather-cloudy',
|
||||
'fog': 'mdi:weather-fog',
|
||||
'hail': 'mdi:weather-hail',
|
||||
'lightning': 'mdi:weather-lightning',
|
||||
'lightning-rainy': 'mdi:weather-lightning-rainy',
|
||||
'partlycloudy': 'mdi:weather-partly-cloudy',
|
||||
'pouring': 'mdi:weather-pouring',
|
||||
'rainy': 'mdi:weather-rainy',
|
||||
'snowy': 'mdi:weather-snowy',
|
||||
'snowy-rainy': 'mdi:weather-snowy-rainy',
|
||||
'sunny': 'mdi:weather-sunny',
|
||||
'windy': 'mdi:weather-windy',
|
||||
'windy-variant': `mdi:weather-windy-variant`,
|
||||
'exceptional': '!!',
|
||||
}
|
||||
const weatherSVG = {
|
||||
'clear-night': 'night-clear-sky',
|
||||
'cloudy': 'scattered-clouds',
|
||||
'fog': 'scattered-clouds',
|
||||
'hail': 'rain',
|
||||
'lightning': 'rain',
|
||||
'lightning-rainy': 'rain',
|
||||
'partlycloudy': 'new-clouds',
|
||||
'pouring': 'rain',
|
||||
'rainy': 'rain',
|
||||
'snowy': 'snow',
|
||||
'snowy-rainy': 'snow',
|
||||
'sunny': 'clear-sky',
|
||||
'windy': 'scattered-clouds',
|
||||
'windy-variant': `scattered-clouds`,
|
||||
'exceptional': 'snow',
|
||||
}
|
||||
|
||||
// WAQI sensor-specific stuff
|
||||
// AirVisual sensors have the APL description as part of the sensor state, but WAQI doesn't. These APL states will be used as backup if AirVisual sensors is not used.
|
||||
const APLdescription = {
|
||||
'1': 'Good',
|
||||
'2': 'Moderate',
|
||||
'3': 'Unhealthy for Sensitive Groups',
|
||||
'4': 'Unhealthy',
|
||||
'5': 'Very Unhealthy',
|
||||
'6': 'Hazardous',
|
||||
}
|
||||
const pollutantUnitValue = {
|
||||
'pm25': 'µg/m³',
|
||||
'pm10': 'µg/m³',
|
||||
'o3': 'ppb',
|
||||
'no2': 'ppb',
|
||||
'so2': 'ppb',
|
||||
}
|
||||
const mainPollutantValue = {
|
||||
'p2': 'PM2.5',
|
||||
'pm25': 'PM2.5',
|
||||
'pm10': 'PM10',
|
||||
'o3': 'Ozone',
|
||||
'no2': 'Nitrogen Dioxide',
|
||||
'so2': 'Sulfur Dioxide',
|
||||
}
|
||||
const mainAirVisualPollutantValue = {
|
||||
'p2': 'PM2.5',
|
||||
'p1': 'PM10',
|
||||
'co': 'Carbon Monoxide',
|
||||
'o3': 'Ozone',
|
||||
'n2': 'Nitrogen Dioxide',
|
||||
's2': 'Sulfur Dioxide',
|
||||
}
|
||||
|
||||
let currentCondition = '';
|
||||
let humidity = '';
|
||||
let windSpeed = '';
|
||||
let tempValue = '';
|
||||
let pollutantUnit = '';
|
||||
let apl = '';
|
||||
let mainPollutant = '';
|
||||
|
||||
let getAQI = function () {
|
||||
switch (true) {
|
||||
case (aqiSensor.value <= 50):
|
||||
return '1'; // return string '1' to pull appropriate AQI icon filename ('ic-face-1.svg') in HTML
|
||||
case (aqiSensor.value <= 100):
|
||||
return '2';
|
||||
case (aqiSensor.value <= 150):
|
||||
return '3';
|
||||
case (aqiSensor.value <= 200):
|
||||
return '4';
|
||||
case (aqiSensor.value <= 300):
|
||||
return '5';
|
||||
case (aqiSensor.value <= 9999):
|
||||
return '6';
|
||||
default:
|
||||
return '1';
|
||||
}
|
||||
};
|
||||
|
||||
var i;
|
||||
// Use this section to assign values (real or placeholder), after doing validation check
|
||||
for (i = 0; i < sensorList.length; i++) {
|
||||
if (typeof hass.states[sensorList[i].config] == "undefined") { continue; }
|
||||
// if Main Pollutant is an Airvisual sensor, else if if it is an WAQI sensor
|
||||
if (typeof hass.states[mainPollutantSensor.config] != "undefined") {
|
||||
if (typeof hass.states[mainPollutantSensor.config].attributes['pollutant_unit'] != "undefined") {
|
||||
pollutantUnit = hass.states[mainPollutantSensor.config].attributes['pollutant_unit'];
|
||||
mainPollutant = mainAirVisualPollutantValue[hass.states[mainPollutantSensor.config].attributes['pollutant_symbol']];
|
||||
} else if (typeof hass.states[mainPollutantSensor.config].attributes['dominentpol'] != "undefined") {
|
||||
pollutantUnit = pollutantUnitValue[hass.states[mainPollutantSensor.config].attributes['dominentpol']];
|
||||
mainPollutant = mainPollutantValue[hass.states[mainPollutantSensor.config].attributes['dominentpol']];
|
||||
} else {
|
||||
pollutantUnit = 'pollutant unit';
|
||||
mainPollutant = 'main pollutant';
|
||||
}
|
||||
}
|
||||
if (typeof hass.states[aqiSensor.config] != "undefined") {
|
||||
aqiSensor.value = hass.states[aqiSensor.config].state;
|
||||
}
|
||||
// Check if APL is an WAQI sensor (because the state is an integer). Returns 'NaN' if it is not a number
|
||||
if (typeof hass.states[aplSensor.config] != "undefined") {
|
||||
let aplParse = parseInt(hass.states[aplSensor.config].state)
|
||||
if (!isNaN(aplParse)) {
|
||||
apl = APLdescription[getAQI()];
|
||||
} else {
|
||||
let aplState = hass.states[aplSensor.config].state;
|
||||
apl = hass.localize("component.sensor.state.airvisual__pollutant_level." + aplState)
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
let faceHTML = ``;
|
||||
|
||||
let card_content = `<div class="grid-container">`;
|
||||
if (!hideTitle) {
|
||||
card_content += `<div class="city">${city} Air Quality Index</div>`;
|
||||
}
|
||||
|
||||
if (weatherEntity.split('.')[0] == 'weather' && hass.states[weatherEntity]) {
|
||||
tempValue = hass.states[weatherEntity].attributes['temperature'] + 'º';
|
||||
currentCondition = hass.states[weatherEntity].state;
|
||||
humidity = hass.states[weatherEntity].attributes['humidity'] + '%';
|
||||
windSpeed = hass.states[weatherEntity].attributes['wind_speed'] + ' ' + speedUnit;
|
||||
}
|
||||
if (!hideWeather) {
|
||||
card_content += `
|
||||
<div class="temp" id="temp"><img src="${iconDirectory}/ic-w-${weatherSVG[currentCondition]}.svg"></img>${tempValue}</div>
|
||||
<div class="humidity" id="humidity"><img src="${iconDirectory}/ic-humidity.svg"></img>${humidity}</div>
|
||||
<div class="wind" id="wind"><img src="${iconDirectory}/ic-wind.svg"></img> ${windSpeed}</div>
|
||||
`;
|
||||
}
|
||||
|
||||
|
||||
if (!hideFace){
|
||||
card_content += `
|
||||
<div class="face" id="face" style="background-color: ${AQIfaceColor[getAQI()]};">
|
||||
<img src="${iconDirectory}/ic-face-${getAQI()}.svg"></img>
|
||||
</div>
|
||||
`;
|
||||
}
|
||||
|
||||
if (!hideAQI){
|
||||
card_content += `
|
||||
<div class="aqiSensor" id="aqiSensor" style="background-color: ${AQIbgColor[getAQI()]}; color: ${AQIfontColor[getAQI()]}">
|
||||
${aqiSensor.value}</div>
|
||||
<div class="country" style="background-color: ${AQIbgColor[getAQI()]}; color: ${AQIfontColor[getAQI()]}">${country} ${unitOfMeasurement}</div>
|
||||
`;
|
||||
}
|
||||
if (!hideAPL){
|
||||
card_content += `
|
||||
<div class="aplSensor" id="aplSensor" style="background-color: ${AQIbgColor[getAQI()]}; color: ${AQIfontColor[getAQI()]}">
|
||||
${apl}
|
||||
</div>
|
||||
<div class="mainPollutantSensor" id="mainPollutantSensor" style="background-color: ${AQIbgColor[getAQI()]}; color: ${AQIfontColor[getAQI()]}">
|
||||
<div class="mainPollutantSensorText">${mainPollutant} | ${pollutantUnit}</div>
|
||||
</div>
|
||||
`;
|
||||
}
|
||||
card_content += `
|
||||
</div>
|
||||
`;
|
||||
|
||||
|
||||
root.lastChild.hass = hass;
|
||||
root.getElementById('content').innerHTML = card_content;
|
||||
|
||||
// hard-coded version of click event
|
||||
if (!hideFace){
|
||||
card.querySelector('#face').addEventListener('click', event => { // when selecting HTML id, do not use dash '-'
|
||||
fireEvent(this, "hass-more-info", { entityId: aqiSensor.config });
|
||||
});
|
||||
}
|
||||
if (!hideAQI){
|
||||
card.querySelector('#aqiSensor').addEventListener('click', event => { // when selecting HTML id, do not use dash '-'
|
||||
fireEvent(this, "hass-more-info", { entityId: aqiSensor.config });
|
||||
});
|
||||
}
|
||||
if (!hideAPL){
|
||||
card.querySelector('#aplSensor').addEventListener('click', event => { // when selecting HTML id, do not use dash '-'
|
||||
fireEvent(this, "hass-more-info", { entityId: aplSensor.config });
|
||||
});
|
||||
card.querySelector('#mainPollutantSensor').addEventListener('click', event => { // when selecting HTML id, do not use dash '-'
|
||||
fireEvent(this, "hass-more-info", { entityId: mainPollutantSensor.config });
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
// The height of your card. Home Assistant uses this to automatically
|
||||
// distribute all cards over the available columns.
|
||||
getCardSize() {
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
|
||||
customElements.define('air-visual-card', AirVisualCard);
|
||||
|
||||
// Configure the preview in the Lovelace card picker
|
||||
// https://developers.home-assistant.io/docs/frontend/custom-ui/lovelace-custom-card/
|
||||
window.customCards = window.customCards || [];
|
||||
window.customCards.push({
|
||||
type: 'air-visual-card',
|
||||
name: 'Air Visual Card',
|
||||
preview: false,
|
||||
description: 'This is a Home Assistant Lovelace card that uses the AirVisual Sensor to provide air quality index (AQI) data and creates a card like the ones found on AirVisual website. Requires the AirVisual Sensor to be setup. Tested with Yahoo and Darksky Weather component.'
|
||||
});
|
||||
1
www/community/air-visual-card/ic-face-1.svg
Normal file
@@ -0,0 +1 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="48" height="48" viewBox="0 0 48 48"><g fill="none" fill-rule="evenodd"><path d="M0 48h48V0H0z"/><g fill="#718B3A"><path d="M22.579 30.814c.512.148.986.22 1.447.22.46 0 .934-.072 1.447-.22a.378.378 0 0 0 .076-.693.373.373 0 0 0-.284-.03c-.89.257-1.586.257-2.477 0a.377.377 0 0 0-.21.724"/><path d="M40.139 24.513a1.36 1.36 0 0 0-.924-.238c.377-1.81.637-3.614.777-5.363.382-4.79-.863-8.887-3.6-11.849-2.92-3.158-7.437-4.97-12.392-4.97-1.258 0-2.374.124-3.007.242a8.88 8.88 0 0 1-.759-.438l-.051-.035a.19.19 0 0 0-.26.052l-.334.492a.187.187 0 0 0-.03.144c.01.05.04.094.082.12l.054.035c.856.561 1.79.983 2.561 1.157.875.197 1.311.622 1.493.858l.032.04a.19.19 0 0 0 .236.053l.532-.278a.188.188 0 0 0 .065-.277l-.042-.06c-.172-.24-.653-.795-1.595-1.132.342-.019.783-.033 1.023-.033 4.697 0 8.963 1.701 11.701 4.668 2.59 2.807 3.719 6.554 3.353 11.137a43.37 43.37 0 0 1-.944 6.087l-.051.27a.254.254 0 0 0 .247.3h.362a.255.255 0 0 0 .154-.054l.057-.045c.245-.187.546-.236.716-.115.343.242.35 1.053.019 2.064l-.335 1.03-.01.027c-.192.595-.39 1.21-.637 1.943-.389 1.152-1.092 1.899-1.898 2.024l.063-.145c.047-.11.095-.22.142-.336a.255.255 0 0 0-.143-.327l-.408-.16a.255.255 0 0 0-.324.141c-1.775 4.454-3.995 7.823-6.986 10.603-1.625 1.51-3.206 1.82-5.079 1.82-1.872 0-3.453-.31-5.079-1.821-2.992-2.78-5.211-6.149-6.985-10.602a.253.253 0 0 0-.326-.14l-.407.16a.252.252 0 0 0-.141.327c.046.116.094.227.142.338l.06.137c-.014-.002-.027-.003-.04-.006-.796-.146-1.472-.88-1.855-2.013-.243-.718-.438-1.322-.627-1.907l-.354-1.095c-.332-1.01-.325-1.82.018-2.062.175-.123.47-.073.734.129l.067.042c.046.028.1.04.15.038l.357-.024a.222.222 0 0 0 .114-.039c.031.014.087.01.133-.002.351-.088.698-.396.95-.843.41-.727.704-1.79 1.044-3.02.684-2.48 1.537-5.566 3.756-6.964 2.485-1.567 4.625-1.291 7.106-.971 2.38.306 5.074.652 8.572-.574l.08.052c.257 1.897 1.445 4.389 4.016 5.73a.376.376 0 1 0 .347-.668c-2.394-1.249-3.448-3.569-3.636-5.324a.38.38 0 0 0-.172-.278l-.387-.245a.37.37 0 0 0-.33-.037c-3.418 1.24-6.063.898-8.406.595-2.51-.321-4.882-.624-7.592 1.083-2.465 1.553-3.36 4.796-4.08 7.401-.327 1.182-.608 2.203-.973 2.85-.152.269-.312.403-.42.459a42.846 42.846 0 0 1-.89-5.833c-.743-9.32 4.854-13.079 8.257-14.49l.046-.019c.42.184.812.318 1.167.398.875.197 1.312.622 1.494.858l.032.041a.192.192 0 0 0 .236.052l.532-.278a.188.188 0 0 0 .065-.277l-.043-.06c-.209-.29-.832-.998-2.102-1.286-.658-.147-1.473-.518-2.235-1.015l-.05-.034a.188.188 0 0 0-.261.051l-.334.492a.187.187 0 0 0-.03.144c.01.05.04.094.083.122l.053.033c.111.073.226.141.338.207-5.757 2.681-8.739 8.19-8.185 15.136.138 1.736.4 3.54.778 5.363a1.354 1.354 0 0 0-.924.237c-.423.3-1.032 1.102-.37 3.124l.343 1.057c.193.597.393 1.216.641 1.95.668 1.98 2.005 2.685 3.034 2.685.05 0 .1-.005.15-.01l.008-.001c1.733 3.91 3.835 6.934 6.612 9.515 1.959 1.821 3.907 2.072 5.72 2.072 1.812 0 3.76-.25 5.72-2.071 2.776-2.582 4.879-5.606 6.612-9.516h.007c.05.006.101.01.152.01 1.028 0 2.365-.705 3.032-2.683.253-.748.453-1.364.652-1.982l.332-1.025c.664-2.023.054-2.826-.368-3.125"/><path d="M31.026 24.643c0-.515-.689-.935-1.536-.935-.846 0-1.534.42-1.534.935 0 .524.673.934 1.534.934.847 0 1.536-.42 1.536-.934m-12.539.934c.848 0 1.537-.42 1.537-.934 0-.515-.69-.935-1.537-.935-.846 0-1.535.42-1.535.935 0 .524.674.934 1.535.934m9.093 9.999c-.404 1.021-1.388 2.631-3.58 2.631-2.19 0-3.176-1.61-3.58-2.631h7.16zM24 38.96c2.524 0 3.963-1.89 4.467-3.658a.375.375 0 0 0-.362-.48h-8.21a.378.378 0 0 0-.363.48c.505 1.768 1.944 3.658 4.468 3.658zm7.942-16.711a.372.372 0 0 0-.002-.288.373.373 0 0 0-.206-.203 6.035 6.035 0 0 0-2.239-.437c-.959 0-1.752.241-2.249.443a.377.377 0 0 0 .142.725.37.37 0 0 0 .141-.028 5.305 5.305 0 0 1 1.966-.387c.837 0 1.526.208 1.958.383a.38.38 0 0 0 .49-.208m-11.494.211a.375.375 0 0 0 .488-.495.376.376 0 0 0-.205-.202 6.042 6.042 0 0 0-2.249-.442c-.955 0-1.745.238-2.24.438a.377.377 0 0 0 .284.698 5.277 5.277 0 0 1 1.956-.383c.837 0 1.53.21 1.966.386"/></g></g></svg>
|
||||
|
After Width: | Height: | Size: 3.9 KiB |
1
www/community/air-visual-card/ic-face-2.svg
Normal file
@@ -0,0 +1 @@
|
||||
<svg height="48" viewBox="0 0 48 48" width="48" xmlns="http://www.w3.org/2000/svg"><g fill="none" fill-rule="evenodd"><path d="M0 48h48V0H0z"/><g fill="#a57f23"><path d="M24.027 31.035c.46 0 .934-.072 1.446-.22a.377.377 0 0 0-.207-.725c-.892.259-1.587.258-2.479 0a.374.374 0 0 0-.466.257c-.057.2.059.41.258.467.513.149.987.22 1.448.22"/><path d="M40.139 24.513a1.358 1.358 0 0 0-.924-.238c.377-1.81.637-3.614.777-5.363.382-4.79-.863-8.887-3.6-11.849-2.92-3.158-7.437-4.97-12.392-4.97-1.258 0-2.374.124-3.007.242a8.836 8.836 0 0 1-.759-.438l-.051-.035a.191.191 0 0 0-.26.052l-.334.492a.189.189 0 0 0 .053.265l.053.034c.856.561 1.79.983 2.561 1.157.875.197 1.311.622 1.493.858l.033.041a.19.19 0 0 0 .235.052l.531-.278a.191.191 0 0 0 .066-.278l-.042-.059c-.172-.24-.653-.795-1.595-1.132.342-.019.783-.033 1.022-.033 4.698 0 8.964 1.701 11.702 4.668 2.59 2.807 3.719 6.554 3.353 11.137a43.37 43.37 0 0 1-.944 6.087l-.051.27a.254.254 0 0 0 .247.3h.362a.255.255 0 0 0 .154-.054l.057-.045c.245-.187.546-.236.716-.115.343.242.35 1.053.019 2.064l-.335 1.03-.01.027c-.192.595-.39 1.21-.637 1.943-.389 1.152-1.092 1.899-1.898 2.024l.063-.145c.047-.11.095-.22.142-.336a.255.255 0 0 0-.143-.327l-.408-.16a.255.255 0 0 0-.324.141c-1.775 4.454-3.995 7.823-6.986 10.603-1.625 1.51-3.206 1.82-5.079 1.82s-3.453-.31-5.079-1.821c-2.992-2.78-5.211-6.15-6.985-10.602a.252.252 0 0 0-.325-.14l-.408.16a.252.252 0 0 0-.141.327c.045.114.092.222.14.332l.061.143a.45.45 0 0 1-.039-.006c-.796-.146-1.472-.88-1.855-2.014a142.07 142.07 0 0 1-.628-1.911l-.353-1.09c-.333-1.01-.325-1.82.018-2.062.175-.123.47-.072.734.129l.067.042a.25.25 0 0 0 .15.038l.357-.024a.224.224 0 0 0 .114-.039.261.261 0 0 0 .133-.002c.352-.089.698-.396.95-.843.41-.727.704-1.79 1.044-3.019.684-2.48 1.537-5.566 3.756-6.965 2.486-1.568 4.627-1.291 7.106-.971 2.38.306 5.074.652 8.572-.574l.08.052c.257 1.897 1.445 4.389 4.016 5.73a.376.376 0 1 0 .347-.668c-2.394-1.249-3.448-3.569-3.636-5.324a.38.38 0 0 0-.172-.278l-.387-.245a.37.37 0 0 0-.33-.037c-3.418 1.24-6.063.898-8.406.595-2.512-.322-4.882-.625-7.592 1.083-2.466 1.554-3.361 4.796-4.08 7.401-.327 1.182-.608 2.203-.973 2.85-.153.27-.314.404-.42.46a42.807 42.807 0 0 1-.89-5.834c-.743-9.32 4.854-13.079 8.258-14.49a.635.635 0 0 1 .045-.019c.42.184.813.318 1.167.398.876.197 1.312.622 1.494.858l.032.041a.19.19 0 0 0 .236.052l.53-.277a.191.191 0 0 0 .097-.124.184.184 0 0 0-.03-.154l-.043-.06c-.208-.29-.831-.998-2.102-1.286-.658-.147-1.472-.518-2.235-1.015l-.05-.034a.19.19 0 0 0-.261.051l-.334.492a.189.189 0 0 0 .053.266l.053.033c.112.073.226.141.338.207-5.757 2.681-8.74 8.19-8.185 15.136a43.8 43.8 0 0 0 .777 5.363 1.362 1.362 0 0 0-.923.237c-.423.298-1.033 1.102-.37 3.124l.334 1.026c.209.648.402 1.245.65 1.982.668 1.978 2.005 2.684 3.034 2.684.05 0 .1-.005.15-.01l.008-.001c1.733 3.91 3.835 6.935 6.612 9.515 1.959 1.821 3.907 2.072 5.72 2.072 1.812 0 3.76-.25 5.72-2.071 2.776-2.582 4.879-5.606 6.612-9.516h.007c.05.006.101.01.152.01 1.028 0 2.365-.705 3.032-2.683.253-.748.453-1.364.652-1.982l.332-1.025c.664-2.023.054-2.826-.368-3.125"/><path d="M25.41 38.404v-.112a.365.365 0 0 0 0-.53v-.112h-2.814v.107a.367.367 0 0 0-.121.27c0 .101.043.199.12.27v.107h2.816zm2.611-2.498a.377.377 0 0 0-.376-.377h-7.29a.377.377 0 0 0 0 .755h7.29c.208 0 .376-.17.376-.378m4.044-14.184a.377.377 0 0 0-.376-.377h-4.396a.377.377 0 0 0 0 .753h4.396a.377.377 0 0 0 .376-.376m-2.575 3.855c.848 0 1.537-.42 1.537-.934 0-.515-.69-.935-1.537-.935-.846 0-1.535.42-1.535.935 0 .524.675.934 1.535.934m-8.428-3.855a.377.377 0 0 0-.376-.377H16.29a.377.377 0 0 0 0 .753h4.396a.377.377 0 0 0 .376-.376m-2.575 3.855c.848 0 1.537-.42 1.537-.934 0-.515-.69-.935-1.537-.935-.846 0-1.534.42-1.534.935 0 .524.674.934 1.534.934"/></g></g></svg>
|
||||
|
After Width: | Height: | Size: 3.6 KiB |
1
www/community/air-visual-card/ic-face-3.svg
Normal file
@@ -0,0 +1 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="48" height="48" viewBox="0 0 48 48"><g fill="none" fill-rule="evenodd"><path d="M0 48h48V0H0z"/><g fill="#B25826"><path d="M22.851 37.65a.377.377 0 0 0 0 .754h2.298a.376.376 0 0 0 0-.753h-2.298zm-.272-6.836c.513.148.986.22 1.448.22.46 0 .934-.072 1.446-.22a.378.378 0 0 0 .076-.693.372.372 0 0 0-.283-.03c-.892.257-1.587.257-2.479 0a.366.366 0 0 0-.283.03.372.372 0 0 0-.182.227.371.371 0 0 0 .032.287.373.373 0 0 0 .225.18m5.363 6.349a.375.375 0 0 0 .374-.418.374.374 0 0 0-.138-.252c-1.143-.92-2.496-1.387-4.025-1.387-1.53 0-2.883.466-4.026 1.387a.374.374 0 0 0-.057.53c.13.16.368.187.53.056 1.004-.81 2.2-1.22 3.553-1.22 1.353 0 2.548.41 3.553 1.22.068.055.15.084.236.084m4.072-14.527a.375.375 0 0 0 .324-.422.382.382 0 0 0-.423-.323c-1.588.21-3.277-.342-4.408-1.445a.378.378 0 0 0-.64.275.38.38 0 0 0 .114.265c1.093 1.065 2.686 1.702 4.262 1.702.259 0 .518-.018.771-.052M21.01 20.454a.373.373 0 0 0-.266-.114h-.004a.374.374 0 0 0-.262.107c-1.13 1.103-2.816 1.658-4.408 1.444a.374.374 0 0 0-.423.324.377.377 0 0 0 .324.422c.254.034.514.052.771.052 1.577 0 3.17-.637 4.263-1.703a.377.377 0 0 0 .005-.532m10.016 4.189c0-.515-.689-.935-1.536-.935-.846 0-1.534.42-1.534.935 0 .524.673.934 1.534.934.847 0 1.536-.42 1.536-.934m-12.539.934c.848 0 1.537-.42 1.537-.934 0-.515-.69-.935-1.537-.935-.846 0-1.534.42-1.534.935 0 .524.674.934 1.534.934"/><path d="M40.139 24.513a1.358 1.358 0 0 0-.924-.238c.377-1.81.637-3.614.777-5.363.382-4.79-.863-8.887-3.6-11.849-2.92-3.158-7.437-4.97-12.392-4.97-1.258 0-2.374.124-3.007.242a8.836 8.836 0 0 1-.759-.438l-.051-.035a.191.191 0 0 0-.26.052l-.334.492a.189.189 0 0 0 .053.265l.053.034c.856.561 1.79.983 2.561 1.157.875.197 1.311.622 1.493.858l.033.041a.19.19 0 0 0 .235.052l.531-.278a.191.191 0 0 0 .066-.278l-.042-.059c-.172-.24-.653-.795-1.595-1.132.342-.019.783-.033 1.022-.033 4.698 0 8.964 1.701 11.702 4.668 2.59 2.807 3.719 6.554 3.353 11.137a43.37 43.37 0 0 1-.944 6.087l-.051.27a.254.254 0 0 0 .247.3h.362a.255.255 0 0 0 .154-.054l.057-.045c.245-.187.546-.236.716-.115.343.242.35 1.053.019 2.064l-.335 1.03-.01.027c-.192.595-.39 1.21-.637 1.943-.389 1.152-1.092 1.899-1.898 2.024l.063-.145c.047-.11.095-.22.142-.336a.255.255 0 0 0-.143-.327l-.408-.16a.255.255 0 0 0-.324.141c-1.775 4.454-3.995 7.823-6.986 10.603-1.625 1.51-3.206 1.82-5.079 1.82-1.873 0-3.453-.31-5.078-1.821-2.993-2.78-5.212-6.15-6.985-10.602a.253.253 0 0 0-.326-.14l-.407.16a.25.25 0 0 0-.142.327c.046.116.094.227.143.338.02.046.04.09.058.137a.45.45 0 0 1-.039-.006c-.796-.146-1.472-.88-1.855-2.014a142.07 142.07 0 0 1-.628-1.911l-.353-1.09c-.333-1.01-.325-1.82.018-2.062.175-.123.47-.072.734.129l.067.042a.251.251 0 0 0 .15.038l.357-.024a.226.226 0 0 0 .114-.039.252.252 0 0 0 .133-.002c.352-.089.698-.396.95-.843.41-.727.704-1.79 1.044-3.019.684-2.48 1.537-5.566 3.756-6.965 2.486-1.568 4.627-1.291 7.106-.971 2.38.306 5.074.652 8.572-.574l.08.052c.257 1.897 1.445 4.389 4.016 5.73a.376.376 0 1 0 .347-.668c-2.394-1.249-3.448-3.569-3.636-5.324a.38.38 0 0 0-.172-.278l-.387-.245a.37.37 0 0 0-.33-.037c-3.418 1.24-6.063.898-8.406.595-2.512-.322-4.881-.625-7.592 1.083-2.466 1.554-3.361 4.796-4.08 7.401-.327 1.182-.608 2.203-.973 2.85-.153.27-.314.404-.42.46a42.807 42.807 0 0 1-.89-5.834c-.743-9.32 4.854-13.079 8.258-14.49a.635.635 0 0 1 .045-.019c.42.184.813.318 1.167.398.876.197 1.312.622 1.494.858l.032.041a.19.19 0 0 0 .236.052l.53-.277a.191.191 0 0 0 .097-.124.184.184 0 0 0-.03-.154l-.043-.06c-.208-.29-.831-.998-2.102-1.286-.658-.147-1.472-.518-2.235-1.015l-.05-.034a.19.19 0 0 0-.261.051l-.334.492a.189.189 0 0 0 .053.266l.053.033c.112.073.226.141.338.207-5.757 2.681-8.74 8.19-8.185 15.136a43.8 43.8 0 0 0 .777 5.363 1.361 1.361 0 0 0-.923.237c-.423.298-1.033 1.102-.37 3.124l.334 1.026c.209.648.402 1.245.65 1.982.668 1.978 2.005 2.684 3.034 2.684.05 0 .1-.005.15-.01l.008-.001c1.733 3.91 3.835 6.935 6.612 9.515 1.959 1.821 3.907 2.072 5.72 2.072 1.812 0 3.76-.25 5.72-2.071 2.776-2.58 4.878-5.605 6.611-9.516h.007c.05.006.101.01.153.01 1.028 0 2.365-.705 3.032-2.683.253-.748.453-1.364.652-1.982l.332-1.025c.664-2.023.054-2.826-.368-3.125"/></g></g></svg>
|
||||
|
After Width: | Height: | Size: 4.0 KiB |
1
www/community/air-visual-card/ic-face-4.svg
Normal file
@@ -0,0 +1 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="48" height="48" viewBox="0 0 48 48"><g fill="none" fill-rule="evenodd"><path d="M0 48h48V0H0z"/><g fill="#AF2C3C"><path d="M32.065 21.722a.377.377 0 0 0-.376-.377h-4.396a.376.376 0 0 0 0 .754h4.396c.207 0 .376-.17.376-.377m-4.11 2.921c0 .524.674.934 1.535.934.847 0 1.536-.42 1.536-.934 0-.516-.689-.935-1.536-.935-.846 0-1.535.42-1.535.935m-6.893-2.921a.377.377 0 0 0-.376-.377H16.29a.376.376 0 0 0 0 .754h4.396c.208 0 .376-.17.376-.377m-4.109 2.921c0 .524.674.934 1.534.934.847 0 1.536-.42 1.536-.934 0-.516-.689-.935-1.536-.935-.846 0-1.534.42-1.534.935m10.753 9.122h-7.411a.377.377 0 0 0 0 .754h7.41a.377.377 0 0 0 0-.754m.001 2.212h-7.411a.377.377 0 0 0 0 .753h7.41a.377.377 0 0 0 0-.753m.001 2.213h-7.411a.377.377 0 0 0 0 .752h7.41a.377.377 0 0 0 0-.753"/><path d="M11.586 32.41a2.976 2.976 0 0 1-.467-.072l-.024-.008c-.435-.118-1.237-.535-1.727-1.986-.245-.726-.443-1.338-.633-1.928l-.348-1.071c-.332-1.012-.324-1.822.018-2.064.171-.122.48-.074.715.115.1.079.136.145.147.185.477 1.834 1.227 4.102 2.007 6.067l.312.763zm23.771.777c-1.663 3.677-3.66 6.525-6.278 8.957-1.625 1.511-3.206 1.82-5.08 1.82-1.872 0-3.453-.309-5.078-1.82-2.619-2.433-4.615-5.281-6.278-8.957.574-.017 1.302-.132 2.336-.728a63.87 63.87 0 0 0 2.612-1.607l.024-.015c2.364-1.51 4.232-2.703 6.385-2.704 2.153.001 4.02 1.194 6.386 2.704a65.4 65.4 0 0 0 2.635 1.622c1.034.596 1.762.71 2.336.728zm4.257-5.842l-.349 1.071c-.19.591-.388 1.202-.633 1.929-.49 1.451-1.292 1.867-1.727 1.985l-.022.008c-.122.032-.28.056-.469.073l.312-.763c.78-1.964 1.53-4.232 2.006-6.065a.42.42 0 0 1 .148-.187.797.797 0 0 1 .48-.182c.09 0 .172.022.235.067.343.242.35 1.052.019 2.064zm.525-2.832a1.36 1.36 0 0 0-.924-.238c.377-1.81.637-3.614.777-5.363.382-4.79-.863-8.887-3.6-11.849-2.92-3.158-7.437-4.97-12.392-4.97-1.258 0-2.374.124-3.007.242a8.836 8.836 0 0 1-.759-.439l-.051-.034a.19.19 0 0 0-.26.052l-.334.491a.19.19 0 0 0 .053.265l.053.035c.856.561 1.79.983 2.561 1.157.875.197 1.311.622 1.493.858l.033.041a.19.19 0 0 0 .235.051l.531-.277a.191.191 0 0 0 .066-.278l-.042-.058c-.172-.24-.653-.795-1.595-1.134.343-.018.785-.032 1.022-.032 4.698 0 8.964 1.701 11.702 4.668 2.59 2.806 3.719 6.554 3.353 11.137a42.16 42.16 0 0 1-.943 6.085c-.471 2.041-1.554 5.263-2.525 7.513-.669.01-1.27-.099-2.19-.63a63.936 63.936 0 0 1-2.605-1.605c-2.37-1.512-4.415-2.818-6.795-2.822-2.37.003-4.416 1.309-6.787 2.822a63.116 63.116 0 0 1-2.606 1.605c-.92.53-1.529.64-2.188.63-.882-2.04-1.846-4.847-2.414-7.023.337-.1.667-.4.91-.83.41-.727.703-1.79 1.043-3.02.684-2.48 1.537-5.567 3.756-6.966 2.486-1.567 4.627-1.29 7.106-.97 2.38.306 5.074.652 8.572-.573l.08.051c.257 1.897 1.445 4.389 4.016 5.73a.376.376 0 1 0 .347-.668c-2.394-1.25-3.448-3.569-3.636-5.323a.38.38 0 0 0-.172-.279l-.387-.245a.37.37 0 0 0-.33-.037c-3.418 1.24-6.063.898-8.406.595-2.512-.322-4.882-.625-7.592 1.083-2.466 1.554-3.361 4.795-4.08 7.401-.327 1.182-.608 2.203-.973 2.85-.153.27-.314.404-.42.46a42.82 42.82 0 0 1-.89-5.834c-.743-9.32 4.854-13.079 8.258-14.49l.045-.019c.42.185.813.319 1.167.398.876.198 1.312.622 1.494.858l.032.04a.19.19 0 0 0 .236.053l.53-.278a.19.19 0 0 0 .067-.277l-.043-.06c-.208-.29-.831-.998-2.102-1.285-.658-.148-1.472-.519-2.235-1.016l-.05-.034a.19.19 0 0 0-.261.051l-.334.492a.189.189 0 0 0 .053.266l.053.033c.112.073.226.141.338.207-5.757 2.681-8.74 8.19-8.185 15.135.139 1.74.4 3.543.777 5.364a1.36 1.36 0 0 0-.923.237c-.423.298-1.033 1.102-.37 3.123l.334 1.027c.198.617.398 1.234.65 1.982.668 1.978 2.005 2.684 3.034 2.684.05 0 .101-.005.151-.01h.007c1.735 3.911 3.837 6.936 6.612 9.515 1.96 1.82 3.907 2.071 5.72 2.071 1.812 0 3.76-.25 5.72-2.072 2.776-2.58 4.878-5.604 6.613-9.515h.005c.05.006.101.01.153.01 1.028 0 2.365-.705 3.032-2.683.257-.759.463-1.395.652-1.982l.332-1.025c.664-2.023.054-2.826-.368-3.125z"/></g></g></svg>
|
||||
|
After Width: | Height: | Size: 3.7 KiB |
1
www/community/air-visual-card/ic-face-5.svg
Normal file
@@ -0,0 +1 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="48" height="48" viewBox="0 0 48 48"><g fill="none" fill-rule="evenodd"><path d="M0 48h48V0H0z"/><g fill="#634675"><path d="M26.22 36.782a2.152 2.152 0 0 1-2.148 2.152 2.152 2.152 0 0 1 0-4.302 2.15 2.15 0 0 1 2.147 2.15m-2.147-2.9a2.9 2.9 0 0 0 0 5.802 2.901 2.901 0 0 0 0-5.802"/><path d="M27.889 36.914A3.696 3.696 0 0 1 24.2 40.61a3.696 3.696 0 0 1 0-7.389 3.695 3.695 0 0 1 3.688 3.694M24.2 32.471a4.445 4.445 0 0 0 0 8.888 4.445 4.445 0 0 0 0-8.888"/><path d="M38.206 36.981a.102.102 0 0 1-.007.08l-4.565 8.86a.104.104 0 0 1-.139.044l-1.017-.526 4.66-9.044 1.017.526a.102.102 0 0 1 .05.06zm-27.431-.06l1.017-.526 4.66 9.045-1.017.525a.107.107 0 0 1-.139-.044l-4.565-8.86a.105.105 0 0 1-.007-.08.105.105 0 0 1 .05-.06zm8.907 6.342c-.125.391-.393.71-.757.898l-1.808.935-4.66-9.044 1.808-.935a1.529 1.529 0 0 1 2.066.66l3.253 6.314c.188.364.223.78.098 1.172zm8.764-.213c-1.378.875-2.732.996-3.99.996-1.253 0-2.601-.12-3.975-.986a2.275 2.275 0 0 0-.232-1.313l-3.254-6.313c-.022-.044-.05-.083-.077-.123l-.018-.026c2.134-3.991 5.75-6.972 7.566-6.976 1.816.004 5.43 2.984 7.565 6.975l-.02.03a.976.976 0 0 0-.076.12l-3.254 6.313c-.205.4-.286.85-.235 1.303zm3.367 2.046l-1.808-.935a1.54 1.54 0 0 1-.659-2.07l3.253-6.314a1.525 1.525 0 0 1 1.364-.832c.246 0 .482.058.702.172l1.808.935-4.398 8.537-.262.507zm8.677-20.407a1.347 1.347 0 0 0-.918-.237c.374-1.802.633-3.597.771-5.337.38-4.767-.856-8.844-3.576-11.791-2.9-3.144-7.388-4.947-12.31-4.947-1.25 0-2.359.124-2.989.24-.29-.151-.53-.29-.753-.435l-.051-.034a.19.19 0 0 0-.258.051l-.332.49a.184.184 0 0 0-.03.141c.01.05.04.095.083.122l.053.034c.85.559 1.777.979 2.543 1.152.87.196 1.303.618 1.484.853l.032.041a.188.188 0 0 0 .234.052l.528-.277a.19.19 0 0 0 .066-.277l-.043-.058c-.17-.239-.648-.79-1.584-1.127.34-.018.778-.033 1.016-.033 4.667 0 8.904 1.694 11.624 4.646 2.574 2.793 3.695 6.522 3.332 11.083a43.229 43.229 0 0 1-.938 6.058l-.05.269a.248.248 0 0 0 .053.206.245.245 0 0 0 .192.091h.36a.255.255 0 0 0 .152-.053l.057-.044c.243-.187.542-.235.711-.115.34.241.348 1.048.02 2.054l-.347 1.066c-.19.588-.386 1.196-.63 1.92-.385 1.146-1.085 1.89-1.884 2.014.02-.05.041-.098.062-.146.047-.109.094-.218.14-.333a.253.253 0 0 0-.141-.325l-.407-.16a.253.253 0 0 0-.321.141c-.382.96-.795 1.884-1.258 2.816l-.023.03-.151-.079a2.256 2.256 0 0 0-1.74-.146c-.26.083-.5.21-.715.378a20.2 20.2 0 0 0-3.814-4.82c-1.611-1.482-3.127-2.3-4.277-2.303-1.143.003-2.66.822-4.27 2.304a20.203 20.203 0 0 0-3.815 4.82 2.263 2.263 0 0 0-.717-.379 2.255 2.255 0 0 0-1.739.146l-.151.078-.063-.078a36.789 36.789 0 0 1-1.238-2.767.25.25 0 0 0-.322-.14l-.406.16a.252.252 0 0 0-.14.326c.044.111.09.218.136.325l.064.147a.46.46 0 0 1-.04-.006c-.79-.145-1.462-.875-1.842-2.004-.24-.71-.433-1.309-.62-1.888l-.356-1.098c-.329-1.006-.321-1.812.02-2.053.173-.123.464-.072.729.128l.066.042a.244.244 0 0 0 .15.038l.354-.023a.235.235 0 0 0 .113-.04.25.25 0 0 0 .132-.002c.35-.088.693-.393.944-.838.408-.724.7-1.78 1.037-3.005.68-2.468 1.526-5.54 3.731-6.932 2.47-1.56 4.597-1.284 7.06-.966 2.365.304 5.04.649 8.516-.57l.08.051c.255 1.888 1.434 4.368 3.99 5.701a.375.375 0 0 0 .344-.664c-2.379-1.242-3.426-3.551-3.613-5.298a.377.377 0 0 0-.17-.276l-.384-.244a.369.369 0 0 0-.328-.037c-3.396 1.234-6.023.894-8.351.592-2.496-.32-4.851-.622-7.543 1.078-2.45 1.545-3.339 4.772-4.054 7.365-.324 1.176-.604 2.192-.967 2.836-.155.276-.318.409-.417.459A42.807 42.807 0 0 1 9.5 19.04c-.739-9.275 4.822-13.015 8.203-14.42l.045-.019c.418.184.808.317 1.16.397.87.196 1.303.619 1.484.853l.032.041a.19.19 0 0 0 .234.052l.527-.276a.19.19 0 0 0 .066-.277l-.042-.059c-.207-.289-.826-.994-2.089-1.28-.653-.147-1.462-.515-2.22-1.01l-.05-.034a.187.187 0 0 0-.259.051l-.332.49a.19.19 0 0 0 .052.263l.053.034c.111.073.225.14.337.205-5.72 2.669-8.683 8.152-8.132 15.063.137 1.73.397 3.526.772 5.337a1.358 1.358 0 0 0-.918.237c-.42.297-1.026 1.097-.366 3.108l.33 1.022c.198.614.396 1.228.647 1.972.663 1.97 1.992 2.671 3.014 2.671.05 0 .098-.005.146-.01h.01c.189.426.397.869.634 1.348l-2.492 1.288a1.044 1.044 0 0 0-.447 1.402l4.566 8.861a1.038 1.038 0 0 0 1.4.448l3.488-1.805c.411-.212.75-.532.986-.928 1.453.805 2.837.916 4.117.916 1.222 0 2.667-.11 4.129-.924.235.4.577.722.991.936l3.49 1.805a1.036 1.036 0 0 0 1.4-.448l4.565-8.86a1.043 1.043 0 0 0-.446-1.403l-2.508-1.295c.233-.472.44-.912.63-1.342l.012.001c.048.005.096.01.146.01 1.021 0 2.35-.702 3.013-2.671.254-.755.459-1.389.647-1.972l.33-1.02c.66-2.014.054-2.813-.365-3.11z"/><path d="M31.938 21.552a.375.375 0 0 0-.374-.376h-4.367a.374.374 0 0 0 0 .75h4.367a.374.374 0 0 0 .374-.374m-3.703 2.673c0 .521.67.929 1.525.929.841 0 1.526-.417 1.526-.929 0-.513-.685-.93-1.526-.93-.84 0-1.525.417-1.525.93m-6.885-2.673a.375.375 0 0 0-.374-.376h-4.367a.374.374 0 0 0 0 .75h4.367a.374.374 0 0 0 .374-.374m-4.409 2.673c0 .521.67.929 1.525.929.841 0 1.526-.417 1.526-.929 0-.513-.685-.93-1.526-.93-.84 0-1.525.417-1.525.93"/></g></g></svg>
|
||||
|
After Width: | Height: | Size: 4.8 KiB |
1
www/community/air-visual-card/ic-face-6.svg
Normal file
@@ -0,0 +1 @@
|
||||
<svg height="48" viewBox="0 0 48 48" width="48" xmlns="http://www.w3.org/2000/svg"><g fill="none" fill-rule="evenodd"><path d="M0 48h48V0H0z"/><g fill="#683e51"><path d="M27.746 24.537c0-1.464.882-2.655 1.964-2.655 1.083 0 1.965 1.191 1.965 2.655 0 1.463-.882 2.655-1.965 2.655-1.082 0-1.964-1.192-1.964-2.655m1.964 3.408c1.499 0 2.717-1.529 2.717-3.408s-1.218-3.408-2.717-3.408c-1.498 0-2.716 1.53-2.716 3.408 0 1.879 1.218 3.408 2.716 3.408m-13.386-3.408c0-1.464.882-2.655 1.964-2.655 1.083 0 1.965 1.191 1.965 2.655 0 1.463-.882 2.655-1.965 2.655-1.082 0-1.964-1.192-1.964-2.655m1.964 3.408c1.499 0 2.717-1.529 2.717-3.408s-1.218-3.408-2.717-3.408c-1.498 0-2.716 1.53-2.716 3.408 0 1.879 1.218 3.408 2.716 3.408m1.865 11.492c.997-.617 2.385-.967 3.847-.967s2.85.35 3.848.967zm-1.383 1.746c.06-.345.225-.68.49-.994h9.48c.265.315.429.649.49.994zm8.833 2.5c-.982.533-2.251.825-3.603.825-1.353 0-2.62-.292-3.602-.825zm1.597-1.747c-.091.35-.287.684-.582.993h-9.236c-.295-.31-.49-.643-.582-.993zM24 45.262c3.317 0 6.015-1.693 6.015-3.773S27.317 37.717 24 37.717s-6.016 1.692-6.016 3.772 2.7 3.773 6.016 3.773z"/><path d="M17.74 38.036c.26-2.17 3.02-3.88 6.286-3.888 3.265.009 6.027 1.722 6.287 3.901.428 3.054.461 3.494.461 3.556 0 2.399-3.027 4.357-6.748 4.367-3.72-.01-6.748-1.968-6.748-4.367 0-.062.033-.502.462-3.569m6.285-21.54c5.077.007 9.18 2.16 10.21 5.357 1.212 3.769-1.398 9.52-4.534 13.573-1.334-1.265-3.439-2.024-5.65-2.036H24c-2.21.012-4.315.771-5.648 2.036-3.136-4.053-5.746-9.804-4.534-13.573 1.03-3.197 5.132-5.35 10.208-5.357m16.114 8.017a1.366 1.366 0 0 0-.924-.238c.377-1.81.638-3.614.777-5.363.382-4.79-.863-8.887-3.6-11.849-2.92-3.158-7.437-4.97-12.392-4.97-1.258 0-2.374.124-3.008.242a8.916 8.916 0 0 1-.758-.439l-.051-.033a.19.19 0 0 0-.26.052l-.334.49a.188.188 0 0 0 .053.265l.053.035c.857.562 1.791.984 2.56 1.157.876.197 1.312.622 1.494.857l.032.042a.19.19 0 0 0 .236.051l.531-.277a.19.19 0 0 0 .066-.278l-.042-.059c-.172-.24-.653-.794-1.595-1.133.342-.018.783-.032 1.022-.032 4.699 0 8.964 1.7 11.702 4.668 2.59 2.806 3.718 6.553 3.353 11.137a43.393 43.393 0 0 1-.944 6.088l-.051.27a.253.253 0 0 0 .247.298h.362a.254.254 0 0 0 .154-.052l.057-.046c.243-.187.546-.236.717-.115.342.243.349 1.052.018 2.064l-.335 1.03c-.22.678-.405 1.254-.647 1.97-.389 1.151-1.092 1.899-1.898 2.024l.063-.145c.047-.11.095-.22.141-.336a.253.253 0 0 0-.142-.327l-.408-.16a.255.255 0 0 0-.324.14c-1.29 3.237-2.844 5.928-4.75 8.22-.068-.504-.15-1.106-.25-1.815-.081-.68-.366-1.337-.846-1.95 3.307-4.232 6.047-10.306 4.737-14.376-1.129-3.51-5.522-5.874-10.93-5.882-5.407.008-9.799 2.372-10.929 5.882-1.31 4.07 1.43 10.144 4.737 14.376-.48.614-.764 1.27-.844 1.948-.104.733-.188 1.354-.258 1.87-1.929-2.309-3.498-5.016-4.795-8.272a.254.254 0 0 0-.326-.14l-.408.16a.252.252 0 0 0-.14.327c.045.115.093.226.14.338a2.1 2.1 0 0 1 .06.137.45.45 0 0 1-.039-.006c-.796-.146-1.472-.88-1.855-2.014-.244-.719-.439-1.325-.628-1.911l-.354-1.09c-.332-1.01-.324-1.82.019-2.063.175-.123.47-.072.735.13l.066.042a.255.255 0 0 0 .15.038l.358-.023a.229.229 0 0 0 .113-.04.24.24 0 0 0 .134-.003c.35-.087.697-.394.95-.841.41-.728.703-1.79 1.043-3.02.684-2.48 1.536-5.567 3.756-6.965 2.486-1.568 4.627-1.292 7.106-.971 2.38.306 5.074.651 8.572-.573l.08.05c.257 1.898 1.444 4.39 4.016 5.73a.38.38 0 0 0 .507-.16.372.372 0 0 0 .025-.288.37.37 0 0 0-.185-.22c-2.394-1.248-3.448-3.568-3.636-5.323a.381.381 0 0 0-.172-.278l-.387-.245a.372.372 0 0 0-.33-.036c-3.418 1.238-6.062.897-8.406.594-2.513-.321-4.883-.624-7.592 1.083-2.466 1.553-3.361 4.797-4.081 7.402-.326 1.18-.607 2.201-.973 2.85-.152.27-.312.403-.42.458a42.788 42.788 0 0 1-.888-5.833C8.203 9.517 13.8 5.759 17.203 4.348l.046-.019c.42.185.813.318 1.168.398.875.198 1.311.622 1.493.858l.032.04a.19.19 0 0 0 .236.053l.532-.278a.192.192 0 0 0 .095-.124.187.187 0 0 0-.03-.154l-.042-.058c-.209-.292-.832-1-2.103-1.286-.657-.148-1.472-.518-2.235-1.016l-.05-.034a.19.19 0 0 0-.26.052l-.335.491a.187.187 0 0 0 .053.265l.053.034c.111.073.226.14.339.206-5.758 2.682-8.74 8.192-8.186 15.137a43.8 43.8 0 0 0 .777 5.363 1.355 1.355 0 0 0-.924.236c-.422.3-1.032 1.103-.369 3.125l.334 1.026c.209.648.402 1.245.65 1.982.669 1.979 2.006 2.684 3.034 2.684.05 0 .1-.005.15-.01l.008-.001c1.338 3.019 2.942 5.555 4.903 7.75-.034.298-.05.469-.05.537 0 2.807 3.355 5.105 7.479 5.125h.052c4.124-.02 7.48-2.318 7.48-5.125 0-.071-.018-.26-.057-.589 1.94-2.185 3.529-4.704 4.857-7.698h.006c.05.006.1.01.152.01 1.028 0 2.366-.704 3.034-2.684.252-.747.452-1.363.65-1.98l.333-1.026c.664-2.023.054-2.826-.368-3.125"/></g></g></svg>
|
||||
|
After Width: | Height: | Size: 4.4 KiB |
1
www/community/air-visual-card/ic-humidity.svg
Normal file
@@ -0,0 +1 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="72" height="72" viewBox="0 0 72 72"><g fill="none" fill-rule="evenodd"><path d="M0 72h72V0H0z"/><g stroke="#879CB2" stroke-linejoin="round" stroke-width="2.25"><path stroke-linecap="round" d="M36 49.5a6.758 6.758 0 0 1-6.75-6.75"/><path d="M47.678 36c-2.931-5.077-11.68-20.25-11.68-20.25L24.324 36a13.454 13.454 0 0 0-1.824 6.75c0 7.454 6.045 13.5 13.5 13.5 7.458 0 13.5-6.046 13.5-13.5 0-2.46-.672-4.762-1.821-6.75z"/></g></g></svg>
|
||||
|
After Width: | Height: | Size: 480 B |
1
www/community/air-visual-card/ic-w-clear-sky.svg
Normal file
@@ -0,0 +1 @@
|
||||
<svg height="24" viewBox="0 0 24 24" width="24" xmlns="http://www.w3.org/2000/svg"><g fill="none" fill-rule="evenodd"><path d="M0 24h24V0H0z"/><path d="M12 7.5A4.505 4.505 0 0 0 7.5 12c0 2.481 2.019 4.5 4.5 4.5s4.5-2.019 4.5-4.5c0-2.48-2.019-4.5-4.5-4.5m0 9.938a.375.375 0 0 0-.375.375v1.875a.375.375 0 0 0 .75 0v-1.875a.375.375 0 0 0-.375-.375m0-10.875a.375.375 0 0 0 .375-.375V4.313a.375.375 0 0 0-.75 0v1.875c0 .207.168.375.375.375m4.376 9.282a.375.375 0 0 0-.531.53L17.17 17.7a.372.372 0 0 0 .53 0 .374.374 0 0 0 .001-.53l-1.325-1.326zm-8.752-7.69a.376.376 0 0 0 .53 0 .374.374 0 0 0 .001-.53L6.83 6.299a.375.375 0 0 0-.531.53zm12.064 3.47h-1.875a.375.375 0 0 0 0 .75h1.875a.375.375 0 0 0 0-.75M6.563 12a.375.375 0 0 0-.375-.375H4.313a.375.375 0 0 0 0 .75h1.875A.375.375 0 0 0 6.563 12m9.547-3.735a.378.378 0 0 0 .266-.11l1.325-1.326a.375.375 0 0 0-.53-.53l-1.327 1.326a.375.375 0 0 0 .266.64m-8.486 7.58L6.299 17.17a.374.374 0 0 0 .001.53.372.372 0 0 0 .53 0l1.325-1.326a.375.375 0 0 0-.531-.53" fill="#fdd737"/></g></svg>
|
||||
|
After Width: | Height: | Size: 1.0 KiB |
1
www/community/air-visual-card/ic-w-new-clouds.svg
Normal file
@@ -0,0 +1 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="none" fill-rule="evenodd"><path fill="none" d="M0 24h24V0H0z"/><path fill="#CAD4DB" d="M12.932 9.57a.374.374 0 0 1-.265.64.37.37 0 0 1-.265-.11 3.708 3.708 0 0 0-1.488-.898v.001a3.738 3.738 0 0 0-1.164-.202c-1.474 0-2.734.86-3.343 2.1.404.157.776.388 1.089.7a.374.374 0 0 1 0 .53.373.373 0 0 1-.53.002 2.398 2.398 0 0 0-.842-.54l.014.004a2.421 2.421 0 0 0-.888-.173 2.437 2.437 0 0 0 0 4.875h10.5a5.25 5.25 0 1 0 0-10.5c-2.17 0-3.64 1.215-4.483 2.518 0 0 .83.232 1.665 1.052"/><path fill="#FDD737" d="M5.661 10.902a4.493 4.493 0 0 1 4.09-2.65c.248 0 .5.023.76.072.22-.398.492-.756.791-1.088a3.916 3.916 0 0 0-3.423-2.01 3.942 3.942 0 0 0-3.938 3.938c0 .651.175 1.274.473 1.836.268-.074.545-.126.836-.126.138 0 .274.01.411.028M7.879 4.29a.375.375 0 0 1-.375-.376V2.04a.375.375 0 0 1 .75 0v1.875a.375.375 0 0 1-.375.375M4.166 5.827a.378.378 0 0 1-.266-.11L2.575 4.391a.375.375 0 0 1 .531-.53l1.326 1.326a.375.375 0 0 1-.266.64M2.629 9.54H.754a.375.375 0 0 1 0-.75h1.875a.375.375 0 0 1 0 .75m8.961-3.713a.378.378 0 0 1-.265-.11.377.377 0 0 1 0-.53l1.327-1.326a.375.375 0 1 1 .53.53l-1.325 1.326a.378.378 0 0 1-.266.11"/></g></svg>
|
||||
|
After Width: | Height: | Size: 1.2 KiB |
1
www/community/air-visual-card/ic-w-night-clear-sky.svg
Normal file
@@ -0,0 +1 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="none" fill-rule="evenodd"><path d="M0 24h24V0H0z"/><path d="M6.587 11.235l-.288-.889.756-.549A.093.093 0 0 0 7 9.628h-.935l-.29-.889a.092.092 0 0 0-.087-.065.094.094 0 0 0-.09.065l-.288.89h-.935a.093.093 0 0 0-.055.168l.755.55-.288.888a.093.093 0 0 0 .034.104.088.088 0 0 0 .055.02c.02 0 .039-.007.055-.02l.757-.549.755.55a.09.09 0 0 0 .11 0 .091.091 0 0 0 .034-.105M9.419 6.15l-.385 1.185a.125.125 0 0 0 .193.14l1.008-.732 1.008.731a.125.125 0 1 0 .193-.139L11.05 6.15l1.008-.733a.126.126 0 0 0 .046-.14.127.127 0 0 0-.12-.086h-1.247l-.383-1.185a.126.126 0 0 0-.24 0L9.73 5.191H8.484a.127.127 0 0 0-.12.086.126.126 0 0 0 .047.14l1.008.733zm8.161 1.551a6.492 6.492 0 0 0-2.258-1.545l-.385-.159a.187.187 0 0 0-.248.235l.137.393a5.789 5.789 0 0 1-1.48 6.096A5.74 5.74 0 0 1 9.383 14.3a5.756 5.756 0 0 1-2.205-.435l-.386-.158a.187.187 0 0 0-.248.235l.137.393c.307.883.785 1.67 1.42 2.34a6.467 6.467 0 0 0 4.74 2.04 6.501 6.501 0 0 0 4.485-1.786 6.48 6.48 0 0 0 2.035-4.56 6.481 6.481 0 0 0-1.78-4.667" fill="#CAD4DB"/></g></svg>
|
||||
|
After Width: | Height: | Size: 1.1 KiB |
1
www/community/air-visual-card/ic-w-rain.svg
Normal file
@@ -0,0 +1 @@
|
||||
<svg height="24" viewBox="0 0 24 24" width="24" xmlns="http://www.w3.org/2000/svg"><g fill="none" fill-rule="evenodd"><path d="M0 24h24V0H0z"/><path d="M7.268 23.132a.374.374 0 0 0 .325.562.376.376 0 0 0 .325-.187l3.613-6.258h-.867zm4.684-2.922a.374.374 0 0 0 .325.561.376.376 0 0 0 .325-.187l1.925-3.335h-.866l-1.709 2.96zm-5.997 0a.374.374 0 0 0 .325.561.376.376 0 0 0 .325-.187L8.53 17.25h-.866z" fill="#61b6df"/><path d="M12.932 9.57a.374.374 0 0 1-.265.64.37.37 0 0 1-.265-.11 3.708 3.708 0 0 0-1.488-.898v.001a3.738 3.738 0 0 0-1.164-.202c-1.474 0-2.734.86-3.343 2.1.404.157.776.388 1.089.7a.374.374 0 0 1 0 .53.373.373 0 0 1-.53.002 2.398 2.398 0 0 0-.842-.54l.014.004a2.421 2.421 0 0 0-.888-.173 2.437 2.437 0 0 0 0 4.875h10.5a5.25 5.25 0 1 0 0-10.5c-2.17 0-3.64 1.215-4.483 2.518 0 0 .83.232 1.665 1.052" fill="#879cb2"/></g></svg>
|
||||
|
After Width: | Height: | Size: 840 B |
1
www/community/air-visual-card/ic-w-scattered-clouds.svg
Normal file
@@ -0,0 +1 @@
|
||||
<svg height="24" viewBox="0 0 24 24" width="24" xmlns="http://www.w3.org/2000/svg"><g fill="none" fill-rule="evenodd"><path d="M0 24h24V0H0z"/><path d="M12.932 9.57a.373.373 0 0 1 0 .53.373.373 0 0 1-.53 0 3.722 3.722 0 0 0-1.487-.897 3.743 3.743 0 0 0-1.165-.202c-1.475 0-2.734.86-3.344 2.1a3.17 3.17 0 0 1 1.09.7.376.376 0 0 1-.265.641.374.374 0 0 1-.264-.11 2.42 2.42 0 0 0-.843-.539l.014.004a2.426 2.426 0 0 0-.888-.172 2.438 2.438 0 1 0 0 4.875h10.5a5.25 5.25 0 0 0 0-10.5c-2.169 0-3.64 1.215-4.483 2.518 0 0 .83.232 1.665 1.051" fill="#cad4db"/></g></svg>
|
||||
|
After Width: | Height: | Size: 561 B |
1
www/community/air-visual-card/ic-w-snow.svg
Normal file
@@ -0,0 +1 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="none" fill-rule="evenodd"><path d="M0 24h24V0H0z"/><path d="M12.932 9.57a.374.374 0 0 1-.265.64.37.37 0 0 1-.265-.11 3.708 3.708 0 0 0-1.488-.898v.001a3.738 3.738 0 0 0-1.164-.202c-1.474 0-2.734.86-3.343 2.1.404.157.776.388 1.089.7a.374.374 0 0 1 0 .53.373.373 0 0 1-.53.002 2.398 2.398 0 0 0-.842-.54l.014.004a2.421 2.421 0 0 0-.888-.173 2.437 2.437 0 0 0 0 4.875h10.5a5.25 5.25 0 1 0 0-10.5c-2.17 0-3.64 1.215-4.483 2.518 0 0 .83.232 1.665 1.052m-.277 12.389h-.923l.462-.799a.225.225 0 0 0-.39-.225l-.46.798-.462-.798a.225.225 0 0 0-.39.225l.461.8h-.923a.225.225 0 0 0 0 .45h.923l-.462.8a.226.226 0 0 0 .391.223l.461-.798.46.798a.227.227 0 0 0 .308.083.226.226 0 0 0 .083-.307l-.462-.8h.923a.225.225 0 0 0 0-.45m3.55-2.842h-.922l.461-.799a.226.226 0 0 0-.39-.224l-.46.798-.462-.798a.226.226 0 0 0-.391.224l.461.8h-.922a.225.225 0 0 0 0 .45h.923l-.462.8a.226.226 0 0 0 .391.223l.461-.798.46.798a.227.227 0 0 0 .308.083.226.226 0 0 0 .083-.307l-.462-.8h.923a.225.225 0 0 0 0-.45m-7.099 0h-.922l.461-.799a.226.226 0 0 0-.39-.224l-.46.798-.462-.798a.226.226 0 0 0-.391.224l.461.8h-.922a.225.225 0 0 0 0 .45h.923l-.462.8a.226.226 0 0 0 .391.223l.461-.798.46.798a.227.227 0 0 0 .308.083.226.226 0 0 0 .083-.307l-.462-.8h.923a.225.225 0 0 0 0-.45" fill="#CAD4DB"/></g></svg>
|
||||
|
After Width: | Height: | Size: 1.3 KiB |
1
www/community/air-visual-card/ic-wind.svg
Normal file
@@ -0,0 +1 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="13" viewBox="0 0 16 13"><g fill="none" fill-rule="evenodd"><path d="M-4 19h24V-5H-4z"/><path stroke="#879CB2" stroke-linecap="round" stroke-linejoin="round" stroke-width=".748" d="M8 13l7.236-12L8 6.118.764 1z"/></g></svg>
|
||||
|
After Width: | Height: | Size: 281 B |