Add verified Raspberry Pi 5 edge performance measurements
Browse filesRecord actual 16 GB Pi 5 latency, RAM and correctness with frozen evaluation inputs, raw per-call measurements, runtime hashes and reproducible settings. Preserve weights and existing training data.
- .gitattributes +1 -0
- README.md +305 -287
- edge_benchmarks/rpi5-2026-09-26/REPORT.md +61 -0
- edge_benchmarks/rpi5-2026-09-26/benchmark.py +268 -0
- edge_benchmarks/rpi5-2026-09-26/bundle_manifest.json +229 -0
- edge_benchmarks/rpi5-2026-09-26/cases/poc2_latency.json +147 -0
- edge_benchmarks/rpi5-2026-09-26/cases/poc2_quality.json +2902 -0
- edge_benchmarks/rpi5-2026-09-26/environment.lock.txt +30 -0
- edge_benchmarks/rpi5-2026-09-26/provenance.json +125 -0
- edge_benchmarks/rpi5-2026-09-26/readings.csv +0 -0
- edge_benchmarks/rpi5-2026-09-26/reproduce.py +21 -0
- edge_benchmarks/rpi5-2026-09-26/results/poc2_t1.json +0 -0
- edge_benchmarks/rpi5-2026-09-26/results/poc2_t4.json +0 -0
- edge_benchmarks/rpi5-2026-09-26/runtime_identity.json +42 -0
- edge_benchmarks/rpi5-2026-09-26/temperature_latency.png +3 -0
.gitattributes
CHANGED
|
@@ -33,3 +33,4 @@ saved_model/**/* filter=lfs diff=lfs merge=lfs -text
|
|
| 33 |
*.zip filter=lfs diff=lfs merge=lfs -text
|
| 34 |
*.zst filter=lfs diff=lfs merge=lfs -text
|
| 35 |
*tfevents* filter=lfs diff=lfs merge=lfs -text
|
|
|
|
|
|
| 33 |
*.zip filter=lfs diff=lfs merge=lfs -text
|
| 34 |
*.zst filter=lfs diff=lfs merge=lfs -text
|
| 35 |
*tfevents* filter=lfs diff=lfs merge=lfs -text
|
| 36 |
+
edge_benchmarks/rpi5-2026-09-26/temperature_latency.png filter=lfs diff=lfs merge=lfs -text
|
README.md
CHANGED
|
@@ -1,287 +1,305 @@
|
|
| 1 |
-
---
|
| 2 |
-
license: apache-2.0
|
| 3 |
-
language:
|
| 4 |
-
- en
|
| 5 |
-
- hi
|
| 6 |
-
pipeline_tag: text-generation
|
| 7 |
-
tags:
|
| 8 |
-
- text-to-json
|
| 9 |
-
- home-automation
|
| 10 |
-
- robotics
|
| 11 |
-
- hinglish
|
| 12 |
-
- tiny-model
|
| 13 |
-
- from-scratch
|
| 14 |
-
- edge-ai
|
| 15 |
-
- numpy
|
| 16 |
-
- raspberry-pi
|
| 17 |
-
- conditional-rules
|
| 18 |
-
- experimental
|
| 19 |
-
datasets:
|
| 20 |
-
- sraivante/home-commands-json-v3
|
| 21 |
-
metrics:
|
| 22 |
-
- exact_match
|
| 23 |
-
model-index:
|
| 24 |
-
- name: superfast-tiny-home-robotics-json-1m-v3
|
| 25 |
-
results:
|
| 26 |
-
- task:
|
| 27 |
-
type: text-generation
|
| 28 |
-
name: instruction to JSON device command
|
| 29 |
-
dataset:
|
| 30 |
-
type: sraivante/home-commands-json-v3
|
| 31 |
-
name: home-commands-json-v3 (1,500 held-out rows, greedy decode)
|
| 32 |
-
metrics:
|
| 33 |
-
- type: exact_match
|
| 34 |
-
value: 96.73
|
| 35 |
-
name: exact match (all)
|
| 36 |
-
verified: false
|
| 37 |
-
- type: exact_match
|
| 38 |
-
value: 96.89
|
| 39 |
-
name: exact match (plain commands, n=900)
|
| 40 |
-
verified: false
|
| 41 |
-
- type: exact_match
|
| 42 |
-
value: 96.50
|
| 43 |
-
name: exact match (conditional rules, n=600)
|
| 44 |
-
verified: false
|
| 45 |
-
---
|
| 46 |
-
|
| 47 |
-
# Superfast Tiny Home Robotics JSON 1M v3
|
| 48 |
-
|
| 49 |
-
A **1,143,328-parameter character-level transformer, trained from scratch**, that
|
| 50 |
-
turns an English or Hinglish sentence into one JSON device command, including
|
| 51 |
-
**conditional rules** ("if temperature goes above 42...", "roz shaam 7 baje...").
|
| 52 |
-
Weights are **2.1 MB (fp16)**. Inference is **numpy only**: no PyTorch, no
|
| 53 |
-
tokenizer library, no internet, no GPU.
|
| 54 |
-
|
| 55 |
-
```text
|
| 56 |
-
"bhai bedroom ka pankha high pe chala do"
|
| 57 |
-
-> {"activity":"air","subject":"bedroom_ceiling_fan","action":"HIGH"}
|
| 58 |
-
|
| 59 |
-
"agar room ka temperature 42 se upar jaye to bedroom ka heater band kar do"
|
| 60 |
-
-> {"activity":"heating","subject":"bedroom_room_heater","action":"OFF",
|
| 61 |
-
"when":{"metric":"temperature","op":">","value":42}}
|
| 62 |
-
|
| 63 |
-
"roz shaam 7 baje garden ki batti chala do"
|
| 64 |
-
-> {"activity":"light","subject":"garden_light","action":"ON",
|
| 65 |
-
"when":{"metric":"time","op":"==","value":"19:00"}}
|
| 66 |
-
|
| 67 |
-
"when soil moisture drops below 20 start the garden sprinkler"
|
| 68 |
-
-> {"activity":"garden","subject":"garden_sprinkler","action":"ON",
|
| 69 |
-
"when":{"metric":"soil_moisture","op":"<","value":20}}
|
| 70 |
-
```
|
| 71 |
-
|
| 72 |
-
This is the v3 of the series. Compared with
|
| 73 |
-
[v1](https://huggingface.co/sraivante/superfast-tiny-home-robotics-json-1m-v1)
|
| 74 |
-
(30 commands, 10 device types, transformers runtime) it covers **1,004 devices,
|
| 75 |
-
12 actions, 7 sensor metrics for rules**, and ships with a numpy engine plus a
|
| 76 |
-
web UI and Docker image.
|
| 77 |
-
|
| 78 |
-
| Release | Value |
|
| 79 |
-
| --- | --- |
|
| 80 |
-
| Publisher | sraivante |
|
| 81 |
-
| Release date | 2026-09-26 |
|
| 82 |
-
| Version | v3.0.0 |
|
| 83 |
-
| Training data | [home-commands-json-v3](https://huggingface.co/datasets/sraivante/home-commands-json-v3) (synthetic, templated) |
|
| 84 |
-
| Architecture | GPT-style causal decoder, char-level vocab (78 symbols), d=160, 4 layers, 4 heads, FFN 512, context 360 |
|
| 85 |
-
| Parameters | 1,143,328 |
|
| 86 |
-
| Weights | `model/model_v3_fp16.npz`, 2,146,783 bytes |
|
| 87 |
-
| Runtime deps | `numpy` (plus `flask` for the optional server) |
|
| 88 |
-
| License | Apache-2.0 |
|
| 89 |
-
|
| 90 |
-
|
| 91 |
-
|
| 92 |
-
|
| 93 |
-
|
| 94 |
-
|
| 95 |
-
|
| 96 |
-
|
| 97 |
-
|
| 98 |
-
|
| 99 |
-
|
| 100 |
-
|
| 101 |
-
|
| 102 |
-
|
| 103 |
-
|
| 104 |
-
|
| 105 |
-
|
| 106 |
-
|
| 107 |
-
|
| 108 |
-
|
| 109 |
-
|
| 110 |
-
|
| 111 |
-
|
| 112 |
-
|
| 113 |
-
|
| 114 |
-
|
| 115 |
-
|
| 116 |
-
|
| 117 |
-
|
| 118 |
-
|
| 119 |
-
|
| 120 |
-
|
| 121 |
-
|
| 122 |
-
|
| 123 |
-
|
| 124 |
-
|
| 125 |
-
|
| 126 |
-
|
| 127 |
-
|
| 128 |
-
#
|
| 129 |
-
|
| 130 |
-
```
|
| 131 |
-
|
| 132 |
-
|
| 133 |
-
|
| 134 |
-
|
| 135 |
-
|
| 136 |
-
|
| 137 |
-
|
| 138 |
-
|
| 139 |
-
|
| 140 |
-
|
| 141 |
-
|
| 142 |
-
|
| 143 |
-
|
| 144 |
-
|
| 145 |
-
|
| 146 |
-
|
| 147 |
-
|
| 148 |
-
|
| 149 |
-
|
| 150 |
-
|
| 151 |
-
|
| 152 |
-
|
| 153 |
-
|
| 154 |
-
|
| 155 |
-
|
| 156 |
-
|
| 157 |
-
```
|
| 158 |
-
|
| 159 |
-
|
| 160 |
-
|
| 161 |
-
|
| 162 |
-
|
| 163 |
-
|
| 164 |
-
|
| 165 |
-
|
| 166 |
-
``
|
| 167 |
-
|
| 168 |
-
|
| 169 |
-
``
|
| 170 |
-
|
| 171 |
-
|
| 172 |
-
|
| 173 |
-
|
| 174 |
-
|
| 175 |
-
|
| 176 |
-
|
| 177 |
-
|
| 178 |
-
|
| 179 |
-
|
| 180 |
-
|
| 181 |
-
|
| 182 |
-
|
| 183 |
-
|
| 184 |
-
|
| 185 |
-
```
|
| 186 |
-
|
| 187 |
-
|
| 188 |
-
|
| 189 |
-
|
| 190 |
-
|
| 191 |
-
`
|
| 192 |
-
|
| 193 |
-
|
| 194 |
-
|
| 195 |
-
|
| 196 |
-
|
| 197 |
-
|
| 198 |
-
|
| 199 |
-
|
| 200 |
-
|
| 201 |
-
|
| 202 |
-
|
| 203 |
-
|
| 204 |
-
|
| 205 |
-
|
| 206 |
-
|
| 207 |
-
|
| 208 |
-
|
| 209 |
-
|
| 210 |
-
|
| 211 |
-
|
| 212 |
-
|
| 213 |
-
|
| 214 |
-
|
| 215 |
-
|
| 216 |
-
|
| 217 |
-
|
| 218 |
-
|
| 219 |
-
|
| 220 |
-
|
| 221 |
-
|
| 222 |
-
|
| 223 |
-
|
| 224 |
-
|
| 225 |
-
|
| 226 |
-
|
| 227 |
-
|
| 228 |
-
|
| 229 |
-
|
| 230 |
-
|
| 231 |
-
|
| 232 |
-
|
| 233 |
-
|
| 234 |
-
|
| 235 |
-
|
| 236 |
-
|
| 237 |
-
|
| 238 |
-
|
| 239 |
-
|
| 240 |
-
|
| 241 |
-
|
| 242 |
-
|
| 243 |
-
|
| 244 |
-
|
| 245 |
-
|
| 246 |
-
-
|
| 247 |
-
|
| 248 |
-
|
| 249 |
-
|
| 250 |
-
|
| 251 |
-
|
| 252 |
-
|
| 253 |
-
-
|
| 254 |
-
|
| 255 |
-
|
| 256 |
-
|
| 257 |
-
|
| 258 |
-
|
| 259 |
-
|
| 260 |
-
|
| 261 |
-
|
| 262 |
-
|
| 263 |
-
|
| 264 |
-
|
| 265 |
-
|
| 266 |
-
|
| 267 |
-
|
| 268 |
-
|
| 269 |
-
|
| 270 |
-
|
| 271 |
-
|
| 272 |
-
|
| 273 |
-
|
| 274 |
-
|
| 275 |
-
|
| 276 |
-
|
| 277 |
-
|
| 278 |
-
|
| 279 |
-
|
| 280 |
-
|
| 281 |
-
|
| 282 |
-
|
| 283 |
-
|
| 284 |
-
|
| 285 |
-
|
| 286 |
-
|
| 287 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
---
|
| 2 |
+
license: apache-2.0
|
| 3 |
+
language:
|
| 4 |
+
- en
|
| 5 |
+
- hi
|
| 6 |
+
pipeline_tag: text-generation
|
| 7 |
+
tags:
|
| 8 |
+
- text-to-json
|
| 9 |
+
- home-automation
|
| 10 |
+
- robotics
|
| 11 |
+
- hinglish
|
| 12 |
+
- tiny-model
|
| 13 |
+
- from-scratch
|
| 14 |
+
- edge-ai
|
| 15 |
+
- numpy
|
| 16 |
+
- raspberry-pi
|
| 17 |
+
- conditional-rules
|
| 18 |
+
- experimental
|
| 19 |
+
datasets:
|
| 20 |
+
- sraivante/home-commands-json-v3
|
| 21 |
+
metrics:
|
| 22 |
+
- exact_match
|
| 23 |
+
model-index:
|
| 24 |
+
- name: superfast-tiny-home-robotics-json-1m-v3
|
| 25 |
+
results:
|
| 26 |
+
- task:
|
| 27 |
+
type: text-generation
|
| 28 |
+
name: instruction to JSON device command
|
| 29 |
+
dataset:
|
| 30 |
+
type: sraivante/home-commands-json-v3
|
| 31 |
+
name: home-commands-json-v3 (1,500 held-out rows, greedy decode)
|
| 32 |
+
metrics:
|
| 33 |
+
- type: exact_match
|
| 34 |
+
value: 96.73
|
| 35 |
+
name: exact match (all)
|
| 36 |
+
verified: false
|
| 37 |
+
- type: exact_match
|
| 38 |
+
value: 96.89
|
| 39 |
+
name: exact match (plain commands, n=900)
|
| 40 |
+
verified: false
|
| 41 |
+
- type: exact_match
|
| 42 |
+
value: 96.50
|
| 43 |
+
name: exact match (conditional rules, n=600)
|
| 44 |
+
verified: false
|
| 45 |
+
---
|
| 46 |
+
|
| 47 |
+
# Superfast Tiny Home Robotics JSON 1M v3
|
| 48 |
+
|
| 49 |
+
A **1,143,328-parameter character-level transformer, trained from scratch**, that
|
| 50 |
+
turns an English or Hinglish sentence into one JSON device command, including
|
| 51 |
+
**conditional rules** ("if temperature goes above 42...", "roz shaam 7 baje...").
|
| 52 |
+
Weights are **2.1 MB (fp16)**. Inference is **numpy only**: no PyTorch, no
|
| 53 |
+
tokenizer library, no internet, no GPU.
|
| 54 |
+
|
| 55 |
+
```text
|
| 56 |
+
"bhai bedroom ka pankha high pe chala do"
|
| 57 |
+
-> {"activity":"air","subject":"bedroom_ceiling_fan","action":"HIGH"}
|
| 58 |
+
|
| 59 |
+
"agar room ka temperature 42 se upar jaye to bedroom ka heater band kar do"
|
| 60 |
+
-> {"activity":"heating","subject":"bedroom_room_heater","action":"OFF",
|
| 61 |
+
"when":{"metric":"temperature","op":">","value":42}}
|
| 62 |
+
|
| 63 |
+
"roz shaam 7 baje garden ki batti chala do"
|
| 64 |
+
-> {"activity":"light","subject":"garden_light","action":"ON",
|
| 65 |
+
"when":{"metric":"time","op":"==","value":"19:00"}}
|
| 66 |
+
|
| 67 |
+
"when soil moisture drops below 20 start the garden sprinkler"
|
| 68 |
+
-> {"activity":"garden","subject":"garden_sprinkler","action":"ON",
|
| 69 |
+
"when":{"metric":"soil_moisture","op":"<","value":20}}
|
| 70 |
+
```
|
| 71 |
+
|
| 72 |
+
This is the v3 of the series. Compared with
|
| 73 |
+
[v1](https://huggingface.co/sraivante/superfast-tiny-home-robotics-json-1m-v1)
|
| 74 |
+
(30 commands, 10 device types, transformers runtime) it covers **1,004 devices,
|
| 75 |
+
12 actions, 7 sensor metrics for rules**, and ships with a numpy engine plus a
|
| 76 |
+
web UI and Docker image.
|
| 77 |
+
|
| 78 |
+
| Release | Value |
|
| 79 |
+
| --- | --- |
|
| 80 |
+
| Publisher | sraivante |
|
| 81 |
+
| Release date | 2026-09-26 |
|
| 82 |
+
| Version | v3.0.0 |
|
| 83 |
+
| Training data | [home-commands-json-v3](https://huggingface.co/datasets/sraivante/home-commands-json-v3) (synthetic, templated) |
|
| 84 |
+
| Architecture | GPT-style causal decoder, char-level vocab (78 symbols), d=160, 4 layers, 4 heads, FFN 512, context 360 |
|
| 85 |
+
| Parameters | 1,143,328 |
|
| 86 |
+
| Weights | `model/model_v3_fp16.npz`, 2,146,783 bytes |
|
| 87 |
+
| Runtime deps | `numpy` (plus `flask` for the optional server) |
|
| 88 |
+
| License | Apache-2.0 |
|
| 89 |
+
|
| 90 |
+
<!-- rpi5-measurements -->
|
| 91 |
+
## Raspberry Pi 5 edge-device performance
|
| 92 |
+
|
| 93 |
+
Measured **2026-09-26** on a **Raspberry Pi 5 Model B, 16 GB RAM**, Debian 13.2/aarch64, Python 3.13.5. Measurement update: `edge-rpi5-20260926`; weights and training data are unchanged.
|
| 94 |
+
|
| 95 |
+
| Threads | Median ms | p95 ms | p99 ms | Serial requests/s | Process RSS MiB | CPU °C min–mean–max | Timed correct |
|
| 96 |
+
| --- | ---: | ---: | ---: | ---: | ---: | ---: | ---: |
|
| 97 |
+
| 1 | 410.38 | 553.20 | 558.65 | 2.53 | 43.77 | 59.0–60.9–63.4 | 500/500 |
|
| 98 |
+
| 4 | 393.10 | 550.26 | 553.48 | 2.55 | 44.67 | 60.0–62.0–64.5 | 500/500 |
|
| 99 |
+
|
| 100 |
+
Batch 1; 20 warmups and 500 timed calls per row, cycling over 10 frozen model-specific inputs. **Each timed reading has a matching CPU-temperature sample**, captured immediately afterward outside the latency timer; the table shows min–mean–max temperature. RSS includes Python/runtime overhead. Timings include local text-to-output inference and exclude loading, SSH/HTTP, speech recognition and actuation. Throughput is serial reciprocal mean. Runs used one and four CPU/BLAS threads sequentially. These synthetic workloads do not establish cross-model superiority or robot-control reliability.
|
| 101 |
+
|
| 102 |
+
On-device quality check: **192/200** on training-set diagnostic, NOT held-out accuracy. For v3 this is explicitly a training-set diagnostic, not held-out accuracy; the earlier 96.73% result was not rerun.
|
| 103 |
+
|
| 104 |
+
[Full Pi methodology, temperature plot and reproduction](edge_benchmarks/rpi5-2026-09-26/REPORT.md) · [Every latency/temperature reading](edge_benchmarks/rpi5-2026-09-26/readings.csv) · [Raw measurements](edge_benchmarks/rpi5-2026-09-26/results) · [Versioned evaluation data](https://huggingface.co/datasets/sraivante/home-commands-json-v3/tree/edge-rpi5-20260926/edge_benchmarks/rpi5-2026-09-26).
|
| 105 |
+
<!-- /rpi5-measurements -->
|
| 106 |
+
|
| 107 |
+
## Why a tiny model and not an LLM
|
| 108 |
+
|
| 109 |
+
A home robot or a Raspberry Pi behind a microphone does not need to know the
|
| 110 |
+
capital of France. It needs to turn "pankha tez kar do" into a command in a few
|
| 111 |
+
milliseconds, offline, on a CPU that is also doing wake-word detection. This
|
| 112 |
+
model is that one component: the **parser** between speech-to-text and the
|
| 113 |
+
actuator. Everything else (safety, permissions, device state) stays in
|
| 114 |
+
deterministic code you control.
|
| 115 |
+
|
| 116 |
+
Measured on this release, single request, Python 3.13, numpy 2.3, Intel
|
| 117 |
+
Core i7-1360P, default threads:
|
| 118 |
+
|
| 119 |
+
| Input | Latency |
|
| 120 |
+
| --- | ---: |
|
| 121 |
+
| plain command (about 30 chars) | 70 to 90 ms |
|
| 122 |
+
| conditional rule (about 70 chars) | 130 to 150 ms |
|
| 123 |
+
| process RSS, engine loaded + warm (Python + numpy included) | 73 MB |
|
| 124 |
+
|
| 125 |
+
Latency is dominated by Python overhead per generated character, not by
|
| 126 |
+
FLOPs. Raspberry Pi 5 measurements are now recorded above; Jetson Orin Nano remains unmeasured. The table here retains the earlier desktop measurements.
|
| 127 |
+
|
| 128 |
+
## Quick start
|
| 129 |
+
|
| 130 |
+
```bash
|
| 131 |
+
pip install numpy
|
| 132 |
+
git clone https://huggingface.co/sraivante/superfast-tiny-home-robotics-json-1m-v3
|
| 133 |
+
cd superfast-tiny-home-robotics-json-1m-v3
|
| 134 |
+
python engine.py "kitchen ki light band kar do"
|
| 135 |
+
# {"activity":"light","subject":"kitchen_light","action":"OFF"}
|
| 136 |
+
```
|
| 137 |
+
|
| 138 |
+
In Python:
|
| 139 |
+
|
| 140 |
+
```python
|
| 141 |
+
import engine
|
| 142 |
+
engine.init("model") # loads the npz once
|
| 143 |
+
raw, confidence = engine.parse_scored("turn off the porch light")
|
| 144 |
+
# raw -> '{"activity":"light","subject":"porch_light","action":"OFF"}'
|
| 145 |
+
# confidence -> avg log-prob per generated char; near 0.0 = in-domain
|
| 146 |
+
```
|
| 147 |
+
|
| 148 |
+
Web UI + REST API (Docker, no GPU):
|
| 149 |
+
|
| 150 |
+
```bash
|
| 151 |
+
docker compose up --build # open http://localhost:8080
|
| 152 |
+
curl -s localhost:8080/api/parse -H 'Content-Type: application/json' \
|
| 153 |
+
-d '{"text":"if aqi goes above 250 set the bedroom air purifier on high"}'
|
| 154 |
+
```
|
| 155 |
+
|
| 156 |
+
The API returns the command, `valid_json`, catalog `issues`, `confidence`,
|
| 157 |
+
`latency_ms` and a single `ok` flag. **Act only on `ok: true`.**
|
| 158 |
+
|
| 159 |
+
## How it is meant to be used (examples/)
|
| 160 |
+
|
| 161 |
+
The model is a parser. `model/devices-catalog.json` is the law. Every example
|
| 162 |
+
below runs the output through catalog validation before anything moves.
|
| 163 |
+
|
| 164 |
+
| Example | What it shows |
|
| 165 |
+
| --- | --- |
|
| 166 |
+
| `examples/quickstart.py` | text in, validated command out, off-domain input rejected |
|
| 167 |
+
| `examples/rule_engine.py` | what to do with the `when` clause: store it, watch sensors, fire once per crossing |
|
| 168 |
+
| `examples/mqtt_bridge.py` | publish to `home/<subject>/set` for ESP32 / Tasmota / Zigbee2MQTT devices |
|
| 169 |
+
| `examples/home_assistant.py` | map subjects to Home Assistant entities and call services locally |
|
| 170 |
+
|
| 171 |
+
Run any of them from the repo root, all have a `--dry-run` or simulated mode:
|
| 172 |
+
|
| 173 |
+
```bash
|
| 174 |
+
python examples/quickstart.py
|
| 175 |
+
python examples/rule_engine.py
|
| 176 |
+
python examples/mqtt_bridge.py --dry-run "bedroom ka pankha high pe chala do"
|
| 177 |
+
python examples/home_assistant.py --dry-run "garden ki light band kar do"
|
| 178 |
+
```
|
| 179 |
+
|
| 180 |
+
### The pipeline this slots into
|
| 181 |
+
|
| 182 |
+
```text
|
| 183 |
+
mic -> wake word -> Whisper/Vosk (Hindi+English) -> THIS MODEL -> catalog check -> actuator
|
| 184 |
+
~100 ms ~0 ms GPIO / MQTT / ROS
|
| 185 |
+
```
|
| 186 |
+
|
| 187 |
+
Plain commands (no `when`) go straight to the actuator. Conditional commands are
|
| 188 |
+
stored as rules and evaluated on every sensor tick. `rule_engine.py` output on a
|
| 189 |
+
simulated day:
|
| 190 |
+
|
| 191 |
+
```text
|
| 192 |
+
"agar temperature 35 se upar jaye to bedroom ka ac high kar do"
|
| 193 |
+
RULE stored: bedroom_ac -> HIGH when temperature > 35
|
| 194 |
+
"roz subah 6 baje garden sprinkler chalu kar do"
|
| 195 |
+
RULE stored: garden_sprinkler -> ON when time == 06:00
|
| 196 |
+
|
| 197 |
+
[sensor] temperature = 36
|
| 198 |
+
ACTUATE bedroom_ac HIGH (temperature=36 > 35)
|
| 199 |
+
[sensor] time = 06:00
|
| 200 |
+
ACTUATE garden_sprinkler ON (time=06:00 == 06:00)
|
| 201 |
+
```
|
| 202 |
+
|
| 203 |
+
### Robotics use
|
| 204 |
+
|
| 205 |
+
For a mobile robot or a robotic arm the same pattern applies: swap the device
|
| 206 |
+
catalog for your robot's capabilities (`arm_gripper: OPEN/CLOSE`,
|
| 207 |
+
`base_motor: START/STOP/LOW/MEDIUM/HIGH`, `head_camera: ON/OFF/STATUS`),
|
| 208 |
+
regenerate the data with the scripts in the dataset repo, retrain for about an
|
| 209 |
+
hour on two CPU cores, and you have a command parser that fits in the L2 cache.
|
| 210 |
+
The `when` clause maps directly to sensor-gated behaviours
|
| 211 |
+
("agar battery 15 se neeche jaye to charging dock pe jao").
|
| 212 |
+
|
| 213 |
+
## Output schema
|
| 214 |
+
|
| 215 |
+
```json
|
| 216 |
+
{"activity": "...", "subject": "...", "action": "...",
|
| 217 |
+
"when": {"metric": "...", "op": ">|<|==", "value": 42}}
|
| 218 |
+
```
|
| 219 |
+
|
| 220 |
+
- **1,004 subjects** in `model/devices-catalog.json`, each with its `activity`
|
| 221 |
+
(18 of them: light, power, air, access, security, air_quality, cooling,
|
| 222 |
+
heating, entertainment, music, garden, kitchen, office, network, water,
|
| 223 |
+
laundry, cleaning, aquarium) and its allowed actions.
|
| 224 |
+
- **12 actions**: ON, OFF, START, STOP, LOW, MEDIUM, HIGH, OPEN, CLOSE, LOCK,
|
| 225 |
+
UNLOCK, STATUS.
|
| 226 |
+
- **7 metrics** for `when`: temperature, humidity, aqi, battery, water_level,
|
| 227 |
+
soil_moisture, time (value `"HH:MM"`, op `==`).
|
| 228 |
+
- `when` is optional. Rules in the training data are sensible by construction:
|
| 229 |
+
high temperature turns cooling ON or heating OFF, never the reverse.
|
| 230 |
+
|
| 231 |
+
## Confidence guard
|
| 232 |
+
|
| 233 |
+
`parse_scored` returns the mean log-probability of the generated characters.
|
| 234 |
+
In-domain commands decode at about 0.0; gibberish or off-domain sentences
|
| 235 |
+
score clearly lower and the server flags them (default threshold -0.006, env
|
| 236 |
+
`HCAI_CONF_THRESHOLD`). Example: "what is the capital of france" scores -0.022
|
| 237 |
+
and is rejected. This is a useful guard, not a guarantee: command-shaped
|
| 238 |
+
off-domain input can still slip through.
|
| 239 |
+
|
| 240 |
+
## Evaluation
|
| 241 |
+
|
| 242 |
+
1,500 held-out rows from the same generator (900 plain, 600 conditional),
|
| 243 |
+
greedy decode, exact string match on the JSON:
|
| 244 |
+
|
| 245 |
+
| Metric | Value |
|
| 246 |
+
| --- | ---: |
|
| 247 |
+
| exact match, all | 96.73 % |
|
| 248 |
+
| exact match, plain | 96.89 % |
|
| 249 |
+
| exact match, conditional | 96.50 % |
|
| 250 |
+
| valid JSON | 100 % |
|
| 251 |
+
|
| 252 |
+
Full numbers and 12 sample failures are in `model/metrics_v3.json`. The
|
| 253 |
+
held-out rows themselves were not preserved in this release; the dataset repo
|
| 254 |
+
ships the generators and the deterministic `prep_mix.py` (seed 108) that
|
| 255 |
+
describes the train/eval construction. The preserved 340,000-row training mix differs from the shipped script's configured counts; exact reconstruction of the missing historical evaluation split is unverified. The new Pi diagnostic uses a frozen sample from the preserved training mix and does not re-estimate the historical held-out score.
|
| 256 |
+
|
| 257 |
+
## Honest limitations
|
| 258 |
+
|
| 259 |
+
- **Synthetic, templated training data.** The accuracy above measures
|
| 260 |
+
interpolation inside the template space, not the wild. Novel or indirect
|
| 261 |
+
phrasing ("andhera kar do", "thoda tez") fails.
|
| 262 |
+
- **Observed misses that pass validation.** "kitchen ki chimney high pe karo"
|
| 263 |
+
returned `STATUS` in our tests, and that is an allowed action for the
|
| 264 |
+
chimney, so the catalog check passed it. Treat STATUS on an imperative
|
| 265 |
+
sentence with suspicion in your own guard.
|
| 266 |
+
- **Char-level spelling errors** in subjects happen (see sample failures);
|
| 267 |
+
the catalog check exists exactly for that. Reject anything with issues.
|
| 268 |
+
- **No negation, no reject class.** "fan mat chalao" can become `ON`.
|
| 269 |
+
- **One instruction, one command.** No multi-intent, no context or pronouns.
|
| 270 |
+
- Time rules are one-shot `==` triggers; recurrence ("roz") is not encoded
|
| 271 |
+
separately, your scheduler decides that.
|
| 272 |
+
- Romanised Hindi only. Devanagari input is not in the vocabulary and is
|
| 273 |
+
silently dropped by the tokenizer.
|
| 274 |
+
|
| 275 |
+
## Adapting to your devices
|
| 276 |
+
|
| 277 |
+
1. Edit the device tables in `generators/generate_dataset_v2.py` and the rule
|
| 278 |
+
tables in `generators/generate_dataset_v3_conditional.py` (dataset repo).
|
| 279 |
+
2. Regenerate and mix: `python generate_dataset_v2.py && python generate_dataset_v3_conditional.py && python prep_mix.py`
|
| 280 |
+
3. Retrain (needs torch; about 80 minutes on two CPU cores, minutes on a GPU):
|
| 281 |
+
`python training/train_v3.py train --seconds 4200 && python training/train_v3.py export`
|
| 282 |
+
4. Drop `model_v3_fp16.npz`, `model_v3_config.json` and the new
|
| 283 |
+
`devices-catalog.json` into `model/`.
|
| 284 |
+
|
| 285 |
+
## Files
|
| 286 |
+
|
| 287 |
+
| Path | What |
|
| 288 |
+
| --- | --- |
|
| 289 |
+
| `model/model_v3_fp16.npz` | weights, fp16, 2.1 MB |
|
| 290 |
+
| `model/model_v3_config.json` | vocab (`itos`) + architecture config |
|
| 291 |
+
| `model/devices-catalog.json` | the 1,004 subjects with allowed actions |
|
| 292 |
+
| `model/metrics_v3.json` | eval numbers and sample failures |
|
| 293 |
+
| `engine.py` | numpy inference, kv-cached greedy decode |
|
| 294 |
+
| `server.py`, `static/index.html` | Flask API + offline web UI |
|
| 295 |
+
| `examples/` | quickstart, rule engine, MQTT bridge, Home Assistant bridge |
|
| 296 |
+
| `training/train_v3.py` | full PyTorch training and export source |
|
| 297 |
+
| `Dockerfile`, `docker-compose.yml` | 150 MB image, healthcheck included |
|
| 298 |
+
|
| 299 |
+
## License
|
| 300 |
+
|
| 301 |
+
Apache-2.0 for the weights, code and catalog. The training data is fully
|
| 302 |
+
synthetic and released under the same license in the dataset repo. No
|
| 303 |
+
warranty: this model suggests commands, your code decides whether to obey.
|
| 304 |
+
|
| 305 |
+
Copyright (c) 2026 sraivante applies only to original material and selection/arrangement contributed by the user; third-party ownership and licenses remain unchanged.
|
edge_benchmarks/rpi5-2026-09-26/REPORT.md
ADDED
|
@@ -0,0 +1,61 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
# Raspberry Pi 5 measurements — Tiny Home Robotics JSON 1M v3
|
| 2 |
+
|
| 3 |
+
Measured on 2026-09-26; measurement revision `edge-rpi5-20260926`. The model weights and training data were not changed.
|
| 4 |
+
|
| 5 |
+
Hardware: **Raspberry Pi 5 Model B Rev 1.1**, 15.84 GiB OS-visible RAM (16 GB model), four CPU cores, aarch64, Debian 13.2, kernel `6.12.47+rpt-rpi-2712`. Python 3.13.5. The device's governor and library versions are recorded in each JSON result. Cooling and power-supply model were not inspected.
|
| 6 |
+
|
| 7 |
+
## Measured performance
|
| 8 |
+
|
| 9 |
+
| Threads | Median ms | p95 ms | p99 ms | Serial requests/s | Process RSS MiB | CPU °C min–mean–max | Timed correct |
|
| 10 |
+
| --- | ---: | ---: | ---: | ---: | ---: | ---: | ---: |
|
| 11 |
+
| 1 | 410.38 | 553.20 | 558.65 | 2.53 | 43.77 | 59.0–60.9–63.4 | 500/500 |
|
| 12 |
+
| 4 | 393.10 | 550.26 | 553.48 | 2.55 | 44.67 | 60.0–62.0–64.5 | 500/500 |
|
| 13 |
+
|
| 14 |
+
Each row is a separate sequential process: batch 1, 20 warmups, 500 timed requests cycling over 10 frozen synthetic inputs. Timing covers the adapter's complete local text-to-output call; it excludes model loading, SSH/network transfer, HTTP/UI, speech recognition, and actuation. RSS includes Python and runtime overhead. Peak RSS is Linux VmHWM sampled after the timed loop and includes imports/initialization. Serial requests/s is 1000 divided by mean latency; it is not concurrent-serving throughput. These model-specific input sets do not establish a controlled cross-model speed ranking.
|
| 15 |
+
|
| 16 |
+
Runtime: FP16 NPZ storage expanded to FP32 NumPy; KV-cached greedy character generation, max_new=170; JSON parsing included, catalog validation excluded.
|
| 17 |
+
|
| 18 |
+
Thread counts set PyTorch/BLAS intra-op limits; PyTorch inter-op is one. No CPU affinity or power mode was changed. Actual loaded thread-pool metadata is in the raw results.
|
| 19 |
+
|
| 20 |
+
The benchmark runs left existing host services running. CPU temperature is read immediately after **every timed inference**, outside the latency timer, with per-call UTC timestamps. Sensor reads add a small gap between requests. The table reports the minimum, mean and maximum of those 500 matched temperature readings per row. The sensor types are recorded in each JSON. Thread configurations ran one then four without a controlled cooldown; temperatures depend on run order and background load. Start/end snapshots ranged from 60.0 to 64.5 °C; observed firmware flags: `throttled=0x0`. This short run is not a power or long-duration stability measurement.
|
| 21 |
+
|
| 22 |
+

|
| 23 |
+
|
| 24 |
+
[Download all matched latency/temperature readings](readings.csv). Mean latency, import/load times and peak RSS are in the raw result JSON.
|
| 25 |
+
|
| 26 |
+
## Command correctness on this device
|
| 27 |
+
|
| 28 |
+
| Diagnostic group | Correct / cases |
|
| 29 |
+
| --- | ---: |
|
| 30 |
+
| training_plain | 95/100 |
|
| 31 |
+
| training_conditional | 97/100 |
|
| 32 |
+
|
| 33 |
+
training-set diagnostic, NOT held-out accuracy. Historical 1500-row evaluation file is absent locally and from the published dataset. This diagnostic does not reproduce or replace the historical 96.73% result. The shipped prep_mix.py has different training-count settings from the published 340000-row snapshot.
|
| 34 |
+
|
| 35 |
+
Timed-correct counts above describe the repeated ten-input latency set, not an independent accuracy estimate. Recorded inference errors: 0 across the timed runs. No model retraining, output correction, host action or device actuation was performed.
|
| 36 |
+
|
| 37 |
+
## Artifact and dataset identity
|
| 38 |
+
|
| 39 |
+
- Published model tested: [`sraivante/superfast-tiny-home-robotics-json-1m-v3@2b2e71d37ea9fa0fe6ab247b6a74e8db774fb6f2`](https://huggingface.co/sraivante/superfast-tiny-home-robotics-json-1m-v3/tree/2b2e71d37ea9fa0fe6ab247b6a74e8db774fb6f2). All tested runtime assets were checked against this revision.
|
| 40 |
+
- Learned weight SHA-256: `fc749ecd89c1ae30a159d6d701036298b5583645b7fbf114311e006929c8778b` (2,146,783 bytes).
|
| 41 |
+
- Associated preserved training dataset: [`sraivante/home-commands-json-v3@da10aca352a34cb2834a049867f6f2e9fcc30e3e`](https://huggingface.co/datasets/sraivante/home-commands-json-v3/tree/da10aca352a34cb2834a049867f6f2e9fcc30e3e). Existing source/split hashes and historical provenance remain in that snapshot. No fine-tuning was performed for this measurement update.
|
| 42 |
+
- The [versioned evaluation inputs and Pi predictions](https://huggingface.co/datasets/sraivante/home-commands-json-v3/tree/edge-rpi5-20260926/edge_benchmarks/rpi5-2026-09-26) record the new diagnostic snapshot. `provenance.json` records its hashes, counts, source revisions, and historical identity limitations.
|
| 43 |
+
- [Runtime identity check](runtime_identity.json); [raw per-call records](results); [exact environment](environment.lock.txt).
|
| 44 |
+
|
| 45 |
+
## Reproduce
|
| 46 |
+
|
| 47 |
+
Use a 64-bit Raspberry Pi in an isolated environment. Download this model repository at `edge-rpi5-20260926`, then run:
|
| 48 |
+
|
| 49 |
+
```bash
|
| 50 |
+
python3 -m venv .venv
|
| 51 |
+
. .venv/bin/activate
|
| 52 |
+
python -m pip install -r edge_benchmarks/rpi5-2026-09-26/environment.lock.txt
|
| 53 |
+
python edge_benchmarks/rpi5-2026-09-26/reproduce.py --threads 1
|
| 54 |
+
python edge_benchmarks/rpi5-2026-09-26/reproduce.py --threads 4
|
| 55 |
+
```
|
| 56 |
+
|
| 57 |
+
The helper downloads the pinned runtime files above, checks SHA-256, stages the exact case files, and invokes the included `benchmark.py`. It refuses to report a non-Pi host as a Pi result. Downloading requires network access; timed inference runs offline. The original run's full bundle hash differs from the per-model reproduction manifest; the original hash is retained inside each result.
|
| 58 |
+
|
| 59 |
+
## License and limitations
|
| 60 |
+
|
| 61 |
+
Copyright (c) 2026 sraivante for original benchmark code, evaluation material and selection/arrangement, under Apache License 2.0. Third-party ownership and licenses remain unchanged. Synthetic/regression diagnostics do not establish real-user or robot-control reliability. Existing model-specific limitations still apply; latency is not a safety or end-to-end performance guarantee.
|
edge_benchmarks/rpi5-2026-09-26/benchmark.py
ADDED
|
@@ -0,0 +1,268 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
"""Batch-one inference benchmark for five frozen workspace projects.
|
| 2 |
+
|
| 3 |
+
No executor, host adapter, server, MQTT, or GPIO code is imported or called.
|
| 4 |
+
Copyright (c) 2026 sraivante. Licensed under Apache License 2.0.
|
| 5 |
+
"""
|
| 6 |
+
from __future__ import annotations
|
| 7 |
+
|
| 8 |
+
import argparse
|
| 9 |
+
from collections import defaultdict
|
| 10 |
+
from datetime import datetime, timezone
|
| 11 |
+
import hashlib
|
| 12 |
+
import importlib.metadata
|
| 13 |
+
import json
|
| 14 |
+
import os
|
| 15 |
+
from pathlib import Path
|
| 16 |
+
import platform
|
| 17 |
+
import statistics
|
| 18 |
+
import subprocess
|
| 19 |
+
import sys
|
| 20 |
+
import time
|
| 21 |
+
|
| 22 |
+
HERE = Path(__file__).resolve().parent
|
| 23 |
+
|
| 24 |
+
|
| 25 |
+
def digest(path):
|
| 26 |
+
with Path(path).open("rb") as stream:
|
| 27 |
+
return hashlib.file_digest(stream, "sha256").hexdigest()
|
| 28 |
+
|
| 29 |
+
|
| 30 |
+
def read_text(path):
|
| 31 |
+
try:
|
| 32 |
+
return Path(path).read_text().strip("\x00\n")
|
| 33 |
+
except OSError:
|
| 34 |
+
return None
|
| 35 |
+
|
| 36 |
+
|
| 37 |
+
def host_state():
|
| 38 |
+
import psutil
|
| 39 |
+
throttled = None
|
| 40 |
+
try:
|
| 41 |
+
throttled = subprocess.check_output(["vcgencmd", "get_throttled"], text=True, timeout=5).strip()
|
| 42 |
+
except (OSError, subprocess.SubprocessError):
|
| 43 |
+
pass
|
| 44 |
+
return {
|
| 45 |
+
"load_average": list(os.getloadavg()) if hasattr(os, "getloadavg") else None,
|
| 46 |
+
"available_ram_bytes": psutil.virtual_memory().available,
|
| 47 |
+
"temperature_c": {p.parent.name: float(p.read_text()) / 1000
|
| 48 |
+
for p in Path("/sys/class/thermal").glob("thermal_zone*/temp")},
|
| 49 |
+
"cpu_frequency_khz": {p.parent.parent.name: int(p.read_text())
|
| 50 |
+
for p in Path("/sys/devices/system/cpu").glob("cpu*/cpufreq/scaling_cur_freq")},
|
| 51 |
+
"throttled": throttled,
|
| 52 |
+
}
|
| 53 |
+
|
| 54 |
+
|
| 55 |
+
def hardware():
|
| 56 |
+
import psutil
|
| 57 |
+
return {"raspberry_pi_model": read_text("/proc/device-tree/model"),
|
| 58 |
+
"system": platform.system(), "kernel": platform.release(),
|
| 59 |
+
"architecture": platform.machine(), "os_release": read_text("/etc/os-release"),
|
| 60 |
+
"logical_cpus": psutil.cpu_count(), "physical_cpus": psutil.cpu_count(logical=False),
|
| 61 |
+
"ram_bytes": psutil.virtual_memory().total,
|
| 62 |
+
"temperature_sensor_types": {p.parent.name: p.read_text().strip()
|
| 63 |
+
for p in Path("/sys/class/thermal").glob("thermal_zone*/type")},
|
| 64 |
+
"governors": {p.parent.parent.name: p.read_text().strip()
|
| 65 |
+
for p in Path("/sys/devices/system/cpu").glob("cpu*/cpufreq/scaling_governor")}}
|
| 66 |
+
|
| 67 |
+
|
| 68 |
+
def memory():
|
| 69 |
+
import psutil
|
| 70 |
+
info = psutil.Process().memory_info()._asdict()
|
| 71 |
+
status = read_text("/proc/self/status") or ""
|
| 72 |
+
for line in status.splitlines():
|
| 73 |
+
if line.startswith("VmHWM:"):
|
| 74 |
+
info["peak_rss"] = int(line.split()[1]) * 1024
|
| 75 |
+
return info
|
| 76 |
+
|
| 77 |
+
|
| 78 |
+
def temperature():
|
| 79 |
+
return {p.parent.name: float(p.read_text()) / 1000
|
| 80 |
+
for p in Path("/sys/class/thermal").glob("thermal_zone*/temp")}
|
| 81 |
+
|
| 82 |
+
|
| 83 |
+
def summary(values):
|
| 84 |
+
ordered = sorted(values)
|
| 85 |
+
def quantile(q):
|
| 86 |
+
rank = (len(ordered) - 1) * q
|
| 87 |
+
lo = int(rank)
|
| 88 |
+
hi = min(lo + 1, len(ordered) - 1)
|
| 89 |
+
return ordered[lo] + (ordered[hi] - ordered[lo]) * (rank - lo)
|
| 90 |
+
return {"n": len(values), "mean": statistics.mean(values), "p50": quantile(.5),
|
| 91 |
+
"p95": quantile(.95), "p99": quantile(.99), "min": min(values), "max": max(values)}
|
| 92 |
+
|
| 93 |
+
|
| 94 |
+
def load_adapter(key, root, threads):
|
| 95 |
+
start = time.perf_counter()
|
| 96 |
+
if key == "poc1":
|
| 97 |
+
sys.path.insert(0, str(root))
|
| 98 |
+
import torch
|
| 99 |
+
from tiny_json_llm.infer import JsonCommandModel
|
| 100 |
+
torch.set_num_threads(threads)
|
| 101 |
+
torch.set_num_interop_threads(1)
|
| 102 |
+
imports = time.perf_counter() - start
|
| 103 |
+
start = time.perf_counter()
|
| 104 |
+
model = JsonCommandModel(root / "best_model", device="cpu")
|
| 105 |
+
predict = lambda row: model.predict(row["text"])
|
| 106 |
+
params = sum(p.numel() for p in model.model.parameters())
|
| 107 |
+
mode = "FP32 PyTorch; greedy generation constrained to the 30 training-observed JSON commands"
|
| 108 |
+
elif key == "poc2":
|
| 109 |
+
sys.path.insert(0, str(root))
|
| 110 |
+
import engine
|
| 111 |
+
imports = time.perf_counter() - start
|
| 112 |
+
start = time.perf_counter()
|
| 113 |
+
engine.init(str(root / "model"))
|
| 114 |
+
predict = lambda row: json.loads(engine.parse_scored(row["text"])[0])
|
| 115 |
+
params = sum(p.size for p in engine._W.values())
|
| 116 |
+
mode = "FP16 NPZ storage expanded to FP32 NumPy; KV-cached greedy character generation, max_new=170; JSON parsing included, catalog validation excluded"
|
| 117 |
+
elif key == "poc3":
|
| 118 |
+
sys.path.insert(0, str(root))
|
| 119 |
+
from edge_command import Interpreter
|
| 120 |
+
imports = time.perf_counter() - start
|
| 121 |
+
start = time.perf_counter()
|
| 122 |
+
model = Interpreter(str(root))
|
| 123 |
+
predict = lambda row: model.parse(row["text"])
|
| 124 |
+
params = None
|
| 125 |
+
mode = "Standard-library action classifier with rules and read-only SQLite catalog; not an autoregressive LLM"
|
| 126 |
+
elif key == "agent_claude":
|
| 127 |
+
sys.path.insert(0, str(root / "model"))
|
| 128 |
+
from runtime import CommandModel
|
| 129 |
+
imports = time.perf_counter() - start
|
| 130 |
+
start = time.perf_counter()
|
| 131 |
+
model = CommandModel(str(root / "artifacts/final"))
|
| 132 |
+
def predict(row):
|
| 133 |
+
value = model.predict(row["text"])
|
| 134 |
+
return {k: v for k, v in value.items() if k != "_meta"}
|
| 135 |
+
params = sum(p.size for p in model.W.values())
|
| 136 |
+
mode = "NumPy encoder/decoder transformer with grammar constraints; FP32 runtime; includes normalization and JSON conversion"
|
| 137 |
+
elif key == "agent_codex":
|
| 138 |
+
sys.path.insert(0, str(root / "app"))
|
| 139 |
+
from inference import local_model, predict as infer
|
| 140 |
+
imports = time.perf_counter() - start
|
| 141 |
+
start = time.perf_counter()
|
| 142 |
+
local_model()
|
| 143 |
+
predict = lambda row: infer(row["text"], platform=row.get("platform", "pi"), engine="local")
|
| 144 |
+
params = None
|
| 145 |
+
mode = "scikit-learn intent classifier with policy and argument parsing; not an autoregressive LLM; no host execution"
|
| 146 |
+
else:
|
| 147 |
+
raise ValueError(key)
|
| 148 |
+
return predict, params, mode, imports, time.perf_counter() - start
|
| 149 |
+
|
| 150 |
+
|
| 151 |
+
def outcome(row, value, error):
|
| 152 |
+
if row.get("match") == "rejection":
|
| 153 |
+
return bool(error or (isinstance(value, dict) and ("error" in value or value.get("action") in {"unknown", "REJECT", "NOOP", "CLARIFY", "ABSTAIN"})))
|
| 154 |
+
if error:
|
| 155 |
+
return False
|
| 156 |
+
if row.get("match") == "subset":
|
| 157 |
+
return isinstance(value, dict) and all(value.get(k) == v for k, v in row["expected"].items())
|
| 158 |
+
return value == row["expected"]
|
| 159 |
+
|
| 160 |
+
|
| 161 |
+
def call(predict, row):
|
| 162 |
+
started = time.perf_counter_ns()
|
| 163 |
+
try:
|
| 164 |
+
value, error = predict(row), None
|
| 165 |
+
except (ValueError, KeyError, IndexError) as exc:
|
| 166 |
+
value, error = None, f"{type(exc).__name__}: {exc}"
|
| 167 |
+
elapsed = (time.perf_counter_ns() - started) / 1e6
|
| 168 |
+
return value, error, elapsed
|
| 169 |
+
|
| 170 |
+
|
| 171 |
+
def main():
|
| 172 |
+
parser = argparse.ArgumentParser(description=__doc__)
|
| 173 |
+
parser.add_argument("--model", required=True)
|
| 174 |
+
parser.add_argument("--threads", type=int, default=1, choices=(1, 4))
|
| 175 |
+
parser.add_argument("--repeats", type=int, default=500)
|
| 176 |
+
parser.add_argument("--warmup", type=int, default=20)
|
| 177 |
+
parser.add_argument("--quality", action="store_true")
|
| 178 |
+
parser.add_argument("--allow-nonpi", action="store_true", help="Development checks only, recorded as non-Pi")
|
| 179 |
+
parser.add_argument("--out", type=Path, required=True)
|
| 180 |
+
args = parser.parse_args()
|
| 181 |
+
assert args.repeats >= 20 and args.warmup >= 0
|
| 182 |
+
for name in ("OMP_NUM_THREADS", "OPENBLAS_NUM_THREADS", "MKL_NUM_THREADS", "BLIS_NUM_THREADS", "VECLIB_MAXIMUM_THREADS", "NUMEXPR_NUM_THREADS"):
|
| 183 |
+
os.environ[name] = str(args.threads)
|
| 184 |
+
os.environ["TOKENIZERS_PARALLELISM"] = "false"
|
| 185 |
+
os.environ["HF_HUB_OFFLINE"] = "1"
|
| 186 |
+
host = hardware()
|
| 187 |
+
is_pi = bool(host["raspberry_pi_model"] and "Raspberry Pi" in host["raspberry_pi_model"])
|
| 188 |
+
assert is_pi or args.allow_nonpi, "This run must execute on real Raspberry Pi hardware"
|
| 189 |
+
manifest = json.loads((HERE / "bundle_manifest.json").read_text())
|
| 190 |
+
spec = manifest["models"][args.model]
|
| 191 |
+
# Verify the full runtime and evaluation input before importing any model code.
|
| 192 |
+
for rel, entry in spec["files"].items():
|
| 193 |
+
assert digest(HERE / rel) == entry["sha256"], f"Frozen input differs: {rel}"
|
| 194 |
+
latency_cases = json.loads((HERE / "cases" / f"{args.model}_latency.json").read_text())
|
| 195 |
+
before = host_state()
|
| 196 |
+
memory_before = memory()
|
| 197 |
+
predict, params, mode, import_s, load_s = load_adapter(args.model, HERE / "projects" / args.model, args.threads)
|
| 198 |
+
memory_loaded = memory()
|
| 199 |
+
for i in range(args.warmup):
|
| 200 |
+
call(predict, latency_cases[i % len(latency_cases)])
|
| 201 |
+
samples = []
|
| 202 |
+
for i in range(args.repeats):
|
| 203 |
+
row = latency_cases[i % len(latency_cases)]
|
| 204 |
+
started_utc = datetime.now(timezone.utc).isoformat()
|
| 205 |
+
value, error, elapsed = call(predict, row)
|
| 206 |
+
samples.append({"case_id": row["id"], "elapsed_ms": elapsed,
|
| 207 |
+
"started_utc": started_utc, "temperature_c": temperature(),
|
| 208 |
+
"temperature_sampled_utc": datetime.now(timezone.utc).isoformat(),
|
| 209 |
+
"correct": outcome(row, value, error), "output": value, "error": error})
|
| 210 |
+
if (i + 1) % 100 == 0:
|
| 211 |
+
print(f"{args.model} threads={args.threads}: latency {i + 1}/{args.repeats}", flush=True)
|
| 212 |
+
memory_after_latency, after_latency = memory(), host_state()
|
| 213 |
+
lat = summary([s["elapsed_ms"] for s in samples])
|
| 214 |
+
result = {"created_utc": datetime.now(timezone.utc).isoformat(), "model": args.model,
|
| 215 |
+
"is_raspberry_pi": is_pi, "hardware": host, "environment_before": before,
|
| 216 |
+
"environment_after_latency": after_latency,
|
| 217 |
+
"bundle_manifest_sha256": digest(HERE / "bundle_manifest.json"),
|
| 218 |
+
"benchmark_script_sha256": digest(Path(__file__)), "model_spec": spec,
|
| 219 |
+
"settings": {"threads_requested": args.threads, "batch_size": 1,
|
| 220 |
+
"warmup_requests": args.warmup, "timed_requests": args.repeats,
|
| 221 |
+
"unique_latency_cases": len(latency_cases), "mode": mode,
|
| 222 |
+
"cpu_pinning": False, "power_mode_changed": False},
|
| 223 |
+
"parameters": params, "import_seconds": import_s, "load_seconds_after_import": load_s,
|
| 224 |
+
"latency_ms": lat, "serial_requests_per_second": 1000 / lat["mean"],
|
| 225 |
+
"timed_correct": sum(s["correct"] for s in samples),
|
| 226 |
+
"timed_errors": sum(s["error"] is not None for s in samples),
|
| 227 |
+
"memory_bytes": {"before_runtime_import": memory_before, "after_model_load": memory_loaded,
|
| 228 |
+
"after_latency": memory_after_latency},
|
| 229 |
+
"latency_samples": samples,
|
| 230 |
+
"temperature_measurement": "Linux thermal-zone CPU temperature read immediately after every timed inference, outside the latency timer; start and temperature-read UTC timestamps are retained per call. Sensor reads add a small gap between requests. These samples do not establish power consumption or a long-duration thermal limit.",
|
| 231 |
+
"measurement_scope": "Warm local Python process, full text-to-structured-output call through the specified adapter, serial batch one. Timing excludes SSH, HTTP/UI, model loading, speech recognition, actuation and per-call correctness checks. Small repeated synthetic input set with warm OS/model caches; throughput is reciprocal mean, not concurrent serving. Other host services were left running. No power meter or sustained thermal test; cooling and power-supply model were not inspected."}
|
| 232 |
+
result["software"] = {"python": platform.python_version(), "sqlite": __import__("sqlite3").sqlite_version}
|
| 233 |
+
for package in ("torch", "transformers", "tokenizers", "safetensors", "numpy", "scipy", "scikit-learn", "joblib", "threadpoolctl", "psutil"):
|
| 234 |
+
try:
|
| 235 |
+
result["software"][package] = importlib.metadata.version(package)
|
| 236 |
+
except importlib.metadata.PackageNotFoundError:
|
| 237 |
+
pass
|
| 238 |
+
try:
|
| 239 |
+
from threadpoolctl import threadpool_info
|
| 240 |
+
result["thread_pools"] = [{k: v for k, v in p.items() if k != "filepath"} for p in threadpool_info()]
|
| 241 |
+
except ImportError:
|
| 242 |
+
result["thread_pools"] = []
|
| 243 |
+
if args.quality:
|
| 244 |
+
rows = json.loads((HERE / "cases" / f"{args.model}_quality.json").read_text())
|
| 245 |
+
predictions, groups = [], defaultdict(list)
|
| 246 |
+
for i, row in enumerate(rows):
|
| 247 |
+
value, error, elapsed = call(predict, row)
|
| 248 |
+
ok = outcome(row, value, error)
|
| 249 |
+
predictions.append({**row, "output": value, "error": error, "correct": ok, "elapsed_ms": elapsed,
|
| 250 |
+
"temperature_c": temperature(), "temperature_sampled_utc": datetime.now(timezone.utc).isoformat()})
|
| 251 |
+
groups[row["category"]].append(ok)
|
| 252 |
+
if (i + 1) % 100 == 0:
|
| 253 |
+
print(f"{args.model}: quality {i + 1}/{len(rows)}", flush=True)
|
| 254 |
+
result["quality"] = {"cases": len(rows), "correct": sum(p["correct"] for p in predictions),
|
| 255 |
+
"by_category": {k: {"n": len(v), "correct": sum(v)} for k, v in groups.items()},
|
| 256 |
+
"provenance": spec["quality_provenance"], "predictions": predictions}
|
| 257 |
+
result["environment_after_quality"] = host_state()
|
| 258 |
+
args.out.parent.mkdir(parents=True, exist_ok=True)
|
| 259 |
+
temporary = args.out.with_suffix(".partial.json")
|
| 260 |
+
temporary.write_text(json.dumps(result, indent=2, ensure_ascii=False) + "\n", encoding="utf-8")
|
| 261 |
+
temporary.replace(args.out)
|
| 262 |
+
print(json.dumps({"model": args.model, "threads": args.threads, "latency_ms": lat,
|
| 263 |
+
"rss_mib": memory_after_latency["rss"] / 1024**2,
|
| 264 |
+
"timed_correct": result["timed_correct"], "result": str(args.out)}), flush=True)
|
| 265 |
+
|
| 266 |
+
|
| 267 |
+
if __name__ == "__main__":
|
| 268 |
+
main()
|
edge_benchmarks/rpi5-2026-09-26/bundle_manifest.json
ADDED
|
@@ -0,0 +1,229 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"models": {
|
| 3 |
+
"poc2": {
|
| 4 |
+
"workspace_project": "POC-2-claude/home-command-ai",
|
| 5 |
+
"weight_sha256": "fc749ecd89c1ae30a159d6d701036298b5583645b7fbf114311e006929c8778b",
|
| 6 |
+
"weight_bytes": 2146783,
|
| 7 |
+
"files": {
|
| 8 |
+
"projects/poc2/engine.py": {
|
| 9 |
+
"bytes": 3775,
|
| 10 |
+
"sha256": "bbc051221dae5c7238e7a76dae4872584c03f3db366a78980f0ea0cf5caaa18e",
|
| 11 |
+
"workspace_source": "POC-2-claude/home-command-ai/engine.py"
|
| 12 |
+
},
|
| 13 |
+
"projects/poc2/model/devices-catalog.json": {
|
| 14 |
+
"bytes": 136537,
|
| 15 |
+
"sha256": "473e5850e6f9d05abf4a7806121bb42464f760fed2de589fa58accebeef72af4",
|
| 16 |
+
"workspace_source": "POC-2-claude/home-command-ai/model/devices-catalog.json"
|
| 17 |
+
},
|
| 18 |
+
"projects/poc2/model/metrics_v3.json": {
|
| 19 |
+
"bytes": 2587,
|
| 20 |
+
"sha256": "884ba39090267af42bd6b4d4092ef3905b2674aa1f6f540b7e77e731d951ce8b",
|
| 21 |
+
"workspace_source": "POC-2-claude/home-command-ai/model/metrics_v3.json"
|
| 22 |
+
},
|
| 23 |
+
"projects/poc2/model/model_v3_config.json": {
|
| 24 |
+
"bytes": 520,
|
| 25 |
+
"sha256": "11b221bcf0e5b8c512ead8df19b9d4db6ee5fa2182efd6f66a9c1729eabad004",
|
| 26 |
+
"workspace_source": "POC-2-claude/home-command-ai/model/model_v3_config.json"
|
| 27 |
+
},
|
| 28 |
+
"projects/poc2/model/model_v3_fp16.npz": {
|
| 29 |
+
"bytes": 2146783,
|
| 30 |
+
"sha256": "fc749ecd89c1ae30a159d6d701036298b5583645b7fbf114311e006929c8778b",
|
| 31 |
+
"workspace_source": "POC-2-claude/home-command-ai/model/model_v3_fp16.npz"
|
| 32 |
+
},
|
| 33 |
+
"cases/poc2_quality.json": {
|
| 34 |
+
"bytes": 76322,
|
| 35 |
+
"sha256": "e61640a601ca3e354a74be3dcb6506ba24171a343c290b96fa53f7deee899232"
|
| 36 |
+
},
|
| 37 |
+
"cases/poc2_latency.json": {
|
| 38 |
+
"bytes": 3852,
|
| 39 |
+
"sha256": "77930a99ff035b3774bf65b261a302b7a5bff7608c5a4ae99241847164be2cff"
|
| 40 |
+
}
|
| 41 |
+
},
|
| 42 |
+
"quality_provenance": {
|
| 43 |
+
"kind": "training-set diagnostic, NOT held-out accuracy",
|
| 44 |
+
"source": "POC-2-claude\\home-command-ai\\data\\train_mix.jsonl.xz",
|
| 45 |
+
"sha256": "c8851122dc01787e9674532c5cfb1cf7260212c52c9800e37622b28167bb9838",
|
| 46 |
+
"sampling": "stratified reservoir, 100 plain + 100 conditional; seed 20260926",
|
| 47 |
+
"source_counts": {
|
| 48 |
+
"plain": 140000,
|
| 49 |
+
"conditional": 200000
|
| 50 |
+
},
|
| 51 |
+
"notes": "Historical 1500-row evaluation file is absent locally and from the published dataset. This diagnostic does not reproduce or replace the historical 96.73% result. The shipped prep_mix.py has different training-count settings from the published 340000-row snapshot."
|
| 52 |
+
},
|
| 53 |
+
"hf": {
|
| 54 |
+
"model": "sraivante/superfast-tiny-home-robotics-json-1m-v3",
|
| 55 |
+
"dataset": "sraivante/home-commands-json-v3",
|
| 56 |
+
"local_weight": "POC-2-claude/home-command-ai/model/model_v3_fp16.npz",
|
| 57 |
+
"weight_name": "model_v3_fp16.npz",
|
| 58 |
+
"repositories": {
|
| 59 |
+
"model": {
|
| 60 |
+
"repo_id": "sraivante/superfast-tiny-home-robotics-json-1m-v3",
|
| 61 |
+
"commit": "2b2e71d37ea9fa0fe6ab247b6a74e8db774fb6f2",
|
| 62 |
+
"files": [
|
| 63 |
+
{
|
| 64 |
+
"path": ".gitattributes",
|
| 65 |
+
"bytes": 1519,
|
| 66 |
+
"sha256": null
|
| 67 |
+
},
|
| 68 |
+
{
|
| 69 |
+
"path": "Dockerfile",
|
| 70 |
+
"bytes": 441,
|
| 71 |
+
"sha256": null
|
| 72 |
+
},
|
| 73 |
+
{
|
| 74 |
+
"path": "LICENSE",
|
| 75 |
+
"bytes": 11358,
|
| 76 |
+
"sha256": null
|
| 77 |
+
},
|
| 78 |
+
{
|
| 79 |
+
"path": "README.md",
|
| 80 |
+
"bytes": 11417,
|
| 81 |
+
"sha256": null
|
| 82 |
+
},
|
| 83 |
+
{
|
| 84 |
+
"path": "docker-compose.yml",
|
| 85 |
+
"bytes": 329,
|
| 86 |
+
"sha256": null
|
| 87 |
+
},
|
| 88 |
+
{
|
| 89 |
+
"path": "engine.py",
|
| 90 |
+
"bytes": 3775,
|
| 91 |
+
"sha256": null
|
| 92 |
+
},
|
| 93 |
+
{
|
| 94 |
+
"path": "examples/hcai_client.py",
|
| 95 |
+
"bytes": 3249,
|
| 96 |
+
"sha256": null
|
| 97 |
+
},
|
| 98 |
+
{
|
| 99 |
+
"path": "examples/home_assistant.py",
|
| 100 |
+
"bytes": 3442,
|
| 101 |
+
"sha256": null
|
| 102 |
+
},
|
| 103 |
+
{
|
| 104 |
+
"path": "examples/mqtt_bridge.py",
|
| 105 |
+
"bytes": 1459,
|
| 106 |
+
"sha256": null
|
| 107 |
+
},
|
| 108 |
+
{
|
| 109 |
+
"path": "examples/quickstart.py",
|
| 110 |
+
"bytes": 937,
|
| 111 |
+
"sha256": null
|
| 112 |
+
},
|
| 113 |
+
{
|
| 114 |
+
"path": "examples/rule_engine.py",
|
| 115 |
+
"bytes": 2832,
|
| 116 |
+
"sha256": null
|
| 117 |
+
},
|
| 118 |
+
{
|
| 119 |
+
"path": "model/devices-catalog.json",
|
| 120 |
+
"bytes": 136537,
|
| 121 |
+
"sha256": null
|
| 122 |
+
},
|
| 123 |
+
{
|
| 124 |
+
"path": "model/metrics_v3.json",
|
| 125 |
+
"bytes": 2587,
|
| 126 |
+
"sha256": null
|
| 127 |
+
},
|
| 128 |
+
{
|
| 129 |
+
"path": "model/model_v3_config.json",
|
| 130 |
+
"bytes": 520,
|
| 131 |
+
"sha256": null
|
| 132 |
+
},
|
| 133 |
+
{
|
| 134 |
+
"path": "model/model_v3_fp16.npz",
|
| 135 |
+
"bytes": 2146783,
|
| 136 |
+
"sha256": "fc749ecd89c1ae30a159d6d701036298b5583645b7fbf114311e006929c8778b"
|
| 137 |
+
},
|
| 138 |
+
{
|
| 139 |
+
"path": "requirements.txt",
|
| 140 |
+
"bytes": 23,
|
| 141 |
+
"sha256": null
|
| 142 |
+
},
|
| 143 |
+
{
|
| 144 |
+
"path": "server.py",
|
| 145 |
+
"bytes": 3786,
|
| 146 |
+
"sha256": null
|
| 147 |
+
},
|
| 148 |
+
{
|
| 149 |
+
"path": "static/index.html",
|
| 150 |
+
"bytes": 9594,
|
| 151 |
+
"sha256": null
|
| 152 |
+
},
|
| 153 |
+
{
|
| 154 |
+
"path": "training/train_v3.py",
|
| 155 |
+
"bytes": 11519,
|
| 156 |
+
"sha256": null
|
| 157 |
+
}
|
| 158 |
+
]
|
| 159 |
+
},
|
| 160 |
+
"dataset": {
|
| 161 |
+
"repo_id": "sraivante/home-commands-json-v3",
|
| 162 |
+
"commit": "da10aca352a34cb2834a049867f6f2e9fcc30e3e",
|
| 163 |
+
"files": [
|
| 164 |
+
{
|
| 165 |
+
"path": ".gitattributes",
|
| 166 |
+
"bytes": 2504,
|
| 167 |
+
"sha256": null
|
| 168 |
+
},
|
| 169 |
+
{
|
| 170 |
+
"path": "LICENSE",
|
| 171 |
+
"bytes": 11358,
|
| 172 |
+
"sha256": null
|
| 173 |
+
},
|
| 174 |
+
{
|
| 175 |
+
"path": "README.md",
|
| 176 |
+
"bytes": 5926,
|
| 177 |
+
"sha256": null
|
| 178 |
+
},
|
| 179 |
+
{
|
| 180 |
+
"path": "data/conditional_source.jsonl.gz",
|
| 181 |
+
"bytes": 6279490,
|
| 182 |
+
"sha256": "d5b6739202a0caa73b8a12452387651fa844566d47565e3876c5a3ce7ad6193e"
|
| 183 |
+
},
|
| 184 |
+
{
|
| 185 |
+
"path": "data/train.jsonl.gz",
|
| 186 |
+
"bytes": 13302264,
|
| 187 |
+
"sha256": "d8afeacfed666784b446cef68f1e8aeb12d9ebbe4032424dec2c0db9f664e79b"
|
| 188 |
+
},
|
| 189 |
+
{
|
| 190 |
+
"path": "generators/generate_dataset_v2.py",
|
| 191 |
+
"bytes": 29188,
|
| 192 |
+
"sha256": null
|
| 193 |
+
},
|
| 194 |
+
{
|
| 195 |
+
"path": "generators/generate_dataset_v3_conditional.py",
|
| 196 |
+
"bytes": 10612,
|
| 197 |
+
"sha256": null
|
| 198 |
+
},
|
| 199 |
+
{
|
| 200 |
+
"path": "generators/prep_mix.py",
|
| 201 |
+
"bytes": 1278,
|
| 202 |
+
"sha256": null
|
| 203 |
+
},
|
| 204 |
+
{
|
| 205 |
+
"path": "metadata/devices-catalog.json",
|
| 206 |
+
"bytes": 136537,
|
| 207 |
+
"sha256": null
|
| 208 |
+
},
|
| 209 |
+
{
|
| 210 |
+
"path": "source/dataset_v3_conditional.jsonl.xz",
|
| 211 |
+
"bytes": 4245312,
|
| 212 |
+
"sha256": "f5b997f808688c535cf0abd195390a8ba20deb6cfe3a4b8b2262624242552b86"
|
| 213 |
+
},
|
| 214 |
+
{
|
| 215 |
+
"path": "source/train_mix.jsonl.xz",
|
| 216 |
+
"bytes": 4951908,
|
| 217 |
+
"sha256": "c8851122dc01787e9674532c5cfb1cf7260212c52c9800e37622b28167bb9838"
|
| 218 |
+
}
|
| 219 |
+
]
|
| 220 |
+
}
|
| 221 |
+
},
|
| 222 |
+
"remote_weight_path": "model/model_v3_fp16.npz",
|
| 223 |
+
"verified_weight_sha256": "fc749ecd89c1ae30a159d6d701036298b5583645b7fbf114311e006929c8778b"
|
| 224 |
+
},
|
| 225 |
+
"publication": "existing model and dataset repositories"
|
| 226 |
+
}
|
| 227 |
+
},
|
| 228 |
+
"scope": "Per-model reproduction projection; the original run manifest hash is preserved in raw results."
|
| 229 |
+
}
|
edge_benchmarks/rpi5-2026-09-26/cases/poc2_latency.json
ADDED
|
@@ -0,0 +1,147 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
[
|
| 2 |
+
{
|
| 3 |
+
"id": "poc2-0000",
|
| 4 |
+
"text": "quickly open drawing room windows quickly",
|
| 5 |
+
"expected": {
|
| 6 |
+
"activity": "access",
|
| 7 |
+
"subject": "drawing_room_window",
|
| 8 |
+
"action": "OPEN"
|
| 9 |
+
},
|
| 10 |
+
"match": "exact",
|
| 11 |
+
"category": "training_plain",
|
| 12 |
+
"source_row_zero_based": 82695
|
| 13 |
+
},
|
| 14 |
+
{
|
| 15 |
+
"id": "poc2-0001",
|
| 16 |
+
"text": "SWITCH ON THE FIRST FLOOR KITCHEN TUBE LIGHT RIGHT NOW PLEASE!",
|
| 17 |
+
"expected": {
|
| 18 |
+
"activity": "light",
|
| 19 |
+
"subject": "first_floor_kitchen_tube_light",
|
| 20 |
+
"action": "ON"
|
| 21 |
+
},
|
| 22 |
+
"match": "exact",
|
| 23 |
+
"category": "training_plain",
|
| 24 |
+
"source_row_zero_based": 132876
|
| 25 |
+
},
|
| 26 |
+
{
|
| 27 |
+
"id": "poc2-0002",
|
| 28 |
+
"text": "start dining room switch!",
|
| 29 |
+
"expected": {
|
| 30 |
+
"activity": "power",
|
| 31 |
+
"subject": "dining_room_smart_switch",
|
| 32 |
+
"action": "ON"
|
| 33 |
+
},
|
| 34 |
+
"match": "exact",
|
| 35 |
+
"category": "training_plain",
|
| 36 |
+
"source_row_zero_based": 242353
|
| 37 |
+
},
|
| 38 |
+
{
|
| 39 |
+
"id": "poc2-0003",
|
| 40 |
+
"text": "Hey, the exhaust in the washroom status?",
|
| 41 |
+
"expected": {
|
| 42 |
+
"activity": "air",
|
| 43 |
+
"subject": "washroom_exhaust_fan",
|
| 44 |
+
"action": "STATUS"
|
| 45 |
+
},
|
| 46 |
+
"match": "exact",
|
| 47 |
+
"category": "training_plain",
|
| 48 |
+
"source_row_zero_based": 27043
|
| 49 |
+
},
|
| 50 |
+
{
|
| 51 |
+
"id": "poc2-0004",
|
| 52 |
+
"text": "hi, power off the second floor balcony light please.",
|
| 53 |
+
"expected": {
|
| 54 |
+
"activity": "light",
|
| 55 |
+
"subject": "second_floor_balcony_light",
|
| 56 |
+
"action": "OFF"
|
| 57 |
+
},
|
| 58 |
+
"match": "exact",
|
| 59 |
+
"category": "training_plain",
|
| 60 |
+
"source_row_zero_based": 160596
|
| 61 |
+
},
|
| 62 |
+
{
|
| 63 |
+
"id": "poc2-0100",
|
| 64 |
+
"text": "run the ceiling fan in the helper's room on max when room temperature goes over 37",
|
| 65 |
+
"expected": {
|
| 66 |
+
"activity": "air",
|
| 67 |
+
"subject": "servant_room_ceiling_fan",
|
| 68 |
+
"action": "HIGH",
|
| 69 |
+
"when": {
|
| 70 |
+
"metric": "temperature",
|
| 71 |
+
"op": ">",
|
| 72 |
+
"value": 37
|
| 73 |
+
}
|
| 74 |
+
},
|
| 75 |
+
"match": "exact",
|
| 76 |
+
"category": "training_conditional",
|
| 77 |
+
"source_row_zero_based": 172928
|
| 78 |
+
},
|
| 79 |
+
{
|
| 80 |
+
"id": "poc2-0101",
|
| 81 |
+
"text": "POWER OFF THE FIRST FLOOR GUEST ROOM CEILING FAN WHEN ROOM TEMPERATURE IS LESS THAN 37.",
|
| 82 |
+
"expected": {
|
| 83 |
+
"activity": "air",
|
| 84 |
+
"subject": "first_floor_guest_room_ceiling_fan",
|
| 85 |
+
"action": "OFF",
|
| 86 |
+
"when": {
|
| 87 |
+
"metric": "temperature",
|
| 88 |
+
"op": "<",
|
| 89 |
+
"value": 37
|
| 90 |
+
}
|
| 91 |
+
},
|
| 92 |
+
"match": "exact",
|
| 93 |
+
"category": "training_conditional",
|
| 94 |
+
"source_row_zero_based": 322745
|
| 95 |
+
},
|
| 96 |
+
{
|
| 97 |
+
"id": "poc2-0102",
|
| 98 |
+
"text": "yaar roz savere 8:30 baje master bedroom wala cooler start karo.",
|
| 99 |
+
"expected": {
|
| 100 |
+
"activity": "cooling",
|
| 101 |
+
"subject": "master_bedroom_cooler",
|
| 102 |
+
"action": "ON",
|
| 103 |
+
"when": {
|
| 104 |
+
"metric": "time",
|
| 105 |
+
"op": "==",
|
| 106 |
+
"value": "08:30"
|
| 107 |
+
}
|
| 108 |
+
},
|
| 109 |
+
"match": "exact",
|
| 110 |
+
"category": "training_conditional",
|
| 111 |
+
"source_row_zero_based": 104438
|
| 112 |
+
},
|
| 113 |
+
{
|
| 114 |
+
"id": "poc2-0103",
|
| 115 |
+
"text": "yaar temp 35 se kam ho to first floor kitchen ka ceiling fan rok do!",
|
| 116 |
+
"expected": {
|
| 117 |
+
"activity": "air",
|
| 118 |
+
"subject": "first_floor_kitchen_ceiling_fan",
|
| 119 |
+
"action": "OFF",
|
| 120 |
+
"when": {
|
| 121 |
+
"metric": "temperature",
|
| 122 |
+
"op": "<",
|
| 123 |
+
"value": 35
|
| 124 |
+
}
|
| 125 |
+
},
|
| 126 |
+
"match": "exact",
|
| 127 |
+
"category": "training_conditional",
|
| 128 |
+
"source_row_zero_based": 266202
|
| 129 |
+
},
|
| 130 |
+
{
|
| 131 |
+
"id": "poc2-0104",
|
| 132 |
+
"text": "suno ground floor kitchen ki tube light off karo savere 10 baje",
|
| 133 |
+
"expected": {
|
| 134 |
+
"activity": "light",
|
| 135 |
+
"subject": "ground_floor_kitchen_tube_light",
|
| 136 |
+
"action": "OFF",
|
| 137 |
+
"when": {
|
| 138 |
+
"metric": "time",
|
| 139 |
+
"op": "==",
|
| 140 |
+
"value": "10:00"
|
| 141 |
+
}
|
| 142 |
+
},
|
| 143 |
+
"match": "exact",
|
| 144 |
+
"category": "training_conditional",
|
| 145 |
+
"source_row_zero_based": 128504
|
| 146 |
+
}
|
| 147 |
+
]
|
edge_benchmarks/rpi5-2026-09-26/cases/poc2_quality.json
ADDED
|
@@ -0,0 +1,2902 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
[
|
| 2 |
+
{
|
| 3 |
+
"id": "poc2-0000",
|
| 4 |
+
"text": "quickly open drawing room windows quickly",
|
| 5 |
+
"expected": {
|
| 6 |
+
"activity": "access",
|
| 7 |
+
"subject": "drawing_room_window",
|
| 8 |
+
"action": "OPEN"
|
| 9 |
+
},
|
| 10 |
+
"match": "exact",
|
| 11 |
+
"category": "training_plain",
|
| 12 |
+
"source_row_zero_based": 82695
|
| 13 |
+
},
|
| 14 |
+
{
|
| 15 |
+
"id": "poc2-0001",
|
| 16 |
+
"text": "SWITCH ON THE FIRST FLOOR KITCHEN TUBE LIGHT RIGHT NOW PLEASE!",
|
| 17 |
+
"expected": {
|
| 18 |
+
"activity": "light",
|
| 19 |
+
"subject": "first_floor_kitchen_tube_light",
|
| 20 |
+
"action": "ON"
|
| 21 |
+
},
|
| 22 |
+
"match": "exact",
|
| 23 |
+
"category": "training_plain",
|
| 24 |
+
"source_row_zero_based": 132876
|
| 25 |
+
},
|
| 26 |
+
{
|
| 27 |
+
"id": "poc2-0002",
|
| 28 |
+
"text": "start dining room switch!",
|
| 29 |
+
"expected": {
|
| 30 |
+
"activity": "power",
|
| 31 |
+
"subject": "dining_room_smart_switch",
|
| 32 |
+
"action": "ON"
|
| 33 |
+
},
|
| 34 |
+
"match": "exact",
|
| 35 |
+
"category": "training_plain",
|
| 36 |
+
"source_row_zero_based": 242353
|
| 37 |
+
},
|
| 38 |
+
{
|
| 39 |
+
"id": "poc2-0003",
|
| 40 |
+
"text": "Hey, the exhaust in the washroom status?",
|
| 41 |
+
"expected": {
|
| 42 |
+
"activity": "air",
|
| 43 |
+
"subject": "washroom_exhaust_fan",
|
| 44 |
+
"action": "STATUS"
|
| 45 |
+
},
|
| 46 |
+
"match": "exact",
|
| 47 |
+
"category": "training_plain",
|
| 48 |
+
"source_row_zero_based": 27043
|
| 49 |
+
},
|
| 50 |
+
{
|
| 51 |
+
"id": "poc2-0004",
|
| 52 |
+
"text": "hi, power off the second floor balcony light please.",
|
| 53 |
+
"expected": {
|
| 54 |
+
"activity": "light",
|
| 55 |
+
"subject": "second_floor_balcony_light",
|
| 56 |
+
"action": "OFF"
|
| 57 |
+
},
|
| 58 |
+
"match": "exact",
|
| 59 |
+
"category": "training_plain",
|
| 60 |
+
"source_row_zero_based": 160596
|
| 61 |
+
},
|
| 62 |
+
{
|
| 63 |
+
"id": "poc2-0005",
|
| 64 |
+
"text": "please corridor wali tube light chalu karo please",
|
| 65 |
+
"expected": {
|
| 66 |
+
"activity": "light",
|
| 67 |
+
"subject": "corridor_tube_light",
|
| 68 |
+
"action": "ON"
|
| 69 |
+
},
|
| 70 |
+
"match": "exact",
|
| 71 |
+
"category": "training_plain",
|
| 72 |
+
"source_row_zero_based": 338212
|
| 73 |
+
},
|
| 74 |
+
{
|
| 75 |
+
"id": "poc2-0006",
|
| 76 |
+
"text": "yaar mummy papa ke kamre ka speaker band hai kya?",
|
| 77 |
+
"expected": {
|
| 78 |
+
"activity": "music",
|
| 79 |
+
"subject": "parents_room_speaker",
|
| 80 |
+
"action": "STATUS"
|
| 81 |
+
},
|
| 82 |
+
"match": "exact",
|
| 83 |
+
"category": "training_plain",
|
| 84 |
+
"source_row_zero_based": 12413
|
| 85 |
+
},
|
| 86 |
+
{
|
| 87 |
+
"id": "poc2-0007",
|
| 88 |
+
"text": "bhai pooja ghar wala socket chala do fatafat na!",
|
| 89 |
+
"expected": {
|
| 90 |
+
"activity": "power",
|
| 91 |
+
"subject": "pooja_room_socket",
|
| 92 |
+
"action": "ON"
|
| 93 |
+
},
|
| 94 |
+
"match": "exact",
|
| 95 |
+
"category": "training_plain",
|
| 96 |
+
"source_row_zero_based": 71659
|
| 97 |
+
},
|
| 98 |
+
{
|
| 99 |
+
"id": "poc2-0008",
|
| 100 |
+
"text": "could you please stop the first floor store room tube light now please!",
|
| 101 |
+
"expected": {
|
| 102 |
+
"activity": "light",
|
| 103 |
+
"subject": "first_floor_store_room_tube_light",
|
| 104 |
+
"action": "OFF"
|
| 105 |
+
},
|
| 106 |
+
"match": "exact",
|
| 107 |
+
"category": "training_plain",
|
| 108 |
+
"source_row_zero_based": 201839
|
| 109 |
+
},
|
| 110 |
+
{
|
| 111 |
+
"id": "poc2-0009",
|
| 112 |
+
"text": "Ek kaam karo, first floor lobby wala ceiling fan off kar do abhi",
|
| 113 |
+
"expected": {
|
| 114 |
+
"activity": "air",
|
| 115 |
+
"subject": "first_floor_lobby_ceiling_fan",
|
| 116 |
+
"action": "OFF"
|
| 117 |
+
},
|
| 118 |
+
"match": "exact",
|
| 119 |
+
"category": "training_plain",
|
| 120 |
+
"source_row_zero_based": 96564
|
| 121 |
+
},
|
| 122 |
+
{
|
| 123 |
+
"id": "poc2-0010",
|
| 124 |
+
"text": "hi, power on living room humidifier for me",
|
| 125 |
+
"expected": {
|
| 126 |
+
"activity": "air_quality",
|
| 127 |
+
"subject": "living_room_humidifier",
|
| 128 |
+
"action": "ON"
|
| 129 |
+
},
|
| 130 |
+
"match": "exact",
|
| 131 |
+
"category": "training_plain",
|
| 132 |
+
"source_row_zero_based": 131870
|
| 133 |
+
},
|
| 134 |
+
{
|
| 135 |
+
"id": "poc2-0011",
|
| 136 |
+
"text": "can you turn the fan in the first floor guest room to low asap please",
|
| 137 |
+
"expected": {
|
| 138 |
+
"activity": "air",
|
| 139 |
+
"subject": "first_floor_guest_room_ceiling_fan",
|
| 140 |
+
"action": "LOW"
|
| 141 |
+
},
|
| 142 |
+
"match": "exact",
|
| 143 |
+
"category": "training_plain",
|
| 144 |
+
"source_row_zero_based": 116821
|
| 145 |
+
},
|
| 146 |
+
{
|
| 147 |
+
"id": "poc2-0012",
|
| 148 |
+
"text": "zara balcony wala smart bulb on karo turant please!",
|
| 149 |
+
"expected": {
|
| 150 |
+
"activity": "light",
|
| 151 |
+
"subject": "balcony_smart_bulb",
|
| 152 |
+
"action": "ON"
|
| 153 |
+
},
|
| 154 |
+
"match": "exact",
|
| 155 |
+
"category": "training_plain",
|
| 156 |
+
"source_row_zero_based": 264094
|
| 157 |
+
},
|
| 158 |
+
{
|
| 159 |
+
"id": "poc2-0013",
|
| 160 |
+
"text": "Quickly check second floor bedroom air conditioner",
|
| 161 |
+
"expected": {
|
| 162 |
+
"activity": "cooling",
|
| 163 |
+
"subject": "second_floor_bedroom_ac",
|
| 164 |
+
"action": "STATUS"
|
| 165 |
+
},
|
| 166 |
+
"match": "exact",
|
| 167 |
+
"category": "training_plain",
|
| 168 |
+
"source_row_zero_based": 318314
|
| 169 |
+
},
|
| 170 |
+
{
|
| 171 |
+
"id": "poc2-0014",
|
| 172 |
+
"text": "sun, hall wala blower band kardo please!",
|
| 173 |
+
"expected": {
|
| 174 |
+
"activity": "heating",
|
| 175 |
+
"subject": "hall_blower",
|
| 176 |
+
"action": "OFF"
|
| 177 |
+
},
|
| 178 |
+
"match": "exact",
|
| 179 |
+
"category": "training_plain",
|
| 180 |
+
"source_row_zero_based": 54294
|
| 181 |
+
},
|
| 182 |
+
{
|
| 183 |
+
"id": "poc2-0015",
|
| 184 |
+
"text": "acha first floor study room ka plug ka status batao?",
|
| 185 |
+
"expected": {
|
| 186 |
+
"activity": "power",
|
| 187 |
+
"subject": "first_floor_study_room_smart_plug",
|
| 188 |
+
"action": "STATUS"
|
| 189 |
+
},
|
| 190 |
+
"match": "exact",
|
| 191 |
+
"category": "training_plain",
|
| 192 |
+
"source_row_zero_based": 187127
|
| 193 |
+
},
|
| 194 |
+
{
|
| 195 |
+
"id": "poc2-0016",
|
| 196 |
+
"text": "Sun, living room wali wall light off kar do turant na.",
|
| 197 |
+
"expected": {
|
| 198 |
+
"activity": "light",
|
| 199 |
+
"subject": "living_room_wall_light",
|
| 200 |
+
"action": "OFF"
|
| 201 |
+
},
|
| 202 |
+
"match": "exact",
|
| 203 |
+
"category": "training_plain",
|
| 204 |
+
"source_row_zero_based": 87051
|
| 205 |
+
},
|
| 206 |
+
{
|
| 207 |
+
"id": "poc2-0017",
|
| 208 |
+
"text": "Listen, shut off lobby ceiling fan right now!",
|
| 209 |
+
"expected": {
|
| 210 |
+
"activity": "air",
|
| 211 |
+
"subject": "lobby_ceiling_fan",
|
| 212 |
+
"action": "OFF"
|
| 213 |
+
},
|
| 214 |
+
"match": "exact",
|
| 215 |
+
"category": "training_plain",
|
| 216 |
+
"source_row_zero_based": 70056
|
| 217 |
+
},
|
| 218 |
+
{
|
| 219 |
+
"id": "poc2-0018",
|
| 220 |
+
"text": "GO AHEAD AND SHUT OFF THE AROMA DIFFUSER IN THE HALL RIGHT AWAY",
|
| 221 |
+
"expected": {
|
| 222 |
+
"activity": "air_quality",
|
| 223 |
+
"subject": "hall_diffuser",
|
| 224 |
+
"action": "OFF"
|
| 225 |
+
},
|
| 226 |
+
"match": "exact",
|
| 227 |
+
"category": "training_plain",
|
| 228 |
+
"source_row_zero_based": 168698
|
| 229 |
+
},
|
| 230 |
+
{
|
| 231 |
+
"id": "poc2-0019",
|
| 232 |
+
"text": "kindly put on basement tube light for me please.",
|
| 233 |
+
"expected": {
|
| 234 |
+
"activity": "light",
|
| 235 |
+
"subject": "basement_tube_light",
|
| 236 |
+
"action": "ON"
|
| 237 |
+
},
|
| 238 |
+
"match": "exact",
|
| 239 |
+
"category": "training_plain",
|
| 240 |
+
"source_row_zero_based": 63250
|
| 241 |
+
},
|
| 242 |
+
{
|
| 243 |
+
"id": "poc2-0020",
|
| 244 |
+
"text": "Listen, shut down the hall sound bar quickly",
|
| 245 |
+
"expected": {
|
| 246 |
+
"activity": "music",
|
| 247 |
+
"subject": "hall_soundbar",
|
| 248 |
+
"action": "OFF"
|
| 249 |
+
},
|
| 250 |
+
"match": "exact",
|
| 251 |
+
"category": "training_plain",
|
| 252 |
+
"source_row_zero_based": 138461
|
| 253 |
+
},
|
| 254 |
+
{
|
| 255 |
+
"id": "poc2-0021",
|
| 256 |
+
"text": "Set the first floor children's room air conditioner to slow now please!",
|
| 257 |
+
"expected": {
|
| 258 |
+
"activity": "cooling",
|
| 259 |
+
"subject": "first_floor_kids_room_ac",
|
| 260 |
+
"action": "LOW"
|
| 261 |
+
},
|
| 262 |
+
"match": "exact",
|
| 263 |
+
"category": "training_plain",
|
| 264 |
+
"source_row_zero_based": 90265
|
| 265 |
+
},
|
| 266 |
+
{
|
| 267 |
+
"id": "poc2-0022",
|
| 268 |
+
"text": "Acha kya baramde ka cooler chal raha hai?",
|
| 269 |
+
"expected": {
|
| 270 |
+
"activity": "cooling",
|
| 271 |
+
"subject": "veranda_cooler",
|
| 272 |
+
"action": "STATUS"
|
| 273 |
+
},
|
| 274 |
+
"match": "exact",
|
| 275 |
+
"category": "training_plain",
|
| 276 |
+
"source_row_zero_based": 157939
|
| 277 |
+
},
|
| 278 |
+
{
|
| 279 |
+
"id": "poc2-0023",
|
| 280 |
+
"text": "EK KAAM KARO, MUMMY PAPA KE KAMRE WALA SMART BULB CHALA DO FATAFAT NA!",
|
| 281 |
+
"expected": {
|
| 282 |
+
"activity": "light",
|
| 283 |
+
"subject": "parents_room_smart_bulb",
|
| 284 |
+
"action": "ON"
|
| 285 |
+
},
|
| 286 |
+
"match": "exact",
|
| 287 |
+
"category": "training_plain",
|
| 288 |
+
"source_row_zero_based": 244138
|
| 289 |
+
},
|
| 290 |
+
{
|
| 291 |
+
"id": "poc2-0024",
|
| 292 |
+
"text": "ARRE LIVING ROOM WALA TABLE FAN CHALU KARO YAAR NA",
|
| 293 |
+
"expected": {
|
| 294 |
+
"activity": "air",
|
| 295 |
+
"subject": "living_room_table_fan",
|
| 296 |
+
"action": "ON"
|
| 297 |
+
},
|
| 298 |
+
"match": "exact",
|
| 299 |
+
"category": "training_plain",
|
| 300 |
+
"source_row_zero_based": 275747
|
| 301 |
+
},
|
| 302 |
+
{
|
| 303 |
+
"id": "poc2-0025",
|
| 304 |
+
"text": "bhai drawing room wali window close kar do zara",
|
| 305 |
+
"expected": {
|
| 306 |
+
"activity": "access",
|
| 307 |
+
"subject": "drawing_room_window",
|
| 308 |
+
"action": "CLOSE"
|
| 309 |
+
},
|
| 310 |
+
"match": "exact",
|
| 311 |
+
"category": "training_plain",
|
| 312 |
+
"source_row_zero_based": 214734
|
| 313 |
+
},
|
| 314 |
+
{
|
| 315 |
+
"id": "poc2-0026",
|
| 316 |
+
"text": "hey set the pedestal fan in the parents' room to slow immediately please.",
|
| 317 |
+
"expected": {
|
| 318 |
+
"activity": "air",
|
| 319 |
+
"subject": "parents_room_pedestal_fan",
|
| 320 |
+
"action": "LOW"
|
| 321 |
+
},
|
| 322 |
+
"match": "exact",
|
| 323 |
+
"category": "training_plain",
|
| 324 |
+
"source_row_zero_based": 27902
|
| 325 |
+
},
|
| 326 |
+
{
|
| 327 |
+
"id": "poc2-0027",
|
| 328 |
+
"text": "jara living room ka speaker full mode pe daal do",
|
| 329 |
+
"expected": {
|
| 330 |
+
"activity": "music",
|
| 331 |
+
"subject": "living_room_speaker",
|
| 332 |
+
"action": "HIGH"
|
| 333 |
+
},
|
| 334 |
+
"match": "exact",
|
| 335 |
+
"category": "training_plain",
|
| 336 |
+
"source_row_zero_based": 299173
|
| 337 |
+
},
|
| 338 |
+
{
|
| 339 |
+
"id": "poc2-0028",
|
| 340 |
+
"text": "ground floor lobby wali tube light chala do abhi na.",
|
| 341 |
+
"expected": {
|
| 342 |
+
"activity": "light",
|
| 343 |
+
"subject": "ground_floor_lobby_tube_light",
|
| 344 |
+
"action": "ON"
|
| 345 |
+
},
|
| 346 |
+
"match": "exact",
|
| 347 |
+
"category": "training_plain",
|
| 348 |
+
"source_row_zero_based": 15448
|
| 349 |
+
},
|
| 350 |
+
{
|
| 351 |
+
"id": "poc2-0029",
|
| 352 |
+
"text": "Are borewell bandh kar do zara!",
|
| 353 |
+
"expected": {
|
| 354 |
+
"activity": "water",
|
| 355 |
+
"subject": "borewell_pump",
|
| 356 |
+
"action": "STOP"
|
| 357 |
+
},
|
| 358 |
+
"match": "exact",
|
| 359 |
+
"category": "training_plain",
|
| 360 |
+
"source_row_zero_based": 218617
|
| 361 |
+
},
|
| 362 |
+
{
|
| 363 |
+
"id": "poc2-0030",
|
| 364 |
+
"text": "tell me is the speaker in the study on",
|
| 365 |
+
"expected": {
|
| 366 |
+
"activity": "music",
|
| 367 |
+
"subject": "study_room_speaker",
|
| 368 |
+
"action": "STATUS"
|
| 369 |
+
},
|
| 370 |
+
"match": "exact",
|
| 371 |
+
"category": "training_plain",
|
| 372 |
+
"source_row_zero_based": 159774
|
| 373 |
+
},
|
| 374 |
+
{
|
| 375 |
+
"id": "poc2-0031",
|
| 376 |
+
"text": "Can you turn off the ceiling fan in the children's room right away!",
|
| 377 |
+
"expected": {
|
| 378 |
+
"activity": "air",
|
| 379 |
+
"subject": "kids_room_ceiling_fan",
|
| 380 |
+
"action": "OFF"
|
| 381 |
+
},
|
| 382 |
+
"match": "exact",
|
| 383 |
+
"category": "training_plain",
|
| 384 |
+
"source_row_zero_based": 116230
|
| 385 |
+
},
|
| 386 |
+
{
|
| 387 |
+
"id": "poc2-0032",
|
| 388 |
+
"text": "Second floor store room wali tube light start karo turant!",
|
| 389 |
+
"expected": {
|
| 390 |
+
"activity": "light",
|
| 391 |
+
"subject": "second_floor_store_room_tube_light",
|
| 392 |
+
"action": "ON"
|
| 393 |
+
},
|
| 394 |
+
"match": "exact",
|
| 395 |
+
"category": "training_plain",
|
| 396 |
+
"source_row_zero_based": 318502
|
| 397 |
+
},
|
| 398 |
+
{
|
| 399 |
+
"id": "poc2-0033",
|
| 400 |
+
"text": "Yaar office room wala bulb start kar do turant na!",
|
| 401 |
+
"expected": {
|
| 402 |
+
"activity": "light",
|
| 403 |
+
"subject": "home_office_bulb",
|
| 404 |
+
"action": "ON"
|
| 405 |
+
},
|
| 406 |
+
"match": "exact",
|
| 407 |
+
"category": "training_plain",
|
| 408 |
+
"source_row_zero_based": 119866
|
| 409 |
+
},
|
| 410 |
+
{
|
| 411 |
+
"id": "poc2-0034",
|
| 412 |
+
"text": "hi, power on the servant room water heater immediately",
|
| 413 |
+
"expected": {
|
| 414 |
+
"activity": "heating",
|
| 415 |
+
"subject": "servant_room_geyser",
|
| 416 |
+
"action": "ON"
|
| 417 |
+
},
|
| 418 |
+
"match": "exact",
|
| 419 |
+
"category": "training_plain",
|
| 420 |
+
"source_row_zero_based": 6325
|
| 421 |
+
},
|
| 422 |
+
{
|
| 423 |
+
"id": "poc2-0035",
|
| 424 |
+
"text": "CAN YOU SECOND FLOOR KITCHEN WINDOWS STATUS",
|
| 425 |
+
"expected": {
|
| 426 |
+
"activity": "access",
|
| 427 |
+
"subject": "second_floor_kitchen_window",
|
| 428 |
+
"action": "STATUS"
|
| 429 |
+
},
|
| 430 |
+
"match": "exact",
|
| 431 |
+
"category": "training_plain",
|
| 432 |
+
"source_row_zero_based": 276690
|
| 433 |
+
},
|
| 434 |
+
{
|
| 435 |
+
"id": "poc2-0036",
|
| 436 |
+
"text": "listen, turn off pantry power socket right now!",
|
| 437 |
+
"expected": {
|
| 438 |
+
"activity": "power",
|
| 439 |
+
"subject": "pantry_socket",
|
| 440 |
+
"action": "OFF"
|
| 441 |
+
},
|
| 442 |
+
"match": "exact",
|
| 443 |
+
"category": "training_plain",
|
| 444 |
+
"source_row_zero_based": 90822
|
| 445 |
+
},
|
| 446 |
+
{
|
| 447 |
+
"id": "poc2-0037",
|
| 448 |
+
"text": "Could you run the purifier in the home office at medium speed immediately please!",
|
| 449 |
+
"expected": {
|
| 450 |
+
"activity": "air_quality",
|
| 451 |
+
"subject": "home_office_air_purifier",
|
| 452 |
+
"action": "MEDIUM"
|
| 453 |
+
},
|
| 454 |
+
"match": "exact",
|
| 455 |
+
"category": "training_plain",
|
| 456 |
+
"source_row_zero_based": 284863
|
| 457 |
+
},
|
| 458 |
+
{
|
| 459 |
+
"id": "poc2-0038",
|
| 460 |
+
"text": "SECOND FLOOR KIDS ROOM KA CEILING FAN SHURU KARO PLEASE!",
|
| 461 |
+
"expected": {
|
| 462 |
+
"activity": "air",
|
| 463 |
+
"subject": "second_floor_kids_room_ceiling_fan",
|
| 464 |
+
"action": "ON"
|
| 465 |
+
},
|
| 466 |
+
"match": "exact",
|
| 467 |
+
"category": "training_plain",
|
| 468 |
+
"source_row_zero_based": 165290
|
| 469 |
+
},
|
| 470 |
+
{
|
| 471 |
+
"id": "poc2-0039",
|
| 472 |
+
"text": "ek kaam karo, second floor hall ka ac ko medium pe rakho fatafat na",
|
| 473 |
+
"expected": {
|
| 474 |
+
"activity": "cooling",
|
| 475 |
+
"subject": "second_floor_hall_ac",
|
| 476 |
+
"action": "MEDIUM"
|
| 477 |
+
},
|
| 478 |
+
"match": "exact",
|
| 479 |
+
"category": "training_plain",
|
| 480 |
+
"source_row_zero_based": 118219
|
| 481 |
+
},
|
| 482 |
+
{
|
| 483 |
+
"id": "poc2-0040",
|
| 484 |
+
"text": "Jara master bedroom ka smart bulb chalu kar do turant please!",
|
| 485 |
+
"expected": {
|
| 486 |
+
"activity": "light",
|
| 487 |
+
"subject": "master_bedroom_smart_bulb",
|
| 488 |
+
"action": "ON"
|
| 489 |
+
},
|
| 490 |
+
"match": "exact",
|
| 491 |
+
"category": "training_plain",
|
| 492 |
+
"source_row_zero_based": 52755
|
| 493 |
+
},
|
| 494 |
+
{
|
| 495 |
+
"id": "poc2-0041",
|
| 496 |
+
"text": "can you please put the bedroom dehumidifier on low now please!",
|
| 497 |
+
"expected": {
|
| 498 |
+
"activity": "air_quality",
|
| 499 |
+
"subject": "bedroom_dehumidifier",
|
| 500 |
+
"action": "LOW"
|
| 501 |
+
},
|
| 502 |
+
"match": "exact",
|
| 503 |
+
"category": "training_plain",
|
| 504 |
+
"source_row_zero_based": 262549
|
| 505 |
+
},
|
| 506 |
+
{
|
| 507 |
+
"id": "poc2-0042",
|
| 508 |
+
"text": "Could you stop bedroom air purifier right now",
|
| 509 |
+
"expected": {
|
| 510 |
+
"activity": "air_quality",
|
| 511 |
+
"subject": "bedroom_air_purifier",
|
| 512 |
+
"action": "OFF"
|
| 513 |
+
},
|
| 514 |
+
"match": "exact",
|
| 515 |
+
"category": "training_plain",
|
| 516 |
+
"source_row_zero_based": 254346
|
| 517 |
+
},
|
| 518 |
+
{
|
| 519 |
+
"id": "poc2-0043",
|
| 520 |
+
"text": "bhai aangan wala fountain start karo abhi please!",
|
| 521 |
+
"expected": {
|
| 522 |
+
"activity": "garden",
|
| 523 |
+
"subject": "courtyard_fountain",
|
| 524 |
+
"action": "ON"
|
| 525 |
+
},
|
| 526 |
+
"match": "exact",
|
| 527 |
+
"category": "training_plain",
|
| 528 |
+
"source_row_zero_based": 36308
|
| 529 |
+
},
|
| 530 |
+
{
|
| 531 |
+
"id": "poc2-0044",
|
| 532 |
+
"text": "please close first floor balcony curtain right now",
|
| 533 |
+
"expected": {
|
| 534 |
+
"activity": "access",
|
| 535 |
+
"subject": "first_floor_balcony_curtains",
|
| 536 |
+
"action": "CLOSE"
|
| 537 |
+
},
|
| 538 |
+
"match": "exact",
|
| 539 |
+
"category": "training_plain",
|
| 540 |
+
"source_row_zero_based": 121956
|
| 541 |
+
},
|
| 542 |
+
{
|
| 543 |
+
"id": "poc2-0045",
|
| 544 |
+
"text": "can you what's the status of the power socket in the first floor kids room?",
|
| 545 |
+
"expected": {
|
| 546 |
+
"activity": "power",
|
| 547 |
+
"subject": "first_floor_kids_room_socket",
|
| 548 |
+
"action": "STATUS"
|
| 549 |
+
},
|
| 550 |
+
"match": "exact",
|
| 551 |
+
"category": "training_plain",
|
| 552 |
+
"source_row_zero_based": 203594
|
| 553 |
+
},
|
| 554 |
+
{
|
| 555 |
+
"id": "poc2-0046",
|
| 556 |
+
"text": "please master bedroom ka curtains open kar do",
|
| 557 |
+
"expected": {
|
| 558 |
+
"activity": "access",
|
| 559 |
+
"subject": "master_bedroom_curtains",
|
| 560 |
+
"action": "OPEN"
|
| 561 |
+
},
|
| 562 |
+
"match": "exact",
|
| 563 |
+
"category": "training_plain",
|
| 564 |
+
"source_row_zero_based": 202426
|
| 565 |
+
},
|
| 566 |
+
{
|
| 567 |
+
"id": "poc2-0047",
|
| 568 |
+
"text": "Kindly start the cctv camera in the stairs please!",
|
| 569 |
+
"expected": {
|
| 570 |
+
"activity": "security",
|
| 571 |
+
"subject": "staircase_camera",
|
| 572 |
+
"action": "ON"
|
| 573 |
+
},
|
| 574 |
+
"match": "exact",
|
| 575 |
+
"category": "training_plain",
|
| 576 |
+
"source_row_zero_based": 250657
|
| 577 |
+
},
|
| 578 |
+
{
|
| 579 |
+
"id": "poc2-0048",
|
| 580 |
+
"text": "Suno bathroom wala smart bulb band karo fatafat na!",
|
| 581 |
+
"expected": {
|
| 582 |
+
"activity": "light",
|
| 583 |
+
"subject": "bathroom_smart_bulb",
|
| 584 |
+
"action": "OFF"
|
| 585 |
+
},
|
| 586 |
+
"match": "exact",
|
| 587 |
+
"category": "training_plain",
|
| 588 |
+
"source_row_zero_based": 80993
|
| 589 |
+
},
|
| 590 |
+
{
|
| 591 |
+
"id": "poc2-0049",
|
| 592 |
+
"text": "bhaiya second floor study room ka socket start karo yaar",
|
| 593 |
+
"expected": {
|
| 594 |
+
"activity": "power",
|
| 595 |
+
"subject": "second_floor_study_room_socket",
|
| 596 |
+
"action": "ON"
|
| 597 |
+
},
|
| 598 |
+
"match": "exact",
|
| 599 |
+
"category": "training_plain",
|
| 600 |
+
"source_row_zero_based": 113767
|
| 601 |
+
},
|
| 602 |
+
{
|
| 603 |
+
"id": "poc2-0050",
|
| 604 |
+
"text": "COULD YOU PLEASE SHUT OFF THE LIVING ROOM SOUNDBAR RIGHT AWAY!",
|
| 605 |
+
"expected": {
|
| 606 |
+
"activity": "music",
|
| 607 |
+
"subject": "living_room_soundbar",
|
| 608 |
+
"action": "OFF"
|
| 609 |
+
},
|
| 610 |
+
"match": "exact",
|
| 611 |
+
"category": "training_plain",
|
| 612 |
+
"source_row_zero_based": 193126
|
| 613 |
+
},
|
| 614 |
+
{
|
| 615 |
+
"id": "poc2-0051",
|
| 616 |
+
"text": "can you start the camera in the roof now please",
|
| 617 |
+
"expected": {
|
| 618 |
+
"activity": "security",
|
| 619 |
+
"subject": "roof_camera",
|
| 620 |
+
"action": "ON"
|
| 621 |
+
},
|
| 622 |
+
"match": "exact",
|
| 623 |
+
"category": "training_plain",
|
| 624 |
+
"source_row_zero_based": 229583
|
| 625 |
+
},
|
| 626 |
+
{
|
| 627 |
+
"id": "poc2-0052",
|
| 628 |
+
"text": "Would you switch on the printer quickly!",
|
| 629 |
+
"expected": {
|
| 630 |
+
"activity": "office",
|
| 631 |
+
"subject": "printer",
|
| 632 |
+
"action": "ON"
|
| 633 |
+
},
|
| 634 |
+
"match": "exact",
|
| 635 |
+
"category": "training_plain",
|
| 636 |
+
"source_row_zero_based": 20988
|
| 637 |
+
},
|
| 638 |
+
{
|
| 639 |
+
"id": "poc2-0053",
|
| 640 |
+
"text": "Plug number 1 chalao turant please!",
|
| 641 |
+
"expected": {
|
| 642 |
+
"activity": "power",
|
| 643 |
+
"subject": "smart_plug_1",
|
| 644 |
+
"action": "ON"
|
| 645 |
+
},
|
| 646 |
+
"match": "exact",
|
| 647 |
+
"category": "training_plain",
|
| 648 |
+
"source_row_zero_based": 319663
|
| 649 |
+
},
|
| 650 |
+
{
|
| 651 |
+
"id": "poc2-0054",
|
| 652 |
+
"text": "hey slide open the first floor kitchen window right now!",
|
| 653 |
+
"expected": {
|
| 654 |
+
"activity": "access",
|
| 655 |
+
"subject": "first_floor_kitchen_window",
|
| 656 |
+
"action": "OPEN"
|
| 657 |
+
},
|
| 658 |
+
"match": "exact",
|
| 659 |
+
"category": "training_plain",
|
| 660 |
+
"source_row_zero_based": 140862
|
| 661 |
+
},
|
| 662 |
+
{
|
| 663 |
+
"id": "poc2-0055",
|
| 664 |
+
"text": "hey run parents room air conditioner on high now please.",
|
| 665 |
+
"expected": {
|
| 666 |
+
"activity": "cooling",
|
| 667 |
+
"subject": "parents_room_ac",
|
| 668 |
+
"action": "HIGH"
|
| 669 |
+
},
|
| 670 |
+
"match": "exact",
|
| 671 |
+
"category": "training_plain",
|
| 672 |
+
"source_row_zero_based": 231629
|
| 673 |
+
},
|
| 674 |
+
{
|
| 675 |
+
"id": "poc2-0056",
|
| 676 |
+
"text": "Zara first floor study room wala switch on hai kya",
|
| 677 |
+
"expected": {
|
| 678 |
+
"activity": "power",
|
| 679 |
+
"subject": "first_floor_study_room_smart_switch",
|
| 680 |
+
"action": "STATUS"
|
| 681 |
+
},
|
| 682 |
+
"match": "exact",
|
| 683 |
+
"category": "training_plain",
|
| 684 |
+
"source_row_zero_based": 25845
|
| 685 |
+
},
|
| 686 |
+
{
|
| 687 |
+
"id": "poc2-0057",
|
| 688 |
+
"text": "hey switch off ground floor bedroom light for me!",
|
| 689 |
+
"expected": {
|
| 690 |
+
"activity": "light",
|
| 691 |
+
"subject": "ground_floor_bedroom_light",
|
| 692 |
+
"action": "OFF"
|
| 693 |
+
},
|
| 694 |
+
"match": "exact",
|
| 695 |
+
"category": "training_plain",
|
| 696 |
+
"source_row_zero_based": 224303
|
| 697 |
+
},
|
| 698 |
+
{
|
| 699 |
+
"id": "poc2-0058",
|
| 700 |
+
"text": "please ground floor lobby ka CCTV shuru kar do yaar na.",
|
| 701 |
+
"expected": {
|
| 702 |
+
"activity": "security",
|
| 703 |
+
"subject": "ground_floor_lobby_camera",
|
| 704 |
+
"action": "ON"
|
| 705 |
+
},
|
| 706 |
+
"match": "exact",
|
| 707 |
+
"category": "training_plain",
|
| 708 |
+
"source_row_zero_based": 160516
|
| 709 |
+
},
|
| 710 |
+
{
|
| 711 |
+
"id": "poc2-0059",
|
| 712 |
+
"text": "ACHA COURTYARD KA BULB BANDH KAR DO FATAFAT PLEASE",
|
| 713 |
+
"expected": {
|
| 714 |
+
"activity": "light",
|
| 715 |
+
"subject": "courtyard_bulb",
|
| 716 |
+
"action": "OFF"
|
| 717 |
+
},
|
| 718 |
+
"match": "exact",
|
| 719 |
+
"category": "training_plain",
|
| 720 |
+
"source_row_zero_based": 309166
|
| 721 |
+
},
|
| 722 |
+
{
|
| 723 |
+
"id": "poc2-0060",
|
| 724 |
+
"text": "just check is the garden water sprinkler running",
|
| 725 |
+
"expected": {
|
| 726 |
+
"activity": "garden",
|
| 727 |
+
"subject": "garden_sprinkler",
|
| 728 |
+
"action": "STATUS"
|
| 729 |
+
},
|
| 730 |
+
"match": "exact",
|
| 731 |
+
"category": "training_plain",
|
| 732 |
+
"source_row_zero_based": 130828
|
| 733 |
+
},
|
| 734 |
+
{
|
| 735 |
+
"id": "poc2-0061",
|
| 736 |
+
"text": "Boss ground floor washroom wali batti band kardo abhi please!",
|
| 737 |
+
"expected": {
|
| 738 |
+
"activity": "light",
|
| 739 |
+
"subject": "ground_floor_washroom_light",
|
| 740 |
+
"action": "OFF"
|
| 741 |
+
},
|
| 742 |
+
"match": "exact",
|
| 743 |
+
"category": "training_plain",
|
| 744 |
+
"source_row_zero_based": 245314
|
| 745 |
+
},
|
| 746 |
+
{
|
| 747 |
+
"id": "poc2-0062",
|
| 748 |
+
"text": "COULD YOU SET FIRST FLOOR KITCHEN FAN TO LOW SPEED QUICKLY.",
|
| 749 |
+
"expected": {
|
| 750 |
+
"activity": "air",
|
| 751 |
+
"subject": "first_floor_kitchen_ceiling_fan",
|
| 752 |
+
"action": "LOW"
|
| 753 |
+
},
|
| 754 |
+
"match": "exact",
|
| 755 |
+
"category": "training_plain",
|
| 756 |
+
"source_row_zero_based": 145385
|
| 757 |
+
},
|
| 758 |
+
{
|
| 759 |
+
"id": "poc2-0063",
|
| 760 |
+
"text": "Hey, put on the camera 8 quickly!",
|
| 761 |
+
"expected": {
|
| 762 |
+
"activity": "security",
|
| 763 |
+
"subject": "camera_8",
|
| 764 |
+
"action": "ON"
|
| 765 |
+
},
|
| 766 |
+
"match": "exact",
|
| 767 |
+
"category": "training_plain",
|
| 768 |
+
"source_row_zero_based": 114642
|
| 769 |
+
},
|
| 770 |
+
{
|
| 771 |
+
"id": "poc2-0064",
|
| 772 |
+
"text": "could you please run the lobby fan on max asap",
|
| 773 |
+
"expected": {
|
| 774 |
+
"activity": "air",
|
| 775 |
+
"subject": "lobby_ceiling_fan",
|
| 776 |
+
"action": "HIGH"
|
| 777 |
+
},
|
| 778 |
+
"match": "exact",
|
| 779 |
+
"category": "training_plain",
|
| 780 |
+
"source_row_zero_based": 310560
|
| 781 |
+
},
|
| 782 |
+
{
|
| 783 |
+
"id": "poc2-0065",
|
| 784 |
+
"text": "Please dining room ki tv chalao fatafat please.",
|
| 785 |
+
"expected": {
|
| 786 |
+
"activity": "entertainment",
|
| 787 |
+
"subject": "dining_room_tv",
|
| 788 |
+
"action": "ON"
|
| 789 |
+
},
|
| 790 |
+
"match": "exact",
|
| 791 |
+
"category": "training_plain",
|
| 792 |
+
"source_row_zero_based": 218850
|
| 793 |
+
},
|
| 794 |
+
{
|
| 795 |
+
"id": "poc2-0066",
|
| 796 |
+
"text": "could you switch on bedroom light quickly please.",
|
| 797 |
+
"expected": {
|
| 798 |
+
"activity": "light",
|
| 799 |
+
"subject": "bedroom_light",
|
| 800 |
+
"action": "ON"
|
| 801 |
+
},
|
| 802 |
+
"match": "exact",
|
| 803 |
+
"category": "training_plain",
|
| 804 |
+
"source_row_zero_based": 294477
|
| 805 |
+
},
|
| 806 |
+
{
|
| 807 |
+
"id": "poc2-0067",
|
| 808 |
+
"text": "could you please turn on the rice cooker for me please!",
|
| 809 |
+
"expected": {
|
| 810 |
+
"activity": "kitchen",
|
| 811 |
+
"subject": "rice_cooker",
|
| 812 |
+
"action": "START"
|
| 813 |
+
},
|
| 814 |
+
"match": "exact",
|
| 815 |
+
"category": "training_plain",
|
| 816 |
+
"source_row_zero_based": 236296
|
| 817 |
+
},
|
| 818 |
+
{
|
| 819 |
+
"id": "poc2-0068",
|
| 820 |
+
"text": "quickly start second floor bedroom power socket immediately please",
|
| 821 |
+
"expected": {
|
| 822 |
+
"activity": "power",
|
| 823 |
+
"subject": "second_floor_bedroom_socket",
|
| 824 |
+
"action": "ON"
|
| 825 |
+
},
|
| 826 |
+
"match": "exact",
|
| 827 |
+
"category": "training_plain",
|
| 828 |
+
"source_row_zero_based": 134805
|
| 829 |
+
},
|
| 830 |
+
{
|
| 831 |
+
"id": "poc2-0069",
|
| 832 |
+
"text": "would you turn off the bulb in the second floor lobby for me please.",
|
| 833 |
+
"expected": {
|
| 834 |
+
"activity": "light",
|
| 835 |
+
"subject": "second_floor_lobby_bulb",
|
| 836 |
+
"action": "OFF"
|
| 837 |
+
},
|
| 838 |
+
"match": "exact",
|
| 839 |
+
"category": "training_plain",
|
| 840 |
+
"source_row_zero_based": 163037
|
| 841 |
+
},
|
| 842 |
+
{
|
| 843 |
+
"id": "poc2-0070",
|
| 844 |
+
"text": "please second floor corridor wala bulb bandh kar do fatafat",
|
| 845 |
+
"expected": {
|
| 846 |
+
"activity": "light",
|
| 847 |
+
"subject": "second_floor_corridor_bulb",
|
| 848 |
+
"action": "OFF"
|
| 849 |
+
},
|
| 850 |
+
"match": "exact",
|
| 851 |
+
"category": "training_plain",
|
| 852 |
+
"source_row_zero_based": 213537
|
| 853 |
+
},
|
| 854 |
+
{
|
| 855 |
+
"id": "poc2-0071",
|
| 856 |
+
"text": "jara bedroom ka speaker band kar do jaldi please",
|
| 857 |
+
"expected": {
|
| 858 |
+
"activity": "music",
|
| 859 |
+
"subject": "bedroom_speaker",
|
| 860 |
+
"action": "OFF"
|
| 861 |
+
},
|
| 862 |
+
"match": "exact",
|
| 863 |
+
"category": "training_plain",
|
| 864 |
+
"source_row_zero_based": 81674
|
| 865 |
+
},
|
| 866 |
+
{
|
| 867 |
+
"id": "poc2-0072",
|
| 868 |
+
"text": "Is office room range extender running",
|
| 869 |
+
"expected": {
|
| 870 |
+
"activity": "network",
|
| 871 |
+
"subject": "home_office_wifi_extender",
|
| 872 |
+
"action": "STATUS"
|
| 873 |
+
},
|
| 874 |
+
"match": "exact",
|
| 875 |
+
"category": "training_plain",
|
| 876 |
+
"source_row_zero_based": 101767
|
| 877 |
+
},
|
| 878 |
+
{
|
| 879 |
+
"id": "poc2-0073",
|
| 880 |
+
"text": "could you set the master bedroom dehumidifier to max please.",
|
| 881 |
+
"expected": {
|
| 882 |
+
"activity": "air_quality",
|
| 883 |
+
"subject": "master_bedroom_dehumidifier",
|
| 884 |
+
"action": "HIGH"
|
| 885 |
+
},
|
| 886 |
+
"match": "exact",
|
| 887 |
+
"category": "training_plain",
|
| 888 |
+
"source_row_zero_based": 296645
|
| 889 |
+
},
|
| 890 |
+
{
|
| 891 |
+
"id": "poc2-0074",
|
| 892 |
+
"text": "Please hall wala smart plug band kardo yaar!",
|
| 893 |
+
"expected": {
|
| 894 |
+
"activity": "power",
|
| 895 |
+
"subject": "hall_smart_plug",
|
| 896 |
+
"action": "OFF"
|
| 897 |
+
},
|
| 898 |
+
"match": "exact",
|
| 899 |
+
"category": "training_plain",
|
| 900 |
+
"source_row_zero_based": 143453
|
| 901 |
+
},
|
| 902 |
+
{
|
| 903 |
+
"id": "poc2-0075",
|
| 904 |
+
"text": "arre master bedroom wali machhar wali machine bandh kar do abhi na.",
|
| 905 |
+
"expected": {
|
| 906 |
+
"activity": "air_quality",
|
| 907 |
+
"subject": "master_bedroom_mosquito_machine",
|
| 908 |
+
"action": "OFF"
|
| 909 |
+
},
|
| 910 |
+
"match": "exact",
|
| 911 |
+
"category": "training_plain",
|
| 912 |
+
"source_row_zero_based": 89607
|
| 913 |
+
},
|
| 914 |
+
{
|
| 915 |
+
"id": "poc2-0076",
|
| 916 |
+
"text": "Would you shut off the smart plug 7 right away please",
|
| 917 |
+
"expected": {
|
| 918 |
+
"activity": "power",
|
| 919 |
+
"subject": "smart_plug_7",
|
| 920 |
+
"action": "OFF"
|
| 921 |
+
},
|
| 922 |
+
"match": "exact",
|
| 923 |
+
"category": "training_plain",
|
| 924 |
+
"source_row_zero_based": 82662
|
| 925 |
+
},
|
| 926 |
+
{
|
| 927 |
+
"id": "poc2-0077",
|
| 928 |
+
"text": "WOULD YOU START LIVING ROOM HUMIDIFIER RIGHT NOW!",
|
| 929 |
+
"expected": {
|
| 930 |
+
"activity": "air_quality",
|
| 931 |
+
"subject": "living_room_humidifier",
|
| 932 |
+
"action": "ON"
|
| 933 |
+
},
|
| 934 |
+
"match": "exact",
|
| 935 |
+
"category": "training_plain",
|
| 936 |
+
"source_row_zero_based": 309872
|
| 937 |
+
},
|
| 938 |
+
{
|
| 939 |
+
"id": "poc2-0078",
|
| 940 |
+
"text": "YAAR GUEST ROOM WALA SPEAKER ON KAR DO FATAFAT.",
|
| 941 |
+
"expected": {
|
| 942 |
+
"activity": "music",
|
| 943 |
+
"subject": "guest_room_speaker",
|
| 944 |
+
"action": "ON"
|
| 945 |
+
},
|
| 946 |
+
"match": "exact",
|
| 947 |
+
"category": "training_plain",
|
| 948 |
+
"source_row_zero_based": 139923
|
| 949 |
+
},
|
| 950 |
+
{
|
| 951 |
+
"id": "poc2-0079",
|
| 952 |
+
"text": "just check the lobby light status?",
|
| 953 |
+
"expected": {
|
| 954 |
+
"activity": "light",
|
| 955 |
+
"subject": "lobby_light",
|
| 956 |
+
"action": "STATUS"
|
| 957 |
+
},
|
| 958 |
+
"match": "exact",
|
| 959 |
+
"category": "training_plain",
|
| 960 |
+
"source_row_zero_based": 316062
|
| 961 |
+
},
|
| 962 |
+
{
|
| 963 |
+
"id": "poc2-0080",
|
| 964 |
+
"text": "Hey run the cupboard light in the master bedroom asap",
|
| 965 |
+
"expected": {
|
| 966 |
+
"activity": "light",
|
| 967 |
+
"subject": "master_bedroom_cabinet_light",
|
| 968 |
+
"action": "ON"
|
| 969 |
+
},
|
| 970 |
+
"match": "exact",
|
| 971 |
+
"category": "training_plain",
|
| 972 |
+
"source_row_zero_based": 132607
|
| 973 |
+
},
|
| 974 |
+
{
|
| 975 |
+
"id": "poc2-0081",
|
| 976 |
+
"text": "power on the air conditioner in the office room for me",
|
| 977 |
+
"expected": {
|
| 978 |
+
"activity": "cooling",
|
| 979 |
+
"subject": "home_office_ac",
|
| 980 |
+
"action": "ON"
|
| 981 |
+
},
|
| 982 |
+
"match": "exact",
|
| 983 |
+
"category": "training_plain",
|
| 984 |
+
"source_row_zero_based": 236821
|
| 985 |
+
},
|
| 986 |
+
{
|
| 987 |
+
"id": "poc2-0082",
|
| 988 |
+
"text": "hey, shut down the air purifier in the kids room asap please!",
|
| 989 |
+
"expected": {
|
| 990 |
+
"activity": "air_quality",
|
| 991 |
+
"subject": "kids_room_air_purifier",
|
| 992 |
+
"action": "OFF"
|
| 993 |
+
},
|
| 994 |
+
"match": "exact",
|
| 995 |
+
"category": "training_plain",
|
| 996 |
+
"source_row_zero_based": 136530
|
| 997 |
+
},
|
| 998 |
+
{
|
| 999 |
+
"id": "poc2-0083",
|
| 1000 |
+
"text": "COURTYARD KA CAMERA ROK DO YAAR PLEASE",
|
| 1001 |
+
"expected": {
|
| 1002 |
+
"activity": "security",
|
| 1003 |
+
"subject": "courtyard_camera",
|
| 1004 |
+
"action": "OFF"
|
| 1005 |
+
},
|
| 1006 |
+
"match": "exact",
|
| 1007 |
+
"category": "training_plain",
|
| 1008 |
+
"source_row_zero_based": 260005
|
| 1009 |
+
},
|
| 1010 |
+
{
|
| 1011 |
+
"id": "poc2-0084",
|
| 1012 |
+
"text": "hey, switch off the led strip in the dining room right away please.",
|
| 1013 |
+
"expected": {
|
| 1014 |
+
"activity": "light",
|
| 1015 |
+
"subject": "dining_room_led_strip",
|
| 1016 |
+
"action": "OFF"
|
| 1017 |
+
},
|
| 1018 |
+
"match": "exact",
|
| 1019 |
+
"category": "training_plain",
|
| 1020 |
+
"source_row_zero_based": 286393
|
| 1021 |
+
},
|
| 1022 |
+
{
|
| 1023 |
+
"id": "poc2-0085",
|
| 1024 |
+
"text": "Switch on the tube light in the second floor guest room asap.",
|
| 1025 |
+
"expected": {
|
| 1026 |
+
"activity": "light",
|
| 1027 |
+
"subject": "second_floor_guest_room_tube_light",
|
| 1028 |
+
"action": "ON"
|
| 1029 |
+
},
|
| 1030 |
+
"match": "exact",
|
| 1031 |
+
"category": "training_plain",
|
| 1032 |
+
"source_row_zero_based": 267039
|
| 1033 |
+
},
|
| 1034 |
+
{
|
| 1035 |
+
"id": "poc2-0086",
|
| 1036 |
+
"text": "Study room ka switch laga do jaldi.",
|
| 1037 |
+
"expected": {
|
| 1038 |
+
"activity": "power",
|
| 1039 |
+
"subject": "study_room_smart_switch",
|
| 1040 |
+
"action": "ON"
|
| 1041 |
+
},
|
| 1042 |
+
"match": "exact",
|
| 1043 |
+
"category": "training_plain",
|
| 1044 |
+
"source_row_zero_based": 128979
|
| 1045 |
+
},
|
| 1046 |
+
{
|
| 1047 |
+
"id": "poc2-0087",
|
| 1048 |
+
"text": "would you power on the spot light in the veranda immediately",
|
| 1049 |
+
"expected": {
|
| 1050 |
+
"activity": "light",
|
| 1051 |
+
"subject": "veranda_spotlight",
|
| 1052 |
+
"action": "ON"
|
| 1053 |
+
},
|
| 1054 |
+
"match": "exact",
|
| 1055 |
+
"category": "training_plain",
|
| 1056 |
+
"source_row_zero_based": 266723
|
| 1057 |
+
},
|
| 1058 |
+
{
|
| 1059 |
+
"id": "poc2-0088",
|
| 1060 |
+
"text": "WOULD YOU SWITCH OFF GROUND FLOOR HALL CEILING FAN FOR ME.",
|
| 1061 |
+
"expected": {
|
| 1062 |
+
"activity": "air",
|
| 1063 |
+
"subject": "ground_floor_hall_ceiling_fan",
|
| 1064 |
+
"action": "OFF"
|
| 1065 |
+
},
|
| 1066 |
+
"match": "exact",
|
| 1067 |
+
"category": "training_plain",
|
| 1068 |
+
"source_row_zero_based": 227590
|
| 1069 |
+
},
|
| 1070 |
+
{
|
| 1071 |
+
"id": "poc2-0089",
|
| 1072 |
+
"text": "boss pull open the curtains in the guest room now",
|
| 1073 |
+
"expected": {
|
| 1074 |
+
"activity": "access",
|
| 1075 |
+
"subject": "guest_room_curtains",
|
| 1076 |
+
"action": "OPEN"
|
| 1077 |
+
},
|
| 1078 |
+
"match": "exact",
|
| 1079 |
+
"category": "training_plain",
|
| 1080 |
+
"source_row_zero_based": 107485
|
| 1081 |
+
},
|
| 1082 |
+
{
|
| 1083 |
+
"id": "poc2-0090",
|
| 1084 |
+
"text": "could you switch on the bathroom exhaust fan immediately please.",
|
| 1085 |
+
"expected": {
|
| 1086 |
+
"activity": "air",
|
| 1087 |
+
"subject": "bathroom_exhaust_fan",
|
| 1088 |
+
"action": "ON"
|
| 1089 |
+
},
|
| 1090 |
+
"match": "exact",
|
| 1091 |
+
"category": "training_plain",
|
| 1092 |
+
"source_row_zero_based": 208947
|
| 1093 |
+
},
|
| 1094 |
+
{
|
| 1095 |
+
"id": "poc2-0091",
|
| 1096 |
+
"text": "Go ahead and put on first floor washroom socket immediately.",
|
| 1097 |
+
"expected": {
|
| 1098 |
+
"activity": "power",
|
| 1099 |
+
"subject": "first_floor_washroom_socket",
|
| 1100 |
+
"action": "ON"
|
| 1101 |
+
},
|
| 1102 |
+
"match": "exact",
|
| 1103 |
+
"category": "training_plain",
|
| 1104 |
+
"source_row_zero_based": 280596
|
| 1105 |
+
},
|
| 1106 |
+
{
|
| 1107 |
+
"id": "poc2-0092",
|
| 1108 |
+
"text": "yaar backyard wali drip irrigation off karo turant.",
|
| 1109 |
+
"expected": {
|
| 1110 |
+
"activity": "garden",
|
| 1111 |
+
"subject": "backyard_drip_irrigation",
|
| 1112 |
+
"action": "OFF"
|
| 1113 |
+
},
|
| 1114 |
+
"match": "exact",
|
| 1115 |
+
"category": "training_plain",
|
| 1116 |
+
"source_row_zero_based": 41290
|
| 1117 |
+
},
|
| 1118 |
+
{
|
| 1119 |
+
"id": "poc2-0093",
|
| 1120 |
+
"text": "hey run the switch in the ground floor bedroom asap please!",
|
| 1121 |
+
"expected": {
|
| 1122 |
+
"activity": "power",
|
| 1123 |
+
"subject": "ground_floor_bedroom_smart_switch",
|
| 1124 |
+
"action": "ON"
|
| 1125 |
+
},
|
| 1126 |
+
"match": "exact",
|
| 1127 |
+
"category": "training_plain",
|
| 1128 |
+
"source_row_zero_based": 234919
|
| 1129 |
+
},
|
| 1130 |
+
{
|
| 1131 |
+
"id": "poc2-0094",
|
| 1132 |
+
"text": "Bhai aangan wala smart plug band hai kya?",
|
| 1133 |
+
"expected": {
|
| 1134 |
+
"activity": "power",
|
| 1135 |
+
"subject": "courtyard_smart_plug",
|
| 1136 |
+
"action": "STATUS"
|
| 1137 |
+
},
|
| 1138 |
+
"match": "exact",
|
| 1139 |
+
"category": "training_plain",
|
| 1140 |
+
"source_row_zero_based": 89094
|
| 1141 |
+
},
|
| 1142 |
+
{
|
| 1143 |
+
"id": "poc2-0095",
|
| 1144 |
+
"text": "hey, is the tower fan in the hall running?",
|
| 1145 |
+
"expected": {
|
| 1146 |
+
"activity": "air",
|
| 1147 |
+
"subject": "hall_tower_fan",
|
| 1148 |
+
"action": "STATUS"
|
| 1149 |
+
},
|
| 1150 |
+
"match": "exact",
|
| 1151 |
+
"category": "training_plain",
|
| 1152 |
+
"source_row_zero_based": 133485
|
| 1153 |
+
},
|
| 1154 |
+
{
|
| 1155 |
+
"id": "poc2-0096",
|
| 1156 |
+
"text": "Hey put on the pedestal fan in the living room quickly",
|
| 1157 |
+
"expected": {
|
| 1158 |
+
"activity": "air",
|
| 1159 |
+
"subject": "living_room_pedestal_fan",
|
| 1160 |
+
"action": "ON"
|
| 1161 |
+
},
|
| 1162 |
+
"match": "exact",
|
| 1163 |
+
"category": "training_plain",
|
| 1164 |
+
"source_row_zero_based": 184768
|
| 1165 |
+
},
|
| 1166 |
+
{
|
| 1167 |
+
"id": "poc2-0097",
|
| 1168 |
+
"text": "ek kaam karo, pooja room ka purifier bandh kar do!",
|
| 1169 |
+
"expected": {
|
| 1170 |
+
"activity": "air_quality",
|
| 1171 |
+
"subject": "pooja_room_air_purifier",
|
| 1172 |
+
"action": "OFF"
|
| 1173 |
+
},
|
| 1174 |
+
"match": "exact",
|
| 1175 |
+
"category": "training_plain",
|
| 1176 |
+
"source_row_zero_based": 38327
|
| 1177 |
+
},
|
| 1178 |
+
{
|
| 1179 |
+
"id": "poc2-0098",
|
| 1180 |
+
"text": "Boss put on parents room night lamp.",
|
| 1181 |
+
"expected": {
|
| 1182 |
+
"activity": "light",
|
| 1183 |
+
"subject": "parents_room_night_lamp",
|
| 1184 |
+
"action": "ON"
|
| 1185 |
+
},
|
| 1186 |
+
"match": "exact",
|
| 1187 |
+
"category": "training_plain",
|
| 1188 |
+
"source_row_zero_based": 224847
|
| 1189 |
+
},
|
| 1190 |
+
{
|
| 1191 |
+
"id": "poc2-0099",
|
| 1192 |
+
"text": "bhai ground floor balcony ki tube light ka status batao?",
|
| 1193 |
+
"expected": {
|
| 1194 |
+
"activity": "light",
|
| 1195 |
+
"subject": "ground_floor_balcony_tube_light",
|
| 1196 |
+
"action": "STATUS"
|
| 1197 |
+
},
|
| 1198 |
+
"match": "exact",
|
| 1199 |
+
"category": "training_plain",
|
| 1200 |
+
"source_row_zero_based": 330450
|
| 1201 |
+
},
|
| 1202 |
+
{
|
| 1203 |
+
"id": "poc2-0100",
|
| 1204 |
+
"text": "run the ceiling fan in the helper's room on max when room temperature goes over 37",
|
| 1205 |
+
"expected": {
|
| 1206 |
+
"activity": "air",
|
| 1207 |
+
"subject": "servant_room_ceiling_fan",
|
| 1208 |
+
"action": "HIGH",
|
| 1209 |
+
"when": {
|
| 1210 |
+
"metric": "temperature",
|
| 1211 |
+
"op": ">",
|
| 1212 |
+
"value": 37
|
| 1213 |
+
}
|
| 1214 |
+
},
|
| 1215 |
+
"match": "exact",
|
| 1216 |
+
"category": "training_conditional",
|
| 1217 |
+
"source_row_zero_based": 172928
|
| 1218 |
+
},
|
| 1219 |
+
{
|
| 1220 |
+
"id": "poc2-0101",
|
| 1221 |
+
"text": "POWER OFF THE FIRST FLOOR GUEST ROOM CEILING FAN WHEN ROOM TEMPERATURE IS LESS THAN 37.",
|
| 1222 |
+
"expected": {
|
| 1223 |
+
"activity": "air",
|
| 1224 |
+
"subject": "first_floor_guest_room_ceiling_fan",
|
| 1225 |
+
"action": "OFF",
|
| 1226 |
+
"when": {
|
| 1227 |
+
"metric": "temperature",
|
| 1228 |
+
"op": "<",
|
| 1229 |
+
"value": 37
|
| 1230 |
+
}
|
| 1231 |
+
},
|
| 1232 |
+
"match": "exact",
|
| 1233 |
+
"category": "training_conditional",
|
| 1234 |
+
"source_row_zero_based": 322745
|
| 1235 |
+
},
|
| 1236 |
+
{
|
| 1237 |
+
"id": "poc2-0102",
|
| 1238 |
+
"text": "yaar roz savere 8:30 baje master bedroom wala cooler start karo.",
|
| 1239 |
+
"expected": {
|
| 1240 |
+
"activity": "cooling",
|
| 1241 |
+
"subject": "master_bedroom_cooler",
|
| 1242 |
+
"action": "ON",
|
| 1243 |
+
"when": {
|
| 1244 |
+
"metric": "time",
|
| 1245 |
+
"op": "==",
|
| 1246 |
+
"value": "08:30"
|
| 1247 |
+
}
|
| 1248 |
+
},
|
| 1249 |
+
"match": "exact",
|
| 1250 |
+
"category": "training_conditional",
|
| 1251 |
+
"source_row_zero_based": 104438
|
| 1252 |
+
},
|
| 1253 |
+
{
|
| 1254 |
+
"id": "poc2-0103",
|
| 1255 |
+
"text": "yaar temp 35 se kam ho to first floor kitchen ka ceiling fan rok do!",
|
| 1256 |
+
"expected": {
|
| 1257 |
+
"activity": "air",
|
| 1258 |
+
"subject": "first_floor_kitchen_ceiling_fan",
|
| 1259 |
+
"action": "OFF",
|
| 1260 |
+
"when": {
|
| 1261 |
+
"metric": "temperature",
|
| 1262 |
+
"op": "<",
|
| 1263 |
+
"value": 35
|
| 1264 |
+
}
|
| 1265 |
+
},
|
| 1266 |
+
"match": "exact",
|
| 1267 |
+
"category": "training_conditional",
|
| 1268 |
+
"source_row_zero_based": 266202
|
| 1269 |
+
},
|
| 1270 |
+
{
|
| 1271 |
+
"id": "poc2-0104",
|
| 1272 |
+
"text": "suno ground floor kitchen ki tube light off karo savere 10 baje",
|
| 1273 |
+
"expected": {
|
| 1274 |
+
"activity": "light",
|
| 1275 |
+
"subject": "ground_floor_kitchen_tube_light",
|
| 1276 |
+
"action": "OFF",
|
| 1277 |
+
"when": {
|
| 1278 |
+
"metric": "time",
|
| 1279 |
+
"op": "==",
|
| 1280 |
+
"value": "10:00"
|
| 1281 |
+
}
|
| 1282 |
+
},
|
| 1283 |
+
"match": "exact",
|
| 1284 |
+
"category": "training_conditional",
|
| 1285 |
+
"source_row_zero_based": 128504
|
| 1286 |
+
},
|
| 1287 |
+
{
|
| 1288 |
+
"id": "poc2-0105",
|
| 1289 |
+
"text": "bathroom ki batti off karo roz dopahar ko 1 baje",
|
| 1290 |
+
"expected": {
|
| 1291 |
+
"activity": "light",
|
| 1292 |
+
"subject": "bathroom_light",
|
| 1293 |
+
"action": "OFF",
|
| 1294 |
+
"when": {
|
| 1295 |
+
"metric": "time",
|
| 1296 |
+
"op": "==",
|
| 1297 |
+
"value": "13:00"
|
| 1298 |
+
}
|
| 1299 |
+
},
|
| 1300 |
+
"match": "exact",
|
| 1301 |
+
"category": "training_conditional",
|
| 1302 |
+
"source_row_zero_based": 82666
|
| 1303 |
+
},
|
| 1304 |
+
{
|
| 1305 |
+
"id": "poc2-0106",
|
| 1306 |
+
"text": "yaar zone 6 ka sprinkler chalao savere 5 baje",
|
| 1307 |
+
"expected": {
|
| 1308 |
+
"activity": "garden",
|
| 1309 |
+
"subject": "sprinkler_zone_6",
|
| 1310 |
+
"action": "ON",
|
| 1311 |
+
"when": {
|
| 1312 |
+
"metric": "time",
|
| 1313 |
+
"op": "==",
|
| 1314 |
+
"value": "05:00"
|
| 1315 |
+
}
|
| 1316 |
+
},
|
| 1317 |
+
"match": "exact",
|
| 1318 |
+
"category": "training_conditional",
|
| 1319 |
+
"source_row_zero_based": 21380
|
| 1320 |
+
},
|
| 1321 |
+
{
|
| 1322 |
+
"id": "poc2-0107",
|
| 1323 |
+
"text": "every day at 1 pm switch off bedroom mirror light!",
|
| 1324 |
+
"expected": {
|
| 1325 |
+
"activity": "light",
|
| 1326 |
+
"subject": "bedroom_mirror_light",
|
| 1327 |
+
"action": "OFF",
|
| 1328 |
+
"when": {
|
| 1329 |
+
"metric": "time",
|
| 1330 |
+
"op": "==",
|
| 1331 |
+
"value": "13:00"
|
| 1332 |
+
}
|
| 1333 |
+
},
|
| 1334 |
+
"match": "exact",
|
| 1335 |
+
"category": "training_conditional",
|
| 1336 |
+
"source_row_zero_based": 219654
|
| 1337 |
+
},
|
| 1338 |
+
{
|
| 1339 |
+
"id": "poc2-0108",
|
| 1340 |
+
"text": "yaar roof ka smart bulb off karo har roz raat ko 9 baje",
|
| 1341 |
+
"expected": {
|
| 1342 |
+
"activity": "light",
|
| 1343 |
+
"subject": "roof_smart_bulb",
|
| 1344 |
+
"action": "OFF",
|
| 1345 |
+
"when": {
|
| 1346 |
+
"metric": "time",
|
| 1347 |
+
"op": "==",
|
| 1348 |
+
"value": "21:00"
|
| 1349 |
+
}
|
| 1350 |
+
},
|
| 1351 |
+
"match": "exact",
|
| 1352 |
+
"category": "training_conditional",
|
| 1353 |
+
"source_row_zero_based": 111680
|
| 1354 |
+
},
|
| 1355 |
+
{
|
| 1356 |
+
"id": "poc2-0109",
|
| 1357 |
+
"text": "Suno roz subah 6 baje hall ka air purifier off kar do.",
|
| 1358 |
+
"expected": {
|
| 1359 |
+
"activity": "air_quality",
|
| 1360 |
+
"subject": "hall_air_purifier",
|
| 1361 |
+
"action": "OFF",
|
| 1362 |
+
"when": {
|
| 1363 |
+
"metric": "time",
|
| 1364 |
+
"op": "==",
|
| 1365 |
+
"value": "06:00"
|
| 1366 |
+
}
|
| 1367 |
+
},
|
| 1368 |
+
"match": "exact",
|
| 1369 |
+
"category": "training_conditional",
|
| 1370 |
+
"source_row_zero_based": 81840
|
| 1371 |
+
},
|
| 1372 |
+
{
|
| 1373 |
+
"id": "poc2-0110",
|
| 1374 |
+
"text": "yaar savere 9 baje first floor balcony wala parde khol do!",
|
| 1375 |
+
"expected": {
|
| 1376 |
+
"activity": "access",
|
| 1377 |
+
"subject": "first_floor_balcony_curtains",
|
| 1378 |
+
"action": "OPEN",
|
| 1379 |
+
"when": {
|
| 1380 |
+
"metric": "time",
|
| 1381 |
+
"op": "==",
|
| 1382 |
+
"value": "09:00"
|
| 1383 |
+
}
|
| 1384 |
+
},
|
| 1385 |
+
"match": "exact",
|
| 1386 |
+
"category": "training_conditional",
|
| 1387 |
+
"source_row_zero_based": 26360
|
| 1388 |
+
},
|
| 1389 |
+
{
|
| 1390 |
+
"id": "poc2-0111",
|
| 1391 |
+
"text": "shut down the air conditioner in the ground floor bedroom when room temperature gets under 29!",
|
| 1392 |
+
"expected": {
|
| 1393 |
+
"activity": "cooling",
|
| 1394 |
+
"subject": "ground_floor_bedroom_ac",
|
| 1395 |
+
"action": "OFF",
|
| 1396 |
+
"when": {
|
| 1397 |
+
"metric": "temperature",
|
| 1398 |
+
"op": "<",
|
| 1399 |
+
"value": 29
|
| 1400 |
+
}
|
| 1401 |
+
},
|
| 1402 |
+
"match": "exact",
|
| 1403 |
+
"category": "training_conditional",
|
| 1404 |
+
"source_row_zero_based": 322325
|
| 1405 |
+
},
|
| 1406 |
+
{
|
| 1407 |
+
"id": "poc2-0112",
|
| 1408 |
+
"text": "acha store room wali cabinet light chalu karo har roz subah 5 baje.",
|
| 1409 |
+
"expected": {
|
| 1410 |
+
"activity": "light",
|
| 1411 |
+
"subject": "store_room_cabinet_light",
|
| 1412 |
+
"action": "ON",
|
| 1413 |
+
"when": {
|
| 1414 |
+
"metric": "time",
|
| 1415 |
+
"op": "==",
|
| 1416 |
+
"value": "05:00"
|
| 1417 |
+
}
|
| 1418 |
+
},
|
| 1419 |
+
"match": "exact",
|
| 1420 |
+
"category": "training_conditional",
|
| 1421 |
+
"source_row_zero_based": 151114
|
| 1422 |
+
},
|
| 1423 |
+
{
|
| 1424 |
+
"id": "poc2-0113",
|
| 1425 |
+
"text": "at 11:30 am run drawing room wall fan!",
|
| 1426 |
+
"expected": {
|
| 1427 |
+
"activity": "air",
|
| 1428 |
+
"subject": "drawing_room_wall_fan",
|
| 1429 |
+
"action": "ON",
|
| 1430 |
+
"when": {
|
| 1431 |
+
"metric": "time",
|
| 1432 |
+
"op": "==",
|
| 1433 |
+
"value": "11:30"
|
| 1434 |
+
}
|
| 1435 |
+
},
|
| 1436 |
+
"match": "exact",
|
| 1437 |
+
"category": "training_conditional",
|
| 1438 |
+
"source_row_zero_based": 161810
|
| 1439 |
+
},
|
| 1440 |
+
{
|
| 1441 |
+
"id": "poc2-0114",
|
| 1442 |
+
"text": "at 4:30 pm sharp run the ceiling fan in the kids room.",
|
| 1443 |
+
"expected": {
|
| 1444 |
+
"activity": "air",
|
| 1445 |
+
"subject": "kids_room_ceiling_fan",
|
| 1446 |
+
"action": "ON",
|
| 1447 |
+
"when": {
|
| 1448 |
+
"metric": "time",
|
| 1449 |
+
"op": "==",
|
| 1450 |
+
"value": "16:30"
|
| 1451 |
+
}
|
| 1452 |
+
},
|
| 1453 |
+
"match": "exact",
|
| 1454 |
+
"category": "training_conditional",
|
| 1455 |
+
"source_row_zero_based": 144159
|
| 1456 |
+
},
|
| 1457 |
+
{
|
| 1458 |
+
"id": "poc2-0115",
|
| 1459 |
+
"text": "bhai jab humidity 40 se niche chala jaye tab guest room ka dehumidifier slow pe karo",
|
| 1460 |
+
"expected": {
|
| 1461 |
+
"activity": "air_quality",
|
| 1462 |
+
"subject": "guest_room_dehumidifier",
|
| 1463 |
+
"action": "LOW",
|
| 1464 |
+
"when": {
|
| 1465 |
+
"metric": "humidity",
|
| 1466 |
+
"op": "<",
|
| 1467 |
+
"value": 40
|
| 1468 |
+
}
|
| 1469 |
+
},
|
| 1470 |
+
"match": "exact",
|
| 1471 |
+
"category": "training_conditional",
|
| 1472 |
+
"source_row_zero_based": 30875
|
| 1473 |
+
},
|
| 1474 |
+
{
|
| 1475 |
+
"id": "poc2-0116",
|
| 1476 |
+
"text": "bhai first floor balcony wala bulb on karo subah 11 baje",
|
| 1477 |
+
"expected": {
|
| 1478 |
+
"activity": "light",
|
| 1479 |
+
"subject": "first_floor_balcony_bulb",
|
| 1480 |
+
"action": "ON",
|
| 1481 |
+
"when": {
|
| 1482 |
+
"metric": "time",
|
| 1483 |
+
"op": "==",
|
| 1484 |
+
"value": "11:00"
|
| 1485 |
+
}
|
| 1486 |
+
},
|
| 1487 |
+
"match": "exact",
|
| 1488 |
+
"category": "training_conditional",
|
| 1489 |
+
"source_row_zero_based": 290671
|
| 1490 |
+
},
|
| 1491 |
+
{
|
| 1492 |
+
"id": "poc2-0117",
|
| 1493 |
+
"text": "acha roz dopahar 2 baje second floor study room wali light off kar do.",
|
| 1494 |
+
"expected": {
|
| 1495 |
+
"activity": "light",
|
| 1496 |
+
"subject": "second_floor_study_room_light",
|
| 1497 |
+
"action": "OFF",
|
| 1498 |
+
"when": {
|
| 1499 |
+
"metric": "time",
|
| 1500 |
+
"op": "==",
|
| 1501 |
+
"value": "14:00"
|
| 1502 |
+
}
|
| 1503 |
+
},
|
| 1504 |
+
"match": "exact",
|
| 1505 |
+
"category": "training_conditional",
|
| 1506 |
+
"source_row_zero_based": 8389
|
| 1507 |
+
},
|
| 1508 |
+
{
|
| 1509 |
+
"id": "poc2-0118",
|
| 1510 |
+
"text": "at 12:30 pm run the store room cabinet light",
|
| 1511 |
+
"expected": {
|
| 1512 |
+
"activity": "light",
|
| 1513 |
+
"subject": "store_room_cabinet_light",
|
| 1514 |
+
"action": "ON",
|
| 1515 |
+
"when": {
|
| 1516 |
+
"metric": "time",
|
| 1517 |
+
"op": "==",
|
| 1518 |
+
"value": "12:30"
|
| 1519 |
+
}
|
| 1520 |
+
},
|
| 1521 |
+
"match": "exact",
|
| 1522 |
+
"category": "training_conditional",
|
| 1523 |
+
"source_row_zero_based": 69859
|
| 1524 |
+
},
|
| 1525 |
+
{
|
| 1526 |
+
"id": "poc2-0119",
|
| 1527 |
+
"text": "yaar car charger band karo agar battery 70 cross kare.",
|
| 1528 |
+
"expected": {
|
| 1529 |
+
"activity": "power",
|
| 1530 |
+
"subject": "ev_charger",
|
| 1531 |
+
"action": "OFF",
|
| 1532 |
+
"when": {
|
| 1533 |
+
"metric": "battery",
|
| 1534 |
+
"op": ">",
|
| 1535 |
+
"value": 70
|
| 1536 |
+
}
|
| 1537 |
+
},
|
| 1538 |
+
"match": "exact",
|
| 1539 |
+
"category": "training_conditional",
|
| 1540 |
+
"source_row_zero_based": 191073
|
| 1541 |
+
},
|
| 1542 |
+
{
|
| 1543 |
+
"id": "poc2-0120",
|
| 1544 |
+
"text": "please run the water heater in the ground floor washroom whenever temperature falls below 17",
|
| 1545 |
+
"expected": {
|
| 1546 |
+
"activity": "heating",
|
| 1547 |
+
"subject": "ground_floor_washroom_geyser",
|
| 1548 |
+
"action": "ON",
|
| 1549 |
+
"when": {
|
| 1550 |
+
"metric": "temperature",
|
| 1551 |
+
"op": "<",
|
| 1552 |
+
"value": 17
|
| 1553 |
+
}
|
| 1554 |
+
},
|
| 1555 |
+
"match": "exact",
|
| 1556 |
+
"category": "training_conditional",
|
| 1557 |
+
"source_row_zero_based": 299999
|
| 1558 |
+
},
|
| 1559 |
+
{
|
| 1560 |
+
"id": "poc2-0121",
|
| 1561 |
+
"text": "please mitti ki nami 10 se niche chala jaye to entrance wala fountain start kar do",
|
| 1562 |
+
"expected": {
|
| 1563 |
+
"activity": "garden",
|
| 1564 |
+
"subject": "entrance_fountain",
|
| 1565 |
+
"action": "ON",
|
| 1566 |
+
"when": {
|
| 1567 |
+
"metric": "soil_moisture",
|
| 1568 |
+
"op": "<",
|
| 1569 |
+
"value": 10
|
| 1570 |
+
}
|
| 1571 |
+
},
|
| 1572 |
+
"match": "exact",
|
| 1573 |
+
"category": "training_conditional",
|
| 1574 |
+
"source_row_zero_based": 242917
|
| 1575 |
+
},
|
| 1576 |
+
{
|
| 1577 |
+
"id": "poc2-0122",
|
| 1578 |
+
"text": "PLEASE BARAMDE KA FAN KI SPEED TEZ KARO AGAR ROOM KA TEMPERATURE 38 CROSS KARE",
|
| 1579 |
+
"expected": {
|
| 1580 |
+
"activity": "air",
|
| 1581 |
+
"subject": "veranda_ceiling_fan",
|
| 1582 |
+
"action": "HIGH",
|
| 1583 |
+
"when": {
|
| 1584 |
+
"metric": "temperature",
|
| 1585 |
+
"op": ">",
|
| 1586 |
+
"value": 38
|
| 1587 |
+
}
|
| 1588 |
+
},
|
| 1589 |
+
"match": "exact",
|
| 1590 |
+
"category": "training_conditional",
|
| 1591 |
+
"source_row_zero_based": 482
|
| 1592 |
+
},
|
| 1593 |
+
{
|
| 1594 |
+
"id": "poc2-0123",
|
| 1595 |
+
"text": "acha har roz shaam 5 baje drawing room ki ceiling light laga do",
|
| 1596 |
+
"expected": {
|
| 1597 |
+
"activity": "light",
|
| 1598 |
+
"subject": "drawing_room_ceiling_light",
|
| 1599 |
+
"action": "ON",
|
| 1600 |
+
"when": {
|
| 1601 |
+
"metric": "time",
|
| 1602 |
+
"op": "==",
|
| 1603 |
+
"value": "17:00"
|
| 1604 |
+
}
|
| 1605 |
+
},
|
| 1606 |
+
"match": "exact",
|
| 1607 |
+
"category": "training_conditional",
|
| 1608 |
+
"source_row_zero_based": 231627
|
| 1609 |
+
},
|
| 1610 |
+
{
|
| 1611 |
+
"id": "poc2-0124",
|
| 1612 |
+
"text": "Yaar veranda wali spotlight rok do roz savere 8:30 baje",
|
| 1613 |
+
"expected": {
|
| 1614 |
+
"activity": "light",
|
| 1615 |
+
"subject": "veranda_spotlight",
|
| 1616 |
+
"action": "OFF",
|
| 1617 |
+
"when": {
|
| 1618 |
+
"metric": "time",
|
| 1619 |
+
"op": "==",
|
| 1620 |
+
"value": "08:30"
|
| 1621 |
+
}
|
| 1622 |
+
},
|
| 1623 |
+
"match": "exact",
|
| 1624 |
+
"category": "training_conditional",
|
| 1625 |
+
"source_row_zero_based": 206922
|
| 1626 |
+
},
|
| 1627 |
+
{
|
| 1628 |
+
"id": "poc2-0125",
|
| 1629 |
+
"text": "Switch off lobby tube light daily at 1:30 pm.",
|
| 1630 |
+
"expected": {
|
| 1631 |
+
"activity": "light",
|
| 1632 |
+
"subject": "lobby_tube_light",
|
| 1633 |
+
"action": "OFF",
|
| 1634 |
+
"when": {
|
| 1635 |
+
"metric": "time",
|
| 1636 |
+
"op": "==",
|
| 1637 |
+
"value": "13:30"
|
| 1638 |
+
}
|
| 1639 |
+
},
|
| 1640 |
+
"match": "exact",
|
| 1641 |
+
"category": "training_conditional",
|
| 1642 |
+
"source_row_zero_based": 187000
|
| 1643 |
+
},
|
| 1644 |
+
{
|
| 1645 |
+
"id": "poc2-0126",
|
| 1646 |
+
"text": "BHAI TANKI KA PUMP LAGA DO JAB TANKI KA LEVEL 55 SE NICHE CHALA JAYE",
|
| 1647 |
+
"expected": {
|
| 1648 |
+
"activity": "water",
|
| 1649 |
+
"subject": "water_motor",
|
| 1650 |
+
"action": "ON",
|
| 1651 |
+
"when": {
|
| 1652 |
+
"metric": "water_level",
|
| 1653 |
+
"op": "<",
|
| 1654 |
+
"value": 55
|
| 1655 |
+
}
|
| 1656 |
+
},
|
| 1657 |
+
"match": "exact",
|
| 1658 |
+
"category": "training_conditional",
|
| 1659 |
+
"source_row_zero_based": 274032
|
| 1660 |
+
},
|
| 1661 |
+
{
|
| 1662 |
+
"id": "poc2-0127",
|
| 1663 |
+
"text": "Second floor kitchen ka pankha max mode pe daal do jab kamre ka temperature 19 cross kare",
|
| 1664 |
+
"expected": {
|
| 1665 |
+
"activity": "air",
|
| 1666 |
+
"subject": "second_floor_kitchen_ceiling_fan",
|
| 1667 |
+
"action": "HIGH",
|
| 1668 |
+
"when": {
|
| 1669 |
+
"metric": "temperature",
|
| 1670 |
+
"op": ">",
|
| 1671 |
+
"value": 19
|
| 1672 |
+
}
|
| 1673 |
+
},
|
| 1674 |
+
"match": "exact",
|
| 1675 |
+
"category": "training_conditional",
|
| 1676 |
+
"source_row_zero_based": 210389
|
| 1677 |
+
},
|
| 1678 |
+
{
|
| 1679 |
+
"id": "poc2-0128",
|
| 1680 |
+
"text": "Turn off balcony tubelight daily at 4 pm!",
|
| 1681 |
+
"expected": {
|
| 1682 |
+
"activity": "light",
|
| 1683 |
+
"subject": "balcony_tube_light",
|
| 1684 |
+
"action": "OFF",
|
| 1685 |
+
"when": {
|
| 1686 |
+
"metric": "time",
|
| 1687 |
+
"op": "==",
|
| 1688 |
+
"value": "16:00"
|
| 1689 |
+
}
|
| 1690 |
+
},
|
| 1691 |
+
"match": "exact",
|
| 1692 |
+
"category": "training_conditional",
|
| 1693 |
+
"source_row_zero_based": 263773
|
| 1694 |
+
},
|
| 1695 |
+
{
|
| 1696 |
+
"id": "poc2-0129",
|
| 1697 |
+
"text": "Hey switch off the first floor hall air conditioner whenever temperature is less than 37.",
|
| 1698 |
+
"expected": {
|
| 1699 |
+
"activity": "cooling",
|
| 1700 |
+
"subject": "first_floor_hall_ac",
|
| 1701 |
+
"action": "OFF",
|
| 1702 |
+
"when": {
|
| 1703 |
+
"metric": "temperature",
|
| 1704 |
+
"op": "<",
|
| 1705 |
+
"value": 37
|
| 1706 |
+
}
|
| 1707 |
+
},
|
| 1708 |
+
"match": "exact",
|
| 1709 |
+
"category": "training_conditional",
|
| 1710 |
+
"source_row_zero_based": 210724
|
| 1711 |
+
},
|
| 1712 |
+
{
|
| 1713 |
+
"id": "poc2-0130",
|
| 1714 |
+
"text": "YAAR BEDROOM WALA AIR PURIFIER SLOW MODE PE DAAL DO JAB AIR QUALITY 125 SE NEECHE JAYE.",
|
| 1715 |
+
"expected": {
|
| 1716 |
+
"activity": "air_quality",
|
| 1717 |
+
"subject": "bedroom_air_purifier",
|
| 1718 |
+
"action": "LOW",
|
| 1719 |
+
"when": {
|
| 1720 |
+
"metric": "aqi",
|
| 1721 |
+
"op": "<",
|
| 1722 |
+
"value": 125
|
| 1723 |
+
}
|
| 1724 |
+
},
|
| 1725 |
+
"match": "exact",
|
| 1726 |
+
"category": "training_conditional",
|
| 1727 |
+
"source_row_zero_based": 161714
|
| 1728 |
+
},
|
| 1729 |
+
{
|
| 1730 |
+
"id": "poc2-0131",
|
| 1731 |
+
"text": "please jaise hi kamre ka temperature 19 se neeche jaye to first floor kitchen ka geyser shuru kar do",
|
| 1732 |
+
"expected": {
|
| 1733 |
+
"activity": "heating",
|
| 1734 |
+
"subject": "first_floor_kitchen_geyser",
|
| 1735 |
+
"action": "ON",
|
| 1736 |
+
"when": {
|
| 1737 |
+
"metric": "temperature",
|
| 1738 |
+
"op": "<",
|
| 1739 |
+
"value": 19
|
| 1740 |
+
}
|
| 1741 |
+
},
|
| 1742 |
+
"match": "exact",
|
| 1743 |
+
"category": "training_conditional",
|
| 1744 |
+
"source_row_zero_based": 277932
|
| 1745 |
+
},
|
| 1746 |
+
{
|
| 1747 |
+
"id": "poc2-0132",
|
| 1748 |
+
"text": "Yaar har roz shaam 6:30 baje ground floor balcony wala curtains bandh kar do!",
|
| 1749 |
+
"expected": {
|
| 1750 |
+
"activity": "access",
|
| 1751 |
+
"subject": "ground_floor_balcony_curtains",
|
| 1752 |
+
"action": "CLOSE",
|
| 1753 |
+
"when": {
|
| 1754 |
+
"metric": "time",
|
| 1755 |
+
"op": "==",
|
| 1756 |
+
"value": "18:30"
|
| 1757 |
+
}
|
| 1758 |
+
},
|
| 1759 |
+
"match": "exact",
|
| 1760 |
+
"category": "training_conditional",
|
| 1761 |
+
"source_row_zero_based": 299610
|
| 1762 |
+
},
|
| 1763 |
+
{
|
| 1764 |
+
"id": "poc2-0133",
|
| 1765 |
+
"text": "pull open the first floor bathroom window daily at 11 am",
|
| 1766 |
+
"expected": {
|
| 1767 |
+
"activity": "access",
|
| 1768 |
+
"subject": "first_floor_bathroom_window",
|
| 1769 |
+
"action": "OPEN",
|
| 1770 |
+
"when": {
|
| 1771 |
+
"metric": "time",
|
| 1772 |
+
"op": "==",
|
| 1773 |
+
"value": "11:00"
|
| 1774 |
+
}
|
| 1775 |
+
},
|
| 1776 |
+
"match": "exact",
|
| 1777 |
+
"category": "training_conditional",
|
| 1778 |
+
"source_row_zero_based": 76101
|
| 1779 |
+
},
|
| 1780 |
+
{
|
| 1781 |
+
"id": "poc2-0134",
|
| 1782 |
+
"text": "yaar har roz raat ko 8 baje first floor washroom wala socket off karo",
|
| 1783 |
+
"expected": {
|
| 1784 |
+
"activity": "power",
|
| 1785 |
+
"subject": "first_floor_washroom_socket",
|
| 1786 |
+
"action": "OFF",
|
| 1787 |
+
"when": {
|
| 1788 |
+
"metric": "time",
|
| 1789 |
+
"op": "==",
|
| 1790 |
+
"value": "20:00"
|
| 1791 |
+
}
|
| 1792 |
+
},
|
| 1793 |
+
"match": "exact",
|
| 1794 |
+
"category": "training_conditional",
|
| 1795 |
+
"source_row_zero_based": 223338
|
| 1796 |
+
},
|
| 1797 |
+
{
|
| 1798 |
+
"id": "poc2-0135",
|
| 1799 |
+
"text": "In case room temperature gets under 35, turn off the ceiling fan in the kitchen!",
|
| 1800 |
+
"expected": {
|
| 1801 |
+
"activity": "air",
|
| 1802 |
+
"subject": "kitchen_ceiling_fan",
|
| 1803 |
+
"action": "OFF",
|
| 1804 |
+
"when": {
|
| 1805 |
+
"metric": "temperature",
|
| 1806 |
+
"op": "<",
|
| 1807 |
+
"value": 35
|
| 1808 |
+
}
|
| 1809 |
+
},
|
| 1810 |
+
"match": "exact",
|
| 1811 |
+
"category": "training_conditional",
|
| 1812 |
+
"source_row_zero_based": 332510
|
| 1813 |
+
},
|
| 1814 |
+
{
|
| 1815 |
+
"id": "poc2-0136",
|
| 1816 |
+
"text": "Please courtyard ki fairy lights shuru karo roz savere 9 baje.",
|
| 1817 |
+
"expected": {
|
| 1818 |
+
"activity": "light",
|
| 1819 |
+
"subject": "courtyard_fairy_lights",
|
| 1820 |
+
"action": "ON",
|
| 1821 |
+
"when": {
|
| 1822 |
+
"metric": "time",
|
| 1823 |
+
"op": "==",
|
| 1824 |
+
"value": "09:00"
|
| 1825 |
+
}
|
| 1826 |
+
},
|
| 1827 |
+
"match": "exact",
|
| 1828 |
+
"category": "training_conditional",
|
| 1829 |
+
"source_row_zero_based": 22443
|
| 1830 |
+
},
|
| 1831 |
+
{
|
| 1832 |
+
"id": "poc2-0137",
|
| 1833 |
+
"text": "switch kitchen table fan to high whenever temperature is more than 43.",
|
| 1834 |
+
"expected": {
|
| 1835 |
+
"activity": "air",
|
| 1836 |
+
"subject": "kitchen_table_fan",
|
| 1837 |
+
"action": "HIGH",
|
| 1838 |
+
"when": {
|
| 1839 |
+
"metric": "temperature",
|
| 1840 |
+
"op": ">",
|
| 1841 |
+
"value": 43
|
| 1842 |
+
}
|
| 1843 |
+
},
|
| 1844 |
+
"match": "exact",
|
| 1845 |
+
"category": "training_conditional",
|
| 1846 |
+
"source_row_zero_based": 71589
|
| 1847 |
+
},
|
| 1848 |
+
{
|
| 1849 |
+
"id": "poc2-0138",
|
| 1850 |
+
"text": "shut off the first floor kitchen fan once temp drops below 26",
|
| 1851 |
+
"expected": {
|
| 1852 |
+
"activity": "air",
|
| 1853 |
+
"subject": "first_floor_kitchen_ceiling_fan",
|
| 1854 |
+
"action": "OFF",
|
| 1855 |
+
"when": {
|
| 1856 |
+
"metric": "temperature",
|
| 1857 |
+
"op": "<",
|
| 1858 |
+
"value": 26
|
| 1859 |
+
}
|
| 1860 |
+
},
|
| 1861 |
+
"match": "exact",
|
| 1862 |
+
"category": "training_conditional",
|
| 1863 |
+
"source_row_zero_based": 123420
|
| 1864 |
+
},
|
| 1865 |
+
{
|
| 1866 |
+
"id": "poc2-0139",
|
| 1867 |
+
"text": "please roz shaam 7 baje first floor kitchen wala bulb bandh kar do.",
|
| 1868 |
+
"expected": {
|
| 1869 |
+
"activity": "light",
|
| 1870 |
+
"subject": "first_floor_kitchen_bulb",
|
| 1871 |
+
"action": "OFF",
|
| 1872 |
+
"when": {
|
| 1873 |
+
"metric": "time",
|
| 1874 |
+
"op": "==",
|
| 1875 |
+
"value": "19:00"
|
| 1876 |
+
}
|
| 1877 |
+
},
|
| 1878 |
+
"match": "exact",
|
| 1879 |
+
"category": "training_conditional",
|
| 1880 |
+
"source_row_zero_based": 166128
|
| 1881 |
+
},
|
| 1882 |
+
{
|
| 1883 |
+
"id": "poc2-0140",
|
| 1884 |
+
"text": "STOP THE SECOND FLOOR BATHROOM WATER HEATER IF TEMP IS MORE THAN 41.",
|
| 1885 |
+
"expected": {
|
| 1886 |
+
"activity": "heating",
|
| 1887 |
+
"subject": "second_floor_bathroom_geyser",
|
| 1888 |
+
"action": "OFF",
|
| 1889 |
+
"when": {
|
| 1890 |
+
"metric": "temperature",
|
| 1891 |
+
"op": ">",
|
| 1892 |
+
"value": 41
|
| 1893 |
+
}
|
| 1894 |
+
},
|
| 1895 |
+
"match": "exact",
|
| 1896 |
+
"category": "training_conditional",
|
| 1897 |
+
"source_row_zero_based": 69771
|
| 1898 |
+
},
|
| 1899 |
+
{
|
| 1900 |
+
"id": "poc2-0141",
|
| 1901 |
+
"text": "yaar jab hawa me nami 70 cross kare tab workshop ka exhaust chalao",
|
| 1902 |
+
"expected": {
|
| 1903 |
+
"activity": "air",
|
| 1904 |
+
"subject": "workshop_exhaust_fan",
|
| 1905 |
+
"action": "ON",
|
| 1906 |
+
"when": {
|
| 1907 |
+
"metric": "humidity",
|
| 1908 |
+
"op": ">",
|
| 1909 |
+
"value": 70
|
| 1910 |
+
}
|
| 1911 |
+
},
|
| 1912 |
+
"match": "exact",
|
| 1913 |
+
"category": "training_conditional",
|
| 1914 |
+
"source_row_zero_based": 23503
|
| 1915 |
+
},
|
| 1916 |
+
{
|
| 1917 |
+
"id": "poc2-0142",
|
| 1918 |
+
"text": "start balcony smart bulb daily at 8 pm",
|
| 1919 |
+
"expected": {
|
| 1920 |
+
"activity": "light",
|
| 1921 |
+
"subject": "balcony_smart_bulb",
|
| 1922 |
+
"action": "ON",
|
| 1923 |
+
"when": {
|
| 1924 |
+
"metric": "time",
|
| 1925 |
+
"op": "==",
|
| 1926 |
+
"value": "20:00"
|
| 1927 |
+
}
|
| 1928 |
+
},
|
| 1929 |
+
"match": "exact",
|
| 1930 |
+
"category": "training_conditional",
|
| 1931 |
+
"source_row_zero_based": 134514
|
| 1932 |
+
},
|
| 1933 |
+
{
|
| 1934 |
+
"id": "poc2-0143",
|
| 1935 |
+
"text": "yaar first floor corridor wala bulb laga do roz raat 8:30 baje",
|
| 1936 |
+
"expected": {
|
| 1937 |
+
"activity": "light",
|
| 1938 |
+
"subject": "first_floor_corridor_bulb",
|
| 1939 |
+
"action": "ON",
|
| 1940 |
+
"when": {
|
| 1941 |
+
"metric": "time",
|
| 1942 |
+
"op": "==",
|
| 1943 |
+
"value": "20:30"
|
| 1944 |
+
}
|
| 1945 |
+
},
|
| 1946 |
+
"match": "exact",
|
| 1947 |
+
"category": "training_conditional",
|
| 1948 |
+
"source_row_zero_based": 31359
|
| 1949 |
+
},
|
| 1950 |
+
{
|
| 1951 |
+
"id": "poc2-0144",
|
| 1952 |
+
"text": "if room temperature falls below 18 then power off kids room wall fan.",
|
| 1953 |
+
"expected": {
|
| 1954 |
+
"activity": "air",
|
| 1955 |
+
"subject": "kids_room_wall_fan",
|
| 1956 |
+
"action": "OFF",
|
| 1957 |
+
"when": {
|
| 1958 |
+
"metric": "temperature",
|
| 1959 |
+
"op": "<",
|
| 1960 |
+
"value": 18
|
| 1961 |
+
}
|
| 1962 |
+
},
|
| 1963 |
+
"match": "exact",
|
| 1964 |
+
"category": "training_conditional",
|
| 1965 |
+
"source_row_zero_based": 1604
|
| 1966 |
+
},
|
| 1967 |
+
{
|
| 1968 |
+
"id": "poc2-0145",
|
| 1969 |
+
"text": "Shut down the blower in the bedroom when room temperature is more than 21!",
|
| 1970 |
+
"expected": {
|
| 1971 |
+
"activity": "heating",
|
| 1972 |
+
"subject": "bedroom_blower",
|
| 1973 |
+
"action": "OFF",
|
| 1974 |
+
"when": {
|
| 1975 |
+
"metric": "temperature",
|
| 1976 |
+
"op": ">",
|
| 1977 |
+
"value": 21
|
| 1978 |
+
}
|
| 1979 |
+
},
|
| 1980 |
+
"match": "exact",
|
| 1981 |
+
"category": "training_conditional",
|
| 1982 |
+
"source_row_zero_based": 258885
|
| 1983 |
+
},
|
| 1984 |
+
{
|
| 1985 |
+
"id": "poc2-0146",
|
| 1986 |
+
"text": "start the fan in the first floor study room if room temperature rises above 48.",
|
| 1987 |
+
"expected": {
|
| 1988 |
+
"activity": "air",
|
| 1989 |
+
"subject": "first_floor_study_room_ceiling_fan",
|
| 1990 |
+
"action": "ON",
|
| 1991 |
+
"when": {
|
| 1992 |
+
"metric": "temperature",
|
| 1993 |
+
"op": ">",
|
| 1994 |
+
"value": 48
|
| 1995 |
+
}
|
| 1996 |
+
},
|
| 1997 |
+
"match": "exact",
|
| 1998 |
+
"category": "training_conditional",
|
| 1999 |
+
"source_row_zero_based": 35393
|
| 2000 |
+
},
|
| 2001 |
+
{
|
| 2002 |
+
"id": "poc2-0147",
|
| 2003 |
+
"text": "if room temperature falls below 31 then turn off ground floor kitchen fan",
|
| 2004 |
+
"expected": {
|
| 2005 |
+
"activity": "air",
|
| 2006 |
+
"subject": "ground_floor_kitchen_ceiling_fan",
|
| 2007 |
+
"action": "OFF",
|
| 2008 |
+
"when": {
|
| 2009 |
+
"metric": "temperature",
|
| 2010 |
+
"op": "<",
|
| 2011 |
+
"value": 31
|
| 2012 |
+
}
|
| 2013 |
+
},
|
| 2014 |
+
"match": "exact",
|
| 2015 |
+
"category": "training_conditional",
|
| 2016 |
+
"source_row_zero_based": 36984
|
| 2017 |
+
},
|
| 2018 |
+
{
|
| 2019 |
+
"id": "poc2-0148",
|
| 2020 |
+
"text": "in case room temperature goes over 34 then stop the parents room room heater!",
|
| 2021 |
+
"expected": {
|
| 2022 |
+
"activity": "heating",
|
| 2023 |
+
"subject": "parents_room_room_heater",
|
| 2024 |
+
"action": "OFF",
|
| 2025 |
+
"when": {
|
| 2026 |
+
"metric": "temperature",
|
| 2027 |
+
"op": ">",
|
| 2028 |
+
"value": 34
|
| 2029 |
+
}
|
| 2030 |
+
},
|
| 2031 |
+
"match": "exact",
|
| 2032 |
+
"category": "training_conditional",
|
| 2033 |
+
"source_row_zero_based": 29243
|
| 2034 |
+
},
|
| 2035 |
+
{
|
| 2036 |
+
"id": "poc2-0149",
|
| 2037 |
+
"text": "backyard ki batti on karo roz shaam 5:30 baje!",
|
| 2038 |
+
"expected": {
|
| 2039 |
+
"activity": "light",
|
| 2040 |
+
"subject": "backyard_light",
|
| 2041 |
+
"action": "ON",
|
| 2042 |
+
"when": {
|
| 2043 |
+
"metric": "time",
|
| 2044 |
+
"op": "==",
|
| 2045 |
+
"value": "17:30"
|
| 2046 |
+
}
|
| 2047 |
+
},
|
| 2048 |
+
"match": "exact",
|
| 2049 |
+
"category": "training_conditional",
|
| 2050 |
+
"source_row_zero_based": 187166
|
| 2051 |
+
},
|
| 2052 |
+
{
|
| 2053 |
+
"id": "poc2-0150",
|
| 2054 |
+
"text": "at 3 pm sharp turn off camera 3",
|
| 2055 |
+
"expected": {
|
| 2056 |
+
"activity": "security",
|
| 2057 |
+
"subject": "camera_3",
|
| 2058 |
+
"action": "OFF",
|
| 2059 |
+
"when": {
|
| 2060 |
+
"metric": "time",
|
| 2061 |
+
"op": "==",
|
| 2062 |
+
"value": "15:00"
|
| 2063 |
+
}
|
| 2064 |
+
},
|
| 2065 |
+
"match": "exact",
|
| 2066 |
+
"category": "training_conditional",
|
| 2067 |
+
"source_row_zero_based": 247516
|
| 2068 |
+
},
|
| 2069 |
+
{
|
| 2070 |
+
"id": "poc2-0151",
|
| 2071 |
+
"text": "BHAI AGAR TEMP 39 KE UPAR CHALA JAYE TAB SECOND FLOOR GUEST ROOM WALA AIR CONDITIONER KO TEZ PE RAKHO",
|
| 2072 |
+
"expected": {
|
| 2073 |
+
"activity": "cooling",
|
| 2074 |
+
"subject": "second_floor_guest_room_ac",
|
| 2075 |
+
"action": "HIGH",
|
| 2076 |
+
"when": {
|
| 2077 |
+
"metric": "temperature",
|
| 2078 |
+
"op": ">",
|
| 2079 |
+
"value": 39
|
| 2080 |
+
}
|
| 2081 |
+
},
|
| 2082 |
+
"match": "exact",
|
| 2083 |
+
"category": "training_conditional",
|
| 2084 |
+
"source_row_zero_based": 245084
|
| 2085 |
+
},
|
| 2086 |
+
{
|
| 2087 |
+
"id": "poc2-0152",
|
| 2088 |
+
"text": "yaar humidity 80 se neeche jaye to master bedroom ka humidifier chala do",
|
| 2089 |
+
"expected": {
|
| 2090 |
+
"activity": "air_quality",
|
| 2091 |
+
"subject": "master_bedroom_humidifier",
|
| 2092 |
+
"action": "ON",
|
| 2093 |
+
"when": {
|
| 2094 |
+
"metric": "humidity",
|
| 2095 |
+
"op": "<",
|
| 2096 |
+
"value": 80
|
| 2097 |
+
}
|
| 2098 |
+
},
|
| 2099 |
+
"match": "exact",
|
| 2100 |
+
"category": "training_conditional",
|
| 2101 |
+
"source_row_zero_based": 69761
|
| 2102 |
+
},
|
| 2103 |
+
{
|
| 2104 |
+
"id": "poc2-0153",
|
| 2105 |
+
"text": "please temperature 20 paar kare to washroom wala geyser off kardo",
|
| 2106 |
+
"expected": {
|
| 2107 |
+
"activity": "heating",
|
| 2108 |
+
"subject": "washroom_geyser",
|
| 2109 |
+
"action": "OFF",
|
| 2110 |
+
"when": {
|
| 2111 |
+
"metric": "temperature",
|
| 2112 |
+
"op": ">",
|
| 2113 |
+
"value": 20
|
| 2114 |
+
}
|
| 2115 |
+
},
|
| 2116 |
+
"match": "exact",
|
| 2117 |
+
"category": "training_conditional",
|
| 2118 |
+
"source_row_zero_based": 171102
|
| 2119 |
+
},
|
| 2120 |
+
{
|
| 2121 |
+
"id": "poc2-0154",
|
| 2122 |
+
"text": "at 6 pm sharp power on the hall table fan!",
|
| 2123 |
+
"expected": {
|
| 2124 |
+
"activity": "air",
|
| 2125 |
+
"subject": "hall_table_fan",
|
| 2126 |
+
"action": "ON",
|
| 2127 |
+
"when": {
|
| 2128 |
+
"metric": "time",
|
| 2129 |
+
"op": "==",
|
| 2130 |
+
"value": "18:00"
|
| 2131 |
+
}
|
| 2132 |
+
},
|
| 2133 |
+
"match": "exact",
|
| 2134 |
+
"category": "training_conditional",
|
| 2135 |
+
"source_row_zero_based": 33339
|
| 2136 |
+
},
|
| 2137 |
+
{
|
| 2138 |
+
"id": "poc2-0155",
|
| 2139 |
+
"text": "ACHA HAR ROZ RAAT 10 BAJE SECOND FLOOR GUEST ROOM KA SMART SWITCH BANDH KAR DO!",
|
| 2140 |
+
"expected": {
|
| 2141 |
+
"activity": "power",
|
| 2142 |
+
"subject": "second_floor_guest_room_smart_switch",
|
| 2143 |
+
"action": "OFF",
|
| 2144 |
+
"when": {
|
| 2145 |
+
"metric": "time",
|
| 2146 |
+
"op": "==",
|
| 2147 |
+
"value": "22:00"
|
| 2148 |
+
}
|
| 2149 |
+
},
|
| 2150 |
+
"match": "exact",
|
| 2151 |
+
"category": "training_conditional",
|
| 2152 |
+
"source_row_zero_based": 319545
|
| 2153 |
+
},
|
| 2154 |
+
{
|
| 2155 |
+
"id": "poc2-0156",
|
| 2156 |
+
"text": "IN CASE TEMP RISES ABOVE 44 SET THE MASTER BEDROOM PEDESTAL FAN TO HIGH.",
|
| 2157 |
+
"expected": {
|
| 2158 |
+
"activity": "air",
|
| 2159 |
+
"subject": "master_bedroom_pedestal_fan",
|
| 2160 |
+
"action": "HIGH",
|
| 2161 |
+
"when": {
|
| 2162 |
+
"metric": "temperature",
|
| 2163 |
+
"op": ">",
|
| 2164 |
+
"value": 44
|
| 2165 |
+
}
|
| 2166 |
+
},
|
| 2167 |
+
"match": "exact",
|
| 2168 |
+
"category": "training_conditional",
|
| 2169 |
+
"source_row_zero_based": 282553
|
| 2170 |
+
},
|
| 2171 |
+
{
|
| 2172 |
+
"id": "poc2-0157",
|
| 2173 |
+
"text": "please set the first floor kitchen fan on high whenever room temperature crosses 22",
|
| 2174 |
+
"expected": {
|
| 2175 |
+
"activity": "air",
|
| 2176 |
+
"subject": "first_floor_kitchen_ceiling_fan",
|
| 2177 |
+
"action": "HIGH",
|
| 2178 |
+
"when": {
|
| 2179 |
+
"metric": "temperature",
|
| 2180 |
+
"op": ">",
|
| 2181 |
+
"value": 22
|
| 2182 |
+
}
|
| 2183 |
+
},
|
| 2184 |
+
"match": "exact",
|
| 2185 |
+
"category": "training_conditional",
|
| 2186 |
+
"source_row_zero_based": 110183
|
| 2187 |
+
},
|
| 2188 |
+
{
|
| 2189 |
+
"id": "poc2-0158",
|
| 2190 |
+
"text": "Start up office room heater whenever temperature goes below 43",
|
| 2191 |
+
"expected": {
|
| 2192 |
+
"activity": "heating",
|
| 2193 |
+
"subject": "home_office_room_heater",
|
| 2194 |
+
"action": "ON",
|
| 2195 |
+
"when": {
|
| 2196 |
+
"metric": "temperature",
|
| 2197 |
+
"op": "<",
|
| 2198 |
+
"value": 43
|
| 2199 |
+
}
|
| 2200 |
+
},
|
| 2201 |
+
"match": "exact",
|
| 2202 |
+
"category": "training_conditional",
|
| 2203 |
+
"source_row_zero_based": 50998
|
| 2204 |
+
},
|
| 2205 |
+
{
|
| 2206 |
+
"id": "poc2-0159",
|
| 2207 |
+
"text": "in case temp drops below 16 put on the geyser in the washroom!",
|
| 2208 |
+
"expected": {
|
| 2209 |
+
"activity": "heating",
|
| 2210 |
+
"subject": "washroom_geyser",
|
| 2211 |
+
"action": "ON",
|
| 2212 |
+
"when": {
|
| 2213 |
+
"metric": "temperature",
|
| 2214 |
+
"op": "<",
|
| 2215 |
+
"value": 16
|
| 2216 |
+
}
|
| 2217 |
+
},
|
| 2218 |
+
"match": "exact",
|
| 2219 |
+
"category": "training_conditional",
|
| 2220 |
+
"source_row_zero_based": 151474
|
| 2221 |
+
},
|
| 2222 |
+
{
|
| 2223 |
+
"id": "poc2-0160",
|
| 2224 |
+
"text": "suno study room wala speaker band karo har roz subah 7 baje.",
|
| 2225 |
+
"expected": {
|
| 2226 |
+
"activity": "music",
|
| 2227 |
+
"subject": "study_room_speaker",
|
| 2228 |
+
"action": "OFF",
|
| 2229 |
+
"when": {
|
| 2230 |
+
"metric": "time",
|
| 2231 |
+
"op": "==",
|
| 2232 |
+
"value": "07:00"
|
| 2233 |
+
}
|
| 2234 |
+
},
|
| 2235 |
+
"match": "exact",
|
| 2236 |
+
"category": "training_conditional",
|
| 2237 |
+
"source_row_zero_based": 124876
|
| 2238 |
+
},
|
| 2239 |
+
{
|
| 2240 |
+
"id": "poc2-0161",
|
| 2241 |
+
"text": "at 2 pm sharp power off coffee maker",
|
| 2242 |
+
"expected": {
|
| 2243 |
+
"activity": "kitchen",
|
| 2244 |
+
"subject": "coffee_machine",
|
| 2245 |
+
"action": "STOP",
|
| 2246 |
+
"when": {
|
| 2247 |
+
"metric": "time",
|
| 2248 |
+
"op": "==",
|
| 2249 |
+
"value": "14:00"
|
| 2250 |
+
}
|
| 2251 |
+
},
|
| 2252 |
+
"match": "exact",
|
| 2253 |
+
"category": "training_conditional",
|
| 2254 |
+
"source_row_zero_based": 307435
|
| 2255 |
+
},
|
| 2256 |
+
{
|
| 2257 |
+
"id": "poc2-0162",
|
| 2258 |
+
"text": "once temp falls below 24, power off the second floor lobby fan",
|
| 2259 |
+
"expected": {
|
| 2260 |
+
"activity": "air",
|
| 2261 |
+
"subject": "second_floor_lobby_ceiling_fan",
|
| 2262 |
+
"action": "OFF",
|
| 2263 |
+
"when": {
|
| 2264 |
+
"metric": "temperature",
|
| 2265 |
+
"op": "<",
|
| 2266 |
+
"value": 24
|
| 2267 |
+
}
|
| 2268 |
+
},
|
| 2269 |
+
"match": "exact",
|
| 2270 |
+
"category": "training_conditional",
|
| 2271 |
+
"source_row_zero_based": 219831
|
| 2272 |
+
},
|
| 2273 |
+
{
|
| 2274 |
+
"id": "poc2-0163",
|
| 2275 |
+
"text": "POWER ON KIDS ROOM MIRROR LIGHT AT 4 PM",
|
| 2276 |
+
"expected": {
|
| 2277 |
+
"activity": "light",
|
| 2278 |
+
"subject": "kids_room_mirror_light",
|
| 2279 |
+
"action": "ON",
|
| 2280 |
+
"when": {
|
| 2281 |
+
"metric": "time",
|
| 2282 |
+
"op": "==",
|
| 2283 |
+
"value": "16:00"
|
| 2284 |
+
}
|
| 2285 |
+
},
|
| 2286 |
+
"match": "exact",
|
| 2287 |
+
"category": "training_conditional",
|
| 2288 |
+
"source_row_zero_based": 232118
|
| 2289 |
+
},
|
| 2290 |
+
{
|
| 2291 |
+
"id": "poc2-0164",
|
| 2292 |
+
"text": "SUNO JAISE HI TEMP 25 CROSS KARE TOH FIRST FLOOR STUDY ROOM WALA CEILING FAN START KARO",
|
| 2293 |
+
"expected": {
|
| 2294 |
+
"activity": "air",
|
| 2295 |
+
"subject": "first_floor_study_room_ceiling_fan",
|
| 2296 |
+
"action": "ON",
|
| 2297 |
+
"when": {
|
| 2298 |
+
"metric": "temperature",
|
| 2299 |
+
"op": ">",
|
| 2300 |
+
"value": 25
|
| 2301 |
+
}
|
| 2302 |
+
},
|
| 2303 |
+
"match": "exact",
|
| 2304 |
+
"category": "training_conditional",
|
| 2305 |
+
"source_row_zero_based": 64948
|
| 2306 |
+
},
|
| 2307 |
+
{
|
| 2308 |
+
"id": "poc2-0165",
|
| 2309 |
+
"text": "yaar har roz raat 11 baje study room wala dehumidifier chala do!",
|
| 2310 |
+
"expected": {
|
| 2311 |
+
"activity": "air_quality",
|
| 2312 |
+
"subject": "study_room_dehumidifier",
|
| 2313 |
+
"action": "ON",
|
| 2314 |
+
"when": {
|
| 2315 |
+
"metric": "time",
|
| 2316 |
+
"op": "==",
|
| 2317 |
+
"value": "23:00"
|
| 2318 |
+
}
|
| 2319 |
+
},
|
| 2320 |
+
"match": "exact",
|
| 2321 |
+
"category": "training_conditional",
|
| 2322 |
+
"source_row_zero_based": 45370
|
| 2323 |
+
},
|
| 2324 |
+
{
|
| 2325 |
+
"id": "poc2-0166",
|
| 2326 |
+
"text": "set the home office purifier on low when air quality index falls below 100",
|
| 2327 |
+
"expected": {
|
| 2328 |
+
"activity": "air_quality",
|
| 2329 |
+
"subject": "home_office_air_purifier",
|
| 2330 |
+
"action": "LOW",
|
| 2331 |
+
"when": {
|
| 2332 |
+
"metric": "aqi",
|
| 2333 |
+
"op": "<",
|
| 2334 |
+
"value": 100
|
| 2335 |
+
}
|
| 2336 |
+
},
|
| 2337 |
+
"match": "exact",
|
| 2338 |
+
"category": "training_conditional",
|
| 2339 |
+
"source_row_zero_based": 113425
|
| 2340 |
+
},
|
| 2341 |
+
{
|
| 2342 |
+
"id": "poc2-0167",
|
| 2343 |
+
"text": "yaar agar kamre ka temperature 41 se zyada ho jaye toh drawing room wala table fan chalao",
|
| 2344 |
+
"expected": {
|
| 2345 |
+
"activity": "air",
|
| 2346 |
+
"subject": "drawing_room_table_fan",
|
| 2347 |
+
"action": "ON",
|
| 2348 |
+
"when": {
|
| 2349 |
+
"metric": "temperature",
|
| 2350 |
+
"op": ">",
|
| 2351 |
+
"value": 41
|
| 2352 |
+
}
|
| 2353 |
+
},
|
| 2354 |
+
"match": "exact",
|
| 2355 |
+
"category": "training_conditional",
|
| 2356 |
+
"source_row_zero_based": 201542
|
| 2357 |
+
},
|
| 2358 |
+
{
|
| 2359 |
+
"id": "poc2-0168",
|
| 2360 |
+
"text": "PLEASE ROZ SAVERE 8 BAJE PARENTS ROOM KI MACHHAR WALI MACHINE START KARO.",
|
| 2361 |
+
"expected": {
|
| 2362 |
+
"activity": "air_quality",
|
| 2363 |
+
"subject": "parents_room_mosquito_machine",
|
| 2364 |
+
"action": "ON",
|
| 2365 |
+
"when": {
|
| 2366 |
+
"metric": "time",
|
| 2367 |
+
"op": "==",
|
| 2368 |
+
"value": "08:00"
|
| 2369 |
+
}
|
| 2370 |
+
},
|
| 2371 |
+
"match": "exact",
|
| 2372 |
+
"category": "training_conditional",
|
| 2373 |
+
"source_row_zero_based": 158053
|
| 2374 |
+
},
|
| 2375 |
+
{
|
| 2376 |
+
"id": "poc2-0169",
|
| 2377 |
+
"text": "bhai living room ka wall fan rok do jab room ka temperature 23 se niche chala jaye.",
|
| 2378 |
+
"expected": {
|
| 2379 |
+
"activity": "air",
|
| 2380 |
+
"subject": "living_room_wall_fan",
|
| 2381 |
+
"action": "OFF",
|
| 2382 |
+
"when": {
|
| 2383 |
+
"metric": "temperature",
|
| 2384 |
+
"op": "<",
|
| 2385 |
+
"value": 23
|
| 2386 |
+
}
|
| 2387 |
+
},
|
| 2388 |
+
"match": "exact",
|
| 2389 |
+
"category": "training_conditional",
|
| 2390 |
+
"source_row_zero_based": 150640
|
| 2391 |
+
},
|
| 2392 |
+
{
|
| 2393 |
+
"id": "poc2-0170",
|
| 2394 |
+
"text": "yaar temp 39 paar kare to home office wala table fan tez pe chalao.",
|
| 2395 |
+
"expected": {
|
| 2396 |
+
"activity": "air",
|
| 2397 |
+
"subject": "home_office_table_fan",
|
| 2398 |
+
"action": "HIGH",
|
| 2399 |
+
"when": {
|
| 2400 |
+
"metric": "temperature",
|
| 2401 |
+
"op": ">",
|
| 2402 |
+
"value": 39
|
| 2403 |
+
}
|
| 2404 |
+
},
|
| 2405 |
+
"match": "exact",
|
| 2406 |
+
"category": "training_conditional",
|
| 2407 |
+
"source_row_zero_based": 305390
|
| 2408 |
+
},
|
| 2409 |
+
{
|
| 2410 |
+
"id": "poc2-0171",
|
| 2411 |
+
"text": "yaar first floor lobby wala bulb off karo har roz shaam 7 baje!",
|
| 2412 |
+
"expected": {
|
| 2413 |
+
"activity": "light",
|
| 2414 |
+
"subject": "first_floor_lobby_bulb",
|
| 2415 |
+
"action": "OFF",
|
| 2416 |
+
"when": {
|
| 2417 |
+
"metric": "time",
|
| 2418 |
+
"op": "==",
|
| 2419 |
+
"value": "19:00"
|
| 2420 |
+
}
|
| 2421 |
+
},
|
| 2422 |
+
"match": "exact",
|
| 2423 |
+
"category": "training_conditional",
|
| 2424 |
+
"source_row_zero_based": 148959
|
| 2425 |
+
},
|
| 2426 |
+
{
|
| 2427 |
+
"id": "poc2-0172",
|
| 2428 |
+
"text": "put on the heat blower in the hall at 7 am",
|
| 2429 |
+
"expected": {
|
| 2430 |
+
"activity": "heating",
|
| 2431 |
+
"subject": "hall_blower",
|
| 2432 |
+
"action": "ON",
|
| 2433 |
+
"when": {
|
| 2434 |
+
"metric": "time",
|
| 2435 |
+
"op": "==",
|
| 2436 |
+
"value": "07:00"
|
| 2437 |
+
}
|
| 2438 |
+
},
|
| 2439 |
+
"match": "exact",
|
| 2440 |
+
"category": "training_conditional",
|
| 2441 |
+
"source_row_zero_based": 297582
|
| 2442 |
+
},
|
| 2443 |
+
{
|
| 2444 |
+
"id": "poc2-0173",
|
| 2445 |
+
"text": "yaar living room wala purifier chalu karo agar aqi 300 paar kare.",
|
| 2446 |
+
"expected": {
|
| 2447 |
+
"activity": "air_quality",
|
| 2448 |
+
"subject": "living_room_air_purifier",
|
| 2449 |
+
"action": "ON",
|
| 2450 |
+
"when": {
|
| 2451 |
+
"metric": "aqi",
|
| 2452 |
+
"op": ">",
|
| 2453 |
+
"value": 300
|
| 2454 |
+
}
|
| 2455 |
+
},
|
| 2456 |
+
"match": "exact",
|
| 2457 |
+
"category": "training_conditional",
|
| 2458 |
+
"source_row_zero_based": 301156
|
| 2459 |
+
},
|
| 2460 |
+
{
|
| 2461 |
+
"id": "poc2-0174",
|
| 2462 |
+
"text": "YAAR BASEMENT KA DEHUMIDIFIER OFF KARDO AGAR HAWA ME NAMI 75 SE NEECHE JAYE.",
|
| 2463 |
+
"expected": {
|
| 2464 |
+
"activity": "air_quality",
|
| 2465 |
+
"subject": "basement_dehumidifier",
|
| 2466 |
+
"action": "OFF",
|
| 2467 |
+
"when": {
|
| 2468 |
+
"metric": "humidity",
|
| 2469 |
+
"op": "<",
|
| 2470 |
+
"value": 75
|
| 2471 |
+
}
|
| 2472 |
+
},
|
| 2473 |
+
"match": "exact",
|
| 2474 |
+
"category": "training_conditional",
|
| 2475 |
+
"source_row_zero_based": 203287
|
| 2476 |
+
},
|
| 2477 |
+
{
|
| 2478 |
+
"id": "poc2-0175",
|
| 2479 |
+
"text": "power off the kitchen ceiling light daily at 8 am!",
|
| 2480 |
+
"expected": {
|
| 2481 |
+
"activity": "light",
|
| 2482 |
+
"subject": "kitchen_ceiling_light",
|
| 2483 |
+
"action": "OFF",
|
| 2484 |
+
"when": {
|
| 2485 |
+
"metric": "time",
|
| 2486 |
+
"op": "==",
|
| 2487 |
+
"value": "08:00"
|
| 2488 |
+
}
|
| 2489 |
+
},
|
| 2490 |
+
"match": "exact",
|
| 2491 |
+
"category": "training_conditional",
|
| 2492 |
+
"source_row_zero_based": 153280
|
| 2493 |
+
},
|
| 2494 |
+
{
|
| 2495 |
+
"id": "poc2-0176",
|
| 2496 |
+
"text": "acha basement ka exhaust band karo raat ko 9 baje",
|
| 2497 |
+
"expected": {
|
| 2498 |
+
"activity": "air",
|
| 2499 |
+
"subject": "basement_exhaust_fan",
|
| 2500 |
+
"action": "OFF",
|
| 2501 |
+
"when": {
|
| 2502 |
+
"metric": "time",
|
| 2503 |
+
"op": "==",
|
| 2504 |
+
"value": "21:00"
|
| 2505 |
+
}
|
| 2506 |
+
},
|
| 2507 |
+
"match": "exact",
|
| 2508 |
+
"category": "training_conditional",
|
| 2509 |
+
"source_row_zero_based": 201599
|
| 2510 |
+
},
|
| 2511 |
+
{
|
| 2512 |
+
"id": "poc2-0177",
|
| 2513 |
+
"text": "when temperature is more than 23 run the tower fan in the master bedroom!",
|
| 2514 |
+
"expected": {
|
| 2515 |
+
"activity": "air",
|
| 2516 |
+
"subject": "master_bedroom_tower_fan",
|
| 2517 |
+
"action": "ON",
|
| 2518 |
+
"when": {
|
| 2519 |
+
"metric": "temperature",
|
| 2520 |
+
"op": ">",
|
| 2521 |
+
"value": 23
|
| 2522 |
+
}
|
| 2523 |
+
},
|
| 2524 |
+
"match": "exact",
|
| 2525 |
+
"category": "training_conditional",
|
| 2526 |
+
"source_row_zero_based": 67846
|
| 2527 |
+
},
|
| 2528 |
+
{
|
| 2529 |
+
"id": "poc2-0178",
|
| 2530 |
+
"text": "please bachchon ke kamre wala wall fan laga do agar kamre ka temperature 16 se upar jaye",
|
| 2531 |
+
"expected": {
|
| 2532 |
+
"activity": "air",
|
| 2533 |
+
"subject": "kids_room_wall_fan",
|
| 2534 |
+
"action": "ON",
|
| 2535 |
+
"when": {
|
| 2536 |
+
"metric": "temperature",
|
| 2537 |
+
"op": ">",
|
| 2538 |
+
"value": 16
|
| 2539 |
+
}
|
| 2540 |
+
},
|
| 2541 |
+
"match": "exact",
|
| 2542 |
+
"category": "training_conditional",
|
| 2543 |
+
"source_row_zero_based": 259643
|
| 2544 |
+
},
|
| 2545 |
+
{
|
| 2546 |
+
"id": "poc2-0179",
|
| 2547 |
+
"text": "drawing room wala socket off karo roz savere 8 baje",
|
| 2548 |
+
"expected": {
|
| 2549 |
+
"activity": "power",
|
| 2550 |
+
"subject": "drawing_room_socket",
|
| 2551 |
+
"action": "OFF",
|
| 2552 |
+
"when": {
|
| 2553 |
+
"metric": "time",
|
| 2554 |
+
"op": "==",
|
| 2555 |
+
"value": "08:00"
|
| 2556 |
+
}
|
| 2557 |
+
},
|
| 2558 |
+
"match": "exact",
|
| 2559 |
+
"category": "training_conditional",
|
| 2560 |
+
"source_row_zero_based": 185234
|
| 2561 |
+
},
|
| 2562 |
+
{
|
| 2563 |
+
"id": "poc2-0180",
|
| 2564 |
+
"text": "bhai ground floor bathroom ka geyser on kar do agar kamre ka temperature 26 se niche chala jaye.",
|
| 2565 |
+
"expected": {
|
| 2566 |
+
"activity": "heating",
|
| 2567 |
+
"subject": "ground_floor_bathroom_geyser",
|
| 2568 |
+
"action": "ON",
|
| 2569 |
+
"when": {
|
| 2570 |
+
"metric": "temperature",
|
| 2571 |
+
"op": "<",
|
| 2572 |
+
"value": 26
|
| 2573 |
+
}
|
| 2574 |
+
},
|
| 2575 |
+
"match": "exact",
|
| 2576 |
+
"category": "training_conditional",
|
| 2577 |
+
"source_row_zero_based": 7943
|
| 2578 |
+
},
|
| 2579 |
+
{
|
| 2580 |
+
"id": "poc2-0181",
|
| 2581 |
+
"text": "in case temperature drops below 23 turn off the dining room wall mounted fan",
|
| 2582 |
+
"expected": {
|
| 2583 |
+
"activity": "air",
|
| 2584 |
+
"subject": "dining_room_wall_fan",
|
| 2585 |
+
"action": "OFF",
|
| 2586 |
+
"when": {
|
| 2587 |
+
"metric": "temperature",
|
| 2588 |
+
"op": "<",
|
| 2589 |
+
"value": 23
|
| 2590 |
+
}
|
| 2591 |
+
},
|
| 2592 |
+
"match": "exact",
|
| 2593 |
+
"category": "training_conditional",
|
| 2594 |
+
"source_row_zero_based": 310605
|
| 2595 |
+
},
|
| 2596 |
+
{
|
| 2597 |
+
"id": "poc2-0182",
|
| 2598 |
+
"text": "Every day at 9 am switch off the night lamp in the bedroom",
|
| 2599 |
+
"expected": {
|
| 2600 |
+
"activity": "light",
|
| 2601 |
+
"subject": "bedroom_night_lamp",
|
| 2602 |
+
"action": "OFF",
|
| 2603 |
+
"when": {
|
| 2604 |
+
"metric": "time",
|
| 2605 |
+
"op": "==",
|
| 2606 |
+
"value": "09:00"
|
| 2607 |
+
}
|
| 2608 |
+
},
|
| 2609 |
+
"match": "exact",
|
| 2610 |
+
"category": "training_conditional",
|
| 2611 |
+
"source_row_zero_based": 3053
|
| 2612 |
+
},
|
| 2613 |
+
{
|
| 2614 |
+
"id": "poc2-0183",
|
| 2615 |
+
"text": "acha roz raat ko 9:30 baje dining ka curtains band kar do!",
|
| 2616 |
+
"expected": {
|
| 2617 |
+
"activity": "access",
|
| 2618 |
+
"subject": "dining_room_curtains",
|
| 2619 |
+
"action": "CLOSE",
|
| 2620 |
+
"when": {
|
| 2621 |
+
"metric": "time",
|
| 2622 |
+
"op": "==",
|
| 2623 |
+
"value": "21:30"
|
| 2624 |
+
}
|
| 2625 |
+
},
|
| 2626 |
+
"match": "exact",
|
| 2627 |
+
"category": "training_conditional",
|
| 2628 |
+
"source_row_zero_based": 135294
|
| 2629 |
+
},
|
| 2630 |
+
{
|
| 2631 |
+
"id": "poc2-0184",
|
| 2632 |
+
"text": "at 7 pm sharp switch off the second floor bedroom smart plug!",
|
| 2633 |
+
"expected": {
|
| 2634 |
+
"activity": "power",
|
| 2635 |
+
"subject": "second_floor_bedroom_smart_plug",
|
| 2636 |
+
"action": "OFF",
|
| 2637 |
+
"when": {
|
| 2638 |
+
"metric": "time",
|
| 2639 |
+
"op": "==",
|
| 2640 |
+
"value": "19:00"
|
| 2641 |
+
}
|
| 2642 |
+
},
|
| 2643 |
+
"match": "exact",
|
| 2644 |
+
"category": "training_conditional",
|
| 2645 |
+
"source_row_zero_based": 30600
|
| 2646 |
+
},
|
| 2647 |
+
{
|
| 2648 |
+
"id": "poc2-0185",
|
| 2649 |
+
"text": "daily at 6 am power off second floor balcony bulb",
|
| 2650 |
+
"expected": {
|
| 2651 |
+
"activity": "light",
|
| 2652 |
+
"subject": "second_floor_balcony_bulb",
|
| 2653 |
+
"action": "OFF",
|
| 2654 |
+
"when": {
|
| 2655 |
+
"metric": "time",
|
| 2656 |
+
"op": "==",
|
| 2657 |
+
"value": "06:00"
|
| 2658 |
+
}
|
| 2659 |
+
},
|
| 2660 |
+
"match": "exact",
|
| 2661 |
+
"category": "training_conditional",
|
| 2662 |
+
"source_row_zero_based": 126919
|
| 2663 |
+
},
|
| 2664 |
+
{
|
| 2665 |
+
"id": "poc2-0186",
|
| 2666 |
+
"text": "if moisture in the air exceeds 45 power on the bedroom dehumidifier",
|
| 2667 |
+
"expected": {
|
| 2668 |
+
"activity": "air_quality",
|
| 2669 |
+
"subject": "bedroom_dehumidifier",
|
| 2670 |
+
"action": "ON",
|
| 2671 |
+
"when": {
|
| 2672 |
+
"metric": "humidity",
|
| 2673 |
+
"op": ">",
|
| 2674 |
+
"value": 45
|
| 2675 |
+
}
|
| 2676 |
+
},
|
| 2677 |
+
"match": "exact",
|
| 2678 |
+
"category": "training_conditional",
|
| 2679 |
+
"source_row_zero_based": 277615
|
| 2680 |
+
},
|
| 2681 |
+
{
|
| 2682 |
+
"id": "poc2-0187",
|
| 2683 |
+
"text": "acha living room ka projector band karo har roz savere 11 baje!",
|
| 2684 |
+
"expected": {
|
| 2685 |
+
"activity": "entertainment",
|
| 2686 |
+
"subject": "living_room_projector",
|
| 2687 |
+
"action": "OFF",
|
| 2688 |
+
"when": {
|
| 2689 |
+
"metric": "time",
|
| 2690 |
+
"op": "==",
|
| 2691 |
+
"value": "11:00"
|
| 2692 |
+
}
|
| 2693 |
+
},
|
| 2694 |
+
"match": "exact",
|
| 2695 |
+
"category": "training_conditional",
|
| 2696 |
+
"source_row_zero_based": 339612
|
| 2697 |
+
},
|
| 2698 |
+
{
|
| 2699 |
+
"id": "poc2-0188",
|
| 2700 |
+
"text": "at 10 am sharp turn off the plug 5",
|
| 2701 |
+
"expected": {
|
| 2702 |
+
"activity": "power",
|
| 2703 |
+
"subject": "smart_plug_5",
|
| 2704 |
+
"action": "OFF",
|
| 2705 |
+
"when": {
|
| 2706 |
+
"metric": "time",
|
| 2707 |
+
"op": "==",
|
| 2708 |
+
"value": "10:00"
|
| 2709 |
+
}
|
| 2710 |
+
},
|
| 2711 |
+
"match": "exact",
|
| 2712 |
+
"category": "training_conditional",
|
| 2713 |
+
"source_row_zero_based": 226145
|
| 2714 |
+
},
|
| 2715 |
+
{
|
| 2716 |
+
"id": "poc2-0189",
|
| 2717 |
+
"text": "Daily at 9 am switch on the ground floor study bulb",
|
| 2718 |
+
"expected": {
|
| 2719 |
+
"activity": "light",
|
| 2720 |
+
"subject": "ground_floor_study_room_bulb",
|
| 2721 |
+
"action": "ON",
|
| 2722 |
+
"when": {
|
| 2723 |
+
"metric": "time",
|
| 2724 |
+
"op": "==",
|
| 2725 |
+
"value": "09:00"
|
| 2726 |
+
}
|
| 2727 |
+
},
|
| 2728 |
+
"match": "exact",
|
| 2729 |
+
"category": "training_conditional",
|
| 2730 |
+
"source_row_zero_based": 116081
|
| 2731 |
+
},
|
| 2732 |
+
{
|
| 2733 |
+
"id": "poc2-0190",
|
| 2734 |
+
"text": "please mummy papa ke kamre wala wall fan rok do jab kamre ka temperature 41 se neeche jaye",
|
| 2735 |
+
"expected": {
|
| 2736 |
+
"activity": "air",
|
| 2737 |
+
"subject": "parents_room_wall_fan",
|
| 2738 |
+
"action": "OFF",
|
| 2739 |
+
"when": {
|
| 2740 |
+
"metric": "temperature",
|
| 2741 |
+
"op": "<",
|
| 2742 |
+
"value": 41
|
| 2743 |
+
}
|
| 2744 |
+
},
|
| 2745 |
+
"match": "exact",
|
| 2746 |
+
"category": "training_conditional",
|
| 2747 |
+
"source_row_zero_based": 83638
|
| 2748 |
+
},
|
| 2749 |
+
{
|
| 2750 |
+
"id": "poc2-0191",
|
| 2751 |
+
"text": "bhai roz dopahar ko 4:30 baje bathroom ka bulb start karo!",
|
| 2752 |
+
"expected": {
|
| 2753 |
+
"activity": "light",
|
| 2754 |
+
"subject": "bathroom_bulb",
|
| 2755 |
+
"action": "ON",
|
| 2756 |
+
"when": {
|
| 2757 |
+
"metric": "time",
|
| 2758 |
+
"op": "==",
|
| 2759 |
+
"value": "16:30"
|
| 2760 |
+
}
|
| 2761 |
+
},
|
| 2762 |
+
"match": "exact",
|
| 2763 |
+
"category": "training_conditional",
|
| 2764 |
+
"source_row_zero_based": 336818
|
| 2765 |
+
},
|
| 2766 |
+
{
|
| 2767 |
+
"id": "poc2-0192",
|
| 2768 |
+
"text": "Acha shaam 5 baje servant room ka bulb off kar do.",
|
| 2769 |
+
"expected": {
|
| 2770 |
+
"activity": "light",
|
| 2771 |
+
"subject": "servant_room_bulb",
|
| 2772 |
+
"action": "OFF",
|
| 2773 |
+
"when": {
|
| 2774 |
+
"metric": "time",
|
| 2775 |
+
"op": "==",
|
| 2776 |
+
"value": "17:00"
|
| 2777 |
+
}
|
| 2778 |
+
},
|
| 2779 |
+
"match": "exact",
|
| 2780 |
+
"category": "training_conditional",
|
| 2781 |
+
"source_row_zero_based": 337602
|
| 2782 |
+
},
|
| 2783 |
+
{
|
| 2784 |
+
"id": "poc2-0193",
|
| 2785 |
+
"text": "at 7 pm sharp stop the switch in the children's room",
|
| 2786 |
+
"expected": {
|
| 2787 |
+
"activity": "power",
|
| 2788 |
+
"subject": "kids_room_smart_switch",
|
| 2789 |
+
"action": "OFF",
|
| 2790 |
+
"when": {
|
| 2791 |
+
"metric": "time",
|
| 2792 |
+
"op": "==",
|
| 2793 |
+
"value": "19:00"
|
| 2794 |
+
}
|
| 2795 |
+
},
|
| 2796 |
+
"match": "exact",
|
| 2797 |
+
"category": "training_conditional",
|
| 2798 |
+
"source_row_zero_based": 100558
|
| 2799 |
+
},
|
| 2800 |
+
{
|
| 2801 |
+
"id": "poc2-0194",
|
| 2802 |
+
"text": "suno jab temp 39 se kam ho toh veranda ka wall fan rok do!",
|
| 2803 |
+
"expected": {
|
| 2804 |
+
"activity": "air",
|
| 2805 |
+
"subject": "veranda_wall_fan",
|
| 2806 |
+
"action": "OFF",
|
| 2807 |
+
"when": {
|
| 2808 |
+
"metric": "temperature",
|
| 2809 |
+
"op": "<",
|
| 2810 |
+
"value": 39
|
| 2811 |
+
}
|
| 2812 |
+
},
|
| 2813 |
+
"match": "exact",
|
| 2814 |
+
"category": "training_conditional",
|
| 2815 |
+
"source_row_zero_based": 202552
|
| 2816 |
+
},
|
| 2817 |
+
{
|
| 2818 |
+
"id": "poc2-0195",
|
| 2819 |
+
"text": "If room temperature gets under 42 then stop the second floor study air conditioner",
|
| 2820 |
+
"expected": {
|
| 2821 |
+
"activity": "cooling",
|
| 2822 |
+
"subject": "second_floor_study_room_ac",
|
| 2823 |
+
"action": "OFF",
|
| 2824 |
+
"when": {
|
| 2825 |
+
"metric": "temperature",
|
| 2826 |
+
"op": "<",
|
| 2827 |
+
"value": 42
|
| 2828 |
+
}
|
| 2829 |
+
},
|
| 2830 |
+
"match": "exact",
|
| 2831 |
+
"category": "training_conditional",
|
| 2832 |
+
"source_row_zero_based": 230321
|
| 2833 |
+
},
|
| 2834 |
+
{
|
| 2835 |
+
"id": "poc2-0196",
|
| 2836 |
+
"text": "Please mixie band karo har roz raat ko 9 baje.",
|
| 2837 |
+
"expected": {
|
| 2838 |
+
"activity": "kitchen",
|
| 2839 |
+
"subject": "mixer_grinder",
|
| 2840 |
+
"action": "STOP",
|
| 2841 |
+
"when": {
|
| 2842 |
+
"metric": "time",
|
| 2843 |
+
"op": "==",
|
| 2844 |
+
"value": "21:00"
|
| 2845 |
+
}
|
| 2846 |
+
},
|
| 2847 |
+
"match": "exact",
|
| 2848 |
+
"category": "training_conditional",
|
| 2849 |
+
"source_row_zero_based": 203416
|
| 2850 |
+
},
|
| 2851 |
+
{
|
| 2852 |
+
"id": "poc2-0197",
|
| 2853 |
+
"text": "When moisture in the air rises above 35 then start the store room exhaust fan.",
|
| 2854 |
+
"expected": {
|
| 2855 |
+
"activity": "air",
|
| 2856 |
+
"subject": "store_room_exhaust_fan",
|
| 2857 |
+
"action": "ON",
|
| 2858 |
+
"when": {
|
| 2859 |
+
"metric": "humidity",
|
| 2860 |
+
"op": ">",
|
| 2861 |
+
"value": 35
|
| 2862 |
+
}
|
| 2863 |
+
},
|
| 2864 |
+
"match": "exact",
|
| 2865 |
+
"category": "training_conditional",
|
| 2866 |
+
"source_row_zero_based": 32686
|
| 2867 |
+
},
|
| 2868 |
+
{
|
| 2869 |
+
"id": "poc2-0198",
|
| 2870 |
+
"text": "suno har roz savere 6 baje first floor kitchen wali tube light rok do!",
|
| 2871 |
+
"expected": {
|
| 2872 |
+
"activity": "light",
|
| 2873 |
+
"subject": "first_floor_kitchen_tube_light",
|
| 2874 |
+
"action": "OFF",
|
| 2875 |
+
"when": {
|
| 2876 |
+
"metric": "time",
|
| 2877 |
+
"op": "==",
|
| 2878 |
+
"value": "06:00"
|
| 2879 |
+
}
|
| 2880 |
+
},
|
| 2881 |
+
"match": "exact",
|
| 2882 |
+
"category": "training_conditional",
|
| 2883 |
+
"source_row_zero_based": 145141
|
| 2884 |
+
},
|
| 2885 |
+
{
|
| 2886 |
+
"id": "poc2-0199",
|
| 2887 |
+
"text": "acha har roz raat ko 9 baje second floor kitchen ka fan shuru kar do",
|
| 2888 |
+
"expected": {
|
| 2889 |
+
"activity": "air",
|
| 2890 |
+
"subject": "second_floor_kitchen_ceiling_fan",
|
| 2891 |
+
"action": "ON",
|
| 2892 |
+
"when": {
|
| 2893 |
+
"metric": "time",
|
| 2894 |
+
"op": "==",
|
| 2895 |
+
"value": "21:00"
|
| 2896 |
+
}
|
| 2897 |
+
},
|
| 2898 |
+
"match": "exact",
|
| 2899 |
+
"category": "training_conditional",
|
| 2900 |
+
"source_row_zero_based": 224924
|
| 2901 |
+
}
|
| 2902 |
+
]
|
edge_benchmarks/rpi5-2026-09-26/environment.lock.txt
ADDED
|
@@ -0,0 +1,30 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
certifi==2026.7.22
|
| 2 |
+
charset-normalizer==3.5.1
|
| 3 |
+
filelock==4.0.3
|
| 4 |
+
fsspec==2026.9.0
|
| 5 |
+
hf-xet==1.6.0
|
| 6 |
+
huggingface_hub==0.36.2
|
| 7 |
+
idna==3.20
|
| 8 |
+
Jinja2==3.1.6
|
| 9 |
+
joblib==1.5.3
|
| 10 |
+
MarkupSafe==3.0.3
|
| 11 |
+
mpmath==1.3.0
|
| 12 |
+
networkx==3.7
|
| 13 |
+
numpy==2.3.5
|
| 14 |
+
packaging==26.3
|
| 15 |
+
psutil==7.2.2
|
| 16 |
+
PyYAML==6.0.3
|
| 17 |
+
regex==2026.9.10
|
| 18 |
+
requests==2.34.2
|
| 19 |
+
safetensors==0.8.0
|
| 20 |
+
scikit-learn==1.8.0
|
| 21 |
+
scipy==1.17.0
|
| 22 |
+
setuptools==84.0.0
|
| 23 |
+
sympy==1.14.0
|
| 24 |
+
threadpoolctl==3.7.0
|
| 25 |
+
tokenizers==0.22.1
|
| 26 |
+
torch==2.8.0
|
| 27 |
+
tqdm==4.70.1
|
| 28 |
+
transformers==4.56.2
|
| 29 |
+
typing_extensions==4.16.0
|
| 30 |
+
urllib3==2.8.0
|
edge_benchmarks/rpi5-2026-09-26/provenance.json
ADDED
|
@@ -0,0 +1,125 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"measurement_revision": "edge-rpi5-20260926",
|
| 3 |
+
"model": {
|
| 4 |
+
"repo_id": "sraivante/superfast-tiny-home-robotics-json-1m-v3",
|
| 5 |
+
"revision": "2b2e71d37ea9fa0fe6ab247b6a74e8db774fb6f2",
|
| 6 |
+
"files": [
|
| 7 |
+
{
|
| 8 |
+
"bundle_path": "projects/poc2/engine.py",
|
| 9 |
+
"repo_path": "engine.py",
|
| 10 |
+
"sha256": "bbc051221dae5c7238e7a76dae4872584c03f3db366a78980f0ea0cf5caaa18e",
|
| 11 |
+
"bytes": 3775,
|
| 12 |
+
"workspace_source": "rpi_measurements/bundle/projects/poc2/engine.py"
|
| 13 |
+
},
|
| 14 |
+
{
|
| 15 |
+
"bundle_path": "projects/poc2/model/devices-catalog.json",
|
| 16 |
+
"repo_path": "model/devices-catalog.json",
|
| 17 |
+
"sha256": "473e5850e6f9d05abf4a7806121bb42464f760fed2de589fa58accebeef72af4",
|
| 18 |
+
"bytes": 136537,
|
| 19 |
+
"workspace_source": "rpi_measurements/bundle/projects/poc2/model/devices-catalog.json"
|
| 20 |
+
},
|
| 21 |
+
{
|
| 22 |
+
"bundle_path": "projects/poc2/model/metrics_v3.json",
|
| 23 |
+
"repo_path": "model/metrics_v3.json",
|
| 24 |
+
"sha256": "884ba39090267af42bd6b4d4092ef3905b2674aa1f6f540b7e77e731d951ce8b",
|
| 25 |
+
"bytes": 2587,
|
| 26 |
+
"workspace_source": "rpi_measurements/bundle/projects/poc2/model/metrics_v3.json"
|
| 27 |
+
},
|
| 28 |
+
{
|
| 29 |
+
"bundle_path": "projects/poc2/model/model_v3_config.json",
|
| 30 |
+
"repo_path": "model/model_v3_config.json",
|
| 31 |
+
"sha256": "11b221bcf0e5b8c512ead8df19b9d4db6ee5fa2182efd6f66a9c1729eabad004",
|
| 32 |
+
"bytes": 520,
|
| 33 |
+
"workspace_source": "rpi_measurements/bundle/projects/poc2/model/model_v3_config.json"
|
| 34 |
+
},
|
| 35 |
+
{
|
| 36 |
+
"bundle_path": "projects/poc2/model/model_v3_fp16.npz",
|
| 37 |
+
"repo_path": "model/model_v3_fp16.npz",
|
| 38 |
+
"sha256": "fc749ecd89c1ae30a159d6d701036298b5583645b7fbf114311e006929c8778b",
|
| 39 |
+
"bytes": 2146783,
|
| 40 |
+
"workspace_source": "rpi_measurements/bundle/projects/poc2/model/model_v3_fp16.npz"
|
| 41 |
+
}
|
| 42 |
+
],
|
| 43 |
+
"all_match": true
|
| 44 |
+
},
|
| 45 |
+
"training_dataset_snapshot": {
|
| 46 |
+
"repo_id": "sraivante/home-commands-json-v3",
|
| 47 |
+
"commit": "da10aca352a34cb2834a049867f6f2e9fcc30e3e",
|
| 48 |
+
"files": [
|
| 49 |
+
{
|
| 50 |
+
"path": ".gitattributes",
|
| 51 |
+
"bytes": 2504,
|
| 52 |
+
"sha256": null
|
| 53 |
+
},
|
| 54 |
+
{
|
| 55 |
+
"path": "LICENSE",
|
| 56 |
+
"bytes": 11358,
|
| 57 |
+
"sha256": null
|
| 58 |
+
},
|
| 59 |
+
{
|
| 60 |
+
"path": "README.md",
|
| 61 |
+
"bytes": 5926,
|
| 62 |
+
"sha256": null
|
| 63 |
+
},
|
| 64 |
+
{
|
| 65 |
+
"path": "data/conditional_source.jsonl.gz",
|
| 66 |
+
"bytes": 6279490,
|
| 67 |
+
"sha256": "d5b6739202a0caa73b8a12452387651fa844566d47565e3876c5a3ce7ad6193e"
|
| 68 |
+
},
|
| 69 |
+
{
|
| 70 |
+
"path": "data/train.jsonl.gz",
|
| 71 |
+
"bytes": 13302264,
|
| 72 |
+
"sha256": "d8afeacfed666784b446cef68f1e8aeb12d9ebbe4032424dec2c0db9f664e79b"
|
| 73 |
+
},
|
| 74 |
+
{
|
| 75 |
+
"path": "generators/generate_dataset_v2.py",
|
| 76 |
+
"bytes": 29188,
|
| 77 |
+
"sha256": null
|
| 78 |
+
},
|
| 79 |
+
{
|
| 80 |
+
"path": "generators/generate_dataset_v3_conditional.py",
|
| 81 |
+
"bytes": 10612,
|
| 82 |
+
"sha256": null
|
| 83 |
+
},
|
| 84 |
+
{
|
| 85 |
+
"path": "generators/prep_mix.py",
|
| 86 |
+
"bytes": 1278,
|
| 87 |
+
"sha256": null
|
| 88 |
+
},
|
| 89 |
+
{
|
| 90 |
+
"path": "metadata/devices-catalog.json",
|
| 91 |
+
"bytes": 136537,
|
| 92 |
+
"sha256": null
|
| 93 |
+
},
|
| 94 |
+
{
|
| 95 |
+
"path": "source/dataset_v3_conditional.jsonl.xz",
|
| 96 |
+
"bytes": 4245312,
|
| 97 |
+
"sha256": "f5b997f808688c535cf0abd195390a8ba20deb6cfe3a4b8b2262624242552b86"
|
| 98 |
+
},
|
| 99 |
+
{
|
| 100 |
+
"path": "source/train_mix.jsonl.xz",
|
| 101 |
+
"bytes": 4951908,
|
| 102 |
+
"sha256": "c8851122dc01787e9674532c5cfb1cf7260212c52c9800e37622b28167bb9838"
|
| 103 |
+
}
|
| 104 |
+
]
|
| 105 |
+
},
|
| 106 |
+
"evaluation": {
|
| 107 |
+
"kind": "training-set diagnostic, NOT held-out accuracy",
|
| 108 |
+
"source": "POC-2-claude\\home-command-ai\\data\\train_mix.jsonl.xz",
|
| 109 |
+
"sha256": "c8851122dc01787e9674532c5cfb1cf7260212c52c9800e37622b28167bb9838",
|
| 110 |
+
"sampling": "stratified reservoir, 100 plain + 100 conditional; seed 20260926",
|
| 111 |
+
"source_counts": {
|
| 112 |
+
"plain": 140000,
|
| 113 |
+
"conditional": 200000
|
| 114 |
+
},
|
| 115 |
+
"notes": "Historical 1500-row evaluation file is absent locally and from the published dataset. This diagnostic does not reproduce or replace the historical 96.73% result. The shipped prep_mix.py has different training-count settings from the published 340000-row snapshot."
|
| 116 |
+
},
|
| 117 |
+
"quality_case_count": 200,
|
| 118 |
+
"latency_case_count": 10,
|
| 119 |
+
"case_file_sha256": {
|
| 120 |
+
"poc2_latency.json": "77930a99ff035b3774bf65b261a302b7a5bff7608c5a4ae99241847164be2cff",
|
| 121 |
+
"poc2_quality.json": "e61640a601ca3e354a74be3dcb6506ba24171a343c290b96fa53f7deee899232"
|
| 122 |
+
},
|
| 123 |
+
"no_training_or_fine_tuning": true,
|
| 124 |
+
"copyright": "Copyright (c) 2026 sraivante for original material and selection/arrangement only; Apache License 2.0; third-party terms unchanged."
|
| 125 |
+
}
|
edge_benchmarks/rpi5-2026-09-26/readings.csv
ADDED
|
The diff for this file is too large to render.
See raw diff
|
|
|
edge_benchmarks/rpi5-2026-09-26/reproduce.py
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
"""Reproduce this pinned model's Pi benchmark without changing model weights."""
|
| 2 |
+
import argparse, hashlib, json, shutil, subprocess, sys
|
| 3 |
+
from pathlib import Path
|
| 4 |
+
from huggingface_hub import hf_hub_download
|
| 5 |
+
HERE=Path(__file__).resolve().parent
|
| 6 |
+
ap=argparse.ArgumentParser(); ap.add_argument('--threads',type=int,choices=(1,4),default=1); args=ap.parse_args()
|
| 7 |
+
identity=json.loads((HERE/'runtime_identity.json').read_text())
|
| 8 |
+
manifest=json.loads((HERE/'bundle_manifest.json').read_text()); key=next(iter(manifest['models']))
|
| 9 |
+
if key=='poc3' and args.threads!=1: ap.error('This interpreter is single-threaded')
|
| 10 |
+
target=Path.cwd()/('rpi-reproduction-'+key); target.mkdir(exist_ok=True)
|
| 11 |
+
for item in identity['files']:
|
| 12 |
+
source=Path(hf_hub_download(identity['repo_id'],item['repo_path'],revision=identity['revision']))
|
| 13 |
+
assert hashlib.sha256(source.read_bytes()).hexdigest()==item['sha256']
|
| 14 |
+
dest=target/item['bundle_path']; dest.parent.mkdir(parents=True,exist_ok=True); shutil.copyfile(source,dest)
|
| 15 |
+
for name in ('benchmark.py','bundle_manifest.json'):
|
| 16 |
+
shutil.copyfile(HERE/name,target/name)
|
| 17 |
+
for source in (HERE/'cases').glob('*.json'):
|
| 18 |
+
dest=target/'cases'/source.name; dest.parent.mkdir(exist_ok=True); shutil.copyfile(source,dest)
|
| 19 |
+
command=[sys.executable,'-u',str(target/'benchmark.py'),'--model',key,'--threads',str(args.threads),'--out',str(target/('result_t'+str(args.threads)+'.json'))]
|
| 20 |
+
if args.threads==1: command.append('--quality')
|
| 21 |
+
subprocess.run(command,check=True)
|
edge_benchmarks/rpi5-2026-09-26/results/poc2_t1.json
ADDED
|
The diff for this file is too large to render.
See raw diff
|
|
|
edge_benchmarks/rpi5-2026-09-26/results/poc2_t4.json
ADDED
|
The diff for this file is too large to render.
See raw diff
|
|
|
edge_benchmarks/rpi5-2026-09-26/runtime_identity.json
ADDED
|
@@ -0,0 +1,42 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"repo_id": "sraivante/superfast-tiny-home-robotics-json-1m-v3",
|
| 3 |
+
"revision": "2b2e71d37ea9fa0fe6ab247b6a74e8db774fb6f2",
|
| 4 |
+
"files": [
|
| 5 |
+
{
|
| 6 |
+
"bundle_path": "projects/poc2/engine.py",
|
| 7 |
+
"repo_path": "engine.py",
|
| 8 |
+
"sha256": "bbc051221dae5c7238e7a76dae4872584c03f3db366a78980f0ea0cf5caaa18e",
|
| 9 |
+
"bytes": 3775,
|
| 10 |
+
"workspace_source": "rpi_measurements/bundle/projects/poc2/engine.py"
|
| 11 |
+
},
|
| 12 |
+
{
|
| 13 |
+
"bundle_path": "projects/poc2/model/devices-catalog.json",
|
| 14 |
+
"repo_path": "model/devices-catalog.json",
|
| 15 |
+
"sha256": "473e5850e6f9d05abf4a7806121bb42464f760fed2de589fa58accebeef72af4",
|
| 16 |
+
"bytes": 136537,
|
| 17 |
+
"workspace_source": "rpi_measurements/bundle/projects/poc2/model/devices-catalog.json"
|
| 18 |
+
},
|
| 19 |
+
{
|
| 20 |
+
"bundle_path": "projects/poc2/model/metrics_v3.json",
|
| 21 |
+
"repo_path": "model/metrics_v3.json",
|
| 22 |
+
"sha256": "884ba39090267af42bd6b4d4092ef3905b2674aa1f6f540b7e77e731d951ce8b",
|
| 23 |
+
"bytes": 2587,
|
| 24 |
+
"workspace_source": "rpi_measurements/bundle/projects/poc2/model/metrics_v3.json"
|
| 25 |
+
},
|
| 26 |
+
{
|
| 27 |
+
"bundle_path": "projects/poc2/model/model_v3_config.json",
|
| 28 |
+
"repo_path": "model/model_v3_config.json",
|
| 29 |
+
"sha256": "11b221bcf0e5b8c512ead8df19b9d4db6ee5fa2182efd6f66a9c1729eabad004",
|
| 30 |
+
"bytes": 520,
|
| 31 |
+
"workspace_source": "rpi_measurements/bundle/projects/poc2/model/model_v3_config.json"
|
| 32 |
+
},
|
| 33 |
+
{
|
| 34 |
+
"bundle_path": "projects/poc2/model/model_v3_fp16.npz",
|
| 35 |
+
"repo_path": "model/model_v3_fp16.npz",
|
| 36 |
+
"sha256": "fc749ecd89c1ae30a159d6d701036298b5583645b7fbf114311e006929c8778b",
|
| 37 |
+
"bytes": 2146783,
|
| 38 |
+
"workspace_source": "rpi_measurements/bundle/projects/poc2/model/model_v3_fp16.npz"
|
| 39 |
+
}
|
| 40 |
+
],
|
| 41 |
+
"all_match": true
|
| 42 |
+
}
|
edge_benchmarks/rpi5-2026-09-26/temperature_latency.png
ADDED
|
Git LFS Details
|