diff --git a/package.json b/package.json index fb9ac4e..75383b6 100644 --- a/package.json +++ b/package.json @@ -68,8 +68,6 @@ "@node-rs/argon2": "^2.0.2", "@oslojs/crypto": "^1.0.1", "@oslojs/encoding": "^1.1.0", - "d3-scale": "^4.0.2", - "d3-shape": "^3.2.0", "drizzle-orm": "^0.43.1", "mqtt": "^5.13.1", "postgres": "^3.4.5", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index c8adcf8..7918f60 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -17,12 +17,6 @@ importers: '@oslojs/encoding': specifier: ^1.1.0 version: 1.1.0 - d3-scale: - specifier: ^4.0.2 - version: 4.0.2 - d3-shape: - specifier: ^3.2.0 - version: 3.2.0 drizzle-orm: specifier: ^0.43.1 version: 0.43.1(postgres@3.4.5) diff --git a/src/lib/server/db/schema.js b/src/lib/server/db/schema.js index 9e7680e..0ae02ed 100644 --- a/src/lib/server/db/schema.js +++ b/src/lib/server/db/schema.js @@ -42,5 +42,4 @@ export const sensorData = pgTable("sensor_data", { humidity: real().notNull(), pressure: real().notNull(), altitude: real().notNull(), - time: timestamp().notNull().defaultNow(), }); diff --git a/src/lib/server/mqtt-devices.js b/src/lib/server/mqtt-devices.js deleted file mode 100644 index 8445506..0000000 --- a/src/lib/server/mqtt-devices.js +++ /dev/null @@ -1,42 +0,0 @@ -// src/lib/server/mqtt-devices.js -// This module provides access to MQTT device data for other parts of the application - -// We'll import the maps directly from the MQTT server module - -let connectedDevices = new Map(); -let deviceSensorData = new Map(); - -// Export the maps so the MQTT server can set them -export { connectedDevices, deviceSensorData }; - -// Clean up offline devices (not seen in last 5 minutes) -function cleanupDevices() { - const fiveMinutesAgo = new Date(Date.now() - 5 * 60 * 1000); - let updated = false; - - for (const [deviceId, device] of connectedDevices.entries()) { - if (device.lastSeen < fiveMinutesAgo && device.status === "online") { - connectedDevices.set(deviceId, { ...device, status: "offline" }); - updated = true; - } - } - - return updated; -} - -// Export function to get current devices -export function getCurrentDevices() { - cleanupDevices(); - return Array.from(connectedDevices.values()).map((device) => { - const sensorData = deviceSensorData.get(device.id); - return { - ...device, - sensorData: sensorData || null, - }; - }); -} - -// Export function to get sensor data for a specific device -export function getDeviceSensorData(deviceId) { - return deviceSensorData.get(deviceId) || null; -} diff --git a/src/routes/(app)/[slug]/+page.server.ts b/src/routes/(app)/[slug]/+page.server.ts index 8ce7412..4488322 100644 --- a/src/routes/(app)/[slug]/+page.server.ts +++ b/src/routes/(app)/[slug]/+page.server.ts @@ -3,74 +3,35 @@ import * as table from "$lib/server/db/schema"; import { eq } from "drizzle-orm"; import type { PageServerLoad } from "./$types"; import { connect } from "mqtt"; -import { getDeviceSensorData } from "$lib/server/mqtt-devices.js"; export const load: PageServerLoad = async ({ params }) => { - // Convert slug to number for floor lookup - const floorNumber = Number(params.slug); - - // First check if we have a saved floor configuration in the floors table - const floorData = await db.select({ - floor: table.floors.floor, - url: table.floors.url - }).from(table.floors).where(eq(table.floors.floor, floorNumber)); - - if (floorData.length > 0 && floorData[0].url && floorData[0].url !== "/") { - try { - // Try to parse the saved configuration - const config = JSON.parse(floorData[0].url); - - // Add real sensor data to devices - if (config.devices) { - config.devices = config.devices.map(device => { - const sensorData = getDeviceSensorData(device.id); - return { - ...device, - sensorData: sensorData - }; - }); - } - - return { - slug: params.slug, - floorConfig: config, - hasConfig: true - }; - } catch (e) { - console.error("Error parsing floor configuration:", e); + { + const floor_cnt = await db.select({ floor: table.plans.floor, json: table.plans.plan }).from(table.plans).where(eq(table.plans.floor, params.slug)); + if (floor_cnt.length == 0) { + await db.insert(table.plans).values({ floor: params.slug, plan: { + "regions": [ + { "start": { "x": 100, "y": 100 }, "end": { "x": 400, "y": 100 } }, + { "start": { "x": 400, "y": 100 }, "end": { "x": 400, "y": 300 } }, + { "start": { "x": 400, "y": 300 }, "end": { "x": 100, "y": 300 } }, + { "start": { "x": 100, "y": 300 }, "end": { "x": 100, "y": 100 } } + ], + "doors": [ + { "location": { "x": 240, "y": 100 }, "width": 50, "rotation": 0 } + ], + "furnitures": [ + { + "minBound": { "x": 150, "y": 150 }, + "maxBound": { "x": 200, "y": 200 }, + "equipName": "Table", + "xPlacement": 150, + "yPlacement": 150, + "rotation": 0 + } + ] + }}); } + } - - // Fallback to the old canvas drawing system - const floor_cnt = await db.select({ floor: table.plans.floor, json: table.plans.plan }).from(table.plans).where(eq(table.plans.floor, params.slug)); - if (floor_cnt.length == 0) { - await db.insert(table.plans).values({ floor: params.slug, plan: { - "regions": [ - { "start": { "x": 100, "y": 100 }, "end": { "x": 400, "y": 100 } }, - { "start": { "x": 400, "y": 100 }, "end": { "x": 400, "y": 300 } }, - { "start": { "x": 400, "y": 300 }, "end": { "x": 100, "y": 300 } }, - { "start": { "x": 100, "y": 300 }, "end": { "x": 100, "y": 100 } } - ], - "doors": [ - { "location": { "x": 240, "y": 100 }, "width": 50, "rotation": 0 } - ], - "furnitures": [ - { - "minBound": { "x": 150, "y": 150 }, - "maxBound": { "x": 200, "y": 200 }, - "equipName": "Table", - "xPlacement": 150, - "yPlacement": 150, - "rotation": 0 - } - ] - }}); - } - const floor_ = await db.select({ floor: table.plans.floor, json: table.plans.plan }).from(table.plans).where(eq(table.plans.floor, params.slug)); - return { - slug: params.slug, - floor: floor_, - hasConfig: false - }; + return { slug: params.slug, floor: floor_ }; }; diff --git a/src/routes/(app)/[slug]/+page.svelte b/src/routes/(app)/[slug]/+page.svelte index e31f282..2f90051 100644 --- a/src/routes/(app)/[slug]/+page.svelte +++ b/src/routes/(app)/[slug]/+page.svelte @@ -1,59 +1,26 @@ -
MQTT Status: {mqttMessage}
-