79 lines
2.7 KiB
Markdown
79 lines
2.7 KiB
Markdown
# DS18B20 til payload-server
|
|
|
|
Sketchen måler temperaturen med et Keyestudio KS0023 DS18B20-modul hvert 10.
|
|
sekund. Målingerne gemmes i en fast ringbuffer og sendes samlet til
|
|
`https://payloads.p20.dev/api/payloads` hvert 5. minut.
|
|
|
|
Hver måling får sit eget UTC-tidsstempel. Boardet synkroniserer tiden over
|
|
Wi-Fi og opdaterer tidsreferencen hver 6. time. Bufferen har plads til 1 times
|
|
målinger. Efter et netværksudfald sendes de ældste batches først; kun et
|
|
vellykket HTTP 2xx-svar fjerner en batch fra bufferen.
|
|
|
|
Ved uploadfejl prøver sketchen igen efter et minut. Wi-Fi-forbindelsen nulstilles
|
|
efter hver tredje sammenhængende fejl, og boardet genstarter efter den tolvte.
|
|
En batch bruger den ældste målings tidsstempel som stabilt `batchId`, så samme
|
|
batch kan genkendes, hvis et serversvar går tabt og uploaden gentages.
|
|
|
|
Et HD44780-kompatibelt LCD1602 med PCF8574 I²C-backpack viser temperatur,
|
|
Wi-Fi (`W+`/`W-`), UTC-tid (`U+`/`U-`), heartbeat og antal målinger i bufferen.
|
|
Under upload viser det batchstatus og HTTP-status. Sensorfejl, uploadfejl og
|
|
automatisk genstart vises som tydelige tekstbeskeder. Sketchen scanner begge
|
|
almindelige PCF8574-adresseområder og opdager også et display, der tilsluttes
|
|
efter opstart.
|
|
|
|
## Tilslutning
|
|
|
|
| KS0023 | Arduino UNO R4 WiFi |
|
|
| --- | --- |
|
|
| `DAT` | D2 |
|
|
| `VCC` | 5V |
|
|
| `GND` | GND |
|
|
|
|
KS0023-modulet har pull-up-modstanden til 1-Wire-datalinjen monteret på boardet.
|
|
|
|
| LCD1602 I²C | Arduino UNO R4 WiFi |
|
|
| --- | --- |
|
|
| `GND` | `GND` |
|
|
| `VCC` | `5V` |
|
|
| `SDA` | `SDA` (eller A4) |
|
|
| `SCL` | `SCL` (eller A5) |
|
|
|
|
Hvis baggrundsbelysningen tænder, men teksten ikke kan ses, justeres det blå
|
|
kontrast-potentiometer på I²C-backpacket forsigtigt.
|
|
|
|
## Secrets
|
|
|
|
Kopiér `arduino_secrets.example.h` til `arduino_secrets.h`. Brug samme
|
|
`SECRET_SSID` og `SECRET_PASS` som i `wifi_matrix_status`, og indsæt værdien af
|
|
`API_BEARER_TOKEN` fra repoets lokale `.env` som `SECRET_API_TOKEN`.
|
|
|
|
Den lokale secret-fil er allerede ignoreret af Git.
|
|
|
|
## Biblioteker og kompilering
|
|
|
|
Installér `OneWire` og `DallasTemperature` i Arduino IDE's Library Manager.
|
|
`WiFiS3` og `Wire` følger med UNO R4-boardpakken.
|
|
|
|
```powershell
|
|
arduino-cli lib install OneWire DallasTemperature
|
|
arduino-cli compile --fqbn arduino:renesas_uno:unor4wifi sketches/arduino-uno-r4-wifi/ds18b20_payload
|
|
arduino-cli upload -p COM5 --fqbn arduino:renesas_uno:unor4wifi sketches/arduino-uno-r4-wifi/ds18b20_payload
|
|
```
|
|
|
|
API-payloaden indeholder op til 30 tidsstemplede målinger:
|
|
|
|
```json
|
|
{
|
|
"topic": "sensors/temperature",
|
|
"payload": {
|
|
"device": "uno-r4-wifi-ds18b20",
|
|
"batchId": 1,
|
|
"samples": [
|
|
{
|
|
"measuredAtUnix": 1793025000,
|
|
"temperatureC": 22.50
|
|
}
|
|
]
|
|
}
|
|
}
|
|
```
|