Nyumba ya Smart: Timamanga ma graph a madzi ndi magetsi mu Home Assistant
Nthawi zonse ndikalandira malipiro a magetsi ndi madzi, ndimadabwa - kodi banja langa limadya kwambiri chonchi? Chabwino, inde, bafa ili ndi pansi pamoto ndi boiler, koma samawotcha moto nthawi zonse. Tikuwonekanso kuti tikusunga madzi (ngakhale timakondanso kuwaza m'bafa). Zaka zingapo zapitazo ine kale mita yolumikizana ndi madzi ΠΈ magetsi ku nyumba yanzeru, koma ndipamene zinthu zidakakamira. Tangotsala pang'ono kusanthula kadyedwe, zomwe ndizomwe nkhaniyi ikunena.
Posachedwa ndidasinthira ku Home Assistant ngati njira yanga yakunyumba yanzeru. Chimodzi mwa zifukwa chinali mwayi wokonzekera kusonkhanitsa deta yambiri ndi luso lopanga ma graph amitundu yosiyanasiyana mosavuta.
Zomwe zafotokozedwa m'nkhaniyi sizatsopano; zinthu zonsezi pansi pa sauces zosiyanasiyana zafotokozedwa kale pa intaneti. Koma nkhani iliyonse imafotokoza njira imodzi kapena mbali imodzi yokha. Ndinayenera kufananiza njira zonsezi ndikusankha yoyenera kwambiri ndekha. Nkhaniyi sinaperekebe zambiri za kusonkhanitsa deta, koma ndi chidule cha momwe ndinachitira. Choncho kutsutsa kolimbikitsa ndi malingaliro owongolera ndi olandirika.
Kupanga kwa vuto
Chifukwa chake, cholinga chazolimbitsa thupi masiku ano ndikupeza ma graph okongola amadzi ndi magetsi:
Ola lililonse kwa masiku awiri
Tsiku lililonse kwa milungu iwiri
(posankha) sabata ndi mwezi
Pali zovuta zina ndi izi:
Ma tchati okhazikika nthawi zambiri amakhala osauka. Zabwino kwambiri, mutha kupanga graph ya mzere ndi mfundo.
Ngati muyang'ana molimbika mokwanira, mutha kupeza zigawo za chipani chachitatu zomwe zimakulitsa luso la tchati chokhazikika. Kwa wothandizira kunyumba, kwenikweni, ichi ndi gawo labwino komanso lokongola mini-graph khadi, koma ilinso ndi malire:
Ndikovuta kuyika magawo a tchati cha bar pazigawo zazikulu (m'lifupi mwa bar imayikidwa muzigawo za ola, zomwe zikutanthauza kuti nthawi yayitali kuposa ola limodzi idzakhazikitsidwa mu manambala ochepa)
Simungathe kuwonjezera magulu osiyanasiyana pa graph imodzi (mwachitsanzo, kutentha ndi chinyezi, kapena kuphatikiza chithunzi cha bar ndi mzere)
Sikuti wothandizira kunyumba amangogwiritsa ntchito nkhokwe zakale kwambiri za SQLite (ndipo ine, wogwira ntchito, sindinathe kuyika MySQL kapena Postgres), koma zambiri sizimasungidwa m'njira yabwino kwambiri. Chifukwa chake, mwachitsanzo, nthawi iliyonse mukasintha ngakhale kagawo kakang'ono kwambiri ka digito kagawo, json yayikulu pafupifupi kilobyte kukula imalembedwa ku database.
Apa sensor.water_meter_cold ndiye mtengo wa mita wapano mu malita omwe ndimalandira molunjika kuchokera ku chidutswa chachitsulo pa mqtt. Kapangidwe kameneka kamapanga masensa awiri atsopano a madzi_cold_hour_um ndi madzi_cold_day_um, omwe amasonkhanitsa kuwerenga kwa ola limodzi ndi tsiku ndi tsiku, kuwabwezeretsanso ku zero nthawiyo itatha. Nayi graph ya batire ya ola limodzi kwa theka la tsiku.
Khodi yamatchati aola ndi tsiku lililonse a lovelace-UI amawoneka motere:
- type: history-graph
title: 'Hourly water consumption using vars'
hours_to_show: 48
entities:
- sensor.water_hour
- type: history-graph
title: 'Daily water consumption using vars'
hours_to_show: 360
entities:
- sensor.water_day
Kwenikweni, vuto ndi njira iyi lili mu algorithm iyi. Monga ndanenera kale, pamtengo uliwonse wolowera (kuwerengera kwa mita kwa lita iliyonse yotsatira) 1kb ya zolemba zimapangidwa mu database. Meta iliyonse yothandizira imapanganso mtengo watsopano, womwe umawonjezeredwa kumunsi. Ngati ndikufuna kusonkhanitsa kuwerenga kwa ola / tsiku / sabata / mwezi uliwonse, ndi maulendo angapo okwera madzi, ndikuwonjezera paketi ya mamita amagetsi, izo zidzakhala zambiri deta. Chabwino, molondola, palibe deta yambiri, koma popeza wothandizira kunyumba amalemba mulu wa zambiri zosafunikira ku database, kukula kwa database kudzakula mofulumira ndi malire. Ndikuwopa ngakhale kuyerekeza kukula kwa maziko a ma chart a sabata ndi mwezi uliwonse.
Kuonjezera apo, mita yogwiritsira ntchito yokhayokha sikuthetsa vutoli. Zithunzi zamakhalidwe omwe amapangidwa ndi mita yogwiritsira ntchito ndi ntchito yowonjezereka yomwe imakhazikika ku 0 ola lililonse. Tikufuna tchati chogwiritsira ntchito chomwe chimamveka kwa wogwiritsa ntchito, chosonyeza malita angati omwe adadyedwa panthawiyi. Gawo lodziwika bwino la mbiri yakale silingathe kuchita izi, koma gawo lakunja la mini-graph-card lingatithandize.
Nayi makhadi a lovelace-UI:
- aggregate_func: max
entities:
- color: var(--primary-color)
entity: sensor.water_cold_hour_um
group_by: hour
hours_to_show: 48
name: "Hourly water consumption aggregated by utility meter"
points_per_hour: 1
show:
graph: bar
type: 'custom:mini-graph-card'
Kuphatikiza pa zoikamo wamba monga dzina la sensa, mtundu wa graph, mtundu (sindinakonde lalanje wamba), ndikofunikira kuzindikira makonda atatu:
group_by:hour - graph idzapangidwa ndi mipiringidzo yomwe ikugwirizana ndi chiyambi cha ola
points_per_hour: 1 - bar imodzi pa ola lililonse
Ndipo chofunikira kwambiri, aggregate_func: max - tengani mtengo wokwera mkati mwa ola lililonse. Ndi parameter iyi yomwe imatembenuza graph ya sawtooth kukhala mipiringidzo
Osayang'ana pamzere wa zipilala kumanzere - iyi ndiye khalidwe lachigawo ngati palibe deta. Koma panalibe deta - ndidangoyatsa zosonkhanitsira ma mita ogwiritsira ntchito maola angapo apitawo chifukwa cha nkhaniyi (ndifotokoza njira yanga yapano pansipa).
Pachithunzichi ndinkafuna kusonyeza kuti nthawi zina mawonetsedwe a deta ngakhale amagwira ntchito ndipo mipiringidzo imasonyezadi zoyenera. Koma si zokhazo. Pazifukwa zina, gawo losankhidwa kuyambira 11 mpaka 12 am likuwonetsa malita 19, ngakhale pa grafu ya mano ndipamwamba pang'ono kwa nthawi yomweyi kuchokera ku sensa yomweyo timawona kumwa malita 62. Mwina pali kachilombo kapena manja ndi okhota. Koma sindikumvetsabe chifukwa chake deta yomwe ili kumanja idasweka - kugwiritsa ntchito kunali kwachilendo, komwe kumawonekeranso pazithunzi za mano.
Nthawi zambiri, sindinathe kukwaniritsa kutsimikizika kwa njira iyi - graph pafupifupi nthawi zonse imasonyeza mtundu wina wa mpatuko.
Khodi yofananira ya sensa yamasana.
- aggregate_func: max
entities:
- color: var(--primary-color)
entity: sensor.water_cold_day_um
group_by: interval
hours_to_show: 360
name: "Daily water consumption aggregated by utility meter"
points_per_hour: 0.0416666666
show:
graph: bar
type: 'custom:mini-graph-card'
Chonde dziwani kuti gulu_by parameter yakhazikitsidwa kuti ipitirire, ndipo point_per_hour imalamulira chilichonse. Ndipo m'menemo muli vuto lina ndi chigawo ichi - points_per_hour imagwira ntchito bwino pama chart a ola limodzi kapena kuchepera, koma imayamwa pazigawo zazikulu. Chifukwa chake kuti ndipeze gawo limodzi tsiku limodzi, ndimayenera kuyika mtengo 1/24=0.04166666. Sindikulankhula za ma chart a sabata ndi mwezi.
Mnzake amasonkhanitsa zambiri zamagwiritsidwe kuchokera kumitundu ingapo ya soketi za Xiaomi. Ntchito yake ndiyosavuta - ingowonetsa mtengo wamasiku ano, dzulo ndi mwezi. Palibe ndandanda zofunika.
Tiyeni tisiye kukambirana za kuphatikizika kwamphamvu kwamphamvu kwanthawi yomweyo - ndalemba kale pamwambapa za "kulondola" kwa njira iyi. Sizikudziwika chifukwa chake sanagwiritse ntchito ndalama zomwe amapeza, zomwe zasonkhanitsidwa kale ndi malo omwewo. Malingaliro anga, kuphatikiza mkati mwa hardware kudzagwira ntchito bwino.
Kuchokera muvidiyoyi titenga lingaliro la kuwerengera pamanja zomwe zimagwiritsidwa ntchito pakapita nthawi. Mnyamatayo amangowerengera zamasiku ano ndi dzulo, koma tipita patsogolo ndikuyesera kujambula graph. Chofunikira cha njira yomwe ndikufunirayi ili motere.
Tiyeni tipange mtengo wosinthika_at_the_beginning_of_hour, momwe tidzajambulira zowerengera zamakono.
Pogwiritsa ntchito chowerengera, kumapeto kwa ola (kapena kumayambiriro kwa lotsatira) timawerengera kusiyana pakati pa kuwerenga kwamakono ndi komwe kumasungidwa kumayambiriro kwa ola. Kusiyanaku kudzakhala kugwiritsidwa ntchito kwa ola lamakono - tidzasunga mtengo mu sensa, ndipo m'tsogolomu tidzamanga graph pogwiritsa ntchito mtengo uwu.
Muyeneranso "kukonzanso" kusintha kwa value_at_beginning_of_hour polemba mtengo waposachedwa pamenepo.
Zonsezi zitha kuchitika kudzera mwa wothandizira kunyumba.
Muyenera kulemba kachidindo kakang'ono kuposa momwe munayambira kale. Choyamba, tiyeni tipange "zosinthika" zomwezo. M'bokosilo tilibe "zosinthika", koma titha kugwiritsa ntchito ntchito za mqtt broker. Titumiza zikhalidwe kumeneko ndi retain = mbendera yowona - izi zidzasunga mtengo mkati mwa broker, ndipo zitha kutulutsidwa pamenepo nthawi iliyonse, ngakhale wothandizira kunyumba ayambiranso. Ndinapanga zowerengera za ola limodzi ndi tsiku lililonse nthawi imodzi.
- platform: mqtt
state_topic: "test/water/hour"
name: water_hour
unit_of_measurement: l
- platform: mqtt
state_topic: "test/water/hour_begin"
name: water_hour_begin
unit_of_measurement: l
- platform: mqtt
state_topic: "test/water/day"
name: water_day
unit_of_measurement: l
- platform: mqtt
state_topic: "test/water/day_begin"
name: water_day_begin
unit_of_measurement: l
Zamatsenga zonse zimachitika mu automation, yomwe imayenda ola lililonse ndi usiku uliwonse motsatana.
Werengerani mtengo wanthawi yosiyana monga kusiyana pakati pa zoyambira ndi zomaliza
Sinthani mtengo wanthawi yotsatila
Kupanga ma graph pankhaniyi kumathetsedwa ndi mbiri yakale-graph:
- type: history-graph
title: 'Hourly water consumption using vars'
hours_to_show: 48
entities:
- sensor.water_hour
- type: history-graph
title: 'Daily water consumption using vars'
hours_to_show: 360
entities:
- sensor.water_day
Zikuwoneka motere:
Kwenikweni, izi ndi zomwe zikufunika kale. Ubwino wa njirayi ndikuti deta imapangidwa kamodzi pa nthawi. Iwo. zolemba 24 zokha patsiku pa tchati cha ola limodzi.
Tiyeni tsopano tipite ku InfluxDB console ndikukonzekera database yathu. Makamaka, muyenera kukonza nthawi yomwe deta ina idzasungidwa. Izi zimayendetsedwa ndi otchedwa. ndondomeko yosungira - izi ndizofanana ndi nkhokwe mkati mwa nkhokwe yayikulu, ndi database iliyonse yamkati ili ndi zokonda zake. Mwachikhazikitso, deta yonse imasungidwa mu ndondomeko yosungira zinthu yotchedwa autogen; deta iyi idzasungidwa kwa sabata. Ndikufuna kuti deta ya ola limodzi isungidwe kwa mwezi umodzi, deta ya sabata iliyonse isungidwe kwa chaka chimodzi, ndi zomwe mwezi uliwonse zisamachotsedwe. Tiyeni tipange ndondomeko yoyenera kusunga
CREATE RETENTION POLICY "month" ON "homeassistant" DURATION 30d REPLICATION 1
CREATE RETENTION POLICY "year" ON "homeassistant" DURATION 52w REPLICATION 1
CREATE RETENTION POLICY "infinite" ON "homeassistant" DURATION INF REPLICATION 1
Tsopano, kwenikweni, chinyengo chachikulu ndikuphatikiza deta pogwiritsa ntchito funso mosalekeza. Iyi ndi njira yomwe imayendetsa funso pakapita nthawi, kusonkhanitsa deta ya funsoli, ndikuwonjezera zotsatira zake kukhala mtengo watsopano. Tiyeni tiwone chitsanzo (ndimalemba pamndandanda kuti ndiwerenge, koma kwenikweni ndimayenera kuyika lamuloli pamzere umodzi)
CREATE CONTINUOUS QUERY cq_water_hourly ON homeassistant
BEGIN
SELECT max(value) AS value
INTO homeassistant.month.water_meter_hour
FROM homeassistant.autogen.l
GROUP BY time(1h), entity_id fill(previous)
END
Deta yophatikizika idzagawidwa ndi entity_id, yomwe ingatipatse mikhalidwe yosiyana yamadzi ozizira ndi otentha.
Popeza kauntala ya lita ndi njira yomwe ikuchulukirachulukira mkati mwa ola lililonse, padzakhala kofunikira kutenga mtengo wokwanira, kotero kuphatikizika kudzachitidwa ndi ntchito max(value)
Mtengo watsopano udzalembedwa ku homeassistant.month.water_meter_hour, kumene mwezi ndi dzina la ndondomeko yosungira ndi kusunga mwezi umodzi. Kuphatikiza apo, deta yamadzi ozizira ndi otentha idzamwazikana m'marekodi osiyana ndi entity_id yogwirizana ndi mtengo wamtengo wapatali.
Usiku kapena pamene palibe munthu panyumba, madzi sagwiritsidwa ntchito, choncho palibe zatsopano mu homeassistant.autogen.l. Kuti mupewe kuphonya pamafunso pafupipafupi, mutha kugwiritsa ntchito fill (yam'mbuyomu). Izi zidzakakamiza InfluxDB kugwiritsa ntchito mtengo wa ola lomaliza.
Tsoka ilo, kufunsa kosalekeza kuli ndi mawonekedwe ake: chinyengo chodzaza (cham'mbuyo) sichigwira ntchito ndipo zolemba sizinapangidwe. Komanso, ichi ndi mtundu wina wa vuto osagonja kuti zakambidwa kwa zaka zingapo tsopano. Tidzathana ndi vutoli pambuyo pake, koma lolani kudzaza (m'mbuyomu) kukhala mufunso lopitilira - silikusokoneza.
> select * from homeassistant.month.water_meter_hour group by entity_id
...
name: water_meter_hour
tags: entity_id=water_meter_cold
time value
---- -----
...
2020-03-08T01:00:00Z 370511
2020-03-08T02:00:00Z 370513
2020-03-08T05:00:00Z 370527
2020-03-08T06:00:00Z 370605
2020-03-08T07:00:00Z 370635
2020-03-08T08:00:00Z 370699
2020-03-08T09:00:00Z 370761
2020-03-08T10:00:00Z 370767
2020-03-08T11:00:00Z 370810
2020-03-08T12:00:00Z 370818
2020-03-08T13:00:00Z 370827
2020-03-08T14:00:00Z 370849
2020-03-08T15:00:00Z 370921
Zindikirani kuti zikhalidwe zomwe zili m'dawunilodi zimasungidwa ku UTC, ndiye kuti mndandandawu umasiyana ndi maola atatu - ma 3am muzotulutsa za InfluxDB zimagwirizana ndi ma 7am pazithunzi pamwambapa. Komanso dziwani kuti pakati pa 10 ndi 2 am palibe zolemba - izi ndizomwe zimafunsidwa mosalekeza.
Monga mukuwonera, mtengo wophatikizika nawonso ndiwongochulukirachulukira, zolemba zokha zimachitika pafupipafupi - kamodzi pa ola. Koma ili si vuto - titha kulemba funso lina lomwe lingatengenso deta yolondola pa graph.
SELECT difference(max(value))
FROM homeassistant.month.water_meter_hour
WHERE entity_id='water_meter_cold' and time >= now() -24h
GROUP BY time(1h), entity_id
fill(previous)
Ndikuwerenga:
Kuchokera kunkhokwe ya homeassistant.month.water_meter_hour tidzachotsa deta ya entity_id='water_meter_cold' ya tsiku lomaliza (nthawi >= now() -24h).
Monga ndanenera kale, zolemba zina zitha kusowa mu ndondomeko ya homeassistant.month.water_meter_hour. Tipanganso datayi pofunsa ndi GROUP BY nthawi(1h). Nthawi ino kudzaza (yam'mbuyo) igwira ntchito monga momwe ikuyembekezeredwa, ndikupanga zomwe zikusowa (ntchitoyo idzatenga mtengo wam'mbuyo)
Chofunika kwambiri pa pempholi ndi ntchito yosiyana, yomwe idzawerengera kusiyana pakati pa zizindikiro za ola. Sichimagwira ntchito pachokha ndipo chimafuna ntchito yophatikiza. Lolani awa akhale max() omwe amagwiritsidwa ntchito kale.
Ndidzawonetsa deta yamadzi ozizira ndi otentha pa graph yomweyi. Pempho ndilofanana ndendende ndi momwe ndafotokozera pamwambapa.
Zowonetsera zowonetsera zimayikidwa motere. Kwa ine idzakhala graph yokhala ndi mizere, yomwe imapita mu masitepe (masitepe). Ndifotokoza gawo la Stack pansipa. Pali zosankha zingapo zowonetsera pansipa, koma sizosangalatsa.
Kuti muwonjezere tchati chotsatira kwa wothandizira kunyumba muyenera:
Sindinadzisankhe ndekha graph yomwe ndimakonda bwino, sitepe ya mzere, kapena mipiringidzo yeniyeni. Chifukwa chake, ndingopereka chitsanzo cha tchati chogwiritsa ntchito tsiku ndi tsiku, nthawi ino yokha mu mipiringidzo. Mafunso amapangidwa mofanana ndi zomwe zafotokozedwa pamwambapa. Zosankha zowonetsera ndi:
Grafu iyi ikuwoneka motere:
Ndiye za Stack parameter. Mu graph iyi, ndime ya madzi ozizira imakokedwa pamwamba pa ndime ya madzi otentha. Kutalika konse kumafanana ndi kumwa kwathunthu kwa madzi ozizira ndi otentha kwa nthawiyo.
Ma graph onse owonetsedwa ndi osinthika. Mutha kusuntha mbewa yanu pamalo osangalatsa ndikuwona tsatanetsatane ndi mtengo wake pamalo enaake.
Tsoka ilo, munali ntchentche zingapo m'mafutawo. Pa tchati cha bar (mosiyana ndi tchati chokhala ndi masitepe), pakati pa bar sipakati pa tsiku, koma 00:00. Iwo. theka lakumanzere la gawolo limajambulidwa m'malo mwa tsiku lapitalo. Chifukwa chake ma graph a Loweruka ndi Lamlungu amakokedwa pang'ono kumanzere kwa zone ya bluish. Mpaka ndinaganiza momwe ndingagonjetsere.
Vuto lina ndi kulephera kugwira ntchito moyenera pamwezi. Chowonadi ndi chakuti kutalika kwa ola / tsiku / sabata kumakhazikitsidwa, koma kutalika kwa mwezi kumakhala kosiyana nthawi iliyonse. InfluxDB imatha kugwira ntchito mosiyanasiyana. Pakalipano ubongo wanga wakhala wokwanira kukhazikitsa nthawi yokhazikika ya masiku 30. Inde, graph idzayandama pang'ono chaka chonse ndipo mipiringidzo sidzafanana ndendende ndi miyezi. Koma popeza ndili ndi chidwi ndi chinthu ichi ngati mita yowonetsera, ndili bwino nazo.
Ndikuwona mayankho osachepera awiri:
Perekani ma chart a pamwezi ndikudzipatula pa sabata. Mipiringidzo 52 pachaka imawoneka bwino