# EHP Net-Scale Polls **EHP crane scales** connected through a **Net-Scale V13** receiver unit. The box bridges up to 16 radio scales to Ethernet and answers short ASCII records over **UDP** (factory default) or **TCP**. Every poll cycle sends one measurement request per addressed scale; record checksums are verified. | | | |---|---| | Connection string | `netscale://HOST[:PORT]` (default port 187, address the box — not the scale) | | Reads | ✔ (poll) | | Writes | ✔ (control/registration commands) | | Subscriptions | — | | Browsing | ✔ (static value list) | :::info Per the manual, the **first request per scale is always answered with error `E4`** while the scale joins the polling pool of the Net-Scale — the first poll cycle after startup delivers no values for that scale; from the second cycle on, data flows. A scale drops out of the pool when switched off or out of radio range. Alternatively scales can be pinned via the `ACT` entries of the `NSC.INI` on the SD card (firmware ≥ 2.12). ::: ## Device options | Key | Type | Default | Meaning | |---|---|---|---| | `protocol` | string | `udp` | `udp` (factory default) or `tcp` (DIP switch 4 = 1). | | `decimals` | int | `0` | NKOM setting of the Net-Scale: raw 5-digit weights are divided by 10^decimals. | | `timeout` | int | `3000` | Response timeout in ms per attempt. | | `retries` | int | `2` | Request attempts (UDP packets can get lost). | | `verifyChecksum` | boolean | `true` | Verify the block check character of measurement records. | ## Address format ``` [WAAGE::]FELD ``` `WAAGE` is the scale number 1–16 (omitted = currently selected scale); items sharing a scale share one request per cycle. - `gewicht` (Number, scaled by `decimals`), `tara` (Number), `dimension` (String, e.g. `kg`) - Booleans from the status/error bytes: `stillstand`, `tariert`, `fixtara`, `ueberlast`, `akkuleer`, `test` - `messbereich` (Number, 1/2) ## Example configuration ```json { "devices": [ { "objectId": "crane1", "name": "Crane scale hall 1", "connectionString": "netscale://10.0.0.60:187", "interval": 2000, "enabled": true, "options": { "protocol": "udp", "decimals": 1 }, "extraOptions": { "host": "broker:1883", "clientId": "openconnect" } } ], "items": [ { "objectId": "weight", "DeviceID": { "objectId": "crane1" }, "address": "2::gewicht", "label": "Weight scale 2", "type": "Number", "unit": "kg", "source": { "tag": "hall1/crane" }, "enabled": true, "onChange": true, "extraOptions": {} } ] } ``` ## Writes The write topic is the record to send, the payload an optional value: `01` zero, `02`/`03` tare set/clear, `04` fixed tare (value in the payload), `10` register weight at standstill (returns the alibi record), `12` fetch hand registration. Commands are chainable per protocol, e.g. `0509;10` (select scale 9, then register). ```bash # HTTP — set a fixed tare of 100 curl -X POST "http://openconnect:8080/write/crane1/04" \ -H "Authorization: Bearer $TOKEN" -d '+00100' # MQTT (capability mqttwrite) mosquitto_pub -t 'write/crane1/04' -m '+00100' ``` See the [write API](../write-api.md) for authentication and the MQTT setup.