Hitta enhetens IP
I Drainbee-appen
Enhetsinställningar → Lokal IP. Här visas den senast rapporterade adressen, till exempel 192.168.1.42. Tryck på den för att öppna API-översikten i appen.
I routern
Hitta Drainbees IP i routerns enhetslista. Där kan du också reservera en fast adress.
Tips: IP-adressen kan ändras när routern startas om. Ställ in en DHCP-reservation (alltid samma IP-adress) så att dina skript fortsätter fungera.
Första anropet
Ett vanligt HTTP GET-anrop räcker. Byt ut IP-adressen mot enhetens adress. Du kan även skriva den direkt i webbläsarens adressfält.
curl http://192.168.1.42/status - Metod
- GET
- Sökväg
- /status
- Port
- 80 (HTTP)
- Autentisering
- ingen
Svar och fält
Svaret är ett JSON-objekt med Content-Type: application/json och Cache-Control: no-store. Ett anrop startar inte en ny mätning – du får det senaste kända värdet och dess ålder.
{
"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
}
} | Fält | Typ | Beskrivning |
|---|---|---|
| deviceId | string | Enhetens identifierare, som den visas i appen. |
| firmwareVersion | string | Installerad firmware, till exempel 1.2.5. |
| uptimeMs | number | Millisekunder sedan enhetens senaste start – inte en kalendertidsstämpel. |
| measurement.cm | number | null | Senaste utjämnade vattennivån i centimeter. null före första mätningen. |
| measurement.ageMs | number | null | Mätningens ålder i millisekunder. Ett anrop startar ingen ny mätning. null före första mätningen. |
| wifi.isConnected | boolean | Om Drainbee är ansluten till Wi-Fi. |
| wifi.localIp | string | null | Aktuell IP i hemnätverket. null om den inte är tillgänglig. |
| wifi.rssiDbm | number | null | Signalstyrka i dBm (närmare 0 är bättre; −60 är bra, −80 är svagt). null om den inte är tillgänglig. |
| mqtt.isConnected | boolean | Om anslutningen till Drainbees moln är aktiv. Det lokala API:et fungerar oberoende av detta. |
| memory.freeHeapBytes | number | Ledigt arbetsminne just nu i byte. |
| memory.minFreeHeapBytes | number | Minsta lediga arbetsminne sedan start, i byte. |
| memory.largestFreeBlockBytes | number | Största sammanhängande lediga minnesblock i byte. |
Senare firmwareversioner kan lägga till fält. Förlita dig inte på nycklarnas ordning.
Integrationsexempel
Alla exempel läser measurement.cm och hanterar null – före första mätningen finns inget värde. Det är vanliga HTTP-anrop; det finns ingen inbyggd Drainbee-integration och inget stöd för Matter eller HomeKit.
Home Assistant
sensor:
- platform: rest
name: "Drainbee vattennivå"
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 med YAML. När measurement.cm är null visas sensorn som otillgänglig. Lägg till i dina befintliga sensor:-poster i stället för att skapa ett andra sensor:-block.
Node-RED
const measurement = msg.payload?.measurement;
if (typeof measurement?.cm !== "number") {
node.status({ fill: "grey", shape: "ring", text: "Ingen mätning ännu" });
return null;
}
msg.ageMs = measurement.ageMs;
msg.payload = measurement.cm;
node.status({ fill: "blue", shape: "dot", text: measurement.cm + " cm" });
return msg; Ställ in en HTTP Request-nod med http://192.168.1.42/status och välj ett tolkat JSON-objekt som svar. Kör den med en Inject-nod var 60:e sekund och lägg sedan till denna Function-nod.
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 inte 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-adaptern skapar en datapunkt och uppdaterar den varje minut. Saknade mätvärden och anslutningsfel sparas som null så att gamla värden inte visas som aktuella.
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ätning ännu" if cm is None else f"{cm} cm")
except (OSError, urllib.error.URLError, ValueError, KeyError) as error:
raise SystemExit(f"Drainbee kan inte nås: {error}") Ett anrop med Pythons standardbibliotek – inga extra paket. Saknad mätning ger None; anslutningsfel rapporteras som fel.
Avläsningsintervall: 30–60 s räcker. Anrop gör inte mätningen snabbare; använd measurement.ageMs för att upptäcka gamla värden.
Fel och hjälp
- 200
- OK
Status som JSON. Enskilda fält kan vara null.
- 404
- Not Found
Okänd sökväg. Bara /status finns – sökvägar som /value är inte tillgängliga i firmware 1.2.5.
- 405
- Method Not Allowed
Endast GET stöds. POST, PUT och DELETE avvisas.
- 503
- Service Unavailable
Status kunde inte skapas just nu. Vänta en stund och försök igen.
Inget svar? Kontrollera i denna ordning:
-
Stämmer IP-adressen?
Jämför med Enhetsinställningar → Lokal IP i appen eller routerns enhetslista. Adressen kan ändras efter en omstart av routern – en DHCP-reservation hjälper.
-
Är firmware uppdaterad?
GET /status finns från 1.2.5. Äldre firmware svarar inte på den sökvägen. Versionen visas i appens enhetsinställningar.
-
Samma nätverk?
Gästnätverk och separata Wi-Fi-nät, till exempel ett IoT-VLAN, blockerar ofta åtkomst mellan enheter. Din klient måste vara i samma nät som Drainbee eller ha en rutt dit.
-
Har Drainbee ström och Wi-Fi?
Kontrollera strömförsörjningen och routerns enhetslista. Det lokala API:et behöver Wi-Fi. En förlorad molnanslutning hindrar inte i sig lokal åtkomst.
-
Fel protokoll?
Använd http://, inte https://. Vissa webbläsare lägger till https automatiskt – skriv uttryckligen http:// i adressen.
Nätverk och säkerhet
Det lokala API:et är avsett för ditt betrodda hemnätverk. Det saknar autentisering och HTTPS. Alla som kan nå Drainbee i nätverket kan läsa status, men inget kan ändras via API:et.
Gör det inte offentligt tillgängligt
Ställ inte in portvidarebefordran för port 80 till Drainbee i routern. Använd Drainbee-appen eller ett VPN till hemnätverket för fjärråtkomst.
Oberoende av molnet
Anropet går direkt till enheten och lämnar inte ditt nätverk. Det fungerar även när MQTT- eller molnanslutningen är nere, så länge Drainbee har ström och Wi-Fi.
Finns inte i 1.2.5
- Andra ändpunkter som /value, /history eller konfiguration
- Strömning, WebSockets eller pushnotiser via det lokala API:et
- Offlinehistorik på enheten – historiken visas i appen
Frågor om API:et? [email protected]
← Tillbaka till startsidan