/
h0tnanny
/
IotPlatform
Обзор
Документация
Войти
/
h0tnanny
/
IotPlatform
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
develop
database/seed_emulator_data.sql
75 строк
3 KB
h0tnanny
Эмулирование устройств
07 фев 2026, 00:02
07 фев 2026, 00:02
074eca7
Код
Авторство
О чём код?
-- Сидирование эмулируемых устройств для существующего equipment -- Эмуляторы работают в server-режиме: -- - HTTP: отдаёт JSON по GET /emulator/devices/{id}/data -- - UDP: слушает указанный порт и отвечает JSON-пакетом DO $$ DECLARE v_temp_device_id UUID := gen_random_uuid(); v_pressure_device_id UUID := gen_random_uuid(); BEGIN -- ============================================ -- 1. Эмулятор для «Датчик температуры #1» (HTTP) -- Equipment: eq-temp-sensor -- ============================================ INSERT INTO emulated_devices ( id, name, description, mode, is_running, server_path, udp_port, target_equipment_id, push_interval ) VALUES ( v_temp_device_id, 'Эмулятор датчика температуры', 'Server-режим: HTTP endpoint для eq-temp-sensor (temperature, humidity, status)', 'server', true, '/emulator/devices/' || v_temp_device_id || '/data', NULL, NULL, 5000 ); INSERT INTO emulated_device_variables (device_id, name, description, type, gen_config) VALUES (v_temp_device_id, 'temperature', 'Температура', 'Double', '{"min": 18, "max": 32, "precision": 1}'), (v_temp_device_id, 'humidity', 'Влажность', 'Double', '{"min": 30, "max": 75, "precision": 1}'), (v_temp_device_id, 'status', 'Статус датчика', 'String', '{"values": ["online", "warning", "offline"]}'); -- Обновляем endpoint equipment, чтобы он опрашивал эмулятор UPDATE equipment SET endpoint = 'http://localhost:3000/emulator/devices/' || v_temp_device_id || '/data', updated_at = NOW() WHERE id = 'eq-temp-sensor'; -- ============================================ -- 2. Эмулятор для «Датчик давления» (UDP) -- Equipment: eq-pressure-sensor -- ============================================ INSERT INTO emulated_devices ( id, name, description, mode, is_running, server_path, udp_port, target_equipment_id, push_interval ) VALUES ( v_pressure_device_id, 'Эмулятор датчика давления', 'Server-режим: UDP порт 5000 для eq-pressure-sensor (pressure, altitude, isCalibrated)', 'server', true, '/emulator/devices/' || v_pressure_device_id || '/data', 5000, NULL, 3000 ); INSERT INTO emulated_device_variables (device_id, name, description, type, gen_config) VALUES (v_pressure_device_id, 'pressure', 'Давление (кПа)', 'Number', '{"min": 95, "max": 110, "step": 1}'), (v_pressure_device_id, 'altitude', 'Высота (м)', 'Number', '{"min": 100, "max": 200, "step": 5}'), (v_pressure_device_id, 'isCalibrated', 'Откалиброван', 'Boolean', '{"probability": 0.85}'); -- Обновляем endpoint equipment, чтобы он отправлял UDP на localhost UPDATE equipment SET endpoint = 'localhost:5000', updated_at = NOW() WHERE id = 'eq-pressure-sensor'; RAISE NOTICE 'Эмулятор температуры: %', v_temp_device_id; RAISE NOTICE 'Эмулятор давления: %', v_pressure_device_id; END $$;