fixing brain gps data

This commit is contained in:
2026-03-22 12:39:22 -04:00
parent 70864c620f
commit 7f59f7f7ac
2 changed files with 203 additions and 21 deletions

View File

@@ -60,25 +60,33 @@ template:
- name: Van Last Known Latitude - name: Van Last Known Latitude
unique_id: van_last_known_latitude unique_id: van_last_known_latitude
unit_of_measurement: "°" unit_of_measurement: "°"
availability: >-
{{ this.state | float(none) is not none
or (states('sensor.gps_latitude') | float(none) is not none
and states('sensor.gps_fix') | int(0) > 0) }}
state: >- state: >-
{% set lat = states('sensor.gps_latitude')|float(none) %} {% set lat = states('sensor.gps_latitude') | float(none) %}
{% set fix = states('sensor.gps_fix')|int(0) %} {% set fix = states('sensor.gps_fix') | int(0) %}
{% if lat is not none and fix > 0 %} {% if lat is not none and fix > 0 %}
{{ lat }} {{ lat }}
{% else %} {% else %}
{{ this.state | default('unavailable', true) }} {{ this.state }}
{% endif %} {% endif %}
- name: Van Last Known Longitude - name: Van Last Known Longitude
unique_id: van_last_known_longitude unique_id: van_last_known_longitude
unit_of_measurement: "°" unit_of_measurement: "°"
availability: >-
{{ this.state | float(none) is not none
or (states('sensor.gps_longitude') | float(none) is not none
and states('sensor.gps_fix') | int(0) > 0) }}
state: >- state: >-
{% set lon = states('sensor.gps_longitude')|float(none) %} {% set lon = states('sensor.gps_longitude') | float(none) %}
{% set fix = states('sensor.gps_fix')|int(0) %} {% set fix = states('sensor.gps_fix') | int(0) %}
{% if lon is not none and fix > 0 %} {% if lon is not none and fix > 0 %}
{{ lon }} {{ lon }}
{% else %} {% else %}
{{ this.state | default('unavailable', true) }} {{ this.state }}
{% endif %} {% endif %}
- name: GPS Location - name: GPS Location

View File

@@ -76,8 +76,80 @@ modbus:
state_class: measurement state_class: measurement
unique_id: dc_wattage unique_id: dc_wattage
# GPS # GPS (Slave ID 100)
- name: GPS Latitude - name: GPS Latitude ID 100
slave: 100
address: 2800
input_type: holding
data_type: int32
scale: 0.0000001
precision: 7
state_class: measurement
unique_id: gps_latitude_id_100
- name: GPS Longitude ID 100
slave: 100
address: 2802
input_type: holding
data_type: int32
scale: 0.0000001
precision: 7
state_class: measurement
unique_id: gps_longitude_id_100
- name: GPS Course ID 100
slave: 100
address: 2804
input_type: holding
data_type: uint16
scale: 0.01
precision: 2
unit_of_measurement: "°"
state_class: measurement
unique_id: gps_course_id_100
- name: GPS Speed ID 100
slave: 100
address: 2805
input_type: holding
data_type: uint16
scale: 0.01
precision: 2
unit_of_measurement: "m/s"
state_class: measurement
unique_id: gps_speed_id_100
- name: GPS Fix ID 100
slave: 100
address: 2806
input_type: holding
data_type: uint16
scale: 1
state_class: measurement
unique_id: gps_fix_id_100
- name: GPS Satellites ID 100
slave: 100
address: 2807
input_type: holding
data_type: uint16
scale: 1
state_class: measurement
unique_id: gps_satellites_id_100
- name: GPS Altitude ID 100
slave: 100
address: 2808
input_type: holding
data_type: int32
scale: 0.16
precision: 1
unit_of_measurement: "m"
state_class: measurement
unique_id: gps_altitude_id_100
# GPS (Unit ID 1)
- name: GPS Latitude ID 1
slave: 1 slave: 1
address: 2800 address: 2800
input_type: holding input_type: holding
@@ -85,9 +157,9 @@ modbus:
scale: 0.0000001 scale: 0.0000001
precision: 7 precision: 7
state_class: measurement state_class: measurement
unique_id: gps_latitude unique_id: gps_latitude_id_1
- name: GPS Longitude - name: GPS Longitude ID 1
slave: 1 slave: 1
address: 2802 address: 2802
input_type: holding input_type: holding
@@ -95,9 +167,9 @@ modbus:
scale: 0.0000001 scale: 0.0000001
precision: 7 precision: 7
state_class: measurement state_class: measurement
unique_id: gps_longitude unique_id: gps_longitude_id_1
- name: GPS Course - name: GPS Course ID 1
slave: 1 slave: 1
address: 2804 address: 2804
input_type: holding input_type: holding
@@ -106,9 +178,9 @@ modbus:
precision: 2 precision: 2
unit_of_measurement: "°" unit_of_measurement: "°"
state_class: measurement state_class: measurement
unique_id: gps_course unique_id: gps_course_id_1
- name: GPS Speed - name: GPS Speed ID 1
slave: 1 slave: 1
address: 2805 address: 2805
input_type: holding input_type: holding
@@ -117,27 +189,27 @@ modbus:
precision: 2 precision: 2
unit_of_measurement: "m/s" unit_of_measurement: "m/s"
state_class: measurement state_class: measurement
unique_id: gps_speed unique_id: gps_speed_id_1
- name: GPS Fix - name: GPS Fix ID 1
slave: 1 slave: 1
address: 2806 address: 2806
input_type: holding input_type: holding
data_type: uint16 data_type: uint16
scale: 1 scale: 1
state_class: measurement state_class: measurement
unique_id: gps_fix unique_id: gps_fix_id_1
- name: GPS Satellites - name: GPS Satellites ID 1
slave: 1 slave: 1
address: 2807 address: 2807
input_type: holding input_type: holding
data_type: uint16 data_type: uint16
scale: 1 scale: 1
state_class: measurement state_class: measurement
unique_id: gps_satellites unique_id: gps_satellites_id_1
- name: GPS Altitude - name: GPS Altitude ID 1
slave: 1 slave: 1
address: 2808 address: 2808
input_type: holding input_type: holding
@@ -146,7 +218,7 @@ modbus:
precision: 1 precision: 1
unit_of_measurement: "m" unit_of_measurement: "m"
state_class: measurement state_class: measurement
unique_id: gps_altitude unique_id: gps_altitude_id_1
# ---- CHARGER (Unit ID 223) ---- # ---- CHARGER (Unit ID 223) ----
- name: Charger Output 1 Voltage - name: Charger Output 1 Voltage
@@ -265,6 +337,108 @@ modbus:
template: template:
- sensor: - sensor:
# GPS aggregation: prefer slave 100, fall back to slave 1
- name: GPS Latitude
unique_id: gps_latitude
state_class: measurement
state: >-
{% set v100 = states('sensor.gps_latitude_id_100') %}
{% set v1 = states('sensor.gps_latitude_id_1') %}
{% if v100 not in ['unavailable', 'unknown'] and v100 | float(0) != 0 %}
{{ v100 }}
{% elif v1 not in ['unavailable', 'unknown'] and v1 | float(0) != 0 %}
{{ v1 }}
{% else %}
{{ v100 }}
{% endif %}
- name: GPS Longitude
unique_id: gps_longitude
state_class: measurement
state: >-
{% set v100 = states('sensor.gps_longitude_id_100') %}
{% set v1 = states('sensor.gps_longitude_id_1') %}
{% if v100 not in ['unavailable', 'unknown'] and v100 | float(0) != 0 %}
{{ v100 }}
{% elif v1 not in ['unavailable', 'unknown'] and v1 | float(0) != 0 %}
{{ v1 }}
{% else %}
{{ v100 }}
{% endif %}
- name: GPS Course
unique_id: gps_course
unit_of_measurement: "°"
state_class: measurement
state: >-
{% set v100 = states('sensor.gps_course_id_100') %}
{% set v1 = states('sensor.gps_course_id_1') %}
{% if v100 not in ['unavailable', 'unknown'] %}
{{ v100 }}
{% elif v1 not in ['unavailable', 'unknown'] %}
{{ v1 }}
{% else %}
{{ v100 }}
{% endif %}
- name: GPS Speed
unique_id: gps_speed
unit_of_measurement: "m/s"
state_class: measurement
state: >-
{% set v100 = states('sensor.gps_speed_id_100') %}
{% set v1 = states('sensor.gps_speed_id_1') %}
{% if v100 not in ['unavailable', 'unknown'] %}
{{ v100 }}
{% elif v1 not in ['unavailable', 'unknown'] %}
{{ v1 }}
{% else %}
{{ v100 }}
{% endif %}
- name: GPS Fix
unique_id: gps_fix
state_class: measurement
state: >-
{% set v100 = states('sensor.gps_fix_id_100') %}
{% set v1 = states('sensor.gps_fix_id_1') %}
{% if v100 not in ['unavailable', 'unknown'] and v100 | int(0) > 0 %}
{{ v100 }}
{% elif v1 not in ['unavailable', 'unknown'] and v1 | int(0) > 0 %}
{{ v1 }}
{% else %}
{{ v100 }}
{% endif %}
- name: GPS Satellites
unique_id: gps_satellites
state_class: measurement
state: >-
{% set v100 = states('sensor.gps_satellites_id_100') %}
{% set v1 = states('sensor.gps_satellites_id_1') %}
{% if v100 not in ['unavailable', 'unknown'] and v100 | int(0) > 0 %}
{{ v100 }}
{% elif v1 not in ['unavailable', 'unknown'] and v1 | int(0) > 0 %}
{{ v1 }}
{% else %}
{{ v100 }}
{% endif %}
- name: GPS Altitude
unique_id: gps_altitude
unit_of_measurement: "m"
state_class: measurement
state: >-
{% set v100 = states('sensor.gps_altitude_id_100') %}
{% set v1 = states('sensor.gps_altitude_id_1') %}
{% if v100 not in ['unavailable', 'unknown'] %}
{{ v100 }}
{% elif v1 not in ['unavailable', 'unknown'] %}
{{ v1 }}
{% else %}
{{ v100 }}
{% endif %}
- name: Charger On Off - name: Charger On Off
state: >- state: >-
{% set v = states('sensor.charger_on_off_raw')|int %} {% set v = states('sensor.charger_on_off_raw')|int %}