Find enhedens IP
I Drainbee-appen
Enhedsindstillinger → Lokal IP. Her vises den senest rapporterede adresse, f.eks. 192.168.1.42. Tryk på den for at åbne API-oversigten i appen.
I routeren
Find Drainbees IP på routerens enhedsliste. Her kan du også reservere en fast adresse.
Tip: IP-adressen kan ændre sig, når routeren genstarter. Opret en DHCP-reservation (altid samme IP-adresse), så dine scripts bliver ved med at virke.
Første forespørgsel
Et enkelt HTTP GET-kald er nok. Erstat IP-adressen med din enheds adresse. Du kan også skrive den direkte i browserens adresselinje.
curl http://192.168.1.42/status - Metode
- GET
- Sti
- /status
- Port
- 80 (HTTP)
- Godkendelse
- ingen
Svar og felter
Svaret er et JSON-objekt med Content-Type: application/json og Cache-Control: no-store. En forespørgsel starter ikke en ny måling – du får den senest kendte værdi og dens alder.
{
"deviceId": "drainbee",
"firmwareVersion": "1.2.5",
"uptimeMs": 86400000,
"measurement": {
"cm": 42,
"ageMs": 3200
},
"wifi": {
"isConnected": true,
"localIp": "192.168.1.42",
"rssiDbm": -61
},
"mqtt": {
"isConnected": false
},
"memory": {
"freeHeapBytes": 142000,
"minFreeHeapBytes": 98000,
"largestFreeBlockBytes": 86000
}
} | Felt | Type | Beskrivelse |
|---|---|---|
| deviceId | string | Enhedens identifikator, som den vises i appen. |
| firmwareVersion | string | Installeret firmware, f.eks. 1.2.5. |
| uptimeMs | number | Millisekunder siden enhedens seneste start – ikke et kalendertidsstempel. |
| measurement.cm | number | null | Seneste udjævnede vandstand i centimeter. null før første måling. |
| measurement.ageMs | number | null | Målingens alder i millisekunder. En forespørgsel starter ingen ny måling. null før første måling. |
| wifi.isConnected | boolean | Om Drainbee er tilsluttet Wi-Fi. |
| wifi.localIp | string | null | Aktuel IP på hjemmenetværket. null, når den ikke er tilgængelig. |
| wifi.rssiDbm | number | null | Signalstyrke i dBm (tættere på 0 er bedre; −60 er godt, −80 er svagt). null, når den ikke er tilgængelig. |
| mqtt.isConnected | boolean | Om forbindelsen til Drainbee-skyen er aktiv. Det lokale API fungerer uafhængigt af den. |
| memory.freeHeapBytes | number | Aktuelt ledig arbejdshukommelse i byte. |
| memory.minFreeHeapBytes | number | Mindste mængde ledig arbejdshukommelse siden start, i byte. |
| memory.largestFreeBlockBytes | number | Største sammenhængende ledige hukommelsesblok i byte. |
Senere firmwareversioner kan tilføje felter. Regn ikke med en bestemt rækkefølge af nøglerne.
Integrationseksempler
Alle eksempler læser measurement.cm og håndterer null – før den første måling er der ingen værdi. Det er almindelige HTTP-kald; der er ingen indbygget Drainbee-integration og ingen understøttelse af Matter eller HomeKit.
Home Assistant
sensor:
- platform: rest
name: "Drainbee vandstand"
unique_id: drainbee_water_level
resource: http://192.168.1.42/status
scan_interval: 60
timeout: 5
unit_of_measurement: "cm"
device_class: distance
state_class: measurement
availability: "{{ value_json.measurement.cm is number }}"
value_template: "{{ value_json.measurement.cm }}"
json_attributes_path: "$.measurement"
json_attributes:
- ageMs REST-sensor konfigureret i YAML. Når measurement.cm er null, vises sensoren som utilgængelig. Føj til dine eksisterende sensor:-poster i stedet for at oprette endnu en sensor:-blok.
Node-RED
const measurement = msg.payload?.measurement;
if (typeof measurement?.cm !== "number") {
node.status({ fill: "grey", shape: "ring", text: "Ingen måling endnu" });
return null;
}
msg.ageMs = measurement.ageMs;
msg.payload = measurement.cm;
node.status({ fill: "blue", shape: "dot", text: measurement.cm + " cm" });
return msg; Indstil en HTTP Request-node til http://192.168.1.42/status, og vælg et fortolket JSON-objekt som svar. Udløs den med en Inject-node hvert 60. sekund, og tilføj derefter denne Function-node.
ioBroker
const STATE_ID = "javascript.0.drainbee.water_level_cm";
createState(STATE_ID, null, {
type: "number", role: "value", unit: "cm",
read: true, write: false
}, () => {
schedule("*/1 * * * *", () => {
httpGet("http://192.168.1.42/status", { timeout: 5000 }, (err, response) => {
if (err || response.statusCode !== 200) {
setState(STATE_ID, null, true);
log("Drainbee kan ikke nås", "warn");
return;
}
try {
const cm = JSON.parse(response.data).measurement?.cm;
setState(STATE_ID, typeof cm === "number" ? cm : null, true);
} catch {
setState(STATE_ID, null, true);
}
});
});
}); JavaScript-adapteren opretter et datapunkt og opdaterer det hvert minut. Manglende målinger og forbindelsesfejl gemmes som null, så en gammel værdi ikke fremstår som aktuel.
Python
import json
import urllib.error
import urllib.request
def water_level_cm(ip="192.168.1.42", timeout=5):
with urllib.request.urlopen(f"http://{ip}/status", timeout=timeout) as response:
data = json.load(response)
return data["measurement"]["cm"]
try:
cm = water_level_cm()
print("Ingen måling endnu" if cm is None else f"{cm} cm")
except (OSError, urllib.error.URLError, ValueError, KeyError) as error:
raise SystemExit(f"Drainbee kan ikke nås: {error}") Én forespørgsel med Pythons standardbibliotek – ingen ekstra pakker. En manglende måling giver None; forbindelsesfejl rapporteres som fejl.
Aflæsningsinterval: 30–60 s er tilstrækkeligt. Forespørgsler gør ikke målingen hurtigere; brug measurement.ageMs til at opdage gamle værdier.
Fejl og hjælp
- 200
- OK
Status som JSON. Enkelte felter kan være null.
- 404
- Not Found
Ukendt sti. Kun /status findes – stier som /value er ikke tilgængelige i firmware 1.2.5.
- 405
- Method Not Allowed
Kun GET understøttes. POST, PUT og DELETE afvises.
- 503
- Service Unavailable
Status kunne ikke oprettes lige nu. Vent lidt, og prøv igen.
Intet svar? Tjek i denne rækkefølge:
-
Er IP-adressen korrekt?
Sammenlign med Enhedsindstillinger → Lokal IP i appen eller routerens enhedsliste. Adressen kan ændre sig efter en genstart af routeren – en DHCP-reservation hjælper.
-
Er firmwaren opdateret?
GET /status findes fra 1.2.5. Ældre firmware svarer ikke på denne sti. Se versionen i appens enhedsindstillinger.
-
Samme netværk?
Gæstenetværk og separate Wi-Fi-net, f.eks. et IoT-VLAN, blokerer ofte adgangen mellem enheder. Din klient skal være på samme netværk som Drainbee eller have en rute til det.
-
Har Drainbee strøm og Wi-Fi?
Tjek strømforsyningen og routerens enhedsliste. Det lokale API kræver Wi-Fi. En manglende skyforbindelse alene forhindrer ikke lokal adgang.
-
Forkert protokol?
Brug http://, ikke https://. Nogle browsere tilføjer https automatisk – skriv adressen med http://.
Netværk og sikkerhed
Det lokale API er beregnet til dit betroede hjemmenetværk. Det har ingen godkendelse eller HTTPS. Alle, der kan nå Drainbee på netværket, kan læse status, men intet kan ændres via API'et.
Gør det ikke offentligt tilgængeligt
Opret ikke portvideresendelse for port 80 til Drainbee i routeren. Brug Drainbee-appen eller en VPN til hjemmenetværket til fjernadgang.
Uafhængigt af skyen
Forespørgslen går direkte til enheden og forlader ikke dit netværk. Den virker også, når MQTT- eller skyforbindelsen er nede, så længe Drainbee har strøm og Wi-Fi.
Findes ikke i 1.2.5
- Andre endpoints som /value, /history eller konfiguration
- Streaming, WebSockets eller pushnotifikationer via det lokale API
- Offlinehistorik på enheden – historikken vises i appen
Spørgsmål om API'et? [email protected]
← Tilbage til forsiden