test
This commit is contained in:
		| @ -1,13 +1,12 @@ | ||||
| import { container } from "tsyringe"; | ||||
| import { domainEventEmitter } from "../config/eventEmitter"; | ||||
| import { | ||||
|   TtnMessageReceivedEvent, | ||||
|   TtnMessageReceivedEventName, | ||||
| } from "../event/ttnMessageReceivedEvent"; | ||||
| import { container } from "tsyringe"; | ||||
| import { getLocationForWifiMemoized } from "../proxy/wigle"; | ||||
| import { LocationService } from "../services/locationService"; | ||||
| import { WifiScanService } from "../services/wifiScanService"; | ||||
| import { getLocationForWifiMemoized } from "../proxy/wigle"; | ||||
| import { WifiScan } from "../models/wifiScan"; | ||||
|  | ||||
| const locationService = container.resolve(LocationService); | ||||
| const wifiScanService = container.resolve(WifiScanService); | ||||
| @ -20,13 +19,13 @@ const CalculateTtnGatewayLocation = (event: TtnMessageReceivedEvent) => { | ||||
|   }; | ||||
|  | ||||
|   if (!event.ttnGateways || event.ttnGateways.length === 0) { | ||||
|     console.log("No TTN Gateway location received!") | ||||
|     console.log("No TTN Gateway location received!"); | ||||
|   } else { | ||||
|     let totalWeight = 0; | ||||
|     let weightedLatitude = 0; | ||||
|     let weightedLongitude = 0; | ||||
|  | ||||
|     event.ttnGateways.forEach(gw => { | ||||
|     event.ttnGateways.forEach((gw) => { | ||||
|       const weight = 1 / Math.abs(gw.rssi); // Higher RSSI (closer to 0) gives more weight | ||||
|       totalWeight += weight; | ||||
|       weightedLatitude += gw.latitude * weight; | ||||
| @ -34,9 +33,15 @@ const CalculateTtnGatewayLocation = (event: TtnMessageReceivedEvent) => { | ||||
|     }); | ||||
|  | ||||
|     // Calculate the weighted average to get the virtual location | ||||
|     virtualLocation.latitude = weightedLatitude / totalWeight; | ||||
|     virtualLocation.longitude = weightedLongitude / totalWeight; | ||||
|     console.log("Tracker location based on TTN Gateway location:", virtualLocation); | ||||
|     const virtualLocation = { | ||||
|       latitude: weightedLatitude / totalWeight, | ||||
|       longitude: weightedLongitude / totalWeight, | ||||
|     }; | ||||
|  | ||||
|     console.log( | ||||
|       "Tracker location based on TTN Gateway location:", | ||||
|       virtualLocation | ||||
|     ); | ||||
|   } | ||||
|   return { | ||||
|     ttn_latitude: virtualLocation.latitude, | ||||
| @ -52,7 +57,7 @@ const CalculateWifiLocation = async (event: TtnMessageReceivedEvent) => { | ||||
|   }; | ||||
|  | ||||
|   if (!event.wifis || event.wifis.length === 0) { | ||||
|     console.log("No WiFi scans received!") | ||||
|     console.log("No WiFi scans received!"); | ||||
|   } else { | ||||
|     // Process Wi-Fi data to compute weighted location | ||||
|     let wifiScans = await Promise.all( | ||||
| @ -99,8 +104,10 @@ const CalculateWifiLocation = async (event: TtnMessageReceivedEvent) => { | ||||
|       virtualLocation.latitude = weightedLatitude / totalWeight; | ||||
|       virtualLocation.longitude = weightedLongitude / totalWeight; | ||||
|  | ||||
|       console.log("Tracker location based on WiFi Scan location:", virtualLocation); | ||||
|     } | ||||
|     console.log( | ||||
|       "Tracker location based on WiFi Scan location:", | ||||
|       virtualLocation | ||||
|     ); | ||||
|   } | ||||
|   return { | ||||
|     wifi_latitude: virtualLocation.latitude, | ||||
| @ -110,7 +117,10 @@ const CalculateWifiLocation = async (event: TtnMessageReceivedEvent) => { | ||||
|  | ||||
| const CalculateGnssLocation = (event: TtnMessageReceivedEvent) => { | ||||
|   // Get location based on reported GNSS | ||||
|   if (event.gnssLocation.latitude === undefined || event.gnssLocation.longitude === undefined) { | ||||
|   if ( | ||||
|     event.gnssLocation.latitude === undefined || | ||||
|     event.gnssLocation.longitude === undefined | ||||
|   ) { | ||||
|     console.log("No valid GNSS location received!"); | ||||
|   } | ||||
|  | ||||
| @ -134,6 +144,7 @@ domainEventEmitter.on( | ||||
|  | ||||
|     if (event.ttnGateways && event.ttnGateways.length > 0) { | ||||
|       const virtualLocation = CalculateTtnGatewayLocation(event); | ||||
|       console.log(virtualLocation); | ||||
|       ttn_gw_based_latitude = virtualLocation.ttn_latitude; | ||||
|       ttn_gw_based_longitude = virtualLocation.ttn_longitude; | ||||
|     } | ||||
| @ -148,6 +159,16 @@ domainEventEmitter.on( | ||||
|     gnss_based_latitude = virtualLocation.gnss_latitude; | ||||
|     gnss_based_longitude = virtualLocation.gnss_longitude; | ||||
|  | ||||
|     console.log({ | ||||
|       lp_ttn_end_device_uplinks_id: event.lp_ttn_end_device_uplinks_id, | ||||
|       ttn_gw_latitude: ttn_gw_based_latitude, | ||||
|       ttn_gw_longitude: ttn_gw_based_longitude, | ||||
|       gnss_latitude: gnss_based_latitude, | ||||
|       gnss_longitude: gnss_based_longitude, | ||||
|       wifi_latitude: wifi_based_latitude, | ||||
|       wifi_longitude: wifi_based_longitude, | ||||
|     }); | ||||
|  | ||||
|     const newLocation = await locationService.createLocation({ | ||||
|       lp_ttn_end_device_uplinks_id: event.lp_ttn_end_device_uplinks_id, | ||||
|       ttn_gw_latitude: ttn_gw_based_latitude, | ||||
| @ -158,7 +179,6 @@ domainEventEmitter.on( | ||||
|       wifi_longitude: wifi_based_longitude, | ||||
|     }); | ||||
|  | ||||
|     console.log(newLocation) | ||||
|     console.log(newLocation); | ||||
|   } | ||||
| ); | ||||
|  | ||||
|  | ||||
		Reference in New Issue
	
	Block a user