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
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.
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
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.
I have the “humen” edition long time I didn’t laughed so hard
Firmware updated.
Looks like everything works fine now!
Thank you very much!
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.
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.
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 customizable
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.
Very nice!
Could you share the code?
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.
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
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?
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