@@ -27,9 +27,12 @@ async def async_setup_entry(hass, config_entry, async_add_entities): # pylint: d
27
27
for coordoned_tracker in coordoned_trackers :
28
28
tracker_device = coordoned_tracker ['tracker_device' ]
29
29
coordinator = coordoned_tracker ['coordinator' ]
30
- entity = GeoRideOdometerSensorEntity (coordinator , tracker_device , hass )
31
30
hass .data [GEORIDE_DOMAIN ]["devices" ][tracker_device .tracker .tracker_id ] = coordinator
32
- entities .append (entity )
31
+ entities .append (GeoRideOdometerSensorEntity (coordinator , tracker_device , hass ))
32
+ entities .append (GeoRideOdometerKmSensorEntity (coordinator , tracker_device , hass ))
33
+ entities .append (GeoRideInternalBatterySensorEntity (coordinator , tracker_device ))
34
+ entities .append (GeoRideExternalBatterySensorEntity (coordinator , tracker_device ))
35
+ entities .append (GeoRideFixtimeSensorEntity (coordinator , tracker_device ))
33
36
34
37
async_add_entities (entities )
35
38
@@ -58,7 +61,8 @@ def unique_id(self):
58
61
@property
59
62
def state (self ):
60
63
"""state property"""
61
- return self ._tracker_device .tracker .odometer
64
+ odometer = self ._tracker_device .tracker .odometer
65
+ return odometer
62
66
63
67
@property
64
68
def unit_of_measurement (self ):
@@ -79,3 +83,176 @@ def icon(self):
79
83
def device_info (self ):
80
84
"""Return the device info."""
81
85
return self ._tracker_device .device_info
86
+
87
+ class GeoRideOdometerKmSensorEntity (CoordinatorEntity , SensorEntity ):
88
+ """Represent a tracked device."""
89
+
90
+ def __init__ (self , coordinator : DataUpdateCoordinator [Mapping [str , Any ]],
91
+ tracker_device :Device , hass ):
92
+ """Set up GeoRide entity."""
93
+ super ().__init__ (coordinator )
94
+ self ._tracker_device = tracker_device
95
+ self ._name = tracker_device .tracker .tracker_name
96
+ self ._unit_of_measurement = "km"
97
+ self .entity_id = f"{ ENTITY_ID_FORMAT .format ('odometer_km' )} .{ tracker_device .tracker .tracker_id } " # pylint: disable=C0301
98
+
99
+ self ._state = 0
100
+ self ._hass = hass
101
+
102
+ @property
103
+ def unique_id (self ):
104
+ """Return the unique ID."""
105
+ return f"odometer_km_{ self ._tracker_device .tracker .tracker_id } "
106
+
107
+ @property
108
+ def state (self ):
109
+ """state property"""
110
+ odometer = self ._tracker_device .tracker .odometer // 1000
111
+ return odometer
112
+
113
+ @property
114
+ def unit_of_measurement (self ):
115
+ """unit of mesurment property"""
116
+ return self ._unit_of_measurement
117
+
118
+ @property
119
+ def name (self ):
120
+ """ GeoRide odometer name """
121
+ return f"{ self ._name } odometer km"
122
+
123
+ @property
124
+ def icon (self ):
125
+ """icon getter"""
126
+ return "mdi:counter"
127
+
128
+ @property
129
+ def device_info (self ):
130
+ """Return the device info."""
131
+ return self ._tracker_device .device_info
132
+
133
+ class GeoRideInternalBatterySensorEntity (CoordinatorEntity , SensorEntity ):
134
+ """Represent a tracked device."""
135
+
136
+ def __init__ (self , coordinator : DataUpdateCoordinator [Mapping [str , Any ]],
137
+ tracker_device :Device ):
138
+ """Set up GeoRide entity."""
139
+ super ().__init__ (coordinator )
140
+ self ._tracker_device = tracker_device
141
+ self ._name = tracker_device .tracker .tracker_name
142
+ self ._unit_of_measurement = "V"
143
+ self .entity_id = f"{ ENTITY_ID_FORMAT .format ('internal_battery_voltage' )} .{ tracker_device .tracker .tracker_id } " # pylint: disable=C0301
144
+
145
+ self ._state = 0
146
+
147
+ @property
148
+ def unique_id (self ):
149
+ """Return the unique ID."""
150
+ return f"internal_battery_voltage_{ self ._tracker_device .tracker .tracker_id } "
151
+
152
+ @property
153
+ def state (self ):
154
+ """state property"""
155
+ return self ._tracker_device .tracker .internal_battery_voltage
156
+
157
+ @property
158
+ def unit_of_measurement (self ):
159
+ """unit of mesurment property"""
160
+ return self ._unit_of_measurement
161
+
162
+ @property
163
+ def name (self ):
164
+ """ GeoRide internal_battery_voltage name """
165
+ return f"{ self ._name } internal_battery_voltage"
166
+
167
+ @property
168
+ def icon (self ):
169
+ """icon getter"""
170
+ return "mdi:battery"
171
+
172
+ @property
173
+ def device_info (self ):
174
+ """Return the device info."""
175
+ return self ._tracker_device .device_info
176
+
177
+ class GeoRideExternalBatterySensorEntity (CoordinatorEntity , SensorEntity ):
178
+ """Represent a tracked device."""
179
+
180
+ def __init__ (self , coordinator : DataUpdateCoordinator [Mapping [str , Any ]],
181
+ tracker_device :Device ):
182
+ """Set up GeoRide entity."""
183
+ super ().__init__ (coordinator )
184
+ self ._tracker_device = tracker_device
185
+ self ._name = tracker_device .tracker .tracker_name
186
+ self ._unit_of_measurement = "V"
187
+ self .entity_id = f"{ ENTITY_ID_FORMAT .format ('external_battery_voltage' )} .{ tracker_device .tracker .tracker_id } " # pylint: disable=C0301
188
+
189
+ self ._state = 0
190
+
191
+ @property
192
+ def unique_id (self ):
193
+ """Return the unique ID."""
194
+ return f"external_battery_voltage_{ self ._tracker_device .tracker .tracker_id } "
195
+
196
+ @property
197
+ def state (self ):
198
+ """state property"""
199
+ return self ._tracker_device .tracker .external_battery_voltage
200
+
201
+ @property
202
+ def unit_of_measurement (self ):
203
+ """unit of mesurment property"""
204
+ return self ._unit_of_measurement
205
+
206
+ @property
207
+ def name (self ):
208
+ """ GeoRide internal_battery_voltage name """
209
+ return f"{ self ._name } external_battery_voltage"
210
+
211
+ @property
212
+ def icon (self ):
213
+ """icon getter"""
214
+ return "mdi:battery"
215
+
216
+ @property
217
+ def device_info (self ):
218
+ """Return the device info."""
219
+ return self ._tracker_device .device_info
220
+
221
+ class GeoRideFixtimeSensorEntity (CoordinatorEntity , SensorEntity ):
222
+ """Represent a tracked device."""
223
+
224
+ def __init__ (self , coordinator : DataUpdateCoordinator [Mapping [str , Any ]],
225
+ tracker_device :Device ):
226
+ """Set up GeoRide entity."""
227
+ super ().__init__ (coordinator )
228
+ self ._tracker_device = tracker_device
229
+ self ._name = tracker_device .tracker .tracker_name
230
+ self .entity_id = f"{ ENTITY_ID_FORMAT .format ('fixtime' )} .{ tracker_device .tracker .tracker_id } " # pylint: disable=C0301
231
+
232
+ self ._state = 0
233
+ self ._device_class = "timestamp"
234
+
235
+ @property
236
+ def unique_id (self ):
237
+ """Return the unique ID."""
238
+ return f"fixtime_{ self ._tracker_device .tracker .tracker_id } "
239
+
240
+ @property
241
+ def state (self ):
242
+ """state property"""
243
+ return self ._tracker_device .tracker .fixtime
244
+
245
+ @property
246
+ def name (self ):
247
+ """ GeoRide fixtime name """
248
+ return f"{ self ._name } last fixed position"
249
+
250
+ @property
251
+ def icon (self ):
252
+ """icon getter"""
253
+ return "mdi:map-clock"
254
+
255
+ @property
256
+ def device_info (self ):
257
+ """Return the device info."""
258
+ return self ._tracker_device .device_info
0 commit comments