HLK-LD2450 Initial experiments to connect to HomeAssistant

good idea to have a old iphone in the drawer, just for those situation where the android app doesn’t work, once update, the android app works fine :slight_smile:

I have tried to update other sensors with the latest HLKradartool. It isn’t possible. It can’t download the firmware because of write permissions on the device (I think they forgot to add the permission in the app).
The newest firmware may solve the problem connecting to LD2450 but the app still needs an update to work as intended

Hi, i can’t get this to work, it says that states of entities are undefined.

image

Did you change the entity names in my code to match your ones?
Can you post your code? Without that, it would be very difficult to help you figure out the problem.

Yes, I changed the entities to match mine. (the editor even opens the little helper with the entity names so I know they are right.)
It is identical code as your, just changed the value after “2a” to match mine ID

type: custom:plotly-graph
title: Target Positions
refresh_interval: 1
hours_to_show: current_day
layout:
  height: 230
  margin:
    l: 50
    r: 20
    t: 20
    b: 40
  showlegend: true
  xaxis:
    dtick: 1000
    gridcolor: RGBA(200,200,200,0.15)
    zerolinecolor: RGBA(200,200,200,0.15)
    type: number
    fixedrange: true
    range:
      - 4000
      - -4000
  yaxis:
    dtick: 1000
    gridcolor: RGBA(200,200,200,0.15)
    zerolinecolor: RGBA(200,200,200,0.15)
    scaleanchor: x
    scaleratio: 1
    fixedrange: true
    range:
      - 6000
      - 0
entities:
  - entity: ''
    name: Target1
    marker:
      size: 12
    line:
      shape: spline
      width: 5
    x:
      - $ex hass.states["sensor.screek_humen_sensor_2a_7b06e8_target1_x"].state
    'y':
      - $ex hass.states["sensor.screek_human_sensor_2a_7b06e8_target1_y"].state
  - entity: ''
    name: Target2
    marker:
      size: 12
    line:
      shape: spline
      width: 5
    x:
      - $ex hass.states["sensor.screek_human_sensor_2a_7b06e8_target2_x"].state
    'y':
      - $ex hass.states["sensor.screek_human_sensor_2a_7b06e8_target2_y"].state
  - entity: ''
    name: Target3
    marker:
      size: 12
    line:
      shape: spline
      width: 5
    x:
      - $ex hass.states["sensor.screek_human_sensor_2a_7b06e8_target3_x"].state
    'y':
      - $ex hass.states["sensor.screek_human_sensor_2a_7b06e8_target3_y"].state
  - entity: ''
    name: Zone1
    mode: lines
    fill: toself
    fillcolor: RGBA(20,200,0,0.06)
    line:
      color: RGBA(20,200,0,0.2)
      shape: line
      width: 2
    x:
      - >-
        $ex
        hass.states["number.screek_human_sensor_2a_7b06e8_zone1_x_begin"].state
      - >-
        $ex
        hass.states["number.screek_human_sensor_2a_7b06e8_zone1_x_begin"].state
      - >-
        $ex
        hass.states["number.screek_human_sensor_2a_7b06e8_zone1_x_end"].state
      - >-
        $ex
        hass.states["number.screek_human_sensor_2a_7b06e8_zone1_x_end"].state
      - >-
        $ex
        hass.states["number.screek_human_sensor_2a_7b06e8_zone1_x_begin"].state
    'y':
      - >-
        $ex
        hass.states["number.screek_human_sensor_2a_7b06e8_zone1_y_begin"].state
      - >-
        $ex
        hass.states["number.screek_human_sensor_2a_7b06e8_zone1_y_end"].state
      - >-
        $ex
        hass.states["number.screek_human_sensor_2a_7b06e8_zone1_y_end"].state
      - >-
        $ex
        hass.states["number.screek_human_sensor_2a_7b06e8_zone1_y_begin"].state
      - >-
        $ex
        hass.states["number.screek_human_sensor_2a_7b06e8_zone1_y_begin"].state
  - entity: ''
    name: Zone2
    mode: lines
    fill: toself
    fillcolor: RGBA(200,0,255,0.06)
    line:
      color: RGBA(200,0,255,0.2)
      shape: line
      width: 2
    x:
      - >-
        $ex
        hass.states["number.screek_human_sensor_2a_7b06e8_zone2_x_begin].state
      - >-
        $ex
        hass.states["number.screek_human_sensor_2a_7b06e8_zone2_x_begin"].state
      - >-
        $ex
        hass.states["number.screek_human_sensor_2a_7b06e8_zone2_x_end"].state
      - >-
        $ex
        hass.states["number.screek_human_sensor_2a_7b06e8_zone2_x_end"].state
      - >-
        $ex
        hass.states["number.screek_human_sensor_2a_7b06e8_zone2_x_begin"].state
    'y':
      - >-
        $ex
        hass.states["number.screek_human_sensor_2a_7b06e8_zone2_y_begin"].state
      - >-
        $ex
        hass.states["number.screek_human_sensor_2a_7b06e8_zone2_y_end"].state
      - >-
        $ex
        hass.states["number.screek_human_sensor_2a_7b06e8_zone2_y_end"].state
      - >-
        $ex
        hass.states["number.screek_human_sensor_2a_7b06e8_zone2_y_begin"].state
      - >-
        $ex
        hass.states["number.screek_human_sensor_2a_7b06e8_zone2_y_begin"].state
  - entity: ''
    name: Zone3
    mode: lines
    fill: toself
    fillcolor: RGBA(200,120,55,0.06)
    line:
      color: RGBA(200,120,55,0.2)
      shape: line
      width: 2
    x:
      - >-
        $ex
        hass.states["number.screek_human_sensor_2a_7b06e8_zone3_x_begin"].state
      - >-
        $ex
        hass.states["number.screek_human_sensor_2a_7b06e8_zone3_x_begin"].state
      - >-
        $ex
        hass.states["number.screek_human_sensor_2a_7b06e8_zone3_x_end"].state
      - >-
        $ex
        hass.states["number.screek_human_sensor_2a_7b06e8_zone3_x_end"].state
      - >-
        $ex
        hass.states["number.screek_human_sensor_2a_7b06e8_zone3_x_begin"].state
    'y':
      - >-
        $ex
        hass.states["number.screek_human_sensor_2a_7b06e8_zone3_y_begin"].state
      - >-
        $ex
        hass.states["number.screek_human_sensor_2a_7b06e8_zone3_y_end"].state
      - >-
        $ex
        hass.states["number.screek_human_sensor_2a_7b06e8_zone3_y_end"].state
      - >-
        $ex
        hass.states["number.screek_human_sensor_2a_7b06e8_zone3_y_begin"].state
      - >-
        $ex
        hass.states["number.screek_human_sensor_2a_7b06e8_zone3_y_begin"].state
  - entity: ''
    name: ExZone
    mode: lines
    fill: toself
    fillcolor: RGBA(255,0,0,0.15)
    line:
      shape: line
      width: 1
      color: RGBA(255,0,0,0.2)
    x:
      - >-
        $ex
        hass.states["number.screek_human_sensor_2a_7b06e8_zout1_x_begin"].state
      - >-
        $ex
        hass.states["number.screek_human_sensor_2a_7b06e8_zout1_x_begin"].state
      - >-
        $ex
        hass.states["number.screek_human_sensor_2a_7b06e8_zout1_x_end"].state
      - >-
        $ex
        hass.states["number.screek_human_sensor_2a_7b06e8_zout1_x_end"].state
      - >-
        $ex
        hass.states["number.screek_human_sensor_2a_7b06e8_zout1_x_begin"].state
    'y':
      - >-
        $ex
        hass.states["number.screek_human_sensor_2a_7b06e8_zout1_y_begin"].state
      - >-
        $ex
        hass.states["number.screek_human_sensor_2a_7b06e8_zout1_y_end"].state
      - >-
        $ex
        hass.states["number.screek_human_sensor_2a_7b06e8_zout1_y_end"].state
      - >-
        $ex
        hass.states["number.screek_human_sensor_2a_7b06e8_zout1_y_begin"].state
      - >-
        $ex
        hass.states["number.screek_human_sensor_2a_7b06e8_zout1_y_begin"].state
  - entity: ''
    name: Coverage
    mode: lines
    fill: tonexty
    fillcolor: rgba(168, 216, 234, 0.15)
    line:
      shape: line
      width: 1
      dash: dot
    x:
      - 0
      - $ex 6000 * Math.sin((2 * Math.PI)/360 * 60)
      - 4500
      - 4000
      - 3000
      - 2000
      - 1000
      - 0
      - -1000
      - -2000
      - -3000
      - -4000
      - -4500
      - $ex -6000 * Math.sin((2 * Math.PI)/360 * 60)
      - 0
    'y':
      - 0
      - $ex 6000 * Math.cos((2 * Math.PI)/360 * 60)
      - $ex Math.sqrt( 6000**2 - 4500**2 )
      - $ex Math.sqrt( 6000**2 - 4000**2 )
      - $ex Math.sqrt( 6000**2 - 3000**2 )
      - $ex Math.sqrt( 6000**2 - 2000**2 )
      - $ex Math.sqrt( 6000**2 - 1000**2 )
      - 6000
      - $ex Math.sqrt( 6000**2 - 1000**2 )
      - $ex Math.sqrt( 6000**2 - 2000**2 )
      - $ex Math.sqrt( 6000**2 - 3000**2 )
      - $ex Math.sqrt( 6000**2 - 4000**2 )
      - $ex Math.sqrt( 6000**2 - 4500**2 )
      - $ex 6000 * Math.cos((2 * Math.PI)/360 * 60)
      - 0
raw_plotly_config: true
1 Like

I would double check all your sensor names as Screek had a firmware release that misspelt ‘human’ with ‘humen’ and it created extra sensors with the incorrect spelling. They have corrected the issue but you will need to clean up the extra sensors as the incorrect ones now show as unavailable. So if your code is trying to get the state of an unavailable sensor, you will get an error.

hass.states["number.screek_human_sensor_2a_7b06e8_zone2_x_begin].state

Also found the above which is missing the closing quote.

1 Like

:smiley: :smiley: :smiley: I have the “humen” edition :smiley: :smiley: long time I didn’t laughed so hard :smiley:
Firmware updated.
Looks like everything works fine now!

image

Thank you very much!
:heart:

1 Like

Today another version (1.1.61) of the HLKradartool was released for Android.
I’m still having the issue that no firmware can be downloaded because of write permissions. A message appears with the note “… In order to achieve this function, you need to allow file storage permission”.
Hitting confirm just brings the message back.
No rejected permissions for the app as I checked.
Do others have the same problem?

I’m having the same permission issues with 1.1.61.

I have noticed with the latest firmware (v2.04.23101915), the Y distance range seems to have been increased and I have seen values to 7500.

1 Like

Regarding the permission issues with the app: I actually have two versions installed, the new one from the app store and an older version from a downloaded APK I had from before.

Only the app store one has issues; the older app works fine for upgrading the firmware for the modules, and does not ask for storage permissions.

I had a HiLink rep reach out to me via WhatsApp, and will ping her about this issue in the morning. If I get any relevant feedback from them I’ll post it here.

1 Like

I also have the same problem on Android. The application cannot even connect to the LD2450. Every time the device is connected, the application often closes suddenly.

I edited Athua’s code a bit, making the screen expand. Additionally, display distance directly on the interface. I find plotly-graph-card very nice and deeply customizablenewplot (1)

3 Likes

Just wondering how well it detects your presence when sleeping.
I have zout enabled to block the ceiling fan with any presence delay to 30 secs, and seems like the longest time it wasn’t detecting presence was close to 11 minutes

I settled with this zout radius because the fan target keeps moving around this area.

image

Very nice!
Could you share the code?

1 Like

Still no new functioning android app released.
If you want to update your LD2450 you can go to PGYER - validation where older versions of the app are uploaded.
You should download the 1.1.22, install it, the message to upgrade to 1.1.33 should be ignored, then try to update, a message for the permissions will appear, you can grant them. If it fails to update then restart the app and download the 1.1.33 and finally you should be allowed to install the newest firmware.

1 Like

I’m happy to share.

type: custom:plotly-graph
title: LD2450
refresh_interval: 0.1
hours_to_show: current_day
ha_theme: true
layout:
  legend:
    'y': 6000
    orientation: h
  autosize: true
  margin:
    autoexpand: true
    l: 50
    r: 20
    t: 20
    b: 40
  showlegend: true
  xaxis:
    dtick: 1000
    gridcolor: RGBA(200,200,200,0.15)
    zerolinecolor: RGBA(200,200,200,0.15)
    type: number
    fixedrange: true
    range:
      - 6000
      - -6000
  yaxis:
    dtick: 1000
    gridcolor: RGBA(200,200,200,0.15)
    zerolinecolor: RGBA(200,200,200,0.15)
    scaleanchor: x
    scaleratio: 1
    fixedrange: true
    range:
      - 6000
      - 0
entities:
  - entity: ''
    name: Target1
    show_value: true
    unit_of_measurement: mm
    marker:
      size: 12
    line:
      shape: spline
      width: 5
    x:
      - $ex hass.states["sensor.khoang_cach_muc_tieu_1_truc_x"].state
    'y':
      - $ex hass.states["sensor.khoang_cach_muc_tieu_1_truc_y"].state
  - entity: ''
    name: Target2
    show_value: true
    unit_of_measurement: mm
    marker:
      size: 12
    line:
      shape: spline
      width: 5
    x:
      - $ex hass.states["sensor.khoang_cach_muc_tieu_2_truc_x"].state
    'y':
      - $ex hass.states["sensor.khoang_cach_muc_tieu_2_truc_y"].state
  - entity: ''
    name: Target3
    show_value: true
    unit_of_measurement: mm
    marker:
      size: 12
    line:
      shape: spline
      width: 5
    x:
      - $ex hass.states["sensor.khoang_cach_muc_tieu_3_truc_x"].state
    'y':
      - $ex hass.states["sensor.khoang_cach_muc_tieu_3_truc_y"].state
  - entity: ''
    name: Zone1
    mode: lines
    fill: toself
    fillcolor: RGBA(20,200,0,0.1)
    line:
      color: RGBA(20,200,0,0.2)
      shape: line
      width: 2
    x:
      - $ex hass.states["number.vung_1_bat_dau_x"].state
      - $ex hass.states["number.vung_1_bat_dau_x"].state
      - $ex hass.states["number.vung_1_ket_thuc_x"].state
      - $ex hass.states["number.vung_1_ket_thuc_x"].state
      - $ex hass.states["number.vung_1_bat_dau_x"].state
    'y':
      - $ex hass.states["number.vung_1_bat_dau_y"].state
      - $ex hass.states["number.vung_1_ket_thuc_y"].state
      - $ex hass.states["number.vung_1_ket_thuc_y"].state
      - $ex hass.states["number.vung_1_bat_dau_y"].state
      - $ex hass.states["number.vung_1_bat_dau_y"].state
  - entity: ''
    name: Zone2
    mode: lines
    fill: toself
    fillcolor: RGBA(200,0,255,0.1)
    line:
      color: RGBA(200,0,255,0.2)
      shape: line
      width: 2
    x:
      - $ex hass.states["number.vung_2_bat_dau_x"].state
      - $ex hass.states["number.vung_2_bat_dau_x"].state
      - $ex hass.states["number.vung_2_ket_thuc_x"].state
      - $ex hass.states["number.vung_2_ket_thuc_x"].state
      - $ex hass.states["number.vung_2_bat_dau_x"].state
    'y':
      - $ex hass.states["number.vung_2_bat_dau_y"].state
      - $ex hass.states["number.vung_2_ket_thuc_y"].state
      - $ex hass.states["number.vung_2_ket_thuc_y"].state
      - $ex hass.states["number.vung_2_bat_dau_y"].state
      - $ex hass.states["number.vung_2_bat_dau_y"].state
  - entity: ''
    name: Zone3
    mode: lines
    fill: toself
    fillcolor: RGBA(200,120,55,0.1)
    line:
      color: RGBA(200,120,55,0.2)
      shape: line
      width: 2
    x:
      - $ex hass.states["number.vung_3_bat_dau_x"].state
      - $ex hass.states["number.vung_3_bat_dau_x"].state
      - $ex hass.states["number.vung_3_ket_thuc_x"].state
      - $ex hass.states["number.vung_3_ket_thuc_x"].state
      - $ex hass.states["number.vung_3_bat_dau_x"].state
    'y':
      - $ex hass.states["number.vung_3_bat_dau_y"].state
      - $ex hass.states["number.vung_3_ket_thuc_y"].state
      - $ex hass.states["number.vung_3_ket_thuc_y"].state
      - $ex hass.states["number.vung_3_bat_dau_y"].state
      - $ex hass.states["number.vung_3_bat_dau_y"].state
  - entity: ''
    name: ExZone
    mode: lines
    fill: toself
    fillcolor: RGBA(255,0,0,0.1)
    line:
      shape: line
      width: 1
      color: RGBA(255,0,0,0.1)
    x:
      - $ex hass.states["number.vung_nhieu_bat_dau_x"].state
      - $ex hass.states["number.vung_nhieu_bat_dau_x"].state
      - $ex hass.states["number.vung_nhieu_ket_thuc_x"].state
      - $ex hass.states["number.vung_nhieu_ket_thuc_x"].state
      - $ex hass.states["number.vung_nhieu_bat_dau_x"].state
    'y':
      - $ex hass.states["number.vung_nhieu_bat_dau_y"].state
      - $ex hass.states["number.vung_nhieu_ket_thuc_y"].state
      - $ex hass.states["number.vung_nhieu_ket_thuc_y"].state
      - $ex hass.states["number.vung_nhieu_bat_dau_y"].state
      - $ex hass.states["number.vung_nhieu_bat_dau_y"].state
  - entity: ''
    name: Coverage
    mode: lines
    fill: tonexty
    fillcolor: rgba(168, 216, 234, 0.08)
    line:
      shape: line
      width: 1
      dash: dot
    x:
      - 0
      - $ex 6000 * Math.sin((2 * Math.PI)/360 * 60)
      - 4500
      - 4000
      - 3000
      - 2000
      - 1000
      - 0
      - -1000
      - -2000
      - -3000
      - -4000
      - -4500
      - $ex -6000 * Math.sin((2 * Math.PI)/360 * 60)
      - 0
    'y':
      - 0
      - $ex 6000 * Math.cos((2 * Math.PI)/360 * 60)
      - $ex Math.sqrt( 6000**2 - 4500**2 )
      - $ex Math.sqrt( 6000**2 - 4000**2 )
      - $ex Math.sqrt( 6000**2 - 3000**2 )
      - $ex Math.sqrt( 6000**2 - 2000**2 )
      - $ex Math.sqrt( 6000**2 - 1000**2 )
      - 6000
      - $ex Math.sqrt( 6000**2 - 1000**2 )
      - $ex Math.sqrt( 6000**2 - 2000**2 )
      - $ex Math.sqrt( 6000**2 - 3000**2 )
      - $ex Math.sqrt( 6000**2 - 4000**2 )
      - $ex Math.sqrt( 6000**2 - 4500**2 )
      - $ex 6000 * Math.cos((2 * Math.PI)/360 * 60)
      - 0
raw_plotly_config: true
6 Likes

Hi, how to edit it to cover 7-8m range? Do I just replace 6000 digits with larger numbers?
Was testing in a larger room, and the target wasn’t in the graph because i was in the 7m radius

Is this what you mean?newplot (3)

1 Like

I think it won’t be stable if it works at a distance of over 6m. But you can try. I edited it to have 7m

type: custom:plotly-graph
title: LD2450
refresh_interval: 0.1
hours_to_show: current_day
ha_theme: true
layout:
  legend:
    'y': 7000
    orientation: h
  autosize: true
  margin:
    autoexpand: true
    l: 50
    r: 20
    t: 20
    b: 40
  showlegend: true
  xaxis:
    dtick: 1000
    gridcolor: RGBA(200,200,200,0.15)
    zerolinecolor: RGBA(200,200,200,0.15)
    type: number
    fixedrange: true
    range:
      - 7000
      - -7000
  yaxis:
    dtick: 1000
    gridcolor: RGBA(200,200,200,0.15)
    zerolinecolor: RGBA(200,200,200,0.15)
    scaleanchor: x
    scaleratio: 1
    fixedrange: true
    range:
      - 7000
      - 0
entities:
  - entity: ''
    name: Target1
    show_value: true
    unit_of_measurement: mm
    marker:
      size: 12
    line:
      shape: spline
      width: 5
    x:
      - $ex hass.states["sensor.khoang_cach_muc_tieu_1_truc_x"].state
    'y':
      - $ex hass.states["sensor.khoang_cach_muc_tieu_1_truc_y"].state
  - entity: ''
    name: Target2
    show_value: true
    unit_of_measurement: mm
    marker:
      size: 12
    line:
      shape: spline
      width: 5
    x:
      - $ex hass.states["sensor.khoang_cach_muc_tieu_2_truc_x"].state
    'y':
      - $ex hass.states["sensor.khoang_cach_muc_tieu_2_truc_y"].state
  - entity: ''
    name: Target3
    show_value: true
    unit_of_measurement: mm
    marker:
      size: 12
    line:
      shape: spline
      width: 5
    x:
      - $ex hass.states["sensor.khoang_cach_muc_tieu_3_truc_x"].state
    'y':
      - $ex hass.states["sensor.khoang_cach_muc_tieu_3_truc_y"].state
  - entity: ''
    name: Zone1
    mode: lines
    fill: toself
    fillcolor: RGBA(20,200,0,0.1)
    line:
      color: RGBA(20,200,0,0.2)
      shape: line
      width: 2
    x:
      - $ex hass.states["number.vung_1_bat_dau_x"].state
      - $ex hass.states["number.vung_1_bat_dau_x"].state
      - $ex hass.states["number.vung_1_ket_thuc_x"].state
      - $ex hass.states["number.vung_1_ket_thuc_x"].state
      - $ex hass.states["number.vung_1_bat_dau_x"].state
    'y':
      - $ex hass.states["number.vung_1_bat_dau_y"].state
      - $ex hass.states["number.vung_1_ket_thuc_y"].state
      - $ex hass.states["number.vung_1_ket_thuc_y"].state
      - $ex hass.states["number.vung_1_bat_dau_y"].state
      - $ex hass.states["number.vung_1_bat_dau_y"].state
  - entity: ''
    name: Zone2
    mode: lines
    fill: toself
    fillcolor: RGBA(200,0,255,0.1)
    line:
      color: RGBA(200,0,255,0.2)
      shape: line
      width: 2
    x:
      - $ex hass.states["number.vung_2_bat_dau_x"].state
      - $ex hass.states["number.vung_2_bat_dau_x"].state
      - $ex hass.states["number.vung_2_ket_thuc_x"].state
      - $ex hass.states["number.vung_2_ket_thuc_x"].state
      - $ex hass.states["number.vung_2_bat_dau_x"].state
    'y':
      - $ex hass.states["number.vung_2_bat_dau_y"].state
      - $ex hass.states["number.vung_2_ket_thuc_y"].state
      - $ex hass.states["number.vung_2_ket_thuc_y"].state
      - $ex hass.states["number.vung_2_bat_dau_y"].state
      - $ex hass.states["number.vung_2_bat_dau_y"].state
  - entity: ''
    name: Zone3
    mode: lines
    fill: toself
    fillcolor: RGBA(200,120,55,0.1)
    line:
      color: RGBA(200,120,55,0.2)
      shape: line
      width: 2
    x:
      - $ex hass.states["number.vung_3_bat_dau_x"].state
      - $ex hass.states["number.vung_3_bat_dau_x"].state
      - $ex hass.states["number.vung_3_ket_thuc_x"].state
      - $ex hass.states["number.vung_3_ket_thuc_x"].state
      - $ex hass.states["number.vung_3_bat_dau_x"].state
    'y':
      - $ex hass.states["number.vung_3_bat_dau_y"].state
      - $ex hass.states["number.vung_3_ket_thuc_y"].state
      - $ex hass.states["number.vung_3_ket_thuc_y"].state
      - $ex hass.states["number.vung_3_bat_dau_y"].state
      - $ex hass.states["number.vung_3_bat_dau_y"].state
  - entity: ''
    name: ExZone
    mode: lines
    fill: toself
    fillcolor: RGBA(255,0,0,0.1)
    line:
      shape: line
      width: 1
      color: RGBA(255,0,0,0.1)
    x:
      - $ex hass.states["number.vung_nhieu_bat_dau_x"].state
      - $ex hass.states["number.vung_nhieu_bat_dau_x"].state
      - $ex hass.states["number.vung_nhieu_ket_thuc_x"].state
      - $ex hass.states["number.vung_nhieu_ket_thuc_x"].state
      - $ex hass.states["number.vung_nhieu_bat_dau_x"].state
    'y':
      - $ex hass.states["number.vung_nhieu_bat_dau_y"].state
      - $ex hass.states["number.vung_nhieu_ket_thuc_y"].state
      - $ex hass.states["number.vung_nhieu_ket_thuc_y"].state
      - $ex hass.states["number.vung_nhieu_bat_dau_y"].state
      - $ex hass.states["number.vung_nhieu_bat_dau_y"].state
  - entity: ''
    name: Coverage
    mode: lines
    fill: tonexty
    fillcolor: rgba(168, 216, 234, 0.08)
    line:
      shape: line
      width: 1
      dash: dot
    x:
      - 0
      - $ex 7000 * Math.sin((2 * Math.PI)/360 * 60)
      - 5500
      - 5000
      - 4000
      - 3000
      - 2000
      - 1000
      - 0
      - -1000
      - -2000
      - -3000
      - -4000
      - -5000
      - -5500
      - $ex -7000 * Math.sin((2 * Math.PI)/360 * 60)
      - 0
    'y':
      - 0
      - $ex 7000 * Math.cos((2 * Math.PI)/360 * 60)
      - $ex Math.sqrt( 7000**2 - 5500**2 )
      - $ex Math.sqrt( 7000**2 - 5000**2 )
      - $ex Math.sqrt( 7000**2 - 4000**2 )
      - $ex Math.sqrt( 7000**2 - 3000**2 )
      - $ex Math.sqrt( 7000**2 - 2000**2 )
      - $ex Math.sqrt( 7000**2 - 1000**2 )
      - 7000
      - $ex Math.sqrt( 7000**2 - 1000**2 )
      - $ex Math.sqrt( 7000**2 - 2000**2 )
      - $ex Math.sqrt( 7000**2 - 3000**2 )
      - $ex Math.sqrt( 7000**2 - 4000**2 )
      - $ex Math.sqrt( 7000**2 - 5000**2 )
      - $ex Math.sqrt( 7000**2 - 5500**2 )
      - $ex 7000 * Math.cos((2 * Math.PI)/360 * 60)
      - 0
raw_plotly_config: true
3 Likes