import api from '@/api'
import APIUrls, {
APIV3RequestDatetimeFormat,
} from '@/config/simpliciti-apis.js'
import moment from 'moment'
export function formatSensorValue(name, value) {
const units = {
cruise: 'km/h',
sensorCanCruise: 'km/h',
sensorCanBrakePedal: '%',
vrm: 'rpm',
rpm: 'rpm',
sensorCanRPM: 'rpm',
fuel: '%',
sensorCanFuelPerc: '%',
niveau_carburant: '%',
conso: 'L',
sensorCanConsumptionLiters: 'L',
sensorCanFuelLiters: 'L',
accelerateur: '%',
sensorCanThrottle: '%',
km_fms: 'km/h',
embrayage: '%',
batterie: '%',
sensorCanBatteryPerc: '%',
vehicleDistance: 'm',
canServiceDistanceMeters: 'm',
}
return `${value}` + (units[name] !== undefined ? ` ${units[name]}` : '')
}
export function getSensorI18nCode(name) {
let table = {
sensorCanCruise: 'can_sensors.cruise',
sensorCanBrakePedal: 'can_sensors.freinage',
sensorCanRPM: 'can_sensors.vrm', //'diagnostics.chart.category.canRPM',
sensorCanFuelPerc: 'can_sensors.fuel_perc',
sensorCanConsumptionLiters: 'can_sensors.conso',
sensorCanFuelLiters: 'diagnostics.chart.category.fuelLevelLiters',
canServiceDistanceMeters: 'can_sensors.canServiceDistanceMeters',
speHarshBraking: 'diagnostics.chart.category.speHarshBraking',
speHarshAcceleration: 'diagnostics.chart.category.speHarshAcceleration',
speHarshCornering: 'diagnostics.chart.category.speHarshCornering',
speExcessiveSpeed: 'diagnostics.chart.category.speExcessiveSpeed',
sensorCanThrottle: 'can_sensors.accelerateur',
sensorCanClutch: 'can_sensors.embrayage',
sensorCanBatteryPerc: 'can_sensors.batterie',
vehicleDistance: 'can_sensors.vehicleDistance',
}
return table[name] || name
}
/**
* Used by SensorsInfos to grab CAN values from an mixed object (location result or position result)
* @param {*} item
* @param {*} canName
* @returns
*/
export function getCanValueFromItem(item, canName) {
let table = {
//sensorCanCruise: ['sensorCanCruise'],
sensorCanBrakePedal: ['sensorCanBrakePedal', 'sensorCanBraking'],
//sensorCanRPM: ['sensorCanRPM'],
//sensorCanFuelPerc: ['sensorCanFuelPerc'],
//sensorCanThrottle:['sensorCanThrottle']
}
/*
if (table[canName] === undefined && item[canName] === undefined) {
console.error('Unknown can value:', {
canName,
item,
})
return null
}
*/
if (table[canName] instanceof Array) {
for (let propName of table[canName]) {
if (item[propName] !== undefined) {
return item[propName] //Pick value from the first defined property
}
}
}
if (item[canName] !== undefined) {
return item[canName] //use the bare key (canName)
}
return null
}
/**
*
* @param {*} vehicleId
* @param {*} datetimeStart
* @param {*} datetimeEnd
* @param {*} options {positions: false, sensors: false}
* @returns
*/
export async function getSensors(
vehicleId,
datetimeStart,
datetimeEnd,
options = {}
) {
datetimeStart = moment(datetimeStart).format(APIV3RequestDatetimeFormat)
datetimeEnd = moment(datetimeEnd).format(APIV3RequestDatetimeFormat)
return await api.v3
.get(
APIUrls.APIV3_GET_SENSORS +
`?vehicleId=${vehicleId}&startDatetime=${datetimeStart}&endDatetime=${datetimeEnd}` +
(options?.positions ? '&positions=true' : '')
//(options?.sensors ? '&properties&properties[]=sensors' : '')
)
.then((result) => {
return result.data[0] || null
})
}
export default {
formatSensorValue,
getSensors,
getSensorI18nCode,
getCanValueFromItem,
}
Source