Merge pull request 'Add timestamps of locations providers' (#18) from feat/timestamps into main
Reviewed-on: #18 Reviewed-by: Philipp Schweizer <Philipp.schw@directbox.com>
This commit is contained in:
commit
a9c8525e6e
@ -5,7 +5,7 @@ CREATE TABLE IF NOT EXISTS lp_ttn_end_device_uplinks (
|
||||
dev_eui VARCHAR(255),
|
||||
join_eui VARCHAR(255),
|
||||
dev_addr VARCHAR(255),
|
||||
received_at_utc DATE,
|
||||
received_at_utc DATE NOT NULL,
|
||||
battery NUMERIC,
|
||||
created_at_utc TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
||||
updated_at_utc TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
|
||||
@ -16,6 +16,7 @@ CREATE TABLE IF NOT EXISTS wifi_scan (
|
||||
lp_ttn_end_device_uplinks_id UUID,
|
||||
mac VARCHAR(255),
|
||||
rssi NUMERIC,
|
||||
scanned_at_utc TIMESTAMP NOT NULL,
|
||||
created_at_utc TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
||||
updated_at_utc TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
||||
FOREIGN KEY (lp_ttn_end_device_uplinks_id) REFERENCES lp_ttn_end_device_uplinks(lp_ttn_end_device_uplinks_id)
|
||||
@ -63,6 +64,7 @@ CREATE TABLE IF NOT EXISTS location (
|
||||
gnss_longitude DOUBLE,
|
||||
ttn_gw_latitude DOUBLE,
|
||||
ttn_gw_longitude DOUBLE,
|
||||
gnss_location_at_utc TIMESTAMP,
|
||||
created_at_utc TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
||||
updated_at_utc TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
||||
FOREIGN KEY (lp_ttn_end_device_uplinks_id) REFERENCES lp_ttn_end_device_uplinks(lp_ttn_end_device_uplinks_id)
|
||||
|
@ -42,23 +42,38 @@ router.post(
|
||||
)?.measurementValue,
|
||||
});
|
||||
|
||||
const messageData = message.uplink_message.decoded_payload?.messages[0];
|
||||
|
||||
const latitudeData = messageData?.find((e) => e.type === "Latitude");
|
||||
const longitudeData = messageData?.find((e) => e.type === "Longitude");
|
||||
|
||||
const gnnsLocation = {
|
||||
latitude: message.uplink_message.decoded_payload?.messages[0].find(
|
||||
(e) => e.type === "Latitude"
|
||||
)?.measurementValue,
|
||||
longitude: message.uplink_message.decoded_payload?.messages[0].find(
|
||||
(e) => e.type === "Longitude"
|
||||
)?.measurementValue,
|
||||
latitude: latitudeData?.measurementValue,
|
||||
longitude: longitudeData?.measurementValue,
|
||||
};
|
||||
|
||||
const gnssTimestamp = {
|
||||
timestamp: latitudeData?.timestamp
|
||||
? new Date(latitudeData.timestamp)
|
||||
: longitudeData?.timestamp
|
||||
? new Date(longitudeData.timestamp)
|
||||
: undefined,
|
||||
};
|
||||
|
||||
const wifiMessage =
|
||||
message.uplink_message.decoded_payload?.messages[0].find(
|
||||
(e) => e.type === "Wi-Fi Scan"
|
||||
);
|
||||
|
||||
const wifiScans =
|
||||
message.uplink_message.decoded_payload?.messages[0]
|
||||
.find((e) => e.type === "Wi-Fi Scan")
|
||||
?.measurementValue?.map((w) => ({
|
||||
lp_ttn_end_device_uplinks_id,
|
||||
mac: w.mac,
|
||||
rssi: w.rssi,
|
||||
})) ?? [];
|
||||
wifiMessage?.measurementValue?.map((w) => ({
|
||||
lp_ttn_end_device_uplinks_id,
|
||||
mac: w.mac,
|
||||
rssi: w.rssi,
|
||||
scanned_at_utc: wifiMessage?.timestamp
|
||||
? new Date(wifiMessage.timestamp)
|
||||
: undefined,
|
||||
})) ?? [];
|
||||
|
||||
const ttnGatewayReceptions = message.uplink_message.rx_metadata.map(
|
||||
(g) => ({
|
||||
@ -98,6 +113,7 @@ router.post(
|
||||
longitude: gnnsLocation.longitude,
|
||||
}
|
||||
: undefined,
|
||||
gnss_timestamp: gnssTimestamp.timestamp,
|
||||
});
|
||||
};
|
||||
createDatabaseEntries().then();
|
||||
|
@ -10,6 +10,7 @@ export class Location extends Model {
|
||||
public gnss_longitude!: number;
|
||||
public ttn_gw_latitude!: number;
|
||||
public ttn_gw_longitude!: number;
|
||||
public gnss_location_at_utc!: Date;
|
||||
public created_at_utc!: Date;
|
||||
public updated_at_utc!: Date;
|
||||
}
|
||||
@ -42,6 +43,9 @@ Location.init(
|
||||
ttn_gw_longitude: {
|
||||
type: DataTypes.NUMBER,
|
||||
},
|
||||
gnss_location_at_utc: {
|
||||
type: DataTypes.DATE,
|
||||
},
|
||||
created_at_utc: {
|
||||
type: DataTypes.DATE,
|
||||
defaultValue: DataTypes.NOW,
|
||||
|
@ -6,6 +6,7 @@ export class WifiScan extends Model {
|
||||
public wifi_scan_id!: string;
|
||||
public mac!: string;
|
||||
public rssi!: number;
|
||||
public scanned_at_utc!: Date;
|
||||
public created_at_utc!: Date;
|
||||
public updated_at_utc!: Date;
|
||||
}
|
||||
@ -30,6 +31,11 @@ WifiScan.init(
|
||||
type: DataTypes.NUMBER,
|
||||
allowNull: false,
|
||||
},
|
||||
scanned_at_utc: {
|
||||
type: DataTypes.DATE,
|
||||
defaultValue: DataTypes.NOW,
|
||||
allowNull: false,
|
||||
},
|
||||
created_at_utc: {
|
||||
type: DataTypes.DATE,
|
||||
defaultValue: DataTypes.NOW,
|
||||
|
@ -9,6 +9,7 @@ interface CreateLocationParams {
|
||||
wifi?: Coordinates;
|
||||
gnss?: Coordinates;
|
||||
ttn_gw?: Coordinates;
|
||||
gnss_timestamp?: Date;
|
||||
}
|
||||
|
||||
interface CreateLocationTriangulationParams {
|
||||
@ -19,6 +20,7 @@ interface CreateLocationTriangulationParams {
|
||||
}[];
|
||||
ttn_gw: LocationSignal[];
|
||||
gnss?: Coordinates;
|
||||
gnss_timestamp?: Date;
|
||||
}
|
||||
|
||||
interface LocationSignal extends Coordinates {
|
||||
@ -75,6 +77,7 @@ export class LocationService {
|
||||
ttn_gw_longitude: data.ttn_gw?.longitude,
|
||||
gnss_latitude: data.gnss?.latitude,
|
||||
gnss_longitude: data.gnss?.longitude,
|
||||
gnss_location_at_utc: data.gnss_timestamp,
|
||||
});
|
||||
}
|
||||
|
||||
@ -91,6 +94,7 @@ export class LocationService {
|
||||
wifi: wifi_location,
|
||||
ttn_gw: gateway_location,
|
||||
gnss: data.gnss,
|
||||
gnss_timestamp: data.gnss_timestamp,
|
||||
});
|
||||
}
|
||||
|
||||
|
@ -5,12 +5,14 @@ interface CreateWifiScanParams {
|
||||
lp_ttn_end_device_uplinks_id: string;
|
||||
mac: string;
|
||||
rssi: number;
|
||||
scanned_at_utc?: Date;
|
||||
}
|
||||
|
||||
interface UpdateWifiScanParams {
|
||||
wifi_scan_id: string;
|
||||
mac?: string;
|
||||
rssi?: number;
|
||||
scanned_at_utc?: Date;
|
||||
}
|
||||
|
||||
@injectable()
|
||||
|
Loading…
Reference in New Issue
Block a user