Skip to content

Commit

Permalink
## [2.1.0] - 12.10.2023
Browse files Browse the repository at this point in the history
- Added buttons to config page
  - Manual forcing feature (output can be set ON for next x hours - no matter what the price is / logic does)
  - Link to Shelly web admin
- Removed `Access-Control-Allow-Origin` header for security
  - Needed for local web UI development
  - For developing and external API usage, the line needs to be uncommented from `src/shelly-porssisahko.js`
- README updated
  • Loading branch information
jisotalo committed Oct 12, 2023
1 parent 36d0659 commit cde2007
Show file tree
Hide file tree
Showing 9 changed files with 260 additions and 61 deletions.
30 changes: 28 additions & 2 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,9 +4,35 @@ All notable changes to this project will be documented in this file.
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).

# Suomeksi
## [2.1.0] - 12.10.2023
- Lisätty asetussivulle kaksi nappia
- Pakko-ohjaus (lähdön voi pakottaa päälle x tunniksi - ei väliä onko hinta kallis vai halpa)
- Linkki Shellyn hallintapaneeliin
- Otettu `Access-Control-Allow-Origin` vakiona pois käytöstä tietoturvan vuoksi
- Paikallinen käyttöliittymäkehitys ei onnistu ilman tätä
- Kehitystä ja API:n muualta käyttöä varten rivi pitää kommentoida käyttöön `src/shelly-porssisahko.js`-tiedostosta
- README päivitetty

## [2.0.1] - 10.10.2023
- Bugikorjaus: Käsiajon ohjauksen ja hätätilaohjauksen muuttaminen ei toiminut

## [2.0.0] - 10.10.2023
- Versio 2 julkaistu (tehty täysin uusiksi)

# In English
## [2.1.0] - 12.10.2023
- Added buttons to config page
- Manual forcing feature (output can be set ON for next x hours - no matter what the price is / logic does)
- Link to Shelly web admin
- Removed `Access-Control-Allow-Origin` header for security
- Needed for local web UI development
- For developing and external API usage, the line needs to be uncommented from `src/shelly-porssisahko.js`
- README updated


## [2.0.1] - 10.10.2023
- Changed
- Bug fix: Setting manual mode command and error command to ON weren't working
- Bug fix: Setting manual mode command and error command to ON weren't working

## [2.0.0] - 10.10.2023
- Version 2 released (total rewrite)
143 changes: 123 additions & 20 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
# shelly-porssisahko - Pörssisähköohjaus Shelly-releisiin
[![License](https://img.shields.io/badge/License-AGPLv3-orange)](https://choosealicense.com/licenses/agpl-3.0/)
[![GitHub](https://img.shields.io/badge/View%20on-GitHub-brightgreen)](https://github.com/jisotalo/shelly-porssisahko)
[![Support](https://img.shields.io/badge/Support_with-PayPal-yellow)](https://www.paypal.com/donate/?business=KUWBXXCVGZZME&no_recurring=0&currency_code=EUR)

*In English - see bottom of the page.*
Expand All @@ -13,30 +14,27 @@ Skripti käyttää suoraan Viron kantaverkkoyhtiön [elering.ee](https://dashboa
![0qmExM5DKq](https://github.com/jisotalo/shelly-porssisahko/assets/13457157/adb41125-9be3-4bc4-9ba3-3eff180160bf)


## Projektin tila

Versio 2 julkaistu 10.0.2023. Ensimmäinen versio lakkasi toimista kun Shelly kiristi skriptien koko- ja muistirajoituksia reilusti.

Uusi versio on tehty alusta asti uusiksi ja skripti pakataan niin pieneen tilaan kuin mahdollista. Näin se mahtuu Shellyn uusiin rajoihin (jotka valmistaja on kyllä luvannut nostaa isommaksi).

Uutta versiota ei ole vielä pitkäaikaistestattu.

## Ominaisuudet
* Oma web-serveri Shellyn sisällä ja siinä pyörivä käyttöliittymä
* Valvonta ja konfigurointi selaimen avulla
* Kolme ohjaustapaa: käsiohjaus, hintaraja tai jakson halvimmat tunnit
* Ei liityntöjä 3. osapuolen palveluihin
* Kolme ohjaustapaa:
* **käsiohjaus** - yksinkertaisesti ohjaus päälle/pois
* **hintaraja** - jos hinta on alle rajan, laitetaan ohjaus päälle
* **jakson halvimmat tunnit** - valitaan halutulta aikajaksolta x halvinta tuntia (tai aina päälle kun tarpeeksi halpaa)
* Vikasietoinen
* Varmuustunnit (jos ei hintoja mutta tiedetään kellonaika)
* Hätätilaohjaus (jos ei internet-yhteyttä eikä tiedetä kellonaikaa)
* Todettu toimivaksi seuraavilla laitteilla
* Shelly Plus 1PM

## Projektin tila

## Puutteet
- Logitus puuttuu
- Vain 12 viime ohjauksen muutosta (~12h) pysyy muistissa. 24h ei ihan mahdu nykyisellään.
Versio 2 julkaistu 10.0.2023. Ensimmäinen versio lakkasi toimista kun Shelly kiristi skriptien koko- ja muistirajoituksia reilusti.

Nämä saadaan kuntoon jos Shelly nostaa muistirajoitusta. Tällä hetkellä ei vaan yksinkertaisesti ole tarpeeksi muistia.
Uusi versio on tehty alusta asti uusiksi ja skripti pakataan niin pieneen tilaan kuin mahdollista. Näin se mahtuu Shellyn nykyisin rajoihin.

## Todettu toimivaksi seuraavilla laitteilla
* Shelly Plus 1PM
Uutta versiota ei ole vielä pitkäaikaistestattu.


## Asennus
Expand Down Expand Up @@ -78,18 +76,123 @@ Nämä saadaan kuntoon jos Shelly nostaa muistirajoitusta. Tällä hetkellä ei

12. Valmista. **Älä asenna muita skriptejä - muisti loppuu kesken**

## Käyttöohje
## Ohje

### Etusivu
*README kesken*

## Sähköinen kytkentä
### Asetukset
*README kesken*

Lue lisää häiriösuojauksesta [spot-hinta.fi -sivustolta](https://spot-hinta.fi/shelly/).
**Yleiset**

## Teknistä tietoa ja kehitysympäristö
| Asetus | Selite | Esimerkki
| --- | --- | ---
| Ohjaustyyppi | Millä ohjaustavalla lähtöä ohjataan (katso alla)
| Ohjattava lähtö | Shellyn ohjattavan lähdön numero | `0`
| Sähkön ALV | Käytettävä ALV-% sähkön hinnalle [%]| `24`
| Siirtomaksut | Jos haluat että siirtomaksut otetaan huomioon, voit syöttää ne päivä- ja yöajalle [c/kWh]| päivä: `4` <br> yö: `3`
| Varmuustunnit | Jos sähkön hintaa ei jostain syystä tiedetä, ohjataan lähtö näillä tunneilla päälle
| Hätätilaohjaus | Jos Shelly ei jostain syystä tiedä kellonaikaa, ohjataan lähtö tähän tilaan

*README kesken*
**KÄSIOHJAUS**

Asetukset voimassa vain jos ohjaustapa on *käsiohjaus*.

| Asetus | Selite | Esimerkki
| --- | --- | ---
| Ohjaus | Laitetaankö lähtö päälle vai pois

**HINTARAJA**

Asetukset voimassa vain jos ohjaustapa on *hintaraja*.

| Asetus | Selite | Esimerkki
| --- | --- | ---
| Hintaraja | Aseta hinta, jossa ja jonka alla lähtö asetetaan päälle. Muuten lähtö on pois päältä [c/kWh] | `4.25`

**JAKSON HALVIMMAT TUNNIT**

Asetukset voimassa vain jos ohjaustapa on *jakson halvimmat tunnit*.

| Asetus | Selite | Esimerkki
| --- | --- | ---
| Ajanjakso | Minkä mittaisiin jaksoihin vuorokausi jaetaan. Jokaiselta jaksolta haetaan sitten halvimmat tunnit [h] | `6`
| Tuntimäärä | Kuinka monta halvinta tuntia lähtö ohjataan päälle ajanjakson aikana.<br><br>Eli jos ajanjakso on 6h ja tuntimäärä 2, kello 00...06 lähtö ohjataan päälle kahtena halvimpana tuntina. Kuten myös kello 06...12 ja niin edelleen. | `2`
| Aina päällä -raja | Jos sähkö on tätä halvempaa niin lähtö on aina päällä [c/kWh] | `-0.5`

Alla esimerkki miten ohjaukset menevät 12.10.2023 hinnoilla ja yllä olevilla asetuksilla (6h, 2 halvinta tuntia, aina päällä -raja -0.5 c/kWh). Huomaa jaksojen korostus taustavärillä.

![image](https://github.com/jisotalo/shelly-porssisahko/assets/13457157/35324051-c58a-46f0-897f-afa5eb373c18)

**TOIMINNOT**
* **Pakko-ohjaus**
* Painamalla tätä voit asettaa lähdön päälle määritellyksi ajaksi (voi syöttää myös esim 0.5 = puoli tuntia)
* **Avaa Shelly**
* Avaa uudessa välilehdessä Shellyn oman hallintasivun






## Sähköinen kytkentä

Lue lisää häiriösuojauksesta esimerkiksi [spot-hinta.fi -sivustolta](https://spot-hinta.fi/shelly/).

## Teknistä tietoa ja kehitysympäristö

### Lyhyesti
* Shellyyn asennattava skripti on "kääntöprosessin" tulos
* Tämä jotta skripti saadaan mahtumaan mahdollisimman pieneen tilaan
* Staattiset web-serverin tiedostot (html, css, js) minimoidaan, pakataan gzip-muotoon ja base64-enkoodataan
* Nämä tiedostot sisällytetään `shelly-porssisahko.js`-skriptiin
* Esim `atob('#[tab-config.js]')` korvataan kyseisen tiedoston pakatulla sisällöllä, joten lopputulos on luokkaa `atob("H4sIAAAAAAAACo1...`
* Myös `shelly-porssisahko.js` minimoidaan
* Käyttää [elering.ee:n CSV-muotoista API:a](https://dashboard.elering.ee/assets/api-doc.html#/nps-controller/getPriceAsCSVUsingGET) (JSON vie liikaa muistia)
* Esim. [Suomen hinnat 12.10.2023 CSV:nä](https://dashboard.elering.ee/api/nps/price/csv?fields=fi&start=2023-10-12T00:00:00%2b03:00&end=2023-10-12T23:59:59%2b03:00)


### Tiedostot ja kansiot
* `src/shelly-porssisahko.js`
* Itse skripti, ei kuitenkaan ajettavissa Shellyssä (vaatii "kääntämisen")
* `src/statics/`
* Staattiset html, js ja css -tiedostot
* `dist/shelly-porssisahko.js`
* **"Käänetty" valmis skripti joka voidaan laittaa ajoon**
* Minimoitu ja sisältää myös staattiset tiedostot
* `dist/statics/`
* Staattiset tiedostot, jotka muodostuvat kääntöprosessin aikana, debuggausta varten
* Minimoidut staattiset tiedostot sekä pakatut versiot
* Ei sisälly versiohallintaan

### Muistin käyttö

*README kesken*

### Kehitysympäristö

Käyttää Node.js -ympäristöä.

**Kääntöprosessi:**

1) `npm i`
2) `npm run build`
3) `dist/shelly-porssisahko.js` on valmis ladattavaksi laitteeseen

**Komentoja**
* `npm run build`
* "kääntää" eli tekee valmiin `dist/shelly-porssisahko.js`-skriptin
* `npm run upload`
* lähettää `dist/shelly-porssisahko.js`-skriptin määritettyyn shellyyn ja käynnistää sen
* `npm start`
* ajaa `npm run build` ja sen jälkeen `npm run upload`
* `npm run debug`
* kuuntelee porttiin 8001 tulevaa UDP-dataa
* aseta shellystä UDP debug muotoon `ip_osoitteesi:8001`
* `npm run serve`
* käyttöliittymän kehitystä varten
* käynnistää paikallisen web-serverin ja tarjoaa `src/statics/` -kansion tiedostot portista 3000
## In English

This is a script to control relay by Nordpool electric spot prices for Shelly products (especially Shelly Plus 1PM) with web-based user interface.
Expand Down
Loading

0 comments on commit cde2007

Please sign in to comment.