Shellyn skriptit

  • Viestiketjun aloittaja Viestiketjun aloittaja artok
  • Aloituspäivämäärä Aloituspäivämäärä
Plus 1 ja dimmer 0/1-10V PM on ehkä ne kriittisimmät laitteet. Tuon linkin takaa näyttää löytyvän tällä hetkellä versio 1.5.1, mutta siinäkin sanotaan että "latest". Tarkoitus varmaan olisi tuollakin olla vain viimeisin versio saatavissa.
Menee yhden tason ylöspäin niin löytyy myös 1.3.3
 
Shellystä mitään tiedä joten...

Saako tuohon miten laitettua ohjelman jossa olisi 6kW vastukselle mobiili nappuloita joihin voi valita/ohjelmoida jotain tämmöstä?
-1kW keskiteho ja siis 1min päällä ja 5 pois
-2kW keskiteho ja siis 2min päällä ja 4 pois
-3kW keskiteho ja siis 3min päällä ja 3 pois
-4kW keskiteho ja siis 4min päällä ja 2 pois
-5kW keskiteho ja siis 5min päällä ja 1 pois

tjsp...
 
Shellystä mitään tiedä joten...

Saako tuohon miten laitettua ohjelman jossa olisi 6kW vastukselle mobiili nappuloita joihin voi valita/ohjelmoida jotain tämmöstä?
-1kW keskiteho ja siis 1min päällä ja 5 pois
-2kW keskiteho ja siis 2min päällä ja 4 pois
-3kW keskiteho ja siis 3min päällä ja 3 pois
-4kW keskiteho ja siis 4min päällä ja 2 pois
-5kW keskiteho ja siis 5min päällä ja 1 pois

tjsp...

Eipä tuo tarvii edes ohjelmaa. Hoituu ajastimilla. Valitset sitten mobiilinappulasta minkä ajastimen laitat vuorollaan käyntiin.
 
Eli siellä on pelkkiä ajastimia jotka virittyy nappulasta, eikä ne ole sidottu kellonaikoihin?

No ajastin toki on sidottu kelloon. Aikaahan tässä oli tarkoitus operoida. Nappulasta saa valittua mikä ajastin on käytössä niin voi eri tehoille olla erikseen ajastimensa. Itse käyttäisin kyllä 5 tai 15 minuutin sykliä kun se on sähkön mittaussykli. Muuten menee satunnaiseksi energian mittauksen kanssa, mihin mittausjaksoon syklit sattuu osumaan.

Mutta onnistuu tuollainen tehonsäätö siis kaikilla Shellyillä. Jopa niillä joissa ei ole scriptausmahdollisuutta.
 
No ajastin toki on sidottu kelloon. Aikaahan tässä oli tarkoitus operoida. Nappulasta saa valittua mikä ajastin on käytössä niin voi eri tehoille olla erikseen ajastimensa. Itse käyttäisin kyllä 5 tai 15 minuutin sykliä kun se on sähkön mittaussykli. Muuten menee satunnaiseksi energian mittauksen kanssa, mihin mittausjaksoon syklit sattuu osumaan.

Mutta onnistuu tuollainen tehonsäätö siis kaikilla Shellyillä. Jopa niillä joissa ei ole scriptausmahdollisuutta.
Tottakai kelloon ovat sidottu mutta ei toivottavasti kellonaikaan suoranaisesti vaan virittyy alkamaan silloin kun nappulaa painetaan eli rele vetää kun nappulaa painetaan ja ajoitus alkaa. Eli kuten nämä ajastimet monasti toimivat, triggauksesta aika muistiin ja siitä alkaa ensimmäinen jakso.
 
Tottakai kelloon ovat sidottu mutta ei toivottavasti kellonaikaan suoranaisesti vaan virittyy alkamaan silloin kun nappulaa painetaan eli rele vetää kun nappulaa painetaan ja ajoitus alkaa. Eli kuten nämä ajastimet monasti toimivat, triggauksesta aika muistiin ja siitä alkaa ensimmäinen jakso.

Toiminnalla haettiin alunperin keskitehoa. Sen se tekee.

Tätä uutta vaatimusta on vaikeampi täyttää. Lähinnä nappuloiden saaminen näytölle on se haaste. Onnistuu uudemmilla laitteilla ja taitaa vaatia kuukausimaksullisen tilauksen että saa riittävän määrän nappuloita näytölle. (kokeilenpa heti onnistuuko)

Jos vain käynnistämiseen on pakko olla se nappula, niin sitten tuon saa tehtyä ajastimen aika-asetuksia muuttelemalla numeerisesti ja nappulalla vain käynnistetään ensimäinen jakso.

Rajattoman määrän tuollaisia nappuloita saisi kyllä laatimalla oman "mobiiliapplikaation" eli HTML sivun, jossa ne nappulat ovat täysin vapaamuotoisesti ja nappulan painaminen lähettää laitteelle joukon komentoja, jotka säätävät nuo asetukset ja käynnistää toiminnon.
 
Viimeksi muokattu:
virittyy alkamaan silloin kun nappulaa painetaan

Kokeilin tätä ja sain Gen3 tyypin laitteella aikaan joukon nappuloita, jotka voisivat luoda sen haluamasi käyttöliittymän. Jokaiseen nappulaan voi määrittää komennon, joka kytkee virran heti päälle ja säätää samalla halutut aikavakiot toiminnon toistolle. Nappuloita voi sitten käyttää apin kautta. Tämä ei vaadi maksullista tilausta koska toiminnon määrittely tapahtuu laitteen paikallisesta käyttöliittymästä.
 
Saako Shelly plug S- älypistorasiaa scriptattua siten että käynnistyy seuraavan kerran aikaisintaan esim. 30 min päästä? Eilen juttelin chatGP:n kanssa ja kahlasin nettiä läpi. En suoraa vastausta saanut.

Ajatuksena on että Blu motion antaa liikkeellä käskyn pistorasialle käynnistyä 30 sekunniksi ja tämän jälkeen vastaava käynnistys aikaisintaan 30 min päästä.

Lähinnä että onko minulla edes mahdollisuuksia onnistua vai pitääkö keksiä jokin muu ratkaisu.
Vielä projekti kesken. On hankittu GEN 3 pistorasia mutta en saa tuota vähintään 30 min taukoa toteutettua. Jotain teen varmasti väärin. Laiteen sain käynnistymään liikkeestä 30 sekunniksi mutta käynnistyy heti perään uudestaan jos sammunut ja liikettä havaittu.

Jos jollakin on mielenkiintoa niin apua otetaan vastaan esim. YV:nä
 
Shellyyn tulee scripti joka tarkkailee liiketunnistinta ja ohjaa relettä. Mitenkään muuten tuota ei taida saada kunnolla toimimaan.
Scriptiin on helppo tehdä ajastus miten kierolla logiikalla tahansa.

Aloitat siis siitä että sinulla on Scripti joka tunnistaa liikkeeen eikä rele regoi liikeeseen itse mitenkään. Seuraavassa vaiheessa sitten rakennat siihen ajastuksen haluamallasi tavalla. Huomaa myös blue motionin blind delay, joka mutkistaa asioita jos sitä ei ole asetettu lyhyeksi.
 
Vielä projekti kesken. On hankittu GEN 3 pistorasia mutta en saa tuota vähintään 30 min taukoa toteutettua. Jotain teen varmasti väärin. Laiteen sain käynnistymään liikkeestä 30 sekunniksi mutta käynnistyy heti perään uudestaan jos sammunut ja liikettä havaittu.

Jos jollakin on mielenkiintoa niin apua otetaan vastaan esim. YV:nä
Skriptejä ei tarvita, vaan onnistuu ihan laitteen omilla perus automaatioilla

Linkitä plugS g3 ja BLU motion keskenään -> ensinnä hae BLU motion valmiiksi käteen
1) mene plugin IP osoitteesta löytyvään WebUI
2) valitse vasemmasta valikosta components ja Bluetooth (BTHome) devices josta +
3) popup avautuu, valitse scan ja paina motionin nappia ohjeen mukaan 10 sek ja se pitäisi ilmaantua löydettyihin BLU laitteisiin, suorita parittaminen loppuun ruudulla olevien ohjeiden mukaan
Kun paritus valmis, BLU motionin sensorit näkyvät osana plugin ohjauksia
4) Actions -> Create actions, select component -> BLU motion motion (0)
4.1) Action name rele päälle - tai muu kuvaava nimi
4.2) Execute when / Repeat when arvoksi 1800 (30min)
4.3) condition Any (älä muuta)
4.4) Then Do, Add action to execute -> Action: control output, Output state: On, Flip value after: 30

BLU Motionin blind timeksi voi asettaa 60sek jolloin se ei pidennä liikkeestä tuota 30sek päällä olo aikaa
Nyt rele pitäisi mennä päälle vain 30sek ajaksi ja vain 30min välein

Kerro miten toimi
 
Skriptejä ei tarvita, vaan onnistuu ihan laitteen omilla perus automaatioilla

Linkitä plugS g3 ja BLU motion keskenään -> ensinnä hae BLU motion valmiiksi käteen
1) mene plugin IP osoitteesta löytyvään WebUI
2) valitse vasemmasta valikosta components ja Bluetooth (BTHome) devices josta +
3) popup avautuu, valitse scan ja paina motionin nappia ohjeen mukaan 10 sek ja se pitäisi ilmaantua löydettyihin BLU laitteisiin, suorita parittaminen loppuun ruudulla olevien ohjeiden mukaan
Kun paritus valmis, BLU motionin sensorit näkyvät osana plugin ohjauksia
4) Actions -> Create actions, select component -> BLU motion motion (0)
4.1) Action name rele päälle - tai muu kuvaava nimi
4.2) Execute when / Repeat when arvoksi 1800 (30min)
4.3) condition Any (älä muuta)
4.4) Then Do, Add action to execute -> Action: control output, Output state: On, Flip value after: 30

BLU Motionin blind timeksi voi asettaa 60sek jolloin se ei pidennä liikkeestä tuota 30sek päällä olo aikaa
Nyt rele pitäisi mennä päälle vain 30sek ajaksi ja vain 30min välein

Kerro miten toimi
Kiitos, pitää kokeilla. Kannattaako minun palautta tehdasasetukset plugiin että motioniin ennen tuota. Vai riittääkö että poistaa vaan tehdyt actionit.
 
Ensimmäinen ongelma, ei löydy tuota Bluetooth (BTHome) devices. Plugi on liiketunnistimen yhdyskäytävänä. Ja lisäksi vertasin plugin actions sivua niin ei täsmää ohjeiden kanssa. Olenkohan ihan oikeassa paikassa tai voiko vaikuttaa jos ei ole oikein linkitetty


1750347836935.png

1750348184675.png
 
Skriptejä ei tarvita, vaan onnistuu ihan laitteen omilla perus automaatioilla

Linkitä plugS g3 ja BLU motion keskenään -> ensinnä hae BLU motion valmiiksi käteen
1) mene plugin IP osoitteesta löytyvään WebUI
2) valitse vasemmasta valikosta components ja Bluetooth (BTHome) devices josta +
3) popup avautuu, valitse scan ja paina motionin nappia ohjeen mukaan 10 sek ja se pitäisi ilmaantua löydettyihin BLU laitteisiin, suorita parittaminen loppuun ruudulla olevien ohjeiden mukaan
Kun paritus valmis, BLU motionin sensorit näkyvät osana plugin ohjauksia
4) Actions -> Create actions, select component -> BLU motion motion (0)
4.1) Action name rele päälle - tai muu kuvaava nimi
4.2) Execute when / Repeat when arvoksi 1800 (30min)
4.3) condition Any (älä muuta)
4.4) Then Do, Add action to execute -> Action: control output, Output state: On, Flip value after: 30

BLU Motionin blind timeksi voi asettaa 60sek jolloin se ei pidennä liikkeestä tuota 30sek päällä olo aikaa
Nyt rele pitäisi mennä päälle vain 30sek ajaksi ja vain 30min välein

Kerro miten toimi
Nyt sain sen tottelemaan käskyä ja olemaan määrätyn ajan päällä. Mutta sama ongelma kun aikaisemmin eli se käynnistää väkisin 30min päästä plugin vaikka ei olisi liikettä. Haluaisin että 30min jälkeen sen pitää myös havaita liikettä, että saa luvan käynnistyä.

Puhelimella tuon tein. Pitää huomenna koneella katsoa että onko vain joku asetus väärin.

Edit. Näytti sittenkin toimivan, en tiedä näkikö sensori vaikka olin sen testi mielessä peittänyt. Huomenna oikeat arvot sisään ja sensori paikalleen.
 
Viimeksi muokattu:
Tulikin tässä mieleen, että varttisähkö saattaakin olla tällaiseen varaston lämmitykseen patterilla ihan sopiva juttu, kun ei tuo patteri juuri ole kuin vartin päällä, niin piisaa sikäli. Sitten vain poimisi tiheämpään noita alimpia vartteja eikä alimpia tunteja.

Muttei varttisähkö kyllä moneen muuhun lämmitykseen/käyttöön ole ns sopiva muutos. Ja oma lukunsa scriptin teko (ja vielä kun tarvii olla ulkolämpötilaohjaus ja vaikeampana se, että tarvisi olla määriteltävissä max off-aika putkeen, mitä en ole nähnyt missään:)
 
Muttei varttisähkö kyllä moneen muuhun lämmitykseen/käyttöön ole ns sopiva muutos. Ja oma lukunsa scriptin teko (ja vielä kun tarvii olla ulkolämpötilaohjaus ja vaikeampana se, että tarvisi olla määriteltävissä max off-aika putkeen, mitä en ole nähnyt missään:)
On se varmasti skriptilläkin tehtävissä, Pörssäri ainakin tulee mahdollistamaan moisen, mutta siinä toki laskentatyö tehdään serverin päässä. Toki samaan tapaan taitaa käytännössä spot-hinnan skriptitkin toimia, Isotalon tekele on ainoa joka hakee hinnat ja tekee sen jälkeen kaiken paikallisesti.
 
Isotalon tekele on ainoa joka hakee hinnat ja tekee sen jälkeen kaiken paikallisesti.

Ihan sivuhuomautuksena... Tämä luultavasti on hyvin vaikea laittaa toimimaan varttihinnoilla. Se että Elering JSON vastaus on 4X kokoinen ei käsittääkseni enää mene skriptimoottorin muistiin. Mutta voin olla väärässäkin.. saapi nähdä.
 
Ihan sivuhuomautuksena... Tämä luultavasti on hyvin vaikea laittaa toimimaan varttihinnoilla. Se että Elering JSON vastaus on 4X kokoinen ei käsittääkseni enää mene skriptimoottorin muistiin. Mutta voin olla väärässäkin.. saapi nähdä.
En usko tämän tulevan ongelmaksi, kun voihan niitä hintoja hakea esim osissa Script.Storageen? Toki vaatii vähän enemmän jumppaa, ja tietysti se http-palvelin kyseisessä skriptissä itsessään haukkaa jo jonkinmoisen palasen muistia.
 
En ymmärrä koodaamisesta juurikaan, eikä tekoälyaikana kai tarvitsekaan. Tein testiä Copilotilla ja osaa se vääntää shellyyn jonkinlaista koodia.

Testivaiheessa skripti, joka aikaistaa auton lämmityksen aloitusaikaa lämpötilaennusteen perusteella. Hakee esim klo 22 illalla Open Meteosta ennusteen seuraavalle aamulle esim klo 6 ja aikaistaa lämmityksen aloitusta portaittain jos esim kylmempää kuin -5. Pohjalla on ihan shellyn oma ajastin päälle klo6 ja pois klo8. Skripti ainoastaan kytkee aikaisemmin päälle jos tarve.
 
Viimeksi muokattu:
Tein kokeilumieleesä toisen skriptin, joka hakee Home Wizard P1 Meteriltä hetkellisen tehon vaiheittain plus kokonaisteho ja näyttää sen shellyn dashboardissa virtuaalilaitteena. Kunhan kikkailin.
 
Ihan hyvin kikkailtu jos ei ymmärrä koodaamisesta juurikaan. Pelkäänpä että silti opit jotain ;D
No jotain juu, mutta siis en osaa shellyn ohjelmointikieltä (tai muutakaan), mutta jotakin ymmärrän lukemalla koodia. Syntaksia en osaa arvostella, enkä naputtaa koodia.

Prosessi oli aika yksinkertainen. Ekana kysyin copilotilta, että on tällainen ja tällainen shelly ja onnistuuko sillä tällainen. Kyllä onnistuu sanoi tekoäly ja ehdotti omia lisäyksiään ja vaihtoehtoja. Sitten teki halutun koodin. Virheilmoituksia tuli muutama alussa. Liitin virheilmoituksen copilotiin ja korjasi sen muutamassa sekunnissa. Toimintamuutokset samalla tavalla.

Laitoin sitten copilotin koodin palautekierrokselle chatgpt:lle ja se ehdotti optimointeja. Chatgpt jälkeen kokeilin vielä githubin copilotilla ja se vielä oli optimoivinaan jotakin ja teki hyvät testit, debuggaukset ja kirjoitti hyvät selitykset parametreille. Kun nyt leikitti, niin kysyin vielä alkuperäisen copilotin mielipidettä ja se ei löytänyt enää mitään moitittavaa. Autonlämmityskoodi on n. 300 riviä kommentteineen. Parametreilla konfiguroitavissa tekemään melkein mitä vain aiheeseen liittyen.

Homewizardin mittarin koodi onnistui kertalaakista ilman mitään virheitä. Shelly käyttää homewizardin local apia ja noutaa arvoja 10s välein. Siinä tehdään releeseen ”components” eri arvoille mitä halutaan. Sitten komponenteista tehdään ryhmä ja komponenttiryhmästä tehdään käyttöliittymässä virtuaalilaite, joka on samanlainen tiili kuin muutkin shelly releet. Shelly pro 1 on minulla ohjaamassa lämminvesivaraajaa spot-hinta skriptillä ja nyt siinä sivussa hoitelee myös koko huushollin sähkötehon näyttöä.
 
Viimeksi muokattu:
Tuohon sitten täydennyksenä, miten 3kW vastuksella hukataan tuotettu aurinkopaneeliteho halutuissa varteissa.

Se vaatii pääsyn kiinteistön sähkömittariin. Sen tiedoista laaditaan 10 sekunnin välein ennuste paljonko sähköä menisi myyntiin mikäli kulutus jatkuu samansuuruisena, jos siis tavoitteena estää myynti. Lisäksi lasketaan paljonko energiaa voitaisiin polttaa vastuksella, jos sitä käytettäisiin tästä hetkestä jakson loppuun asti.

Sillä hetkellä kun ennustettu myynti vartin lopussa on suurempi kuin vastuksella hävitettävissä oleva energia, vastus käynnistetään. Tämä siis tapahtuu jakson lopussa. Mikäli esim. aurinko menee pilveen ja ennustettu myyntimäärä kutistuu niin vastus vastaavasti pysäytetään jos ennustettu tuotanto menee oston puolelle.

Tällä tekniikalla saa erittäin tarkasti estettyä myynnin täysin automaattisesti. Itse lämmitän kellaria kesäisin kun sähköstä ei saa myydessä mitään ja lämmin kellari on kiva juttu.
 
Homewizard lukee mittarilta tarvittavat tiedot. Suurin haaste on se, että luettava energiatase data on keskimääräistä menneeltä 60s ajalta.
 
Homewizard lukee mittarilta tarvittavat tiedot. Suurin haaste on se, että luettava energiatase data on keskimääräistä menneeltä 60s ajalta.

Ennusteen laskemiseksi pitääkin tuntea miten oma mittari toimii.

Mitattu kulutus Aidonissa päivittyy minuutin välein, mutta sen minuutin aikana tulevan kulutuksen voi arvioida enakkoon tehosta, joka ilmoitetaan 10s välein. Minuutin välein tulevaan energiaan siis lisätään 10s välein hetkellisestä tehosta laskettu arvio.

Oleellista on myös huomata milloin lukema paljastetaan. Energia minuutilta 00:00:00 - 00:01:00 tulee Aidonissa vasta kello 00:01:10

Eli kello 00:01:10 energiaksi lasketaan tasaminuutille saatu tarkka energia+hetkellinen kokonaisteho/360
Ja jokaisen 10 sekunnin jälkeen siihen lisätään kokonaisteho/360 kunnes saadaan uusi tarkka tieto kello 00:02:10
(360 = 3600/10 eli 10 sekunnin energia ao. teholla)

Omassa toteutuksessa luen itse dataa Aidonista, joten pystyn synkronoimaan kaiken Aidonin omaan kelloon.
 
Takaisin
Ylös Bottom