HomeyScript parametrisointi ongelma

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 / :warning: 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 :slight_smile:

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 :face_with_monocle:

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
:leftwards_arrow_with_hook: 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
 :face_with_symbols_over_mouth:

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À :thinking:

(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 :slight_smile: ), miten 0-36h sÀÀennusteen mukaisella keskiarvo-odotteella (lasketaan SMHI appin datalla :upside_down_face: ) , 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 :money_mouth_face: (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À) :grimacing:

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