@@ -243,14 +243,170 @@ func configurePostgreSQL(pgConfig *PostgreSQLConfig) (*sql.DB, error) {
243243
244244// createTelemetryTable creates the telemetry_data table if it does not exist
245245func createTelemetryTable (db * sql.DB ) error {
246+ // Updated SQL query to include all fields from the protobuf definition
246247 createTableQuery := `
247248 CREATE TABLE IF NOT EXISTS telemetry_data (
248249 id SERIAL PRIMARY KEY,
249250 vin TEXT,
250251 key INTEGER,
251252 value JSONB,
252253 created_at TIMESTAMPTZ,
253- UNIQUE (vin, key, created_at)
254+ drive_rail INTEGER,
255+ charge_state INTEGER,
256+ bms_fullchargecomplete BOOLEAN,
257+ vehicle_speed DOUBLE PRECISION,
258+ odometer DOUBLE PRECISION,
259+ pack_voltage DOUBLE PRECISION,
260+ pack_current DOUBLE PRECISION,
261+ soc DOUBLE PRECISION,
262+ dcdc_enable BOOLEAN,
263+ gear INTEGER,
264+ isolation_resistance DOUBLE PRECISION,
265+ pedal_position DOUBLE PRECISION,
266+ brake_pedal BOOLEAN,
267+ di_state_r INTEGER,
268+ di_heatsink_tr DOUBLE PRECISION,
269+ di_axle_speed_r DOUBLE PRECISION,
270+ di_torquemotor DOUBLE PRECISION,
271+ di_stator_temp_r DOUBLE PRECISION,
272+ di_vbat_r DOUBLE PRECISION,
273+ di_motor_current_r DOUBLE PRECISION,
274+ location_latitude DOUBLE PRECISION,
275+ location_longitude DOUBLE PRECISION,
276+ gps_state INTEGER,
277+ gps_heading DOUBLE PRECISION,
278+ num_brick_voltage_max INTEGER,
279+ brick_voltage_max DOUBLE PRECISION,
280+ num_brick_voltage_min INTEGER,
281+ brick_voltage_min DOUBLE PRECISION,
282+ num_module_temp_max INTEGER,
283+ module_temp_max DOUBLE PRECISION,
284+ num_module_temp_min INTEGER,
285+ module_temp_min DOUBLE PRECISION,
286+ rated_range DOUBLE PRECISION,
287+ hvil INTEGER,
288+ dc_charging_energy_in DOUBLE PRECISION,
289+ dc_charging_power DOUBLE PRECISION,
290+ ac_charging_energy_in DOUBLE PRECISION,
291+ ac_charging_power DOUBLE PRECISION,
292+ charge_limit_soc DOUBLE PRECISION,
293+ fast_charger_present BOOLEAN,
294+ est_battery_range DOUBLE PRECISION,
295+ ideal_battery_range DOUBLE PRECISION,
296+ battery_level DOUBLE PRECISION,
297+ time_to_full_charge DOUBLE PRECISION,
298+ scheduled_charging_start_time TIMESTAMPTZ,
299+ scheduled_charging_pending BOOLEAN,
300+ scheduled_departure_time TIMESTAMPTZ,
301+ preconditioning_enabled BOOLEAN,
302+ scheduled_charging_mode INTEGER,
303+ charge_amps DOUBLE PRECISION,
304+ charge_enable_request BOOLEAN,
305+ charger_phases INTEGER,
306+ charge_port_cold_weather_mode BOOLEAN,
307+ charge_current_request DOUBLE PRECISION,
308+ semitruck_tpms_pressure_re2r0 DOUBLE PRECISION,
309+ semitruck_tpms_pressure_re2r1 DOUBLE PRECISION,
310+ tpms_last_seen_pressure_time_fl TIMESTAMPTZ,
311+ tpms_last_seen_pressure_time_fr TIMESTAMPTZ,
312+ tpms_last_seen_pressure_time_rl TIMESTAMPTZ,
313+ tpms_last_seen_pressure_time_rr TIMESTAMPTZ,
314+ inside_temp DOUBLE PRECISION,
315+ outside_temp DOUBLE PRECISION,
316+ seat_heater_left BOOLEAN,
317+ seat_heater_right BOOLEAN,
318+ seat_heater_rear_left BOOLEAN,
319+ seat_heater_rear_right BOOLEAN,
320+ seat_heater_rear_center BOOLEAN,
321+ auto_seat_climate_left BOOLEAN,
322+ auto_seat_climate_right BOOLEAN,
323+ driver_seat_belt BOOLEAN,
324+ passenger_seat_belt BOOLEAN,
325+ driver_seat_occupied BOOLEAN,
326+ semitruck_passenger_seat_fold_position INTEGER,
327+ lateral_acceleration DOUBLE PRECISION,
328+ longitudinal_acceleration DOUBLE PRECISION,
329+ cruise_state INTEGER,
330+ cruise_set_speed DOUBLE PRECISION,
331+ lifetime_energy_used DOUBLE PRECISION,
332+ lifetime_energy_used_drive DOUBLE PRECISION,
333+ semitruck_tractor_park_brake_status BOOLEAN,
334+ semitruck_trailer_park_brake_status BOOLEAN,
335+ brake_pedal_pos DOUBLE PRECISION,
336+ route_last_updated TIMESTAMPTZ,
337+ route_line TEXT,
338+ miles_to_arrival DOUBLE PRECISION,
339+ minutes_to_arrival DOUBLE PRECISION,
340+ origin_location TEXT,
341+ destination_location TEXT,
342+ car_type INTEGER,
343+ trim TEXT,
344+ exterior_color TEXT,
345+ roof_color TEXT,
346+ charge_port INTEGER,
347+ charge_port_latch INTEGER,
348+ experimental_1 BOOLEAN,
349+ experimental_2 BOOLEAN,
350+ experimental_3 BOOLEAN,
351+ experimental_4 BOOLEAN,
352+ guest_mode_enabled BOOLEAN,
353+ pin_to_drive_enabled BOOLEAN,
354+ paired_phone_key_and_key_fob_qty INTEGER,
355+ cruise_follow_distance INTEGER,
356+ automatic_blind_spot_camera BOOLEAN,
357+ blind_spot_collision_warning_chime BOOLEAN,
358+ speed_limit_warning BOOLEAN,
359+ forward_collision_warning BOOLEAN,
360+ lane_departure_avoidance BOOLEAN,
361+ emergency_lane_departure_avoidance BOOLEAN,
362+ automatic_emergency_braking_off BOOLEAN,
363+ lifetime_energy_gained_regen DOUBLE PRECISION,
364+ di_state_f INTEGER,
365+ di_state_rel INTEGER,
366+ di_state_rer INTEGER,
367+ di_heatsink_tf DOUBLE PRECISION,
368+ di_heatsink_trel DOUBLE PRECISION,
369+ di_heatsink_trer DOUBLE PRECISION,
370+ di_axle_speed_f DOUBLE PRECISION,
371+ di_axle_speed_rel DOUBLE PRECISION,
372+ di_axle_speed_rer DOUBLE PRECISION,
373+ di_slave_torque_cmd DOUBLE PRECISION,
374+ di_torque_actual_r DOUBLE PRECISION,
375+ di_torque_actual_f DOUBLE PRECISION,
376+ di_torque_actual_rel DOUBLE PRECISION,
377+ di_torque_actual_rer DOUBLE PRECISION,
378+ di_stator_temp_f DOUBLE PRECISION,
379+ di_stator_temp_rel DOUBLE PRECISION,
380+ di_stator_temp_rer DOUBLE PRECISION,
381+ di_vbat_f DOUBLE PRECISION,
382+ di_vbat_rel DOUBLE PRECISION,
383+ di_vbat_rer DOUBLE PRECISION,
384+ di_motor_current_f DOUBLE PRECISION,
385+ di_motor_current_rel DOUBLE PRECISION,
386+ di_motor_current_rer DOUBLE PRECISION,
387+ energy_remaining DOUBLE PRECISION,
388+ service_mode BOOLEAN,
389+ bms_state INTEGER,
390+ guest_mode_mobile_access_state INTEGER,
391+ deprecated_1 BOOLEAN,
392+ destination_name TEXT,
393+ di_inverter_tr DOUBLE PRECISION,
394+ di_inverter_tf DOUBLE PRECISION,
395+ di_inverter_trel DOUBLE PRECISION,
396+ di_inverter_trer DOUBLE PRECISION,
397+ experimental_5 BOOLEAN,
398+ experimental_6 BOOLEAN,
399+ experimental_7 BOOLEAN,
400+ experimental_8 BOOLEAN,
401+ experimental_9 BOOLEAN,
402+ experimental_10 BOOLEAN,
403+ experimental_11 BOOLEAN,
404+ experimental_12 BOOLEAN,
405+ experimental_13 BOOLEAN,
406+ experimental_14 BOOLEAN,
407+ experimental_15 BOOLEAN,
408+ detailed_charge_state INTEGER,
409+ UNIQUE (vin, key, created_at)
254410 );
255411 `
256412 _ , err := db .Exec (createTableQuery )
@@ -471,7 +627,7 @@ func insertTelemetryData(db *sql.DB, vin string, datum *protos.Datum, createdAt
471627 `
472628
473629 // Convert Datum to SQL values
474- values := make ([]interface {}, 179 )
630+ values := make ([]interface {}, 179 ) // Ensure this matches the number of columns
475631 values [0 ] = vin
476632 values [1 ] = createdAt
477633
0 commit comments