Rajapinta

Laitteet ja kalenteri

Rele ei tarvitse dokumenttia, se tarvitsee yhden luvun. Nämä osoitteet vastaavat pelkällä arvolla ja ottavat samat parametrit kuin JSON.

Yksi arvo per osoite

Tekstiosoitteet
/prices/current.txt?vat=1&margin=0,49&transfer=3,2 9.97 Hinta nyt. Tariffin kanssa kokonaishinta, ilman sitä markkinahinta.
/prices/level.txt moderate Hintaluokka: negative, cheap, moderate, high tai extreme.
/prices/cheapest.txt?hours=3&after=22:00&before=07:00 1 1 kun yön halvin kolmen tunnin jakso on käynnissä.
/prices/below.txt?threshold=5&vat=1 0 1 kun hinta on alle rajan.

Ilman hintaa kuluvalle vartille vastaus on tyhjä ja tila 503. Kysy kerran minuutissa tai harvemmin; hinta vaihtuu vartin välein.

Shelly (Gen2 ja uudemmat)

Skripti laitteen omaan Scripts-osioon. Rele seuraa halvinta jaksoa; vaihda osoite below.txt-osoitteeksi, jos haluat hintarajan.

let URL = "https://wattiplus.fi/api/v1/prices/cheapest.txt?hours=3&after=22:00&before=07:00";

function check() {
  Shelly.call("HTTP.GET", { url: URL, timeout: 10 }, function (res) {
    if (!res || res.code !== 200) return;
    let on = res.body === "1";
    Shelly.call("Switch.Set", { id: 0, on: on });
  });
}

check();
Timer.set(5 * 60 * 1000, true, check);

ESPHome

http_request:
  useragent: esphome-wattiplus

interval:
  - interval: 5min
    then:
      - http_request.get:
          url: https://wattiplus.fi/api/v1/prices/below.txt?threshold=6&vat=1
          capture_response: true
          on_response:
            then:
              - if:
                  condition:
                    lambda: 'return body == "1";'
                  then:
                    - switch.turn_on: rele
                  else:
                    - switch.turn_off: rele

Tasmota

Berry-skripti (ESP32) tai sääntö WebQuery-komennolla. Berry:

import string
def wattiplus()
  var cl = webclient()
  cl.begin("https://wattiplus.fi/api/v1/prices/cheapest.txt?hours=3")
  if cl.GET() == 200
    tasmota.set_power(0, cl.get_string() == "1")
  end
  cl.close()
end
tasmota.add_cron("0 */5 * * * *", wattiplus, "wattiplus")

Node-RED ja muut

inject viiden minuutin välein, http request mihin tahansa JSON-osoitteeseen ja switch-solmu kentällä msg.payload.cheapest["3h"].active. openHAB:n HTTP-binding, Homey, Apple Shortcuts ja mikä tahansa curl-kykyinen laite toimivat samoin; tekstiosoitteet ovat niille yksinkertaisin vaihtoehto.

Kalenterisyöte

Halvin jakso tänään ja huomenna kalenteritapahtumina, jotka päivittyvät itsestään iltapäivällä kun huomisen hinnat julkaistaan. Tilaa osoite kalenterisovellukseen (iPhone: Asetukset → Kalenteri → Tilit → Lisää tili → Muu → Lisää tilattu kalenteri; Google-kalenteri: Muut kalenterit → Lisää URL-osoitteesta):

Kalenterisovellukset päivittävät tilatun syötteen omaan tahtiinsa, tyypillisesti muutaman tunnin välein. Syötteessä on veron sisältävä keskihinta; &vat=0 antaa verottoman.