Dachaigh Glic: A’ clàradh caitheamh uisge is dealain ann an neach-cuideachaidh dachaigh

Dachaigh Glic: A’ clàradh caitheamh uisge is dealain ann an neach-cuideachaidh dachaigh
Gach uair a gheibh mi pàigheadh ​​airson dealan is uisge, saoil - a bheil mo theaghlach ag ithe uiread? Uill, tha, tha làr teasachaidh agus goileadair anns an t-seòmar-ionnlaid, ach chan eil iad ag obair mar luchd-smàlaidh fad na h-ùine. Tha e coltach gu bheil sinn cuideachd a’ sàbhaladh uisge (ged is toil leinn a bhith a’ frasadh san t-seòmar-ionnlaid cuideachd). O chionn beagan bhliadhnaichean tha mi mu thràth meatairean uisge ceangailte и dealan gu dachaigh spaideil, ach seo far an deach cùisean an sàs. Tha na làmhan air mion-sgrùdadh caitheamh a ruighinn a-mhàin a-nis, a tha, gu dearbh, mu dheidhinn a tha an artaigil seo.

O chionn ghoirid thionndaidh mi gu Neach-taic Dachaigh mar an siostam dachaigh smart agam. B 'e aon de na h-adhbharan dìreach an comas cruinneachadh mòr de dhàta a chuir air dòigh le comas air diofar sheòrsaichean ghrafaichean a thogail.

Chan eil am fiosrachadh a tha air a mhìneachadh san artaigil seo ùr, chaidh na rudan sin uile fo dhiofar shàilean a mhìneachadh air an eadar-lìn mu thràth. Ach tha gach artaigil, mar riaghailt, a 'toirt cunntas air aon dòigh-obrach no taobh. B’ fheudar dhomh coimeas a dhèanamh eadar na dòighean-obrach sin uile agus am fear as freagarraiche a thaghadh mi-fhìn. Chan eil an artaigil fhathast a’ toirt seachad fiosrachadh iomlan mu chruinneachadh dàta, ach tha e na sheòrsa de gheàrr-chunntas air mar a rinn mi e. Mar sin tha fàilte air càineadh cuideachail agus molaidhean airson leasachadh.

Aithris dhuilgheadas

Mar sin, is e amas eacarsaich an latha an-diugh grafaichean brèagha fhaighinn de chaitheamh uisge is dealain:

  • Uair a thìde airson 2 latha
  • Gach latha airson 2 sheachdain
  • (roghainneil) gach seachdain agus gach mìos

Tha cuid de dhuilgheadasan ann an seo:

  • Tha na co-phàirtean cairt àbhaisteach buailteach a bhith gu math bochd. Aig a’ char as fheàrr, faodaidh tu graf-loidhne a thogail le puingean.

    Ma nì thu sgrùdadh math, gheibh thu co-phàirtean treas-phàrtaidh a leudaicheas comasan a’ chlàir àbhaisteach. Airson neach-cuideachaidh dachaigh, ann am prionnsabal, pàirt math agus brèagha cairt ghraf beag, ach tha e beagan cuingealaichte cuideachd:

    • Tha e duilich crìochan a’ chairt-bhàr a shuidheachadh aig amannan mòra (tha leud a’ bhàr air a shuidheachadh ann am bloighean uair a thìde, a’ ciallachadh gum bi amannan nas fhaide na uair a thìde air an suidheachadh ann an àireamhan bloighteach)
    • Chan urrainn dhut aonadan eadar-dhealaichte a chur ri aon ghraf (mar eisimpleir, teòthachd agus taiseachd, no graf bàr a chur còmhla ri loidhne)
  • Chan e a-mhàin gu bheil an neach-cuideachaidh dachaigh a’ cleachdadh an stòr-dàta SQLite as prìomhadail gu bunaiteach (agus cha do rinn mise, am fear-làimhe, maighstireachd air stàladh MySQL no Postgres), chan eil an dàta air a stòradh san dòigh as fheàrr. Mar sin, mar eisimpleir, le gach atharrachadh de gach eadhon am paramadair didseatach as lugha de pharamadair, tha json mòr mu kilobyte ann am meud air a sgrìobhadh chun stòr-dàta
    {"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}}}

    Tha grunn luchd-mothachaidh agam (mothachaidhean teòthachd anns a h-uile seòmar, meatairean uisge is dealain), agus bidh cuid cuideachd a’ gineadh tòrr dàta. Mar eisimpleir, chan eil ach an meatair dealain SDM220 a 'gineadh mu dhusan luachan gach 10-15 diog, agus bu mhath leam 8 meatairean mar sin a stàladh. Sin. faodaidh na luachan sin uile an stòr-dàta àrdachadh gu furasta le 100-200 MB gach latha. Ann an seachdain, is gann gum bi an siostam a ’tilgeil agus a’ tionndadh, agus ann am mìos gheibh an draibhear flash bàs (ma tha neach-cuideachaidh dachaigh àbhaisteach air sùbh-craoibhe PI), agus chan urrainn ceist sam bith a bhith ann mu stòradh dàta airson bliadhna air fad.

  • Ma tha thu fortanach, faodaidh do mheatair fhèin caitheamh a chunntadh. Faodaidh tu fios a chuir chun mheatair aig àm sam bith agus faighneachd dè an uair a tha an luach caitheamh cruinnichte. Mar riaghailt, tha a h-uile meatair dealain aig a bheil eadar-aghaidh didseatach (RS232/RS485/Modbus/Zigbee) a’ toirt a leithid de chothrom.

    Nas miosa, mas urrainn don inneal dìreach paramadair sa bhad a thomhas (mar eisimpleir, cumhachd sa bhad no sruth), no dìreach buillean a ghineadh gach X watt-uair no liotair. An uairsin feumaidh tu smaoineachadh air ciamar agus leis dè a bu chòir dhut fhilleadh a-steach agus càite an cruinnich thu luach. Tha cunnart ann gun caillear an ath aithisg airson adhbhar sam bith, agus tha neo-mhearachdachd an t-siostaim gu h-iomlan a’ togail cheistean. Faodaidh tu, gu dearbh, a h-uile càil seo a chuir an urra ri siostam dachaigh snasail mar neach-cuideachaidh dachaigh, ach cha do chuir duine dheth a’ phuing mun àireamh de dh ’inntrigidhean san stòr-dàta, agus chan obraich mothachairean bhòtaidh barrachd air aon uair san diog (cuingealachadh air an ailtireachd neach-cuideachaidh dachaigh).

Dòigh-obrach 1

An toiseach, chì sinn dè an neach-cuideachaidh dachaigh a tha air a thoirt a-mach às a’ bhogsa. Tha iarrtas mòr air a bhith a’ tomhas caitheamh thar ùine. Gu dearbh, chaidh a chuir an gnìomh o chionn fhada mar phàirt sònraichte - utility_meter.

Is e brìgh a’ cho-phàirt gu bheil e a’ tòiseachadh an caochladair current_accumulated_value a-staigh agus ga ath-shuidheachadh às deidh ùine ainmichte (uair/seachdain/mìos). Bidh am pàirt fhèin a’ cumail sùil air a’ chaochladair a tha a’ tighinn a-steach (luach sensor de sheòrsa air choreigin), a’ gabhail ri atharrachaidhean anns an luach fhèin - chan fhaigh thu ach an toradh crìochnaichte. Tha an rud seo air a mhìneachadh ann am beagan loidhnichean anns an fhaidhle rèiteachaidh

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

Seo sensor.water_meter_cold luach làithreach a’ mheatair ann an liotairean a gheibh mi gu dìreach bhon iarann le mqtt. Bidh an dealbhadh a’ cruthachadh 2 mothachairean ùra water_cold_hour_um agus water_cold_day_um, a bhios a’ cruinneachadh leughaidhean san uair agus gach latha, gan ath-shuidheachadh gu neoni às deidh ùine. Seo graf den bhataraidh san uair airson leth latha.

Dachaigh Glic: A’ clàradh caitheamh uisge is dealain ann an neach-cuideachaidh dachaigh

Tha an còd clàir san uair agus gach latha airson lovelace-UI a’ coimhead mar seo:

      - 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

Gu fìrinneach, anns an algairim seo tha duilgheadas an dòigh-obrach seo. Mar a thuirt mi mu thràth, airson gach luach a tha a’ tighinn a-steach (an leughadh meatair gnàthach airson gach ath liotair), tha 1kb de chlàr air a chruthachadh san stòr-dàta. Bidh gach meatair goireis cuideachd a ’gineadh luach ùr, a tha cuideachd air a chur ris a’ bhunait. Ma tha mi airson leughaidhean uair / latha / seachdaineil / mìosail a chruinneachadh, tha, airson grunn àrdachadh uisge, agus eadhon pasgan de mheatairean dealain a chuir ris, is e tòrr dàta a bhios ann. Uill, nas mionaidiche, chan eil mòran dàta ann, ach leis gu bheil an neach-cuideachaidh dachaigh a’ sgrìobhadh dòrlach de dh’ fhiosrachadh neo-riatanach chun stòr-dàta, bidh meud an stòr-dàta a’ fàs le bhith a’ leum is a’ chrìoch. Tha eagal orm eadhon tuairmse a dhèanamh air meud a 'bhunait airson clàran seachdaineil agus mìosail.

A bharrachd air an sin, chan eil am meatair goireis fhèin a’ fuasgladh na duilgheadas. Tha an cuilbheart meatair goireis na ghnìomh a tha ag àrdachadh gu monotonach a bhios ag ath-shuidheachadh gu 0 gach uair. Feumaidh sinn cuideachd clàr caitheamh a tha furasta a chleachdadh, cia mheud liotair a chaidh ithe rè na h-ùine seo. Cha bhith am pàirt àbhaisteach graf-eachdraidh a’ dèanamh seo, ach cuidichidh am pàirt cairt-ghraf taobh a-muigh sinn.

Seo an còd cairt airson 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'

A bharrachd air na roghainnean àbhaisteach leithid an t-ainm mothachaidh, seòrsa graf, dath (cha bu toil leam an orains àbhaisteach), tha e cudromach a bhith mothachail air 3 roghainnean an seo:

  • group_by: uair - thèid a’ chairt a chruthachadh le colbhan co-thaobhadh ri toiseach na h-uarach
  • points_per_hour: 1 - aon bhàr san uair
  • Agus as cudromaiche, tha aggregate_func: max an luach as àirde a ghabhail taobh a-staigh gach uair a thìde. Is e am paramadair seo a thionndaidheas a’ chairt sàbhaidh gu bhith na bhàraichean.

Dachaigh Glic: A’ clàradh caitheamh uisge is dealain ann an neach-cuideachaidh dachaigh

Na toir aire don t-sreath de cholbhan air an taobh chlì - is e seo giùlan àbhaisteach a 'phàirt mura h-eil dàta ann. Ach cha robh dàta ann - cha do thionndaidh mi ach cruinneachadh dàta a’ cleachdadh a’ mheatair goireis beagan uairean a thìde air ais dìreach air sgàth an artaigil seo (bidh mi a’ toirt cunntas air an dòigh-obrach a th’ agam an-dràsta beagan nas ìsle).

Anns an dealbh seo, bha mi airson sealltainn gu bheil an taisbeanadh dàta uaireannan eadhon ag obair, agus gu bheil na bàraichean a 'nochdadh nan luachan ceart. Ach chan e sin uile. Airson adhbhar air choireigin, tha an colbh comharraichte airson na h-ùine bho 11m gu 12m a’ taisbeanadh 19 liotair, ged a tha sinn air a’ ghraf fiacail beagan nas àirde airson an aon ùine bhon aon sensor chì sinn caitheamh 62 liotair. Tha an dàrna cuid biast no làmhan cam. Ach chan eil mi fhathast a’ tuigsinn carson a bhris an dàta air an taobh cheart - bha an caitheamh an sin àbhaisteach, a tha cuideachd ri fhaicinn bhon ghraf fiacail.

San fharsaingeachd, dh'fhàillig mi a 'coileanadh so-chreidsinneachd an dòigh-obrach seo - tha an graf cha mhòr an-còmhnaidh a' sealltainn seòrsa de heresy.

Còd coltach ris airson an sensor tron ​​​​latha.

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

Thoir an aire gu bheil am paramadair group_by air a shuidheachadh gu eadar-ama, agus tha am paramadair points_per_hour a’ riaghladh a h-uile càil. Agus is e duilgheadas eile a tha seo leis a’ phàirt seo - bidh points_per_hour ag obair gu math air clàran uair a thìde no nas lugha, ach gu tàmailteach aig amannan nas motha. Mar sin airson aon cholbh fhaighinn ann an aon latha, bha agam ri luach 1/24 = 0.04166666 a chur a-steach. Chan eil mi a 'bruidhinn mu dheidhinn clàran seachdaineil agus mìosail.

Dòigh-obrach 2

Fhad ‘s a bha mi fhathast a’ faighinn a-mach an neach-cuideachaidh dachaigh, thàinig mi tarsainn air a ’bhidio seo:


Bidh an companach a’ tional dàta caitheamh bho ghrunn sheòrsan socaidean Xiaomi. Tha an obair aige beagan nas sìmplidh - dìreach seall luach caitheamh airson an-diugh, an-dè agus airson na mìos. Chan eil feum air clàran.

Fàgaidh sinn na h-argamaidean mu bhith ag amalachadh le làimh luachan cumhachd sa bhad - sgrìobh mi mu thràth mu “mearachdachd” an dòigh-obrach seo gu h-àrd. Chan eil e soilleir carson nach do chleachd e na luachan caitheamh cruinnichte, a tha mar-thà air an cruinneachadh leis an aon ionad. Nam bheachd-sa, obraichidh amalachadh taobh a-staigh a’ phìos iarainn nas fheàrr.

Bhon bhidio, gabhaidh sinn am beachd a bhith a 'cunntadh caitheamh le làimh airson ùine. Airson fear, chan eilear a’ beachdachadh ach air luachan an-diugh agus an-dè, ach thèid sinn nas fhaide agus feuchaidh sinn ri graf a tharraing. Tha brìgh an dòigh a thathar a’ moladh anns a’ chùis agam mar a leanas.

Cruthaichidh sinn luach caochlaideach_at_the_beginning_of_hour, anns an sgrìobh sinn na leughaidhean cuntair làithreach
A rèir an timer aig deireadh na h-uarach (no aig toiseach na h-ath uair), bidh sinn a’ tomhas an eadar-dhealachadh eadar an leughadh gnàthach agus an tè a tha air a stòradh aig toiseach na h-uarach. Is e an eadar-dhealachadh seo an caitheamh airson na h-uarach gnàthach - sàbhalaidh sinn an luach don sensor, agus san àm ri teachd togaidh sinn graf stèidhichte air an luach seo.
Feumaidh tu cuideachd “ath-shuidheachadh” an luach caochlaideach_at_beginning_of_hour le bhith a’ sgrìobhadh luach làithreach a’ chunntair an sin.

Faodar seo uile a dhèanamh troimhe gu math ... leis an neach-cuideachaidh dachaigh fhèin.

Feumaidh tu beagan a bharrachd còd a sgrìobhadh na bha san dòigh-obrach roimhe. Feuch an tòisich sinn leis na "caochladairean" sin. A-mach às a’ bhogsa, chan eil an eintiteas “caochlaideach” againn, ach faodaidh tu seirbheisean broker mqtt a chleachdadh. Cuiridh sinn luachan an sin leis a’ bhratach glèidhidh = fìor - sàbhalaidh seo an luach taobh a-staigh a’ bhròcair, agus faodar a tharraing a-mach aig àm sam bith, eadhon nuair a thèid an neach-cuideachaidh dachaigh ath-thòiseachadh. Rinn mi cunntairean san uair agus gach latha aig an aon àm.

- 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

Bidh a h-uile draoidheachd a 'tachairt ann an fèin-ghluasad, a bhios a' ruith gach uair a thìde agus a h-uile h-oidhche, fa leth.

- 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

Bidh an dà fèin-ghluasad a’ dèanamh 2 rud:

  • Obraich a-mach an luach gach eadar-ama mar an diofar eadar an luach tòiseachaidh agus an luach mu dheireadh
  • Ùraich an luach bunaiteach airson an ath eadar-ama

Tha togail ghrafaichean sa chùis seo air fhuasgladh leis a’ ghraf-eachdraidh àbhaisteach:

      - 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

Tha e coltach ri seo:

Dachaigh Glic: A’ clàradh caitheamh uisge is dealain ann an neach-cuideachaidh dachaigh

Ann am prionnsapal, is e seo a tha a dhìth ort mu thràth. Is e buannachd an dòigh seo gu bheil an dàta air a chruthachadh aon uair gach eadar-ama. An fheadhainn sin. iomlan de 24 inntrigidhean gach latha airson a’ chairt uair a thìde.

Gu mì-fhortanach, chan eil seo fhathast a 'fuasgladh na duilgheadas coitcheann de bhunait a tha a' fàs. Ma tha mi ag iarraidh graf caitheamh mìosail, bidh agam ri dàta a stòradh airson co-dhiù bliadhna. Agus leis nach eil an neach-cuideachaidh dachaigh a’ toirt seachad ach aon suidheachadh ùine stòraidh airson an stòr-dàta gu lèir, tha seo a’ ciallachadh gum feumar A H-UILE dàta san t-siostam a stòradh airson bliadhna air fad. Mar eisimpleir, ann am bliadhna bidh mi ag ithe 200 meatairean ciùbach de dh'uisge, a tha a 'ciallachadh 200000 inntrigeadh anns an stòr-dàta. Agus ma bheir thu aire do luchd-mothachaidh eile, bidh am figear mar as trice mì-mhodhail.

Dòigh-obrach 3

Gu fortanach, tha daoine snasail air an duilgheadas seo fhuasgladh mu thràth le bhith a’ sgrìobhadh stòr-dàta InfluxDB. Tha an stòr-dàta seo air a bharrrachadh gu sònraichte airson dàta stèidhichte air ùine a stòradh agus tha e air leth freagarrach airson luachan diofar luchd-mothachaidh a stòradh. Tha an siostam cuideachd a’ toirt seachad cànan ceist coltach ri SQL a leigeas leat luachan a thoirt a-mach às an stòr-dàta agus an uair sin an cruinneachadh ann an diofar dhòighean. Mu dheireadh, faodar dàta eadar-dhealaichte a stòradh airson diofar amannan. Mar eisimpleir, faodar leughaidhean a tha ag atharrachadh gu tric leithid teòthachd no taiseachd a stòradh airson dìreach seachdain no dhà, agus faodar leughaidhean làitheil de chaitheamh uisge a stòradh airson bliadhna slàn.

A bharrachd air InfluxDB, chruthaich daoine sgairteil Grafana cuideachd, siostam airson grafaichean a tharraing bho dhàta bho InfluxDB. Faodaidh Grafana diofar sheòrsaichean de chlàran a tharraing, an gnàthachadh gu mionaideach, agus, nas cudromaiche, faodar na clàran sin a “phlug” a-steach don neach-cuideachaidh dachaigh lovelace-UI.

bhi air a bhrosnachadh an seo и an seo. Tha na h-artaigilean a 'toirt cunntas mionaideach air a' phròiseas a bhith a 'stàladh agus a' ceangal InfluxDB agus Grafana ri neach-cuideachaidh dachaigh. Cuiridh mi fòcas air fuasgladh fhaighinn air mo dhuilgheadas sònraichte.

Mar sin, an toiseach, tòisichidh sinn a’ cur ris a’ chunntair luach ann an influxDB. Pìos de rèiteachadh neach-cuideachaidh dachaigh (san eisimpleir seo, bidh spòrs agam chan ann a-mhàin le fuachd, ach cuideachd le uisge teth):

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

Nach cuir sinn à comas sàbhaladh an aon dàta ann an stòr-dàta a-staigh an neach-cuideachaidh dachaigh, gus nach àrdaich sinn a-rithist e:

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

Rachamaid a-nis gu consol InfluxDB agus stèidhich an stòr-dàta againn. Gu sònraichte, feumaidh tu rèiteachadh dè cho fada ‘s a thèid dàta sònraichte a stòradh. Tha seo air a riaghladh leis an t-ainm ris an canar. poileasaidh gleidhidh - tha seo coltach ri stòran-dàta taobh a-staigh a’ phrìomh stòr-dàta, le a roghainnean fhèin aig gach stòr-dàta a-staigh. Gu gnàthach, thèid a h-uile dàta a chuir ris a’ phoileasaidh gleidhidh ris an canar autogen, thèid an dàta seo a stòradh airson seachdain. Bu mhath leam dàta san uair a bhith air a stòradh airson mìos, dàta seachdaineil airson bliadhna, agus dàta mìosail gun a bhith air a dhubhadh às idir. Cruthaichidh sinn poileasaidhean gleidhidh iomchaidh

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

A-nis, gu dearbh, is e am prìomh chleas cruinneachadh dàta a’ cleachdadh ceist leantainneach. Is e inneal a tha seo a chuireas ceist air bhog gu fèin-ghluasadach aig amannan sònraichte, a chruinnicheas an dàta airson na ceiste seo, agus a chuireas an toradh ri luach ùr. Bheir sinn sùil air eisimpleir (bidh mi a’ sgrìobhadh ann an colbh airson leughadh, ach ann an da-rìribh b’ fheudar dhomh an àithne seo a chuir a-steach air aon loidhne)

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

An òrdugh seo:

  • Cruthaich ceist leantainneach leis an t-ainm cq_water_cold_hourly san stòr-dàta neach-cuideachaidh dachaigh
  • Thèid a’ cheist a chur an gnìomh gach uair a thìde (ùine(1h))
  • Tarraingidh a’ cheist a-mach an dàta gu lèir bho thomhas’a homeassistant.autogen.l (liotair), a’ toirt a-steach leughaidhean de dh’ uisge fuar is teth
  • Bidh dàta cruinnichte air a chruinneachadh le eintiteas_id, a chruthaicheas luachan fa leth airson uisge fuar is teth.
  • Leis gur e sreath monotonically àrdachadh taobh a-staigh gach uair a th’ anns a’ chunntair liotairean, feumaidh tu an luach as motha a ghabhail, gus an tèid an cruinneachadh a dhèanamh leis a’ ghnìomh as àirde (luach).
  • Thèid an luach ùr a sgrìobhadh gu homeassistant.month.water_meter_hour far a bheil mìos mar ainm a’ phoileasaidh gleidhidh le ùine gleidhidh de mhìos. A bharrachd air an sin, thèid dàta mu uisge fuar is teth a sgapadh gu clàran fa leth leis an eintiteas_id co-fhreagarrach agus an luach anns an raon luach

Air an oidhche no nuair nach eil duine aig an taigh, chan eil caitheamh uisge ann, agus mar sin chan eil clàran ùra ann an homeassistant.autogen.l an dàrna cuid. Gus luachan a tha a dhìth a sheachnadh ann an ceistean àbhaisteach, faodaidh tu lìonadh (roimhe seo) a chleachdadh. Bheir seo air InfluxDB an luach uair a thìde a chaidh seachad a chleachdadh.

Gu mì-fhortanach, tha ceist shònraichte aig ceist leantainneach: chan obraich an cleas lìonaidh (roimhe seo) agus chan eil clàran air an cruthachadh. A bharrachd air an sin, is e seòrsa de dhuilgheadas do-sheachanta a tha seo, a tha air a bhith air a dheasbad airson còrr air bliadhna. Bidh sinn a 'dèiligeadh ris an duilgheadas seo nas fhaide air adhart, agus leigidh sinn a lìonadh (roimhe) ann an ceist leantainneach a bhith ann - chan eil e a' cur bacadh air.

Feuch an dèan sinn sgrùdadh air na thachair (gu dearbh, feumaidh tu feitheamh beagan uairean a thìde):

> 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

Thoir an aire gu bheil na luachan anns an stòr-dàta air an stòradh ann an UTC, agus mar sin tha an liosta seo eadar-dhealaichte le 3 uairean - tha na luachan 7m ann an toradh InfluxDB a 'maidseadh na luachan 10m anns na clàran gu h-àrd. Thoir fa-near cuideachd nach eil clàran ann eadar 2 agus 5 sa mhadainn - is e seo an fhìor fheart de cheist leantainneach.

Mar a chì thu, tha an luach iomlan cuideachd na shreath a tha a 'meudachadh gu monotonach, chan eil ach na h-inntrigidhean cho tric - uair san uair. Ach chan e duilgheadas a tha seo - is urrainn dhuinn ceist eile a sgrìobhadh a bheir a-mach an dàta ceart airson a’ chlàir.

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)

dearbhaidh mi:

  • Bhon stòr-dàta homeassistant.month.water_meter_hour, tarraingidh sinn dàta airson eintiteas_id='water_meter_cold' airson an latha mu dheireadh (ùine >= a-nis() -24h).
  • Mar a thuirt mi, is dòcha gu bheil cuid de dh’ inntrigidhean a dhìth bhon t-sreath homeassistant.month.water_meter_hour. Ath-nuadhaichidh sinn an dàta seo le bhith a’ ruith na ceiste le ùine GROUP BY (1h). An turas seo, obraichidh lìonadh (roimhe seo) gu ceart, a’ gineadh an dàta a tha a dhìth (gabhaidh an gnìomh an luach roimhe)
  • Is e an rud as cudromaiche anns a’ cheist seo an gnìomh eadar-dhealachaidh, a nì obrachadh a-mach an eadar-dhealachadh eadar na comharran uair. Leis fhèin, chan eil e ag obair agus tha feum air gnìomh cruinneachaidh. Biodh seo mar an ìre as àirde () a chaidh a chleachdadh roimhe.

Tha toradh cur gu bàs a’ coimhead mar seo

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

Bho 2m gu 5m (UTC) cha robh caitheamh ann. Ach a dh’ aindeoin sin, tillidh a’ cheist an aon luach caitheamh le taing do lìonadh (roimhe), agus bheir an gnìomh eadar-dhealachaidh an luach seo air falbh bhuaithe fhèin agus gheibh e 0 aig an toradh, a tha dha-rìribh a dhìth.

Is e an aon rud a tha air fhàgail graf a thogail. Gus seo a dhèanamh, fosgail Grafana, fosgail deas-bhòrd a tha ann mar-thà (no cruthaich clàr ùr), cruthaich pannal ùr. Bidh na roghainnean clàr mar a leanas.

Dachaigh Glic: A’ clàradh caitheamh uisge is dealain ann an neach-cuideachaidh dachaigh

Seallaidh mi dàta uisge fuar is teth air an aon ghraf. Tha an t-iarrtas dìreach mar a tha mi air a mhìneachadh gu h-àrd.

Tha paramadairean taisbeanaidh air an suidheachadh mar a leanas. Dhòmhsa bidh e na ghraf le loidhnichean (loidhnichean), a tha a’ dol ann an ceumannan (staidhre). Thèid paramadair Stack a mhìneachadh gu h-ìosal. Tha grunn roghainnean taisbeanaidh eile gu h-ìosal, ach chan eil iad cho inntinneach.

Dachaigh Glic: A’ clàradh caitheamh uisge is dealain ann an neach-cuideachaidh dachaigh

Gus an graf a thig às a chur ris an neach-cuideachaidh dachaigh, feumaidh tu:

  • fàg am modh deasachaidh cairt. Air adhbhar air choireigin, chan eil na roghainnean roinneadh chairtean ceart air an tabhann ach bhon duilleag deas-bhòrd
  • Cliog air an triantan ri taobh ainm a’ chlàir, tagh roinn bhon chlàr
  • Anns an uinneag a tha a’ fosgladh, rachaibh chun tab embed
  • Thoir sùil air an raon ùine gnàthach - suidhichidh sinn an raon ùine tro URL
  • Tagh an cuspair a tha a dhìth. Anns a 'chùis agam tha e aotrom
  • Dèan lethbhreac den URL mar thoradh air gu cairt roghainnean 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"

Thoir an aire gu bheil an raon ùine (2 latha mu dheireadh) air a shuidheachadh an seo, agus chan ann ann an roghainnean an deas-bhòrd.

Tha an clàr a’ coimhead mar seo. Chan eil mi air uisge teth a chleachdadh anns na làithean 2 mu dheireadh, agus mar sin chan eil ach graf de dh'uisge fuar air a tharraing.

Dachaigh Glic: A’ clàradh caitheamh uisge is dealain ann an neach-cuideachaidh dachaigh

Chan eil mi air co-dhùnadh dhomh fhìn dè an clàr as fheàrr leam, loidhne-cheum no bàraichean fìor. Mar sin, bheir mi dìreach eisimpleir de chlàr caitheamh làitheil, dìreach an turas seo ann am bàraichean. Tha ceistean air an togail san aon dòigh ris an deach a mhìneachadh gu h-àrd. Is iad na roghainnean taisbeanaidh:

Dachaigh Glic: A’ clàradh caitheamh uisge is dealain ann an neach-cuideachaidh dachaigh

Tha an clàr seo a’ coimhead mar seo:

Dachaigh Glic: A’ clàradh caitheamh uisge is dealain ann an neach-cuideachaidh dachaigh

Mar sin, mu dheidhinn paramadair Stack. Anns a’ ghraf seo, tha bàr uisge fuar air a tharraing air mullach bàr teth. Tha an àirde iomlan a rèir caitheamh iomlan uisge fuar is teth airson na h-ùine seo.

Tha na grafaichean uile a tha air an sealltainn fiùghantach. Faodaidh tu an luchag a ghluasad thairis air a’ phuing inntinneach agus faic am mion-fhiosrachadh agus an luach aig àm sònraichte.

Gu mì-fhortanach, cha b 'ann às aonais cuileag no dhà san ola. Air clàr barra (eu-coltach ris a 'ghraf le loidhnichean ceum), chan eil meadhan a' bhàr ann am meadhan an latha, ach aig 00:00. An fheadhainn sin. tha an leth chlì den bhàr air a tharraing an àite an latha roimhe. Mar sin tha na clàran airson Disathairne agus Didòmhnaich air an tarraing beagan air taobh clì na sòn bluish. Gus an do dh'obraich mi a-mach ciamar a bhuannaicheas mi e.

Is e duilgheadas eile a tha ann an neo-chomas obrachadh gu ceart le amannan mìosail. Is e an fhìrinn gu bheil fad na h-uair / latha / seachdain stèidhichte, ach tha fad na mìos eadar-dhealaichte gach turas. Chan urrainn dha InfluxDB obrachadh ach le amannan co-ionann. Gu ruige seo, tha m ’eanchainn air a bhith gu leòr airson eadar-ama stèidhichte de làithean 30 a shuidheachadh. Bidh, bidh a’ chairt a’ seòladh beagan tron ​​bhliadhna agus cha bhith na bàraichean dìreach a’ freagairt ris na mìosan. Ach leis gu bheil an rud seo inntinneach dhomh dìreach mar mheatair taisbeanaidh, tha mi ceart gu leòr le seo.

Chì mi co-dhiù dà fhuasgladh:

  • Gus sgòr a dhèanamh air clàran mìosail agus cuingealaich thu fhèin gu feadhainn seachdaineil. Tha 52 bàraichean seachdaineil ann am bliadhna a’ coimhead glè mhath
  • Beachdaich air a 'chaitheamh mìosail fhèin mar dhòigh Àireamh 2, agus cleachd na grafana a-mhàin airson grafaichean brèagha. Tha e na fhuasgladh gu math ceart. Faodaidh tu fiù 's clàran airson na bliadhna a dh' fhalbh a chòmhdach airson coimeas - faodaidh grafana sin a dhèanamh.

co-dhùnadh

Chan eil fios agam carson, ach is toil leam na seòrsaichean chairtean sin. Tha iad a’ sealltainn gu bheil beatha ann an làn ghluasad agus gu bheil a h-uile càil ag atharrachadh. An-dè bha tòrr ann, an-diugh chan eil mòran ann, a-màireach bidh rudeigin eile ann. Tha e fhathast ri bhith ag obair le teaghlaichean air cuspair caitheamh. Ach eadhon leis a’ bhiadh a th’ ann an-dràsta, tha dìreach figear mòr agus do-chreidsinneach sa bhile mu thràth a’ tionndadh gu bhith na dhealbh a tha gu math so-thuigsinn de chaitheamh.

A dh’ aindeoin mo chùrsa-beatha cha mhòr 20-bliadhna mar phrògramadair, cha mhòr nach do rinn mi eadar-theachd le stòran-dàta. Mar sin, bha coltas ann gun robh stàladh stòr-dàta taobh a-muigh rudeigin cho mì-chinnteach agus do-chreidsinneach. Tha a h-uile càil air atharrachadh an artaigil gu h-àrd - thionndaidh e a-mach gu bheil sgrìobadh inneal iomchaidh air a dhèanamh ann an cliog no dhà, agus le inneal sònraichte, bidh an obair dealbhaidh a ’fàs beagan nas fhasa.

Anns an tiotal, thug mi iomradh air caitheamh dealain. Gu mì-fhortanach, aig an àm seo chan urrainn dhomh graf sam bith a thoirt seachad. Tha aon mheatair SDM120 marbh, agus tha am fear eile na bhiast nuair a gheibhear thuige tro Modbus. Ach, chan eil seo a 'toirt buaidh air cuspair an artaigil seo ann an dòigh sam bith - thèid na grafaichean a thogail san aon dòigh ri uisge.

San artaigil seo, tha mi air na dòighean-obrach sin a dh’ fheuch mi fhìn a thoirt seachad. Gu cinnteach tha dòighean eile ann airson cruinneachadh agus lèirsinn dàta a chuir air dòigh air nach eil mi eòlach. Inns dhomh mu dheidhinn anns na beachdan, bidh ùidh mhòr agam. Bidh mi toilichte càineadh cuideachail agus beachdan ùra. Tha mi an dòchas gun cuidich an stuth gu h-àrd cuideigin cuideachd.

Source: www.habr.com

Cuir beachd ann