{"stats":{"totalDevices":8,"onlineDevices":5,"offlineDevices":1,"warningDevices":2,"criticalDevices":1,"activeAlerts":0,"automationsToday":0,"telemetryPointsToday":0,"commandsToday":0},"environment":{"temperature":28.1575,"humidity":69.43,"pressure":1015.65,"light":530.0300000000001,"co2":710.58,"sourceDeviceId":"dev-kitchen-rpi","sourceDeviceName":"Kitchen Raspberry Pi","updatedAt":"2026-09-18T23:33:39.917Z"},"devices":[{"id":"dev-garage-generic","organizationId":"org-sensorgrid-hq","locationId":"loc-garage","name":"Garage Door Controller","type":"GENERIC","status":"OFFLINE","health":"OFFLINE","firmwareVersion":"1.0.0","ipAddress":"10.0.1.28","macAddress":"00:1B:44:11:22:05","battery":12,"signal":null,"lastSeen":"2026-09-11T21:40:55.346Z","lastHeartbeat":"2026-09-11T21:41:09.898Z","tags":["actuator","critical-battery"],"notes":"Lost connectivity 2 hours ago.","metadata":{"ip":"10.0.1.28"},"location":{"id":"loc-garage","name":"Garage","type":"ROOM","parentId":"loc-ground","metadata":{}},"sensors":[{"id":"dev-garage-generic__motion","deviceId":"dev-garage-generic","key":"motion","label":"Motion","unit":"","dataType":"boolean","min":0,"max":1}],"twin":{"id":"cmtxhbnff000pdvb6flch1k5k","deviceId":"dev-garage-generic","desired":{"door":"closed"},"reported":{"door":"open","lastPosition":"open"},"version":1,"updatedAt":"2026-09-11T21:41:33.189Z"},"createdAt":"2026-09-11T21:39:38.200Z","updatedAt":"2026-09-11T21:41:32.482Z"},{"id":"dev-kitchen-rpi","organizationId":"org-sensorgrid-hq","locationId":"loc-kitchen","name":"Kitchen Raspberry Pi","type":"RPI","status":"ONLINE","health":"HEALTHY","firmwareVersion":"2.1.0","ipAddress":"10.0.1.25","macAddress":"B8:27:EB:11:22:33","battery":null,"signal":-41,"lastSeen":"2026-09-18T04:01:13.104Z","lastHeartbeat":"2026-09-18T04:01:13.104Z","tags":["environment","gateway","air-quality"],"notes":null,"metadata":{"ip":"10.0.1.25"},"location":{"id":"loc-kitchen","name":"Kitchen","type":"ROOM","parentId":"loc-ground","metadata":{}},"sensors":[{"id":"dev-kitchen-rpi__temperature","deviceId":"dev-kitchen-rpi","key":"temperature","label":"Temperature","unit":"°C","dataType":"number","min":10,"max":45},{"id":"dev-kitchen-rpi__humidity","deviceId":"dev-kitchen-rpi","key":"humidity","label":"Humidity","unit":"%","dataType":"number","min":0,"max":100},{"id":"dev-kitchen-rpi__co2","deviceId":"dev-kitchen-rpi","key":"co2","label":"CO2","unit":"ppm","dataType":"number","min":300,"max":3000}],"twin":{"id":"cmtxhbi6v0009dvb68d9vgxzr","deviceId":"dev-kitchen-rpi","desired":{"vent":true,"threshold":800},"reported":{"vent":true,"threshold":800,"temperature":27.76,"humidity":69.11,"co2":710.58},"version":4588,"updatedAt":"2026-09-18T04:01:13.275Z"},"createdAt":"2026-09-11T21:39:31.368Z","updatedAt":"2026-09-18T04:01:13.283Z"},{"id":"dev-bedroom-esp","organizationId":"org-sensorgrid-hq","locationId":"loc-bedroom","name":"Bedroom Sensor Hub","type":"ESP32","status":"ONLINE","health":"HEALTHY","firmwareVersion":"1.4.2","ipAddress":"10.0.1.25","macAddress":"24:6F:28:EE:FF:03","battery":92,"signal":-61,"lastSeen":"2026-09-18T04:01:13.104Z","lastHeartbeat":"2026-09-18T04:01:13.104Z","tags":["environment","low-power"],"notes":null,"metadata":{"ip":"10.0.1.25"},"location":{"id":"loc-bedroom","name":"Bedroom","type":"ROOM","parentId":"loc-first","metadata":{}},"sensors":[{"id":"dev-bedroom-esp__temperature","deviceId":"dev-bedroom-esp","key":"temperature","label":"Temperature","unit":"°C","dataType":"number","min":5,"max":40},{"id":"dev-bedroom-esp__humidity","deviceId":"dev-bedroom-esp","key":"humidity","label":"Humidity","unit":"%","dataType":"number","min":0,"max":100}],"twin":{"id":"cmtxhbl3d000hdvb65t3oiu9m","deviceId":"dev-bedroom-esp","desired":{"led":false},"reported":{"led":false,"temperature":28.94,"humidity":69.36},"version":2101,"updatedAt":"2026-09-18T04:01:13.303Z"},"createdAt":"2026-09-11T21:39:35.190Z","updatedAt":"2026-09-18T04:01:13.311Z"},{"id":"dev-living-esp32","organizationId":"org-sensorgrid-hq","locationId":"loc-living","name":"Living Room ESP32","type":"ESP32","status":"ONLINE","health":"HEALTHY","firmwareVersion":"1.4.2","ipAddress":"10.0.1.26","macAddress":"24:6F:28:AA:BB:01","battery":87,"signal":-52,"lastSeen":"2026-09-18T04:01:13.104Z","lastHeartbeat":"2026-09-18T04:01:13.104Z","tags":["environment","primary"],"notes":"Primary indoor environmental sensor.","metadata":{"ip":"10.0.1.26"},"location":{"id":"loc-living","name":"Living Room","type":"ROOM","parentId":"loc-ground","metadata":{}},"sensors":[{"id":"dev-living-esp32__temperature","deviceId":"dev-living-esp32","key":"temperature","label":"Temperature","unit":"°C","dataType":"number","min":10,"max":40},{"id":"dev-living-esp32__humidity","deviceId":"dev-living-esp32","key":"humidity","label":"Humidity","unit":"%","dataType":"number","min":0,"max":100},{"id":"dev-living-esp32__pressure","deviceId":"dev-living-esp32","key":"pressure","label":"Pressure","unit":"hPa","dataType":"number","min":900,"max":1100},{"id":"dev-living-esp32__light","deviceId":"dev-living-esp32","key":"light","label":"Light","unit":"lux","dataType":"number","min":0,"max":2000}],"twin":{"id":"cmtxhbg600005dvb6gka2dkxl","deviceId":"dev-living-esp32","desired":{"fan":false,"led":false,"brightness":60},"reported":{"fan":false,"led":false,"brightness":60,"temperature":27.33,"humidity":70.51,"pressure":1015.65,"light":560.07},"version":6117,"updatedAt":"2026-09-18T04:01:13.360Z"},"createdAt":"2026-09-11T21:39:28.021Z","updatedAt":"2026-09-18T04:01:13.368Z"},{"id":"dev-living-presence","organizationId":"org-sensorgrid-hq","locationId":"loc-living","name":"Living Room Presence","type":"ESP32","status":"ONLINE","health":"HEALTHY","firmwareVersion":"1.2.0","ipAddress":"10.0.1.29","macAddress":"24:6F:28:99:AA:07","battery":76,"signal":-58,"lastSeen":"2026-09-18T04:01:13.104Z","lastHeartbeat":"2026-09-18T04:01:13.104Z","tags":["motion","presence"],"notes":null,"metadata":{"ip":"10.0.1.29"},"location":{"id":"loc-living","name":"Living Room","type":"ROOM","parentId":"loc-ground","metadata":{}},"sensors":[{"id":"dev-living-presence__motion","deviceId":"dev-living-presence","key":"motion","label":"Motion","unit":"","dataType":"boolean","min":0,"max":1},{"id":"dev-living-presence__light","deviceId":"dev-living-presence","key":"light","label":"Light","unit":"lux","dataType":"number","min":0,"max":2000}],"twin":{"id":"cmtxhbpn6000xdvb63ha9kyql","deviceId":"dev-living-presence","desired":{"sensitivity":"medium"},"reported":{"sensitivity":"medium","motion":false,"light":490.67},"version":1530,"updatedAt":"2026-09-18T04:01:13.375Z"},"createdAt":"2026-09-11T21:39:41.061Z","updatedAt":"2026-09-18T04:01:13.384Z"},{"id":"dev-greenhouse-esp","organizationId":"org-sensorgrid-hq","locationId":"loc-greenhouse","name":"Greenhouse Monitor","type":"ESP32","status":"WARNING","health":"DEGRADED","firmwareVersion":"1.3.7","ipAddress":"10.0.1.28","macAddress":"24:6F:28:CC:DD:02","battery":34,"signal":-78,"lastSeen":"2026-09-18T04:01:14.369Z","lastHeartbeat":"2026-09-18T04:01:14.369Z","tags":["environment","outdoor","agriculture"],"notes":"Battery degrading. Schedule replacement.","metadata":{"ip":"10.0.1.28"},"location":{"id":"loc-greenhouse","name":"Greenhouse","type":"ZONE","parentId":"loc-site","metadata":{}},"sensors":[{"id":"dev-greenhouse-esp__temperature","deviceId":"dev-greenhouse-esp","key":"temperature","label":"Temperature","unit":"°C","dataType":"number","min":0,"max":50},{"id":"dev-greenhouse-esp__humidity","deviceId":"dev-greenhouse-esp","key":"humidity","label":"Humidity","unit":"%","dataType":"number","min":0,"max":100},{"id":"dev-greenhouse-esp__light","deviceId":"dev-greenhouse-esp","key":"light","label":"Light","unit":"lux","dataType":"number","min":0,"max":60000},{"id":"dev-greenhouse-esp__soil","deviceId":"dev-greenhouse-esp","key":"soil","label":"Soil Moisture","unit":"%","dataType":"number","min":0,"max":100}],"twin":{"id":"cmtxhbjib000ddvb63qfu89qk","deviceId":"dev-greenhouse-esp","desired":{"pump":false,"fan":false},"reported":{"pump":false,"fan":false,"temperature":28.6,"humidity":68.74,"light":539.35,"soil":52.73},"version":6121,"updatedAt":"2026-09-18T04:01:14.436Z"},"createdAt":"2026-09-11T21:39:33.089Z","updatedAt":"2026-09-18T04:01:14.448Z"},{"id":"dev-server-gateway","organizationId":"org-sensorgrid-hq","locationId":"loc-server","name":"Server Room Gateway","type":"GATEWAY","status":"CRITICAL","health":"CRITICAL","firmwareVersion":"3.0.1","ipAddress":"10.0.1.28","macAddress":"F4:CF:E2:33:44:06","battery":null,"signal":-35,"lastSeen":"2026-09-18T04:01:14.369Z","lastHeartbeat":"2026-09-18T04:01:14.369Z","tags":["gateway","critical","monitoring"],"notes":"CPU temperature critical. Investigate cooling.","metadata":{"ip":"10.0.1.28"},"location":{"id":"loc-server","name":"Server Room","type":"ROOM","parentId":"loc-ground","metadata":{}},"sensors":[{"id":"dev-server-gateway__temperature","deviceId":"dev-server-gateway","key":"temperature","label":"Temperature","unit":"°C","dataType":"number","min":10,"max":90},{"id":"dev-server-gateway__humidity","deviceId":"dev-server-gateway","key":"humidity","label":"Humidity","unit":"%","dataType":"number","min":0,"max":100},{"id":"dev-server-gateway__voltage","deviceId":"dev-server-gateway","key":"voltage","label":"Voltage","unit":"V","dataType":"number","min":200,"max":250}],"twin":{"id":"cmtxhbog4000tdvb6b33fxr6b","deviceId":"dev-server-gateway","desired":{"alarm":true,"cooldown":"max"},"reported":{"alarm":true,"cooldown":"max","temperature":28.24,"humidity":69.72,"voltage":231.78},"version":4591,"updatedAt":"2026-09-18T04:01:14.492Z"},"createdAt":"2026-09-11T21:39:39.379Z","updatedAt":"2026-09-18T04:01:14.503Z"},{"id":"dev-office-arduino","organizationId":"org-sensorgrid-hq","locationId":"loc-office","name":"Office Power Strip","type":"ARDUINO","status":"ONLINE","health":"HEALTHY","firmwareVersion":"0.9.4","ipAddress":"10.0.1.28","macAddress":"90:A2:DA:01:02:04","battery":null,"signal":-48,"lastSeen":"2026-09-18T04:01:14.369Z","lastHeartbeat":"2026-09-18T04:01:14.369Z","tags":["power","actuator"],"notes":null,"metadata":{"ip":"10.0.1.28"},"location":{"id":"loc-office","name":"Office","type":"ROOM","parentId":"loc-first","metadata":{}},"sensors":[{"id":"dev-office-arduino__voltage","deviceId":"dev-office-arduino","key":"voltage","label":"Voltage","unit":"V","dataType":"number","min":200,"max":250},{"id":"dev-office-arduino__current","deviceId":"dev-office-arduino","key":"current","label":"Current","unit":"A","dataType":"number","min":0,"max":30},{"id":"dev-office-arduino__power","deviceId":"dev-office-arduino","key":"power","label":"Power","unit":"W","dataType":"number","min":0,"max":5000}],"twin":{"id":"cmtxhbm7n000ldvb6e0cubxlu","deviceId":"dev-office-arduino","desired":{"outlet1":true,"outlet2":false,"outlet3":true},"reported":{"outlet1":true,"outlet2":false,"outlet3":true,"power":163.25,"voltage":231.64,"current":3.01},"version":4591,"updatedAt":"2026-09-18T04:01:14.546Z"},"createdAt":"2026-09-11T21:39:36.522Z","updatedAt":"2026-09-18T04:01:14.557Z"}],"recentActivity":[{"id":"cmu0xgr0w01o6id04nlfq3ar5","action":"auth.logout","actorName":"SensorGrid Operator","targetType":"USER","targetName":"SensorGrid Operator","createdAt":"2026-09-14T07:34:49.040Z"},{"id":"cmu0xdfnw001qid04z4w9t213","action":"device.online","actorName":"Realtime Engine","targetType":"DEVICE","targetName":"Bedroom Sensor Hub","createdAt":"2026-09-14T07:32:14.348Z"},{"id":"cmu0xdfm1001kkx04t5ztb37p","action":"device.offline","actorName":"Realtime Engine","targetType":"DEVICE","targetName":"Bedroom Sensor Hub","createdAt":"2026-09-14T07:32:14.282Z"},{"id":"cmu0xdflx001kl504lrytt5ua","action":"device.offline","actorName":"Realtime Engine","targetType":"DEVICE","targetName":"Bedroom Sensor Hub","createdAt":"2026-09-14T07:32:14.278Z"},{"id":"cmtxhlyi000evid0406epqpwv","action":"auth.logout","actorName":"SensorGrid Operator","targetType":"USER","targetName":"SensorGrid Operator","createdAt":"2026-09-11T21:47:39.624Z"}],"recentAlerts":[]}