Nyt ekaa HomeyScript:À /MyCode:a rakentamassa ja vaikka kuinka etsin, en lÀydÀ vastausta - siispÀ newbee kyssÀri tÀnne.
YritĂ€n saada tehtyĂ€ Scripti:Ă€ jolle tulee useita parametreja, ja enkĂ€ onnistunut flow:ssa saamaan useampaa kuin yhdenâŠ
Kokeiltua (esimerkeistÀ ja google-haulla pomittua) ja ongelma:
const value = global.get(âmuuttuja_1â);
log(âValue:â, value);
global.set(âmuuttuja_1â, log(âmuuttuja_1â+1);
// tĂ€mĂ€ ei pĂ€ivitĂ€ Flow:ssa nĂ€kyvÀÀ âMuuttuja_1â:stĂ€, vaan jotain globaalimpaa (johon vain toinen script pÀÀsee kiinni)
let value = Homey.logic.get(âmuuttuja_1â)
TÀmÀ antaa: Script Error / TypeError: Homey.logic.get is not a function
Eli kyssÀri:
- MillÀ komennolla luetaa ja kirjoitetaan variable (Flow tasolla olisi paras, mutta yleinenkin kÀy
- MillÀ komennolla luetaa (flow:ssa nÀkyvÀ) tags (kirjoitaminen selvisi esimerkistÀ)
Kiitos avusta jo etukÀteen
Moi
Melko vÀhÀn kokemusta itellÀ, pari scriptiÀ kirjotellut AI:n avulla. Mutta yritÀn auttaa.
Tagin joka laitetaan inputtina scriptille voi lukea args-muuttujalla. Esimerkiksi alla tuo Prices(JSON) tagi on parsittu muuttujaan.
let jsonObj = JSON.parse(args);
Tagin jota toimitetaan outputtina viitataan koodissa âreturn muuttujaâ funktiolla.
Oma koodi palauttaa maxVal arvon ulostulo tĂ€giin Result â return maxVal;
KÀsittÀÀkseni useampaa kuin yhtÀ muuttujaa ei voi kirjoittaa flowlle inputiksi eikÀ outputiksi.
Mutta tÀmÀn voi kiertÀÀ esim. syöttÀmÀllÀ scriptiin inputiksi esim json muotoiltu string ja sama kiertotie toimii outputin kanssa.
Sitten voi esim erillisillÀ scripteillÀ pilkkoa tuo json, jos haluaa muullakin kuin scripteissÀ kÀsiteltÀvÀn tÀgin esim. nÀkymÀÀn insighteissa numeroarvona.
Samaa vĂ€hĂ€n epĂ€ilin (onpa surkeaaâŠ) - mutta kai se on pakko
nyt modatussa âMy Codessaâ yritin vektoria (lienee simppelein JSON)
let Answer = [ ]
Answer.push(Value1);
Answer.push(Value2);
Answer.push(Value3);
return Answer;
Virheeksi tulee:
Script Success
Returned: [
29,
0.43103448275862066,
13
]
{âmessageâ:âInvalid token type: string. Expected: Stringâ}
Ja sama jos valitsen Numero-tag:n (valitaa vastaavasti, ettÀ on number eikÀ Number
Eli laskenta / vastaukset kuten odotin, mutta ei tuu lĂ€piâŠ
MystistÀ. MitÀ jos kirjoitat noi kaikki arvot vaikka pilkuilla eroteltuna string muuttujaan ja tyrkkÀÀt outputtiin. Valitteleeko silloin?
Eka epÀilys olis et toi scripti tekee vektorin niin ei halua työntÀÀ sitÀ outputtiin.
Taitaa ne sittenkin tulla, mutta virhe tulee kun testaan koodia blokin sisÀllÀ . mutta kun ajaa koko flow:n ei tullut virhettÀ
(Laiskuuttani) Muutin tekemistĂ€ niin, ettĂ€ teen useamman blokin (ja osakoodit) ja siten pĂ€rjÀÀn aina yhdellĂ€ String-argumentilla ja tag-palautteella (yksi niistĂ€ tehty Power-by-Hour JSONsta, jota en anna suoraan, kun jostain syystĂ€ suora tag-datan anto tekee myös virheitĂ€ koe-ajossa, JSON:ssa â1â, muuttajassa sama â1â, en jaksanut ihmetellĂ€ enÀÀ)
Nyt testauksessa flow(&koodi), joka pÀÀttÀÀ 15min vÀlein (varauduttu jo tulevaan samalla ), miten 0-36h sÀÀennusteen mukaisella keskiarvo-odotteella (lasketaan SMHI appin datalla ) , sisÀlÀmpötavoitteella, talon lÀmpökÀyrÀllÀ ja aiempien tuntien lÀmmitys yli/alijÀÀmÀllÀ) kannattaa lÀmmittÀÀ MLP&maavarainen-LL-Laatta ja tietenkin kÀyttÀen aina kaikkia tulevia tuntihintoja (siksi 14:15 pÀÀtös, hinnat tulee n. 14:10).
Kaikki laskenta ja ohjaus suhteellisia arvoja, jolloin aiheessa trendien kĂ€yrĂ€t aina 0-1 vĂ€lillĂ€ riippumatta montako tuntia vielĂ€ jĂ€ljellĂ€âŠ
Jos simulaatio nĂ€yttÀÀ toimivan, siirrĂ€n ohjauksen Tellduk:sta Homey Pro:hon, ja loppuu manuaalinen sÀÀstö-sÀÀtöâŠ
Tuloksia odotellessa.
1 Like
Kerros vĂ€hĂ€n miten oot laskenut tuon talon lĂ€mpökĂ€yrĂ€n? Tuosta alijÀÀmĂ€/ylijÀÀmĂ€stĂ€ pÀÀtellen lasket vissiin jotenkin paljonko pitÀÀ taloa lĂ€mmittÀÀâŠ
Ajan taloa âtehokĂ€yrĂ€â-ajattelulla (ja MLP:n kĂ€yrĂ€ ei ole kĂ€ytössĂ€):
- 50C sisĂ€ ja ulkolĂ€mpöjen ERO vaatii 100% lĂ€mmitystĂ€, 0C ero taas nollaa⊠eli siitĂ€ vaan interpoloimaanâŠ
Eli
- odote % tulee: sisÀ-tavoite miinus Ulko_36h_ennusteen_ka jatettuna 50C (vaikkapa: 20C sisÀ, -5C ulko => 50% tehokate)
- jÀÀmÀtarve: (sisÀtavoite - Ulko_mitattu)/50 - 0%/100% riippuen oliko pÀÀllÀ (kumulatiivisesti)
- tod. tunnettujen tuntien teho-tarve sitten nÀiden yhdistelmÀnÀ
Mulla talosta dataa vuodesta 2007 MLPn kanssa, ja sen mukaan (aikanaan 1.8M mittausta kuukaudessa, jonka totesin turhaksi) stabiilit arvot (vahintaan 2h siitÀ kun ollut koko ajan pÀÀllÀ/pois):
- 0C erolla (MPL pÀÀllÀ) nousu 0.4C tunnissa / lasku (MPL pois) 0C
- 50C erolla nousu 0C / lasku 0.4C
Justeerasin juuri, ettÀ Homey-ohjauksella lÀmmöt menee pois 2s ennen kuin sÀhkö-rank% (vs. tarve%) liian kallista, ja pÀÀlle 2s hintamuutoksen jÀlkeen (Telldus harmitus oppeja tÀmÀkin, siellÀ usein 30s myöhÀssÀ)
1 Like
MuutatehdessÀ lopulta löyty alkuperÀiseen return osion iongelmaan ratkaisu
â.toString()â muutoksella saan virheen â{âmessageâ:âInvalid token type: string. Expected: Stringâ}â pois
Blockquote
return valuesList.length.toString();
//return valuesList.length;
Edit aiemmin sanottuu: "Ja samalla tajusin, sehĂ€n on vektori (eli numero) ja paluu numero-tag:nĂ€ onnistuu ilman muutosta :-/ " ei pitĂ€nytkÀÀn paikkaansa, joten palautankin lopulta koko tiedon tunnuksineen JSON-vastauksena muutaman virheilmoitukseen jĂ€lkeen nĂ€inâŠ
return JSON.stringify(json2);
ja lopulta meni taas hermot, kun JSON tieto pitÀÀ aina kaivaa ylös Homey-muuttujaan⊠toisaalta löysin hyvÀn ketjunm jonka lopussa kyselyn tuloksena toimiva suora luku&kirjoitus missÀ tahansa koodissa.
Setting Logic Variable by HomeyScript - #53 by Eko_taas
1 Like