Follow along with the video below to see how to install our site as a web app on your home screen.
Huomio: This feature may not be available in some browsers.
Tämän Huawein TCP/IP modbus väylän toiminta on jollakin tavalla huonompaa verrattuna muihin käyttämiini modbus TCP/IP laitteisiin, en saanut Ouman Ouflexia lukemaan yhtään TCP/IP rekisteriä ja hankin modbus TCP/IP-->RTU muuntimen kiinasta jolla sain luettua tuota Huawein TCP/IP modbus väylää Ouflexille.Huaweilta tuli päivitysohjeet. Iltapäivällä kokeillaan.
E: ei auttanu, uusimmat versiot oli
Näköjään piti ajaa käsin halvimpien ajanjaksojen päivitysautomaatiot.Pörssihinnat vähän myöhässä, mitenkähän automaatiot reagoi? Osaako ne hakea vielä myöhään illalla huomiset hinnat?
Pörssihinnat vähän myöhässä, mitenkähän automaatiot reagoi? Osaako ne hakea vielä myöhään illalla huomiset hinnat?
Olipas hakenu hinnat ja automaatiot toiminu.Näköjään piti ajaa käsin halvimpien ajanjaksojen päivitysautomaatiot.
Mulla SPC125 eikä uudempaa tarjoa edes.Minulla on Huawein Dongle versio "V100R001C00SPC130"
Hienoa että sait toimimaan.. olin juuri kirjoittamassa, katsoa reitittimen Dongle IP ja kokeilla pingata IP:tä..jos vastaa niin hyvät mahkut saada modbusTCP/IP yhteys..E: ....kele nyt toimii! Selaimella Fusion solar kirjautuminen ja sieltä pääsee donglen asetuksiin josta valitaan Modbus Enable ja boom! Sitten löyty heti.
Lukematta tuota ihan kokonaan (sorry) näyttäisi olevan ZeroDivisionErroria ja tänään on ainakin yksi hinta ollut tasan 0. Voisiko joku osa ongelmista mitenkään johtua tuosta? Automaatioihin saanee jotain steppejä vaikka joillain laskurilla, mihin lisätään jokaisen vaiheen jälkeen 1. Tai vaikka monilla kytkimillä, joita laitetaan eri vaiheissa päälle.Myös täältä kiitokset tekijöille. Hetken nyt tutustunut HA:n maailmaan, on se vaan kryptinen paikka kun aikaisemmin tehnyt python skripteillä ohjaukset.
Mutta nyt tuli ongelma, "Rank on" automaatio hajosi viime yönä. Koko HA oli mykkä, eli portaali ei vastannut. Käytin purkin kylmänä ja datat se on kirjannut talteen mutta ei tosiaan reagoinut mihinkään. Tämän jälkeen huomasin että "Rank on" automaatio on kyllä ajettu mutta ohjaukset ei ole muuttuneet 01:00 jälkeen.
1. Poistin automaation ja loin uuden. Ei eroa
2. Poistin kaikki omat kokeilut missä käytettiin SHF:ää. Ei eroa
3. Poistin spot-price.yaml ja latasin githubista uudelleen. Ei eroa
4. Poistin blueprintin ja latasin uudelleen, ei eroa.
Varmasti jokin amatöörimoka mutta nyt loppuu omat ideat. Kun katson automaation sisään niin se sanoo että result on false ja tähän päädytään kun automaatio ei aja "value template" -kohtaa. Jos siis tulkkaan oikein näitä:
katso liitettä 98789
Ja kun klikkaan ylhäältä "tähtiä":
katso liitettä 98790
Olen nyt kahden tunnin puolella koittanut näitä korjailla. Automaation "rank on" on ollut 1-23 välillä (alun perin 18.) kokeiluissa ja tuntien rank now arvo 10 tai 14.
Eli hintatiedot piirtyy graafeihin ja rankit yms näkyy. Automaatio ei vaan tee mitään kun ajautu "falseen".
Logiin tulee joskus erroreita, mutta ei joka ajolla(???). Tuosta mistä ylläolevat kuvat ei tullut erroria, mutta sitä edellisestä tuli:
katso liitettä 98791
Tämä error saattoi tulla HA uudelleen käynnistyksen jälkeen. Välillä koittanut ihan täys boottia kun ladannut tiedostoja uusiksi yms.
Keksiikö kukaan mitä seuraavaksi korjata? Vuosia sitten HA kokeilut loppui siihen kun vastaavat keikat vaativat koko HA:n nollaamisen ja muutaman kerran kun olin saanut HA:n täysin jumiin siirryin takaisin pythoniin.
Automaatioihin ei taida saada mitään steppejä että se huutaisi jokaisen rivin jälkeen että missä mennään. Näkisi mihin toi ajautuu ja miksi...
EDIT: Tuijotin lisää ja vaikuttaa siltä että automaatio menee aina "Off" puolelle. Joten kokeilin niin että laitoin releen käsin päälle ja ajoin automaation. Ilman erroreita meni ja veti releen pois. Eli päätyi Offille. Parametrit oli "Rank on" ja "18" kun tunnin "rank now" oli 14.
EDIT2: Kokeilin vielä; Laitoin releet käsin päälle ja koitin vielä muokata automaatiota että se on:
katso liitettä 98792
Oikeasti HA näytti että rank oli 14 ja hinta 3,11c/kwh. Joten molemmat ehdot ok.
Silti automaatio vetää kaiken seis, nyt ne tulee näkyviin kun tila muuttuu (käsin laitettu päälle)
katso liitettä 98793
Eli toi automaatio ei nyt saa oikeita hinta/rank tietoja? Mutta miksi kun HA ne näyttää oikein.
EDIT3: Seuraavan päivän hintatiedot tuli ok, kuten myös rankit. Ei mitään eroa. Poistin taas kaiken mistä löysin SHF ja latasin uudelleen. Ei mitään eroa.
Sen huomasin että ylläkuvattu virhe tulee jos heti HA bootin jälkeen koitan tehdä jotain, kun hintatiedot eivät vielä ole latautuneet.
Noh, koska kokoajan epäillyt että skritpi ei edes pyöri vaan tulee false ja skriptin rakenne kun on että jos ei ehdot toteudu on se aina rele pois päältä. Eli käänsin blueprintistä turn on ja turn off ehdot toisinpäin. Eli nyt jos homma menee alusta loppuun oikein olisi ohjaus käänteinen. Ei mene, aina tulee ulos false ja rele vetää ittensä pois päältä. Eli kuten alkupään kuvassa näkyy niin HA:n viesti: "Tätä vaihetta ei suoritettu, joten muita jäljitystietoja ei ole saatavilla." pitää paikkaansa.
Nyt alkaa epätoivo iskemään!
EDIT4: Uusi päivä kadonneella motivaatiolla... Koitin tehdä käsin automaatiot. Eli jos rank on pienempi kuin 19 niin rele päälle. Jos suurempi kuin 18 niin rele pois. Kun rank on 18 niin molemmat automaatiot vetävät relettä suuntaansa. Kokeilin jopa niin että jos rank on pienempi kuin 10 niin rele päälle ja jos suurempi kuin 22 niin pois. Edelleen "rank now" on 18 ja silti molemmat automaatiot vaihtavat releen tilaa.
Jos katon kehittäjätyökalujen "malli" sivulla mitä rank on niin sieltä tulee että rank on 18. Mutta miten hitossa rank ei nyt toimi numerona?
EDIT5: Ei nyt millään anna omatunto periksi luovuttamisessa... Rakensin template sensorin if elsellä että jos "rank now" on <19 niin sensori on ja else niin off. Tämä alkoi puskemaan logiin tiuhaan samaa erroria kuin yllä kuvattuna. Errorissahan vain sanotaan että jokin arvo on "unavailable" (ei numero)? Siitä sain idean että pistin kaikki shf kontrollit dashboardille ja ne missä vipuja/arvoja syötettävissä niin muutin kaikkia. Tämän jälkeen boottasin koko HA ja nyt ainakin mun template sensor toimii ilman erroreita. Tein SHF blueprintistä nyt uuden automaation, harmi vain kun nyt tunti on rank 21 niin liipaisi releen pois päältä. Katsotaan myöhemmin miten kävi, kun en näiden testailujen jälkeen uskalla muokata automaatiota.
Itsekin olen vielä aloittelija tuon kanssa, mutta oletko testannut tuon "Tesla kytkimen"? Toimiiko se oikein. Muutenhan tuo näyttäisi kai sellaiselta, että pitäis toimia. Lokikirjasta näkee myös hyvin mitä se tekee, yrittää tai ei tee. Onko jotain muuta entiteettiä käytettävissä latauksen aloitukseen?Olen laittanut alla olevat, mutta lataus ei lähde päälle nyt, vaikka rank ja hintaehto täyttyvät. Mitä teen tai ymmärrän väärin tästä?
Itsekin olen vielä aloittelija tuon kanssa, mutta oletko testannut tuon "Tesla kytkimen"? Toimiiko se oikein. Muutenhan tuo näyttäisi kai sellaiselta, että pitäis toimia. Lokikirjasta näkee myös hyvin mitä se tekee, yrittää tai ei tee. Onko jotain muuta entiteettiä käytettävissä latauksen aloitukseen?
Ja koita vaikka ensin pelkällä "rank" vaihtoehdolla. Onko hintatiedoissa pelkkä pörssihinta vai myös siirto ja verot? Tuliko hintaraja vastaan? Itse käytän pelkkää pörssihintaa, selvemmin näkee milloin on halpaa.
Myös vois vähentää noita ehtoja aluksi esim sijainti. Omassa on vaan ehtona, että johto on kytketty.
E: ei olekaan mitään ehtoa mulla.
Mulla ei tuossa "cheapest price" -piirustuksessa ole tuota aikahommaa ollenkaan. Saako sen jätettyä tuosta pois ja ohjaa sitten erikseen automaation "voimassaoloaikaa"?
Itse käytän tuota halvinta aikajaksoa esimerkiksi kuumavesivaraajan kanssa. Kun 2h lämmitys riittää, yksinkertaisuuden vuoksi tuossa on 2h viive ja virrat veks samassa automaatiossa. Noita When ehtoja saa samaan automaatioon useita. Itse tykkään laittaa When ehtoon "liikaa" triggereitä ja And if -ehdossa estoilla estän sitten toiminnan esimerkiksi jos rank on liian suuri. Esimerkissä ei ole And if ehtoa kun lämmintä vettä tarvitsen joka päivä.
katso liitettä 98920
Onks sulla tämä käytössä?Tämän haluaisin itsekin ottaa käyttöön, mutta en ymmärtänyt vielä kuinka tämä edes otetaan käyttöön.
Siellä "asetukset>automaatiot>piirustukset" on mulla ainakin "piirustus" jossa noita tuntivalinta-automaatioita voi tehdä".kuinka se valjastetaan käyttöön niin, että saa valittua ne halutut tunnit.
Voit tehdä erikseen automaation, joka kytkee automaation päälle, kun auto tulee kotiin ja poispäältä, kun lähtee.Se miksi mulla on myös sijainti auton latauskaapelin kytkennän kanssa, niin halusin välttää tilannetta jossa unohdan ottaa automaation pois päältä ja vaimo autolla liikkeellä…eli eikös tuo aktivoidu muutoin myös julkisilla latausasemilla?
Onks sulla tämä käytössä?
GitHub - T3m3z/spotprices2ha: Simple copy-paste approach to fetch data from api.spot-hinta.fi (see https://spot-hinta.fi) to Home Assistant. Includes simple sensors and UI elements to ease automation work.
Simple copy-paste approach to fetch data from api.spot-hinta.fi (see https://spot-hinta.fi) to Home Assistant. Includes simple sensors and UI elements to ease automation work. - T3m3z/spotprices2hagithub.com
Onhan sulla scripti Cheapest hours (se on osa tuota Luukun linkkaamaa pakettia) ja automaatio jota kutsumalla nuo halvimpien jaksojen alkuajat päivitetään? Tuo mun aikaisemmin linkkaama kuumavesivaraajan päällelaittoheti päivittyy joka päivä klo 15:10 kuvan mukaisella automaatiolla. Tuossa keltaisella yliviivattuna ne kohdat joilla saa säädettyä halutun ajanjakson ( esimerkissä yösiirron ajalle).Tämän haluaisin itsekin ottaa käyttöön, mutta en ymmärtänyt vielä kuinka tämä edes otetaan käyttöön.
Tämä näkyy siellä Blueprints ja yritin tätä, mutta tyhmänä en ymmärrä kuinka se valjastetaan käyttöön niin, että saa valittua ne halutut tunnit.
En tiedä puuttuuko mulla jotain File editor…vai tarviiko sinne erikseen mitään edes uploadata, jos ladannut blueprint?
alias: SHF_halvin_2h_22-07
description: ""
trigger:
- platform: time
at: "15:10:00"
condition: []
action:
- service: script.cheapest_hours
data:
start: "{{ today_at('22:00') }}"
stop: "{{ today_at('22:00') + timedelta(hours=9)}}"
hours: 2
response_variable: result
- service: input_datetime.set_datetime
data:
timestamp: "{{ result['start'] }}"
target:
entity_id: input_datetime.shf_halvin_2h_jakso_22_07
mode: single
Voit tehdä erikseen automaation, joka kytkee automaation päälle, kun auto tulee kotiin ja poispäältä, kun lähtee.
Mutta tuskin se sijainti siinä se ongelma on.
Onko sulla siellä File editorissa semmonen kansio/tiedosto kuin spotprice.yaml? Siellä missä on niitä muitakin kansioita.
Tietysti on tehtävä tuo "kotipiste" ja sen myötä voi sitten hallita sitä automaatiota, kun auto on kotona tai poissa.Kyllä mun logiikalla se on ongelma, kun auton latausta ohjataan auton (ei laturin) kautta. Eli jos mulla ei olisi ehtoa "Koti", niin mistä ihmeestä tuo automaatio ymmärtäisi sen, että olen julkisella laturilla, kun autoon kytketään pistoke?
Voit tehdä erikseen automaation, joka kytkee automaation päälle, kun auto tulee kotiin ja poispäältä, kun lähtee.
Mutta tuskin se sijainti siinä se ongelma on.
Onko sulla siellä File editorissa semmonen kansio/tiedosto kuin spotprice.yaml? Siellä missä on niitä muitakin kansioita.
Kun tekee jonkun automaation vaikka invertterin tehon mukaan niin siinä ainakin pitää olla toinen automaatio mikä sitten sammuttaa. Ainakin näin mä olen vielä tehnyt, voi olla viisaampiakin tapoja.Vai pitääkö tehdä kaksi erillistä automaatiota manuaalisesti ”Rank OK”-automaatioon?
En tiedä onko tämä sen viisaampi, mutta on mahdollista tehdä If-lause jossa triggerin tilan perusteella kytketään jotain päälle tai pois. Ehkä selvempää ylläpidon kannalta kun toiminnallisuus on yhdessä automaatiossa. Esimerkiksi näin:Kun tekee jonkun automaation vaikka invertterin tehon mukaan niin siinä ainakin pitää olla toinen automaatio mikä sitten sammuttaa. Ainakin näin mä olen vielä tehnyt, voi olla viisaampiakin tapoja.
Varmasti helpompi niin, jos tarkoitus kopioida. Meille vähemmän koodin kanssa pelanneille tuo visuaalinen esitys on selkeämpi, jos ei halua suoraan koodia kopsata vaan yrittää vääntää itse.Vinkkinä, automaatioiden jakamiseen täällä yaml formaatti on ystävällisempi kuin kuvakaappaukset
Jos tekis kytkimen joka menee päälle, kun auto kotona ja lataa. Kun auto poissa ja lataa niin kytkin off. Automaatio seuraisi sitten tuota kytkintä.Eli jos mulla ei olisi ehtoa "Koti", niin mistä ihmeestä tuo automaatio ymmärtäisi sen, että olen julkisella laturilla, kun autoon kytketään pistoke?
Katso tämä Tonin postausVastaavaa tässä nyt pohtinut muutaman illan sängyssä. Eli sähköauton latauksen... Blueprinttiä löytyy että jos rank alle jotain tai sitten halvin esim 4h jakso. Mutta mitä jos haluan tehdä dashboardilta ohjauksen. Eli esim illalla laitan että haluan että autoa on ladattu 3h aamu 08:00 mennessä, hae halvimmat tunnit ja lataa niinä tunteina. Haluan halvimmat tunnit, mutta niiden ei tarvitse olla putkeen.
1. Rank ohjaus ei toimi, koska en tiedä mitä rankkeja osuu tuohon ajanjaksoon
2. En halua peräkkäisiä tunteja vaan halvimmat
Koitin lueskella noita blueprinttejä ja en keksi miten voisin rank ohjauksesta tuon hakea. Eli hintoja täytyy jotenkin pyöritellä. Seuraava ongelma onkin että olen vasta oppinut miten käytän halvinta jaksoa, eli ['Start'], mutta miten saan scriptin palauttamaan kaikki halutut tunnit yms.
Varmasti joku rakentanut SHF tai nordpoolin päälle tälläisen? Voisiko tönäistä eteenpäin tai jopa jakaa yamlia aiheesta?
Mulla menee jo helppereihin lopetus päivä +aika sekä montako tuntia ladataan. Tähän tökkäs
Tämä hieno koodi, joka ilmoittelee vuorokauden tunneille onko vilp vai öljy kannattavampaa, lakkasi toimimasta jo keväällä, kun lämmityskauden jälkeen latailin HA:n päivityksiä. Onkohan @Temez vielä linjoilla? Olitko omissa systeemeissä tätä käyttänyt ja mahdollisesti jo korjannut? Koitin jo tuota tutkailla ja testailla mutta ei vaan taidot tahdo riittää.Tässä voisi olla jotain pohjaa. Puskee ulos tämmöisen listan eli 24h ajalla halvin lämmitystapa noista yläosan määritelmistä:Python:{##### Settings #####} {% set heaters = [ {"name": "ILP", "cop+7": 4, "cop-15": 1, "mincop": 1, "maxcop": 4 }, {"name": "Sähkö"}, {"name": "OIL", "cost": 0.04}, {"name": "Wood", "cost": 0.04}] %} {# Heater settings. Price of kWh in cost. #} {# Electricity prices, list of prices €/kWh #} {% set data = state_attr('sensor.shf_electricity_price_now', 'all_prices')[0:24] %} {# Weather data #} {% set weather = (state_attr("weather.sijainti", "forecast"))[0:24] %} {##### SCRIPT STARTS #####} {# Calculate needed energy #} {% set output = namespace(value=[], temps=[]) %} {% for value in weather %} {%- set output.temps = output.temps + [value["temperature"]| float] -%} {%- endfor -%} {% set output.value = output.value | sum %} {%- set costs = namespace(value=[], output=[], sorted=[], powers=[], index=0) %} {# Calculate hourly price for each heater #} {%- for value in range(0,data|length) %} {%- set costs.index = loop.index-1 -%} {%- for heater in heaters %} {%- if heater["cost"] | default(0) %} {%- set power = heater["power"] -%} {%- set t = heater["cost"] - 0.000001*sin(loop.index/24*pi) -%} {# Daytime preferred #} {%- else -%} {%- set t = output.temps[loop.index-1] %} {%- set mincop = heater["mincop"] | default(1) %} {%- set maxcop = heater["maxcop"] | default(5) %} {%- set cop7 = heater["cop+7"] | default(1) %} {%- set cop15 = heater["cop-15"] | default(1) %} {%- set cop = max(min((t+15)*(cop7-cop15)/22+cop15,maxcop),mincop) %} {%- set t = data[costs.index]/cop %} {%- endif %} {%- set costs.value = costs.value + [t] -%} {%- endfor %} {%- set idx = costs.value.index(costs.value|min) -%} {#- MUOKKAA TÄSTÄ -#} {#- {{ costs.value }} -#} {{ heaters[idx]["name"] + "\r\n" }} {#- MUOKKAA TÄHÄN -#} {%- set costs.value = [] -%} {%- endfor %}
Pääset tämän perusteella ehkä alkuun? Koodissa merkitty kohta "MUOKKAA TÄSTÄ/TÄHÄN", josta saa myös ne tuntikohtaiset kWh-hinnat tarvittaessa printtautumaan.
import requests, sys, datetime, json, collections
import dateutil.parser as dp
import xml.etree.ElementTree as ET
query = "fmi::forecast::harmonie::surface::point::timevaluepair"
place = "Helsinki"
def get_data(param = "Temperature"):
starttime = datetime.datetime.utcnow().replace(minute=0, second=0, microsecond=0).isoformat()
endtime = (datetime.datetime.utcnow() + datetime.timedelta(hours=48)).replace(microsecond=0).isoformat()
r = requests.get("https://opendata.fmi.fi/wfs?request=getFeature&storedquery_id=%s&place=%s¶meters=%s&endtime=%s×tep=60&starttime=%s" %
(query, place, param, endtime, starttime), timeout = 60)
root = ET.fromstring(r.text)
out = {"forecast": []}
arr = root.findall(".//{http://www.opengis.net/waterml/2.0}MeasurementTimeseries")
tmp = collections.defaultdict(dict)
for i in arr:
key = i.get('{http://www.opengis.net/gml/3.2}id').split("-")[-1]
points = i.findall('./{http://www.opengis.net/waterml/2.0}point/{http://www.opengis.net/waterml/2.0}MeasurementTVP')
for k in points:
t = dp.parse(k[0].text).timestamp()
value = float(k[1].text)
tmp[t][key] = value
for key, value in tmp.items():
value["Timestamp"] = key
out["forecast"].append(value)
return json.dumps(out)
if __name__ == '__main__':
param = "Temperature,RadiationGlobal"
if len(sys.argv) == 2:
param = sys.argv[1]
print(get_data(param))
command_line:
- sensor:
name: FMI Forecast
command: "python3 /config/fmi-forecast.py Temperature,RadiationGlobal,WindSpeedMS,WindDirection"
unit_of_measurement: "°C"
value_template: '{{ value_json["forecast"][0]["Temperature"] }}'
json_attributes:
- forecast
command_timeout: 60
scan_interval: 1:00:00