Update BackgroundServiceDelegate.mc

Only submitting non-null values to HA, not fake zeros for null values.
This commit is contained in:
Philip Abbey
2024-08-25 13:50:29 +01:00
parent 64a9c5f274
commit 01f073e67b

View File

@ -102,17 +102,28 @@ class BackgroundServiceDelegate extends System.ServiceDelegate {
accuracy = 10;
break;
}
var data = { "gps_accuracy" => accuracy };
// Only add the non-null fields as all the values are optional in Home Assistant, and it avoid submitting fake values.
if (position.position != null) {
data.put("gps", position.position.toDegrees());
}
if (position.speed != null) {
data.put("speed", Math.round(position.speed));
}
if (position.heading != null) {
data.put("course", Math.round(position.heading * 180 / Math.PI));
}
if (position.altitude != null) {
data.put("altitude", Math.round(position.altitude));
}
// System.println("BackgroundServiceDelegate onTemporalEvent(): data = " + data.toString());
Communications.makeWebRequest(
(Properties.getValue("api_url") as Lang.String) + "/webhook/" + (Properties.getValue("webhook_id") as Lang.String),
{
"type" => "update_location",
"data" => {
"gps" => position.position == null ? [0.0, 0.0] : position.position.toDegrees(),
"gps_accuracy" => accuracy,
"speed" => Math.round(position.speed == null ? 0 : position.speed),
"course" => Math.round(position.heading == null ? 0 : position.heading * 180 / Math.PI),
"altitude" => Math.round(position.altitude == null ? 0 : position.altitude),
}
"data" => data,
},
{
:method => Communications.HTTP_REQUEST_METHOD_POST,