Laitteen IP-osoite
Drainbee-sovelluksessa
Laitteen asetukset → Paikallinen IP. Näet viimeksi ilmoitetun osoitteen, esimerkiksi 192.168.1.42. Napauta sitä avataksesi API:n esittelyn sovelluksessa.
Reitittimessä
Etsi Drainbeen IP reitittimen laiteluettelosta. Voit myös varata laitteelle pysyvän osoitteen siellä.
Vinkki: IP-osoite voi vaihtua reitittimen käynnistyessä uudelleen. Tee DHCP-varaus (aina sama IP-osoite), jotta skriptisi toimivat jatkossakin.
Ensimmäinen pyyntö
Tavallinen HTTP GET -pyyntö riittää. Korvaa IP-osoite oman laitteesi osoitteella. Voit myös kirjoittaa osoitteen suoraan selaimen osoiteriville.
curl http://192.168.1.42/status - Menetelmä
- GET
- Polku
- /status
- Portti
- 80 (HTTP)
- Tunnistautuminen
- ei tarvita
Vastaus ja kentät
Vastaus on JSON-objekti, jonka otsakkeet ovat Content-Type: application/json ja Cache-Control: no-store. Pyyntö ei käynnistä uutta mittausta – saat viimeisimmän tunnetun arvon ja sen iän.
{
"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
}
} | Kenttä | Tyyppi | Kuvaus |
|---|---|---|
| deviceId | string | Laitteen tunniste sellaisena kuin se näkyy sovelluksessa. |
| firmwareVersion | string | Asennettu laiteohjelmisto, esimerkiksi 1.2.5. |
| uptimeMs | number | Millisekunnit laitteen viimeisimmästä käynnistyksestä – ei kalenteriaikaleima. |
| measurement.cm | number | null | Viimeisin tasoitettu vedenpinta senttimetreinä. null ennen ensimmäistä mittausta. |
| measurement.ageMs | number | null | Mittauksen ikä millisekunteina. Pyyntö ei käynnistä uutta mittausta. null ennen ensimmäistä mittausta. |
| wifi.isConnected | boolean | Onko Drainbee yhdistetty Wi-Fi-verkkoon. |
| wifi.localIp | string | null | Nykyinen IP-osoite kotiverkossa. null, jos ei saatavilla. |
| wifi.rssiDbm | number | null | Signaalin voimakkuus dBm-yksikköinä (lähempänä nollaa on parempi; −60 on hyvä, −80 heikko). null, jos ei saatavilla. |
| mqtt.isConnected | boolean | Onko yhteys Drainbeen pilvipalveluun aktiivinen. Paikallinen API toimii tästä riippumatta. |
| memory.freeHeapBytes | number | Vapaana oleva käyttömuisti tavuina. |
| memory.minFreeHeapBytes | number | Pienin vapaan käyttömuistin määrä käynnistyksen jälkeen, tavuina. |
| memory.largestFreeBlockBytes | number | Suurin yhtenäinen vapaa muistialue tavuina. |
Myöhemmät laiteohjelmistoversiot voivat lisätä kenttiä. Älä luota avainten järjestykseen.
Integraatioesimerkit
Kaikki esimerkit lukevat measurement.cm-kentän ja käsittelevät null-arvon – ennen ensimmäistä mittausta arvoa ei ole. Nämä ovat tavallisia HTTP-pyyntöjä; valmista Drainbee-integraatiota, Matter- tai HomeKit-tukea ei ole.
Home Assistant
sensor:
- platform: rest
name: "Drainbee vedenpinta"
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 YAML-määritetty REST-anturi. Kun measurement.cm on null, anturi näkyy poissa käytöstä. Lisää määritys olemassa olevaan sensor:-osioon sen sijaan, että loisit toisen sensor:-osion.
Node-RED
const measurement = msg.payload?.measurement;
if (typeof measurement?.cm !== "number") {
node.status({ fill: "grey", shape: "ring", text: "Ei vielä mittausta" });
return null;
}
msg.ageMs = measurement.ageMs;
msg.payload = measurement.cm;
node.status({ fill: "blue", shape: "dot", text: measurement.cm + " cm" });
return msg; Aseta HTTP Request -solmun osoitteeksi http://192.168.1.42/status ja vastaukseksi jäsennetty JSON-objekti. Käynnistä pyyntö Inject-solmulla 60 sekunnin välein ja lisää sen jälkeen tämä Function-solmu.
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("Drainbeehen ei saada yhteyttä", "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-sovitin luo tietopisteen ja päivittää sen minuutin välein. Puuttuvat mittaukset ja yhteysvirheet tallennetaan null-arvona, jotta vanha arvo ei näytä ajantasaiselta.
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("Ei vielä mittausta" if cm is None else f"{cm} cm")
except (OSError, urllib.error.URLError, ValueError, KeyError) as error:
raise SystemExit(f"Drainbeehen ei saada yhteyttä: {error}") Yksi pyyntö Pythonin standardikirjastolla – ei lisäpaketteja. Puuttuva mittaus palauttaa None-arvon; yhteysongelmat ilmoitetaan virheinä.
Kyselyväli: 30–60 s riittää. Pyynnöt eivät nopeuta mittausta. Tunnista vanhentuneet arvot measurement.ageMs-kentän avulla.
Virheet ja ohjeet
- 200
- OK
Tila JSON-muodossa. Yksittäisten kenttien arvo voi olla null.
- 404
- Not Found
Tuntematon polku. Vain /status on käytössä – esimerkiksi /value ei ole saatavilla laiteohjelmistossa 1.2.5.
- 405
- Method Not Allowed
Vain GET on tuettu. POST, PUT ja DELETE hylätään.
- 503
- Service Unavailable
Tilatietoa ei voitu muodostaa juuri nyt. Odota hetki ja yritä uudelleen.
Ei vastausta? Tarkista nämä järjestyksessä:
-
Onko IP-osoite oikein?
Vertaa osoitetta sovelluksen kohtaan Laitteen asetukset → Paikallinen IP tai reitittimen laiteluetteloon. Osoite voi vaihtua reitittimen käynnistyessä uudelleen – DHCP-varaus auttaa.
-
Onko laiteohjelmisto ajan tasalla?
GET /status on käytettävissä versiosta 1.2.5 alkaen. Vanhempi laiteohjelmisto ei vastaa tähän polkuun. Versio näkyy sovelluksen laiteasetuksissa.
-
Sama verkko?
Vierasverkot ja erilliset Wi-Fi-verkot, kuten IoT-VLAN, estävät usein laitteiden välisen liikenteen. Asiakkaan täytyy olla Drainbeen kanssa samassa verkossa tai sillä täytyy olla reitti siihen.
-
Onko Drainbeellä virta ja Wi-Fi?
Tarkista virtalähde ja reitittimen laiteluettelo. Paikallinen API tarvitsee Wi-Fi-yhteyden. Pelkkä pilviyhteyden katkeaminen ei estä paikallista käyttöä.
-
Väärä protokolla?
Käytä http://-alkua, älä https://-alkua. Jotkin selaimet lisäävät https-alkuosan automaattisesti – kirjoita osoite http://-alkuisena.
Verkko ja turvallisuus
Paikallinen API on tarkoitettu luotettuun kotiverkkoosi. Siinä ei ole tunnistautumista eikä HTTPS-salausta. Kuka tahansa, joka saa yhteyden Drainbeehen verkossa, voi lukea tilan, mutta API:n kautta ei voi muuttaa mitään.
Älä avaa julkiseen verkkoon
Älä tee portinohjausta portista 80 Drainbeehen reitittimessäsi. Käytä etäyhteyteen Drainbee-sovellusta tai VPN-yhteyttä kotiverkkoosi.
Pilvestä riippumaton
Pyyntö menee suoraan laitteelle eikä poistu verkostasi. Se toimii myös MQTT- tai pilviyhteyden ollessa poikki, kunhan Drainbeellä on virta ja Wi-Fi-yhteys.
Ei saatavilla versiossa 1.2.5
- Muut päätepisteet, kuten /value, /history tai asetusten muuttaminen
- Suoratoisto, WebSockets tai push-ilmoitukset paikallisen API:n kautta
- Offline-historia laitteessa – historia näkyy sovelluksessa
Kysyttävää API:sta? [email protected]
← Takaisin etusivulle