Wifi-shelly-rele ohjaamaan vanhahkoa boileria

Harrastelija

Vakionaama
Riippumatta mitä shellyn releellä kuormitetaan kolmivaihe sen liitännöissä on meillä aina 400v joka on valitettavasti liikaa
Pitääkö tuo tulkita siten että jos on laite (esim shelly) johon on kytketty kaikki kolme vaihetta, laitteen pitää kestää 400V vaikka olisikin nollatulla tähtikytkennällä?
Jos käyttääkin kolmea erillistä yksivaihe shellyä (jokaiselle vaiheelle oma), riittää se 230V nollatun tähden tapauksessa? Siis vaikka kuormana olisi 3v vastukset.
 

mobbe

Vakionaama
Pitääkö tuo tulkita siten että jos on laite (esim shelly) johon on kytketty kaikki kolme vaihetta, laitteen pitää kestää 400V vaikka olisikin nollatulla tähtikytkennällä?
Jos käyttääkin kolmea erillistä yksivaihe shellyä (jokaiselle vaiheelle oma), riittää se 230V nollatun tähden tapauksessa? Siis vaikka kuormana olisi 3v vastukset.
3 erillistä shellyä käy näin saa myös ohjattua tehot 1/3 2/3 ja täysi teho 3/3
 

Mikki

Hyperaktiivi
ShellyPro 3, ShellyPro 4PM, ShellyPlus1 ja ShellyPlus1PM sisältää ainakin tuon mahdollisuuden simppelille Scriptille, joka hakee tuosta minun REST rajapinnasta luvan kytkeä virrat.

Tuo scripti siis voidaan luoda selaimella suoraan Shellyyn, joka on WIFI:n tai Ethernet piuhan avulla kiinni Internetissä. Ja tosiaan mitään serveriä ei erikseen tarvitse, eikä oikeastaan koodaustaitoakaan kun eiköhän palstalle saada malliskripti, jolla komentaa noita mahdollisimman yksinkertaisesti.

Valitettavasti Shelly Plug pistorasiamalli ei sisällä tuota scriptausta.
 
Viimeksi muokattu:

mobbe

Vakionaama
ShellyPro 4PM, ShellyPlus1 ja ShellyPlus1PM sisältää ainakin tuon mahdollisuuden simppelille Scriptille, joka hakee tuosta minun REST rajapinnasta luvan kytkeä virrat.

Tuo scripti siis voidaan luoda selaimella suoraan Shellyyn, joka on WIFI:n tai Ethernet piuhan avulla kiinni Internetissä. Ja tosiaan mitään serveriä ei erikseen tarvitse, eikä oikeastaan koodaustaitoakaan kun eiköhän palstalle saada malliskripti, jolla komentaa noita mahdollisimman yksinkertaisesti.

Valitettavasti Shelly Plug S pistorasiamalli ei sisällä tuota scriptausta.
Tätä on odotettu,mitä vielä vaatii että sen koodin saa koneelta siirrettyä shellyyn ?
 

mobbe

Vakionaama
Siis pelkästään nettiselaimen, jolla avaat Shellyyn näkymän. Siellä on tekstieditorikin, mihin voit täräyttää skriptin.
Tässä kuvina... HELPPO!

Täällä tuo helppo on vielä lainausmerkeissä mutta jos olis tuo script joka kytkee shelly pro1 wifireleen jos pörssisähkön hinta on alle 10 senttiä hankin välittömästi tuon testiksi ihan tulevaisuuden varalle:sormet:
 

Mikki

Hyperaktiivi
Täällä tuo helppo on vielä lainausmerkeissä mutta jos olis tuo script joka kytkee shelly pro1 wifireleen jos pörssisähkön hinta on alle 10 senttiä hankin välittömästi tuon testiksi ihan tulevaisuuden varalle:sormet:
Tuolla linkatussa ketjussa jo oli ensimmäinen versio scriptistä. Skriptikieli ei ole laitekohtainen juttu, ehkä pientä parametrointia vain täytyy muuttaa jos releen nimi tms. on eri. Mutta ehkä ei edes ole. Testiin vaan jos on sähkärintaidot kytkeä Shelly ohjaamaan releellä kontaktoria.
 

Oldipoldi

Jäsen
Täällä tuo helppo on vielä lainausmerkeissä mutta jos olis tuo script joka kytkee shelly pro1 wifireleen jos pörssisähkön hinta on alle 10 senttiä hankin välittömästi tuon testiksi ihan tulevaisuuden varalle:sormet:
Voin laittaa tekstimuodossa tuolla toisessa ketjussa laittamani scriptin kunhan pääsen tietokoneen ääreen ja ensin hieman muokkaan sitä. Sitä saa sitten jatkojalostaa haluamallaan tavalla.
 

Oldipoldi

Jäsen
hyvä juttu puoli foorumia odottaa sitä...
Jaan kyllä mielelläni koodin pätkät ja hyvä jos siitä jollekin olis apua. Tässä itselläkin on vasta testit menossa... ohjailen pöytävalaisinta pörssisähkön mukaan.:)
Onko sulla nimenomaan tarve tuolle hinnan mukaan ohjaamiselle vai riittääkö halvimman mukaan ohjaukset?
 

Sukke

Aktiivinen jäsen
Tässä itselläkin on vasta testit menossa... ohjailen pöytävalaisinta pörssisähkön mukaan.:)

Jaa jollain muullakin on sama harrastus :D

Muuta ohjattavaa ei vielä täällä ole ja softakin pyörii virtuaalialustalla.

Raspberry Pi tuli tänään eli ensimmäinen fyysinen komponentti Huen valojen lisäksi.
 

Oldipoldi

Jäsen
Jaa jollain muullakin on sama harrastus :D

Muuta ohjattavaa ei vielä täällä ole ja softakin pyörii virtuaalialustalla.

Raspberry Pi tuli tänään eli ensimmäinen fyysinen komponentti Huen valojen lisäksi.
Täytyyhän sitä aina vähän harrastaa ja eikö se niin ole, että valoja sammuttelemalla ne säästöt helpoiten tulee.
 

mobbe

Vakionaama
Jaan kyllä mielelläni koodin pätkät ja hyvä jos siitä jollekin olis apua. Tässä itselläkin on vasta testit menossa... ohjailen pöytävalaisinta pörssisähkön mukaan.:)
Onko sulla nimenomaan tarve tuolle hinnan mukaan ohjaamiselle vai riittääkö halvimman mukaan ohjaukset?
hinnan mukaan kun ei tiedä vaikka se halvin hinta onkin 1 euro
 

Harrastelija

Vakionaama
hinnan mukaan kun ei tiedä vaikka se halvin hinta onkin 1 euro
Harvalla on varaajaa josta lämpöä riittää moneksi vuorokaudeksi. Eli joka päivä joutuu jonkin verran lämmittämään. Jos ei halua että kämppä kylmenee niin pakko lämmittää kalliilla mutta niistäkin ottaa mieluummin ne halvimmat tunnit.
 

Mikki

Hyperaktiivi
Onko jollakulla Shelly Plus 1, jossa on nimenomaan potentiaalivapaa rele mahdollisuus. Yritin googlata, mutta en täysin aukottomasti löytänyt kuvaa, jossa olisi nimenomaan potentiaalivapaa releen kytkentä aivan rautalangasta väännettynä.

Ellei siis tämä kuva, mutta miten sitten jos ei ole mitään mekaanista kytkintä? Vaihe (L) ja nolla (N) kiinni.. SW tyhjäksi ja sittenkö se pelaa kun softalla komentaa relettä? :)

1663871597546.png
 

Oldipoldi

Jäsen
Jaan kyllä mielelläni koodin pätkät ja hyvä jos siitä jollekin olis apua. Tässä itselläkin on vasta testit menossa... ohjailen pöytävalaisinta pörssisähkön mukaan.:)
let CONFIG = {
Paivitystaajuus: 2 * 60000,
};
function Ohjaus(){
Shelly.call("HTTP.GET", { url: "https://api.spot-hinta.fi/JustNow"},
function (res, error_code, error_msg, ud)
{
if (res.code === 200){
let resobj = JSON.parse(res.body);
print("Rank: ", resobj.Rank);
if (resobj.Rank <= 3) { //Montako halvinta tuntia
Shelly.call("Switch.Set","{ id:0, on:true}", null,null); //Rele päälle
}
else {
Shelly.call("Switch.Set","{ id:0, on:false}", null,null); //Rele pois
}
}
else {
Shelly.call("Switch.Set","{ id:0, on:false}", null,null); //Mitä tehdään jos ei toimi
}
;
},
null); }

Timer.set(
CONFIG.Paivitystaajuus,
true,
function (ud) {
Ohjaus();
},
null
);
 

Janos

Vakionaama
Onko jollakulla Shelly Plus 1, jossa on nimenomaan potentiaalivapaa rele mahdollisuus. Yritin googlata, mutta en täysin aukottomasti löytänyt kuvaa, jossa olisi nimenomaan potentiaalivapaa releen kytkentä aivan rautalangasta väännettynä.

Ellei siis tämä kuva, mutta miten sitten jos ei ole mitään mekaanista kytkintä? Vaihe (L) ja nolla (N) kiinni.. SW tyhjäksi ja sittenkö se pelaa kun softalla komentaa relettä? :)

katso liitettä 80540

Kyllä juurikin niin, vaihe ja nolla kiinni ainoastaan jos ei ulkopuolista kytkintä käytä.
Ja potentiaalivapaasta kärjestä sitten ohjaa kuormaa
 

Lappanen

Hyperaktiivi
Noilla Shelly Plus ykkösillähän saan halvalla pörssiohjauksen lämmitykselle ja käyttövedelle ilman ylimääräisiä virityksiä, purkit sopii hyvin MLPn sisuskaluihin kun lämminvesivaraajan tila on tyhjänä, MLPn kortilta saan myös käyttöjännitteet niille. Pitääpä laittaa tilaukseen ja alkaa ihmettelemään.
 

Mikki

Hyperaktiivi
Taidan itse kanssa tilata tuollaisen. Ihan kokeeksi voisi laittaa Nibeen kiellon lämmittää käyttövettä kalleimpien tuntien aikaan. Tässä mukaelma @Oldipoldi skriptistä, toisen rajapinnan avulla. Ei ole paljoa koodia kyllä pörssiohjaukseen... :)

-----

let CONFIG = { Paivitystaajuus: 2 * 60000, }; // kaksi minuuttia

function Ohjaus(){
Shelly.call("HTTP.GET", { url: "https://api.spot-hinta.fi/JustNowRank/3"},
function (res, error_code, error_msg, ud)
{
if (res.code === 200){
Shelly.call("Switch.Set","{ id:0, on:true}", null,null); // Rele päälle
}
else if (res.code === 400) {
Shelly.call("Switch.Set","{ id:0, on:false}", null,null); // Rele pois
}
else {
Shelly.call("Switch.Set","{ id:0, on:true}", null,null); // Virhetilanne. Mitä tehdään?
};
}, null);
}

Timer.set(CONFIG.Paivitystaajuus, true, function (ud) { Ohjaus(); }, null);
 

Lappanen

Hyperaktiivi
Taidan itse kanssa tilata tuollaisen. Ihan kokeeksi voisi laittaa Nibeen kiellon lämmittää käyttövettä kalleimpien tuntien aikaan. Tässä mukaelma @Oldipoldi skriptistä, toisen rajapinnan avulla. Ei ole paljoa koodia kyllä pörssiohjaukseen... :)

-----

let CONFIG = { Paivitystaajuus: 2 * 60000, }; // kaksi minuuttia

function Ohjaus(){
Shelly.call("HTTP.GET", { url: "https://api.spot-hinta.fi/JustNowRank/3"},
function (res, error_code, error_msg, ud)
{
if (res.code === 200){
Shelly.call("Switch.Set","{ id:0, on:true}", null,null); // Rele päälle
}
else if (res.code === 400) {
Shelly.call("Switch.Set","{ id:0, on:false}", null,null); // Rele pois
}
else {
Shelly.call("Switch.Set","{ id:0, on:true}", null,null); // Virhetilanne. Mitä tehdään?
};
}, null);
}

Timer.set(CONFIG.Paivitystaajuus, true, function (ud) { Ohjaus(); }, null);

Miten koodataan joku tietty hintaraja, jonka alla rele vetää?
Mitä tapahtuu jos nettiyhteys katkeaa?
 

Mikki

Hyperaktiivi
Miten koodataan joku tietty hintaraja, jonka alla rele vetää?
Mitä tapahtuu jos nettiyhteys katkeaa?

Tuossa @Oldipoldi koodissa se hakee /JustNow rajapinnasta JSON olion ja lukee siitä "Rankin". Mutta siinä samassa oliossa on myös hinta, eli ihan helposti tuossa voisi asettaa rankin sijasta hintarajan. Nyt Oldipoldi vertaa vain "rank" propertyä, etsien halvimmat hinnat päivältä.

Siis tämmöinen olio sieltä tulee:

Jos nettiyhteys katkeaa, niin sitten pitää koodata tuohon että avataanko rele vai suljetaanko se. Ei sen kummempaa.
 

mobbe

Vakionaama
rele päälle jos hinta alle 0.100? onko oikein?


let CONFIG = {
Paivitystaajuus: 2 * 60000,
};
function Ohjaus(){
Shelly.call("HTTP.GET", { url: "https://api.spot-hinta.fi/JustNow"},
function (res, error_code, error_msg, ud)
{
if (res.code === 200){
let resobj = JSON.parse(res.body);
print("Rank: ", resobj.Rank);
if (resobj. PriceWithTax <0.1000 { //halpaa tuntia
Shelly.call("Switch.Set","{ id:0, on:true}", null,null); //Rele päälle
}
else {
Shelly.call("Switch.Set","{ id:0, on:false}", null,null); //Rele pois
}
}
else {
Shelly.call("Switch.Set","{ id:0, on:false}", null,null); //Mitä tehdään jos ei toimi
}
;
},
null); }

Timer.set(
CONFIG.Paivitystaajuus,
true,
function (ud) {
Ohjaus();
},
null
);
 

Oldipoldi

Jäsen
rele päälle jos hinta alle 0.100? onko oikein?


let CONFIG = {
Paivitystaajuus: 2 * 60000,
};
function Ohjaus(){
Shelly.call("HTTP.GET", { url: "https://api.spot-hinta.fi/JustNow"},
function (res, error_code, error_msg, ud)
{
if (res.code === 200){
let resobj = JSON.parse(res.body);
print("Rank: ", resobj.Rank);
if (resobj. PriceWithTax <0.1000 { //halpaa tuntia
Shelly.call("Switch.Set","{ id:0, on:true}", null,null); //Rele päälle
}
else {
Shelly.call("Switch.Set","{ id:0, on:false}", null,null); //Rele pois
}
}
else {
Shelly.call("Switch.Set","{ id:0, on:false}", null,null); //Mitä tehdään jos ei toimi
}
;
},
null); }

Timer.set(
CONFIG.Paivitystaajuus,
true,
function (ud) {
Ohjaus();
},
null
);
Kokeilin itsekin laittaa juuri tuolla tavalla tuon Rank:in tilalle tuon PriceWithTax:in ja sitten halutun maksimihinnan, mutta jostain syystä en saanut sitä vielä toimimaan. Juuri tämän takia jaoin tuon version koodista, että se olisi helposti muunneltavissa. Tuo @Mikki tekemä koodi on parempi jos vaan halvemmat tunnit kelpaa.
 

Mikki

Hyperaktiivi
En ole Python asiantuntija, mutta ettet vertailisi "stringinä" noita....

jotain tämmöistä kokeilisin: if (float(resobj. PriceWithTax) < 0.1000)
 

ttk2

Aktiivinen jäsen
En ole Python asiantuntija, mutta ettet vertailisi "stringinä" noita....

jotain tämmöistä kokeilisin: if (float(resobj. PriceWithTax) < 0.1000)
Shellyn skriptit on Javascriptiä:


...a useful subset of the JavaScript language...

Ei löydy itseltä Shellyä, joten en pysty kokeilemaan, mutta Javascriptistä löytyy parseFloat(), jolla merkkijonosta saadaan desimaaliluku.

Toinen mitä voisi kokeilla on merkkijonon muutos luvuksi JSON-parsijalla. Jotenkin tähän tyyliin:

JavaScript:
let priceWithTax = JSON.parse("3.141592");

@Mikki miksi API ei voisi palauttaa hintoja suoraan numeroina? Ymmärrän, että tarkkuus voi kärsiä ("floating point arithmetic" asiasta kiinnostuneille), mutta jos edelleen oletetaan, että kutsuja (laite/softa) on tyhmä tai yksinkertainen ja että mahdolliset (pyöristys)virheet ovat pieniä ja tässä käyttötarkoituksessa varmaankin täysin merkityksettömiä, niin voisiko API palauttaa suoraan lukuja? Sopisi minimalistiseen API:in mielestäni hyvin.
 

Mikki

Hyperaktiivi
@Mikki miksi API ei voisi palauttaa hintoja suoraan numeroina? Ymmärrän, että tarkkuus voi kärsiä ("floating point arithmetic" asiasta kiinnostuneille), mutta jos edelleen oletetaan, että kutsuja (laite/softa) on tyhmä tai yksinkertainen ja että mahdolliset (pyöristys)virheet ovat pieniä ja tässä käyttötarkoituksessa varmaankin täysin merkityksettömiä, niin voisiko API palauttaa suoraan lukuja? Sopisi minimalistiseen API:in mielestäni hyvin.

Totta turiset. Kyllä se helpompi olisi niin.
 

Oldipoldi

Jäsen
Tuli tehtyä yksi havainto testaillessani Shellyyn kirjoitettua scriptiä vikatilanteiden varalta. Kun verkkoyhteys on hetken aikaa pois pelistä niin scripti menee "Stopped" tilaan. Vaatii joko sähkökatkon Shellylle tai scriptin käynnistämisen uudestaan manuaalisesti. Tietoa ei ole miten saisi scriptin heräämään itsestään uudelleen.

Pörssiohjaus1.JPG
 

Mikki

Hyperaktiivi
Josko se skripti kaatuu kun verkkoyhteyttä ei ole. Eli voisikohan olla joku timeout HTTP kutsuun mahdollinen.
Ja sitten toinen vaihtoehto voisi olla tehdä toisen skriptin, joka valvoo että tuo on päällä.

En tunne nyt noita, mutta ilmeisesti tavalla tai toisella voi kysellä skriptin tilaa ja käynnistää sen jos se on Stopped.
 

maanma

Vakionaama
Kannattaa koodata enimmäis vrk määrä off tilassa ja sen jälkeen oletus käynnistymisajalle esim. klo 01-05 väliin
 

mobbe

Vakionaama
jos shelly ja sen ohjelmointi kiinnostaa tuossa jotain vinkkejä alkuun noviiseille kuten allekirjoittaneelle ensimmäinen haasteni on saada yhteys shellystä selaimeen ehkä sitten saa jonkun demo scriptin toimiin copypastella ensimmäinen askel otettu kun shelly 1PM on nyt tilattu

 

Harrastelija

Vakionaama
Videon alkupuolella oli myös selostettu miten scripti käynnistyy automaattisesti.
Jollakinhan oli ongelmana että sähkökatkon jälkeen oli script oli pysähtynyt.
 

Lappanen

Hyperaktiivi
Noilla Shelly Plus ykkösillähän saan halvalla pörssiohjauksen lämmitykselle ja käyttövedelle ilman ylimääräisiä virityksiä, purkit sopii hyvin MLPn sisuskaluihin kun lämminvesivaraajan tila on tyhjänä, MLPn kortilta saan myös käyttöjännitteet niille. Pitääpä laittaa tilaukseen ja alkaa ihmettelemään.

Shellyt tulossa postissa ja laitoin vielä erilliset termostaattireleet tilaukseen joilla pätkin Shellyjen kärkitietolinjoja käyttö- ja lämmitysveden lämpötilojen mukaan niin, että lämmitys ja/tai käyttövesi on sallittu milloin vaan jos niiden lämpötila tippuu turhan alas kalliiden tuntien aikana. Olisipa helppoa, jos Nibe jaksaisi väsätä samanlaisen ohjauksen ohjelmistonsa kautta suoraan..
 

mobbe

Vakionaama
Täällä sain lopulta shellyn ja koodin pelittään ja muutama harmaa hius lisää mutta lopulta maaliin, taikasana oli "device ip" . Tällä hetkellä ei vielä varsinaista hyötykäyttöä mutta ehkä ensi kesänä
 
Viimeksi muokattu:

mobbe

Vakionaama
Pakkohan se on kehasta tuota shellyä tarkemmin Shelly Plus 1PM wifirelettä taipuu kyllä moneen ohjaukseen.Käyttöönotto tietysti jälkikäteen hyvä sanoa mutta on tosi helppo,shellyn aplikaalitolla ensin yhteys omaan wlan verkkoon muodostaa oman langattoman verkon ja ip:n omaan lähiverkkoon toimii myös wifi-verkon laajentajana kännykällä saa jo yksinkertaiset ajastukset päivä-ja viikonpäivittäin ja kulutusseuranta joka tunnista! yksi kytkintulo ja yksi relelähtö 16A sopii sähkörasiaan hyvä tai huono juttu, selaimella hakee shellyn pilvestä laitteen ip-osoitteen löytyy kohdasta asetukset ip selaimen osoiteriville ja varsinainen tehokäyttö on käytettävissä scriptauksineen siellä on myös library jossa esimerkki koodeja api.spothinta-scriptiä siellä ei vielä ollut:)
 

Oldipoldi

Jäsen
Tässä scripti jonka tein valvomaan toisen scriptin toimintaa.
Tämän avulla scripti alkaa itsestään toimimaan uudelleen jos esimerkiksi verkkoyhteys on jostain syystä hetken pois käytöstä.
Ei taaskaan varmaa järkevin toteutustapa, mutta kun itse tekee niin saa mitä sattuu tulemaan.

let CONFIG = {
Paivitystaajuus: 1 * 60000,
};
function Valvonta(){
Shelly.call("Script.GetStatus", { id:"1"},
function (res, error_code, error_msg, ud)

{
if (res.running === true){
print("Scripti toimii");
}
else {
print("Scripti EI toimi");
Shelly.call("Script.Start", { id:"1"}, null, null);

};
},
null); }

Timer.set(
CONFIG.Paivitystaajuus,
true,
function (ud) {
Valvonta();
},
null
);
 
Back
Ylös Bottom