Nyumba ya Smart: Timamanga ma graph a madzi ndi magetsi mu Home Assistant

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.
    {"entity_id": "sensor.water_cold_hourly", "old_state": {"entity_id": "sensor.water_cold_hourly", "state": "3", "attributes": {"source": "sensor.water_meter_cold", "status": "collecting", "last_period": "29", "last_reset": "2020-02-23T21:00:00.022246+02:00", "meter_period": "hourly", "unit_of_measurement": "l", "friendly_name": "water_cold_hourly", "icon": "mdi:counter"}, "last_changed": "2020-02-23T19:05:06.897604+00:00", "last_updated": "2020-02-23T19:05:06.897604+00:00", "context": {"id": "aafc8ca305ba4e49ad4c97f0eddd8893", "parent_id": null, "user_id": null}}, "new_state": {"entity_id": "sensor.water_cold_hourly", "state": "4", "attributes": {"source": "sensor.water_meter_cold", "status": "collecting", "last_period": "29", "last_reset": "2020-02-23T21:00:00.022246+02:00", "meter_period": "hourly", "unit_of_measurement": "l", "friendly_name": "water_cold_hourly", "icon": "mdi:counter"}, "last_changed": "2020-02-23T19:11:11.251545+00:00", "last_updated": "2020-02-23T19:11:11.251545+00:00", "context": {"id": "0de64b8af6f14bb9a419dcf3b200ef56", "parent_id": null, "user_id": null}}}

    Ndili ndi masensa ambiri (masensa otentha m'chipinda chilichonse, mita ya madzi ndi magetsi), ndipo ena amapanganso zambiri. Mwachitsanzo, mita yamagetsi ya SDM220 yokha imapanga pafupifupi khumi ndi awiri masekondi 10-15 aliwonse, ndipo ndikufuna kuyika pafupifupi mamita oterowo 8. Palinso gulu lonse la magawo omwe amawerengedwa pogwiritsa ntchito masensa ena. Kuti. zikhalidwe zonsezi zitha kukulitsa nkhokwe mosavuta ndi 100-200 MB tsiku lililonse. Pakatha sabata, makinawo sangasunthe, ndipo mu mwezi umodzi flash drive idzafa (panthawi yoyika wothandizira kunyumba pa Raspberry PI), ndikusunga deta kwa chaka chathunthu sikuli kofunikira.

  • Ngati muli ndi mwayi, mita yanu imatha kuwerengera momwe mungagwiritsire ntchito. Mutha kutembenukira ku mita nthawi iliyonse ndikufunsa kuti mtengo womwe wasonkhanitsa ndi nthawi yanji. Monga lamulo, mamita onse amagetsi omwe ali ndi mawonekedwe a digito (RS232 / RS485 / Modbus / Zigbee) amapereka mwayi umenewu.

    Ndizoipa kwambiri ngati chipangizochi chitha kuyeza magawo pompopompo (mwachitsanzo, mphamvu yanthawi yomweyo kapena yapano), kapena kungopanga ma pulse pa mawati a X kapena malita aliwonse. Kenako muyenera kuganizira momwe mungaphatikizire ndi zomwe mungaphatikizire komanso komwe mungadziunjikire mtengo. Pali chiopsezo chosowa lipoti lotsatira pazifukwa zilizonse, ndipo kulondola kwa dongosolo lonse kumadzutsa mafunso. Mutha kuyika zonsezi ku dongosolo lanyumba lanzeru ngati wothandizira kunyumba, koma palibe amene waletsa mfundo yokhudzana ndi kuchuluka kwa zolembedwa mu nkhokwe, ndipo sizingatheke kuvotera masensa kangapo sekondi imodzi (a. kuchepetsa kwa zomangamanga zothandizira nyumba).

Njira 1

Choyamba, tiyeni tiwone zomwe wothandizira kunyumba amapereka kuchokera m'bokosi. Kuyeza kumwa kwa nthawi yayitali ndi ntchito yomwe anthu amafunidwa kwambiri. Zachidziwikire, idakhazikitsidwa kalekale ngati gawo lapadera - utility_meter.

Chofunikira cha chigawocho ndikuti mkati mwake imapanga variable current_accumulated_value ndikuyikhazikitsanso pakapita nthawi yodziwika (ola / sabata / mwezi). Chigawocho chimayang'anira kusinthika kolowera (mtengo wa sensa ina), imadzilembera yokha kuti isinthe pamtengo - mumangopeza zotsatira zomaliza. Chinthu ichi chikufotokozedwa m'mizere yochepa chabe mu fayilo yokonzekera

utility_meter:
  water_cold_hour_um:
    source: sensor.water_meter_cold
    cycle: hourly
  water_cold_day_um:
    source: sensor.water_meter_cold
    cycle: daily

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.

Nyumba ya Smart: Timamanga ma graph a madzi ndi magetsi mu Home Assistant

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

Nyumba ya Smart: Timamanga ma graph a madzi ndi magetsi mu Home Assistant

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.

Njira 2

Ndikamamvetsetsa wothandizira kunyumba, ndidawona vidiyo iyi:


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.

- id: water_new_hour
  alias: water_new_hour
  initial_state: true
  trigger:
    - platform: time_pattern
      minutes: 0
  action:
    - service: mqtt.publish
      data:
        topic: "test/water/hour"
        payload_template: >
          {{ (states.sensor.water_meter_cold.state|int) - (states.sensor.water_hour_begin.state|int) }}
        retain: true
    - service: mqtt.publish
      data:
        topic: "test/water/hour_begin"
        payload_template: >
          {{ states.sensor.water_meter_cold.state }}
        retain: true

- id: water_new_day
  alias: water_new_day
  initial_state: true
  trigger:
    - platform: time
      at: "00:00:00"
  action:
    - service: mqtt.publish
      data:
        topic: "test/water/day"
        payload_template: >
          {{ (states.sensor.water_meter_cold.state|int) - (states.sensor.water_day_begin.state|int) }}
        retain: true
    - service: mqtt.publish
      data:
        topic: "test/water/day_begin"
        payload_template: >
          {{ states.sensor.water_meter_cold.state }}
        retain: true

Makina onsewa amachita zinthu ziwiri:

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

Nyumba ya Smart: Timamanga ma graph a madzi ndi magetsi mu Home Assistant

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.

Tsoka ilo, izi sizithetsabe vuto lalikulu la maziko omwe akukulirakulira. Ngati ndikufuna graph ya mwezi uliwonse, ndiyenera kusunga deta kwa chaka chimodzi. Ndipo popeza wothandizira kunyumba amapereka nthawi imodzi yokha yosungira pankhokwe yonse, izi zikutanthauza kuti ZONSE zomwe zili mudongosolo ziyenera kusungidwa kwa chaka chathunthu. Mwachitsanzo, m'chaka ndimagwiritsa ntchito madzi okwana 200 cubic metres, zomwe zikutanthauza kuti 200000 zolemba mu database. Ndipo ngati mungaganizire masensa ena, ndiye kuti chiwerengerocho chimakhala chosayenera.

Njira 3

Mwamwayi, anthu anzeru athetsa kale vutoli polemba database ya InfluxDB. Nawonso databaseyi imakonzedwa mwapadera kuti isungidwe zotengera nthawi ndipo ndiyabwino kusunga ma sensor osiyanasiyana. Dongosololi limaperekanso chilankhulo chofanana ndi SQL chomwe chimakupatsani mwayi wochotsa zomwe zili mu database ndikuziphatikiza m'njira zosiyanasiyana. Pomaliza, deta yosiyana imatha kusungidwa nthawi zosiyanasiyana. Mwachitsanzo, zowerengera zosintha pafupipafupi monga kutentha kapena chinyezi zimatha kusungidwa kwa milungu ingapo, pomwe zowerengera zamadzi tsiku lililonse zitha kusungidwa kwa chaka chathunthu.

Kupatula InfluxDB, anthu anzeru adapanganso Grafana, njira yojambulira ma graph potengera zomwe zachokera ku InfluxDB. Grafana amatha kujambula mitundu yosiyanasiyana ya ma graph, kuwasintha mwatsatanetsatane, ndipo, chofunikira kwambiri, ma graph awa amatha "kulumikizidwa" pa lovelace-UI wothandizira kunyumba.

Khalani olimbikitsidwa apa ΠΈ apa. Zolembazi zikufotokoza mwatsatanetsatane njira yokhazikitsira ndikulumikiza InfluxDB ndi Grafana kwa wothandizira kunyumba. Ndiyang'ana kwambiri kuthetsa vuto langa lenileni.

Chifukwa chake, choyamba, tiyeni tiyambe kuwonjezera mtengo wotsutsa mu influxDB. Chidutswa cha kasinthidwe ka wothandizira kunyumba (muchitsanzo ichi ndidzasangalala ndi osati ozizira, komanso madzi otentha):

influxdb:
  host: localhost
  max_retries: 3
  default_measurement: state
  database: homeassistant
  include:
    entities:
      - sensor.water_meter_hot
      - sensor.water_meter_cold

Tiyeni tiyimitse kusungira deta yomweyi ku nkhokwe yamkati yothandizira kunyumba kuti tisayitsenso:

recorder:
  purge_keep_days: 10
  purge_interval: 1
  exclude:
    entities:
      - sensor.water_meter_hot
      - sensor.water_meter_cold

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

Lamulo ili:

  • Amapanga funso lopitilira lotchedwa cq_water_cold_hourly munkhokwe
  • Pempho lidzaperekedwa ola lililonse (nthawi (1h))
  • Pempholi lichotsa zonse kuchokera muyeso ya' homeassistant.autogen.l (malita), kuphatikiza kuwerengera madzi ozizira ndi otentha.
  • 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.

Tiyeni tiwone zomwe zidachitika (zowona, muyenera kudikirira maola angapo):

> 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.

Chotsatira chakupha chikuwoneka chonchi

name: water_meter_hour
tags: entity_id=water_meter_cold
time                 difference
----                 ----------
...
2020-03-08T02:00:00Z 2
2020-03-08T03:00:00Z 0
2020-03-08T04:00:00Z 0
2020-03-08T05:00:00Z 14
2020-03-08T06:00:00Z 78
2020-03-08T07:00:00Z 30
2020-03-08T08:00:00Z 64
2020-03-08T09:00:00Z 62
2020-03-08T10:00:00Z 6
2020-03-08T11:00:00Z 43
2020-03-08T12:00:00Z 8
2020-03-08T13:00:00Z 9
2020-03-08T14:00:00Z 22
2020-03-08T15:00:00Z 72

Kuyambira 2 mpaka 5 am (UTC) kunalibe kumwa. Komabe, funsolo libweza mtengo womwewo wogwiritsa ntchito chifukwa chodzaza (cham'mbuyo), ndipo kusiyana kumachotsa mtengowo pawokha ndipo zotuluka zake zidzakhala 0, zomwe ndizomwe zimafunikira.

Chotsalira ndikumanga graph. Kuti muchite izi, tsegulani Grafana, tsegulani dashboard yomwe ilipo (kapena pangani yatsopano), ndikupanga gulu latsopano. Zokonda zama chart zidzakhala chonchi.

Nyumba ya Smart: Timamanga ma graph a madzi ndi magetsi mu Home Assistant

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.

Nyumba ya Smart: Timamanga ma graph a madzi ndi magetsi mu Home Assistant

Kuti muwonjezere tchati chotsatira kwa wothandizira kunyumba muyenera:

  • tulukani munjira yosinthira tchati. Pazifukwa zina, zokonda zogawana tchati zimaperekedwa kuchokera patsamba la dashboard yokha
  • Dinani pamakona atatu pafupi ndi dzina la tchati ndikusankha kugawana kuchokera pamenyu
  • Pazenera lomwe limatsegulidwa, pitani ku tabu yoyimitsa
  • Chotsani kusankha nthawi yomwe ilipo - tidzakhazikitsa nthawi kudzera pa URL
  • Sankhani mutu wofunikira. Kwa ine ndi kuwala
  • Koperani ulalo wotsatira ku khadi la zoikamo za lovelace-UI

      - type: iframe
        id: graf_water_hourly
        url: "http://192.168.10.200:3000/d-solo/rZARemQWk/water?orgId=1&panelId=2&from=now-2d&to=now&theme=light"

Chonde dziwani kuti nthawi (masiku 2 apitawa) yakhazikitsidwa pano, osati m'makonzedwe a dashboard.

Grafu ikuwoneka chonchi. Sindinagwiritse ntchito madzi otentha m'masiku apitawa a 2, kotero kuti graph yamadzi ozizira yokha ndiyomwe imakokedwa.

Nyumba ya Smart: Timamanga ma graph a madzi ndi magetsi mu Home Assistant

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:

Nyumba ya Smart: Timamanga ma graph a madzi ndi magetsi mu Home Assistant

Grafu iyi ikuwoneka motere:

Nyumba ya Smart: Timamanga ma graph a madzi ndi magetsi mu Home Assistant

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
  • Ganizirani kugwiritsa ntchito mwezi uliwonse ngati njira nambala 2, ndipo gwiritsani ntchito grafana pazithunzi zokongola zokha. Idzakhala yolondola yankho. Mutha kuphimba ma graph a chaka chatha kuti mufananize - grafana athanso kuchita izi.

Pomaliza

Sindikudziwa chifukwa chake, koma ndimatengeka kwambiri ndi ma graph awa. Amasonyeza kuti moyo uli pachimake ndipo zonse zikusintha. Dzulo panali zambiri, lero zachepa, mawa zidzakhala zina. Zomwe zatsala ndikugwirira ntchito limodzi ndi mamembala apakhomo pamutu wa mowa. Koma ngakhale ndi zilakolako zamakono, chiwerengero chachikulu komanso chosamvetsetseka pa slip yolipira chikusandulika kukhala chithunzi chomveka chogwiritsira ntchito.

Ngakhale kuti ndakhala ndikugwira ntchito kwa zaka pafupifupi 20 monga wopanga mapulogalamu, ndinalibe kulumikizana ndi ma database. Chifukwa chake, kukhazikitsa database yakunja kumawoneka ngati chinthu chosamveka komanso chosamvetsetseka. Anasintha chirichonse nkhani pamwamba - zidapezeka kuti kulumikiza chida choyenera kumachitika pang'onopang'ono, ndipo ndi chida chapadera, ntchito yokonza ma chart imakhala yosavuta.

Mumutuwu ndidatchulapo kugwiritsa ntchito magetsi. Tsoka ilo, pakadali pano sindingathe kupereka ma graph aliwonse. Mamita amodzi a SDM120 adandifera, ndipo inayo ndi yowoneka bwino ikafikiridwa kudzera pa Modbus. Komabe, izi sizikhudza mutu wa nkhaniyi mwanjira iliyonse - ma grafu adzamangidwa mofanana ndi madzi.

M'nkhaniyi ndinapereka njira zomwe ndinayesera ndekha. Ndithudi pali njira zina zokonzekera kusonkhanitsa deta ndi kuwonetsera zomwe sindikuzidziwa. Ndiuzeni za izo mu ndemanga, ndidzakhala ndi chidwi kwambiri. Ndidzakhala wokondwa kutsutsa kolimbikitsa ndi malingaliro atsopano. Ndikukhulupirira kuti zomwe zaperekedwa zithandizanso wina.

Source: www.habr.com

Kuwonjezera ndemanga