# Keonn AdvanReader → Lego-fabrikk

Leseren sender hver avlesning til portalen med HTTP POST. Antenneporten (1–4) bestemmer hvilken stasjon taggen er på.
Oppsettet er det samme som i `gs1-nordic-summit/KEONN-SETUP.md`, men med to forskjeller: ny URL, og `antenna` er med i hver avlesning.

## 1. AdvanNet Manager → Services → SimpleHTTPService (Advanced)

| Felt | Verdi |
|---|---|
| Enabled | ✅ |
| Endpoint URL | `https://lego.invig.no/api/keonn` (lokalt: `http://<mac-ip>:8793/api/keonn`) |
| HTTP method | `POST` |
| Content-Type | `JSON (application/json)` |
| Send one by one | ☐ (batch) |
| Inventory tag TTL (s) | `1`–`2` (lav, så flytting mellom antenner merkes raskt) |
| Re-send when in error | ✅ |
| Expected HTTP response | `200` |

## 2. JSON config (kopier fra Oppsett → Keonn-leser i portalen)

```
[{"event":"TAG_READ","path":"'/api/keonn'","body":"var body='{';body+='\"devid\": \"'+ctx_devid+'\",';body+='\"reads\": [';for(i=0;i<ctx_tags.length;i++){body+='{';body+='\"epc\": \"'+ctx_tags[i].getEPC()+'\",';body+='\"antenna\": \"'+ctx_tags[i].getAntenna()+'\",';body+='\"rssi\": \"'+ctx_tags[i].getRSSI()+'\",';body+='\"ts\": \"'+ctx_tags[i].getUTC()+'\"';body+='}';if(i<ctx_tags.length-1){body+=',';}}body+=']';body+='}';"}]
```

`getAntenna()` finnes i Keonns egne maler (wiki.keonn.com → HTTP Payload JSON config templates).

Hvis `READER_KEY` er satt på serveren: legg til `?key=<nøkkel>` i path, eller header `X-Event-Key` via Advanced JSON conf:
`{"customHeaders":[{"header":"X-Event-Key: <nøkkel>"}]}`

## 3. Koble taggene

1. Portalen → **Oppsett → Tagger**. Gi hver tag et navn (hva den er).
2. Trykk **Lær** på en tag og hold den fysiske taggen ved en antenne innen 60 s. EPC-en kobles automatisk.
   Alternativ: tagger leseren ser som ikke er registrert, vises under «Ukjente tagger». Velg «Koble til …».
3. Skriv ut **QR-ark** og fest QR-en på Lego-delen.

Vil du skrive GIAI-96 til taggene selv: `GET /api/encode?ref=900101` gir EPC-hex for `urn:epc:id:giai:7073539.900101`.

## 4. Antenner og feilavlesninger

- Antenne 1–4 = stasjonen som har den antennen i aktivt scenario. Startpunktet har ingen antenne. Taggen settes dit med «Ny runde» eller ved å dra den dit.
- Ser leseren samme tag på flere antenner i én melding, vinner sterkeste RSSI.
- **Min. RSSI** filtrerer svake lesinger fra naboantenner. Start på −85 og øk mot −65 hvis taggene «hopper».
- **Pause mellom flytt** (sekunder) hindrer at en tag flyttes frem og tilbake ved kryssavlesning.

## 5. Test uten leser

```bash
curl -X POST http://localhost:8793/api/keonn -H 'Content-Type: application/json' \
  -d '{"devid":"test","reads":[{"epc":"3435AFBC0C000000000DBC05","antenna":"2","rssi":"-55"}]}'
```

Eller dra en tag til en stasjon i Live-visningen.
