feat: endpoint impl.

This commit is contained in:
2024-12-30 23:29:09 +01:00
parent d2b299c83b
commit ad3e40ee3c
14 changed files with 552 additions and 33 deletions

View File

@ -0,0 +1,90 @@
import { z } from "zod";
export const ttnMessageValidator = z.object({
end_device_ids: z.object({
device_id: z.string(),
application_ids: z.object({
application_id: z.string(),
}),
dev_eui: z.string(),
join_eui: z.string(),
dev_addr: z.string(),
}),
correlation_ids: z.array(z.string()),
received_at: z.string(),
uplink_message: z.object({
session_key_id: z.string(),
f_port: z.number().optional(),
f_cnt: z.number(),
frm_payload: z.string().optional(),
decoded_payload: z
.object({
err: z.number(),
messages: z.array(
z.array(
z.object({
measurementId: z.string(),
measurementValue: z.union([z.array(z.any()), z.number()]),
motionId: z.number(),
timestamp: z.number(),
type: z.string(),
})
)
),
payload: z.string(),
valid: z.boolean(),
})
.optional(),
rx_metadata: z.array(
z.object({
gateway_ids: z.object({
gateway_id: z.string(),
eui: z.string().optional(),
}),
time: z.string(),
timestamp: z.number().optional(),
rssi: z.number(),
channel_rssi: z.number(),
snr: z.number(),
location: z.object({
latitude: z.number(),
longitude: z.number(),
altitude: z.number(),
source: z.string().optional(),
}),
uplink_token: z.string(),
channel_index: z.number().optional(),
received_at: z.string(),
})
),
settings: z.object({
data_rate: z.object({
lora: z.object({
bandwidth: z.number(),
spreading_factor: z.number(),
coding_rate: z.string(),
}),
}),
frequency: z.string(),
timestamp: z.number().optional(),
time: z.string().optional(),
}),
received_at: z.string(),
confirmed: z.boolean().optional(),
consumed_airtime: z.string(),
version_ids: z.object({
brand_id: z.string(),
model_id: z.string(),
hardware_version: z.string(),
firmware_version: z.string(),
band_id: z.string(),
}),
network_ids: z.object({
net_id: z.string(),
ns_id: z.string(),
tenant_id: z.string(),
cluster_id: z.string(),
cluster_address: z.string(),
}),
}),
});