Smart Home: Charting Water and Electricity Oriri n'ime ihe enyemaka ụlọ

Smart Home: Charting Water and Electricity Oriri n'ime ihe enyemaka ụlọ
Oge ọ bụla m na-enweta ụgwọ ọkụ eletrik na mmiri, ọ na-eju m anya - ezinụlọ m ọ̀ na-eri nke ukwuu? Ọfọn, ee, ime ụlọ ịwụ ahụ nwere ala na-ekpo ọkụ na ọkụ ọkụ, ma ha anaghị ere ọkụ mgbe niile. O yikwara ka anyị na-echekwa mmiri (ọ bụ ezie na anyị na-amasịkwa ịgbasa gburugburu n'ime ụlọ ịsa ahụ). Ọtụtụ afọ gara aga m ugbua ejikọrọ mita mmiri и ọkụ eletrik gaa n'ụlọ mara mma, mana ebe ahụ ka ihe siri ike. Naanị ugbu a anyị enwetala gburugburu iji nyochaa oriri, nke bụ ihe isiokwu a bụ n'ezie.

Agbanwere m na onye enyemaka ụlọ n'oge na-adịbeghị anya dị ka sistemụ ụlọ smart m. Otu n'ime ihe kpatara ya bụ kpọmkwem ohere iji hazie nchịkọta data buru ibu na ikike iji wuo ụdị eserese dị iche iche nke ọma.

Ozi a kọwara n'isiokwu a abụghị nke ọhụrụ; Ma isiokwu nke ọ bụla na-akọwakarị nanị otu ụzọ ma ọ bụ akụkụ. Aga m atụnyere ụzọ ndị a niile wee họrọ nke kacha dabara adaba n'onwe m. Akụkọ ahụ ka enyeghị ozi zuru oke na nchịkọta data, mana ọ bụ ụdị nchịkọta nke otu m siri mee ya. Ya mere a na-anabata nkatọ bara uru na aro maka imeziwanye.

Ulationkpụzi nsogbu a

Yabụ, ebumnuche nke mmega ahụ nke oge a bụ inweta eserese mara mma nke mmiri na oriri eletrik:

  • Oge elekere maka ụbọchị 2
  • Kwa ụbọchị maka izu 2
  • (nhọrọ) kwa izu na kwa ọnwa

Enwere ụfọdụ ihe isi ike na nke a:

  • Akụkụ chaatị ọkọlọtọ na-adịkarị ogbenye. Kachasị mma, ị nwere ike wulite ebe eserese ahịrị site na isi.

    Ọ bụrụ na ị na-ele anya nke ọma, ị nwere ike ịchọta ngwa ndị ọzọ na-agbasawanye ike nke chaatị ọkọlọtọ. Maka onye na-enyere aka n'ụlọ, na ụkpụrụ, nke a bụ ihe dị mma ma mara mma Obere kaadị, mana ọ dịkwa ntakịrị:

    • Ọ na-esiri ike ịtọ parampat nke chaatị mmanya n'elu nnukwu oge (a na-edobe obosara nke mmanya ahụ na nkeji irighiri nke otu elekere, nke pụtara na etiti oge karịrị otu awa ga-edozi na ọnụọgụ ọnụọgụ)
    • Ị nweghị ike ịgbakwunye ihe dị iche iche na otu eserese (dịka ọmụmaatụ, okpomọkụ na iru mmiri, ma ọ bụ jikọta eserese mmanya na ahịrị)
  • Ọbụghị naanị na onye enyemaka ụlọ na ndabara na-eji nchekwa data SQLite kacha ochie (na m, onye ọrụ aka, enweghị ike ijikwa wụnye MySQL ma ọ bụ Postgres), mana anaghị echekwa data ahụ n'ụzọ kacha mma. Ya mere, dịka ọmụmaatụ, oge ọ bụla ị na-agbanwe ọbụna obere dijitalụ paramita nke paramita, nnukwu json dị ihe dị ka kilobyte n'ogo na-ede na nchekwa data.
    {"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}}}

    Enwere m ọtụtụ sensọ (ihe mmetụta okpomọkụ n'ime ụlọ ọ bụla, mita mmiri na eletrik), ụfọdụ na-emepụtakwa ọtụtụ data. Dịka ọmụmaatụ, naanị mita eletrik SDM220 na-emepụta ihe dị ka ụkpụrụ iri na abụọ kwa 10-15 sekọnd, ma ọ ga-amasị m ịwụnye ihe dị ka mita 8, a na-agbakọkwa ihe dị iche iche dabere na ihe mmetụta ndị ọzọ. Nke ahụ. ụkpụrụ ndị a niile nwere ike ibunye nchekwa data ngwa ngwa site na 100-200 MB kwa ụbọchị. N'ime otu izu, usoro ahụ ga-esiwanye ike ịkwaga, na otu ọnwa, draịvụ ike ga-anwụ (n'ihe banyere ntinye onye enyemaka ụlọ na Raspberry PI), na ịchekwa data maka otu afọ abụghị ajụjụ.

  • Ọ bụrụ na ị nwere chioma, mita gị nwere ike ịgụta oriri n'onwe ya. Ị nwere ike ịtụgharị na mita n'oge ọ bụla wee jụọ oge ole uru oriri na-achịkọta bụ. Dị ka a na-achị, mita eletrik niile nwere interface dijitalụ (RS232 / RS485 / Modbus / Zigbee) na-enye ohere a.

    Ọ ka njọ ma ọ bụrụ na ngwaọrụ ahụ nwere ike tụọ ụfọdụ paramita ozugbo (dịka ọmụmaatụ, ike ozugbo ma ọ bụ ugbu a), ma ọ bụ na-emepụta mkpụrụ osisi kwa awa X watt ma ọ bụ lita. Mgbe ahụ ịkwesịrị iche echiche banyere otu na ihe ị ga-ejikọta ya na ebe ị ga-esi nweta uru. Enwere ihe ize ndụ nke ịhapụ akụkọ na-esote maka ihe ọ bụla, na izi ezi nke usoro ahụ n'ozuzu ya na-ebute ajụjụ. Ị nwere ike, n'ezie, nyefee ihe a niile na usoro ụlọ dị mma dị ka onye inyeaka ụlọ, ma ọ dịghị onye kagburu isi okwu banyere ọnụ ọgụgụ nke ndekọ na nchekwa data, na ọ gaghị ekwe omume ịme ntuli aka sensọ ihe karịrị otu ugboro na nke abụọ (a mmachi nke ụlọ inyeaka architecture).

Ụzọ 1

Nke mbụ, ka anyị hụ ihe onye enyemaka ụlọ na-enye n'ime igbe ahụ. Ịtụ oriri n'ime otu oge bụ ọrụ a na-achọsi ike nke ukwuu. N'ezie, e mere ya ogologo oge gara aga n'ụdị akụrụngwa pụrụ iche - utility_meter.

Ihe kachasị mkpa nke akụrụngwa bụ na ọ na-emepụta ihe dị iche iche nke ugbu a_accumulated_value wee malitegharịa ya mgbe oge akọwapụtara (awa / izu / ọnwa). Akụkụ ahụ n'onwe ya na-enyocha mgbanwe ntinye (uru nke ụfọdụ ihe mmetụta), na-edebanye aha onwe ya na mgbanwe na uru - ị ga-enweta nsonaazụ agwụla. A kọwara ihe a naanị n'ahịrị ole na ole na faịlụ nhazi

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

Ebe sensor.water_meter_cold bụ uru mita dị ugbu a na lita m na-enweta kpọmkwem site na mpempe ígwè nke mqtt. Nhazi ahụ na-emepụta sensọ 2 water_cold_hour_um na water_cold_day_um, nke na-agbakọ ọnụ kwa elekere na kwa ụbọchị, na-atụgharị ha na efu mgbe oge agwụla. Nke a bụ eserese nke batrị elekere maka ọkara otu ụbọchị.

Smart Home: Charting Water and Electricity Oriri n'ime ihe enyemaka ụlọ

Koodu maka eserese kwa elekere na kwa ụbọchị maka lovelace-UI dị ka nke a:

      - 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

N'ezie, nsogbu na usoro a dị na algọridim a. Dịka m kwurula, maka uru ntinye ọ bụla (agụmagụ mita ugbu a maka lita ọ bụla ọzọ) 1kb nke ndekọ na-emepụta na nchekwa data. Igwe ihe eji eme ihe ọ bụla na-ewepụtakwa uru ọhụrụ, nke agbakwunyere na ntọala. Ọ bụrụ na m chọrọ ịnakọta awa / kwa ụbọchị / kwa izu / kwa ọnwa na-agụ, na maka ọtụtụ mmiri risers, na tinye otu mkpọ nke eletriki mita, nke ahụ ga-abụ ọtụtụ data. Ọfọn, karịa nke ọma, ọ dịghị ọtụtụ data, ma ebe ọ bụ na onye na-enyere aka n'ụlọ na-edepụta ụyọkọ ozi na-enweghị isi na nchekwa data, nha nke nchekwa data ga-eto eto site na mmali na oke. M na-atụ egwu ọbụna atụmatụ nha nke isi maka chaatị kwa izu na kwa ọnwa.

Na mgbakwunye, mita ọrụ n'onwe ya anaghị edozi nsogbu ahụ. Eserese nke ụkpụrụ nke mita ọrụ na-emepụta bụ ọrụ na-abawanye ụba nke na-emeghachi na 0 kwa elekere. Anyị chọrọ eserese oriri nke ga-aghọta onye ọrụ, na-egosi ole lita riri n'oge ahụ. Akụkụ akụkọ ihe mere eme-ọkọlọtọ-graph enweghị ike ime nke a, mana akụkụ mpụga kaadị mini-graph nwere ike inyere anyị aka.

Nke a bụ koodu kaadị maka 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'

Na mgbakwunye na ntọala ọkọlọtọ dị ka aha sensọ, ụdị eserese, agba (oroma ọkọlọtọ anaghị amasị m), ọ dị mkpa iburu n'uche ntọala 3:

  • group_by:hour — a ga-emepụta eserese ahụ na ogwe ndị dabara na mmalite nke elekere
  • Point_per_hour: 1 - otu mmanya maka awa ọ bụla
  • Na nke kachasị mkpa, aggregate_func: max - were uru kachasị n'ime elekere ọ bụla. Ọ bụ oke a na-atụgharị eserese sawtooth ka ọ bụrụ mmanya

Smart Home: Charting Water and Electricity Oriri n'ime ihe enyemaka ụlọ

Akwụsịla n'ahịrị nke ogidi n'aka ekpe - nke a bụ ụkpụrụ omume nke akụrụngwa ma ọ bụrụ na enweghị data. Mana enweghị data - naanị m gbanyere nnakọta data ọrụ mita awa ole na ole gara aga naanị maka isiokwu a (M ga-akọwa ụzọ m ugbu a n'okpuru).

Na foto a, achọrọ m igosi na mgbe ụfọdụ ihe ngosi data na-arụ ọrụ ọbụna na ogwe ndị ahụ na-egosipụta ụkpụrụ ziri ezi. Ma ọ bụghị naanị nke ahụ. N'ihi ihe ụfọdụ, kọlụm ahọrọ maka oge site na 11 ruo 12 am na-egosiputa 19 lita, ọ bụ ezie na na nha nha nha dị ntakịrị elu maka otu oge site na otu ihe mmetụta anyị na-ahụ oriri nke 62 lita. Ma enwere ahụhụ ma ọ bụ aka gbagọrọ agbagọ. Ma aghọtaghị m ihe kpatara na data dị n'aka nri kwụsịrị - oriri na-edozi ahụ bụ ihe nkịtị, nke a na-ahụkwa na eserese nha nha.

N'ozuzu, enweghị m ike iji nweta plausibility nke a obibia - na eserese fọrọ nke nta mgbe na-egosi ụfọdụ ụdị ịjụ okwukwe.

Koodu yiri ya maka ihe mmetụta ụbọchị.

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

Biko mara na a na-ahazi paramita group_by ka ọ bụrụ etiti oge, yana paramita point_per_hour na-achịkwa ihe niile. Na n'ime ya bụ nsogbu ọzọ na nke a akụrụngwa -point_per_hour na-arụ ọrụ nke ọma na chaatị nke otu awa ma ọ bụ ihe na-erughị, ma ọ na-aṅụ na ibu intervals. Ya mere, iji nweta otu kọlụm n'otu ụbọchị, aghaghị m ịbanye uru 1/24=0.04166666. Anaghị m ekwu maka chaatị kwa izu na nke ọnwa.

Ụzọ 2

Mgbe m ka na-aghọta onye enyemaka ụlọ, ahụrụ m vidiyo a:


Enyi na-anakọta data oriri n'ọtụtụ ụdị sọket Xiaomi. Ọrụ ya dị ntakịrị mfe - naanị gosipụta uru oriri maka taa, ụnyaahụ na maka ọnwa. Enweghị usoro nhazi achọrọ.

Ka anyị hapụ mkparịta ụka gbasara ntinye aka nke ụkpụrụ ike ozugbo - edeela m n'elu banyere "izizi" nke usoro a. O doghị anya ihe kpatara na ọ naghị eji ụkpụrụ oriri na-achịkọta, nke a na-anakọtalarị site na otu ntinye. N'uche nke m, ntinye n'ime ngwaike ga-arụ ọrụ nke ọma.

Site na vidiyo anyị ga-ewere echiche nke iji aka na-agụta oriri n'ime oge. Nwoke ahụ na-agụ naanị ụkpụrụ maka taa na ụnyaahụ, mana anyị ga-aga n'ihu ma gbalịa ise eserese. Isi nke usoro a tụrụ aro n'okwu m bụ nke a.

Ka anyị mepụta uru mgbanwe_at_the_beginning_of_hour, ebe anyị ga-edekọ agụ mita dị ugbu a.
Iji oge, na njedebe nke awa (ma ọ bụ na mmalite nke ọzọ) anyị na-agbakọ ọdịiche dị n'etiti ọgụgụ ugbu a na nke echekwara na mmalite nke awa. Ọdịiche a ga-abụ ihe oriri maka awa dị ugbu a - anyị ga-echekwa uru n'ime ihe mmetụta, na n'ọdịnihu anyị ga-ewu eserese dabere na uru a.
Ị ga-achọkwa “tọgharịa” value_at_beginning_of_hour variable site na ide uru counter dị ugbu a ebe ahụ.

Enwere ike ime ihe a niile site na onye enyemaka ụlọ n'onwe ya.

Ị ga-ede obere koodu karịa na ụzọ gara aga. Nke mbụ, ka anyị mepụta otu "mgbanwe" ndị a. N'ime igbe ahụ anyị enweghị ihe "mgbanwe", mana anyị nwere ike iji ọrụ nke mqtt broker. Anyị ga-eziga ụkpụrụ n'ebe ahụ na njigide = ezi ọkọlọtọ - nke a ga-echekwa uru n'ime onye na-ere ahịa, a pụkwara ịdọrọ ya n'ebe ahụ n'oge ọ bụla, ọbụlagodi mgbe a na-emegharị onye enyemaka ụlọ. Emere m ọnụ ahịa elekere kwa ụbọchị na otu ụbọchị.

- 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

Ime anwansi niile na-eme na akpaaka, nke na-agba awa ọ bụla na abalị ọ bụla n'otu n'otu.

- 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

Akpaaka abụọ a na-eme omume 2:

  • Gbakọọ uru maka nkeji oge dị ka ọdịiche dị n'etiti ụkpụrụ mmalite na njedebe
  • Melite uru ntọala maka oge ọzọ

A na-edozi ihe owuwu nke eserese na nke a site na eserese akụkọ ihe mere eme:

      - 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

Ọ dị ka nke a:

Smart Home: Charting Water and Electricity Oriri n'ime ihe enyemaka ụlọ

Na ụkpụrụ, nke a bụrịrị ihe achọrọ. Uru nke usoro a bụ na a na-emepụta data ahụ otu ugboro n'otu oge. Ndị ahụ. naanị ndekọ 24 kwa ụbọchị maka eserese otu elekere.

N'ụzọ dị mwute, nke a ka anaghị edozi nsogbu izugbe nke ntọala na-eto eto. Ọ bụrụ na achọrọ m eserese oriri kwa ọnwa, m ga-echekwa data maka opekata mpe otu afọ. Ma ebe ọ bụ na onye enyemaka ụlọ na-enye naanị otu nhazi oge nchekwa maka nchekwa data niile, nke a pụtara na a ga-echekwa data niile dị na sistemụ ahụ otu afọ. Dịka ọmụmaatụ, n'ime otu afọ, m na-eri 200 cubic mita mmiri, nke pụtara na nke a pụtara ntinye 200000 na nchekwa data. Ma ọ bụrụ na ị na-echebara ihe mmetụta ndị ọzọ, mgbe ahụ ọnụ ọgụgụ na-aghọ n'ozuzu na-adịghị mma.

Ụzọ 3

N'ụzọ dị mma, ndị nwere ọgụgụ isi edoziworị nsogbu a site na ide data data InfluxDB. A na-ahazi nchekwa data a maka ịchekwa data dabere na oge ma dịkwa mma maka ịchekwa ụkpụrụ nke sensọ dị iche iche. Usoro ahụ na-enyekwa asụsụ ajụjụ SQL dị ka nke na-enye gị ohere wepụ ụkpụrụ na nchekwa data wee chịkọta ha n'ụzọ dị iche iche. N'ikpeazụ, enwere ike ịchekwa data dị iche iche maka oge dị iche iche. Dịka ọmụmaatụ, enwere ike ịchekwa agụ na-agbanwe agbanwe dị ka okpomọkụ ma ọ bụ iru mmiri naanị izu ole na ole, ebe enwere ike ịchekwa agụ oriri mmiri kwa ụbọchị maka otu afọ.

E wezụga InfluxDB, ndị nwere ọgụgụ isi chepụtakwara Grafana, usoro maka ịse eserese dabere na data sitere na InfluxDB. Grafana nwere ike ise ụdị eserese dị iche iche, hazie ya n'ụzọ zuru ezu, yana, nke kachasị mkpa, enwere ike “tinye eserese ndị a” na onye enyemaka ụlọ lovelace-UI.

Nweta mmụọ nsọ ebe a и ebe a. Akụkọ ndị a na-akọwa n'ụzọ zuru ezu usoro nke ịwụnye na jikọọ InfluxDB na Grafana na onye enyemaka ụlọ. M ga-elekwasị anya na idozi nsogbu m kpọmkwem.

Yabụ, nke mbụ, ka anyị bido ịgbakwunye uru counter na influxDB. Otu akụkụ nke nhazi onye enyemaka ụlọ (na ihe atụ a, m ga-enwe obi ụtọ ọ bụghị naanị oyi, kamakwa mmiri ọkụ):

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

Ka anyị gbanyụọ ichekwa otu data a na nchekwa data enyemaka ime ụlọ ka ọ ghara ịkacha ya ọzọ:

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

Ka anyị gaa ugbu a na console InfluxDB wee hazie nchekwa data anyị. Karịsịa, ịkwesịrị ịhazi ogologo oge a ga-echekwa ụfọdụ data. Nke a na-achịkwa nke a na-akpọ. amụma njide - nke a yiri ọdụ data dị n'ime ebe nchekwa data bụ isi, ebe nchekwa data dị n'ime nke ọ bụla nwere ntọala nke ya. Site na ndabara, a na-echekwa data niile na amụma njide a na-akpọ autogen; Ọ ga-amasị m ka edobe data kwa elekere otu ọnwa, ka echekwa data kwa izu otu afọ, na data kwa ọnwa agaghị ehichapụ. Ka anyị mepụta amụma njide kwesịrị ekwesị

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

Ugbu a, n'ezie, isi aghụghọ bụ nchịkọta data site na iji ajụjụ na-aga n'ihu. Nke a bụ usoro na-eme ajụjụ na-akpaghị aka n'oge a kapịrị ọnụ, na-achịkọta data maka ajụjụ a, ma tinye nsonaazụ ya na uru ọhụrụ. Ka anyị leba anya n'otu ihe atụ (M na-ede na kọlụm maka ịgụ akwụkwọ, mana n'eziokwu, etinyere m iwu a n'otu ahịrị)

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

Iwu a:

  • Na-emepụta ajụjụ na-aga n'ihu aha ya bụ cq_water_cold_hourly na nchekwa data ebe obibi
  • A ga-emerịrị arịrịọ ahụ kwa elekere (oge (1h))
  • Arịrịọ a ga-ehichapụ data niile site na nha' homeassistant.autogen.l (liter), gụnyere agụ mmiri oyi na mmiri ọkụ.
  • A ga-achịkọta data achịkọtara site na entity_id, nke ga-enye anyị ụkpụrụ dị iche iche maka oyi na mmiri ọkụ.
  • Ebe ọ bụ na counter liter bụ usoro na-abawanye n'otu n'otu n'ime elekere ọ bụla, ọ ga-adị mkpa ka ị were uru kachasị, ya mere nchịkọta ga-arụ ọrụ max (uru)
  • A ga-ede uru ọhụrụ ahụ na homeassistant.month.water_meter_hour, ebe ọnwa bụ aha iwu njide nwere oge njide nke otu ọnwa. Ọzọkwa, data na oyi na mmiri ọkụ ga-agbasasị n'ime iche iche ndekọ na ihe kwekọrọ ekwekọ_id na uru na ubi uru

N'abalị ma ọ bụ mgbe onye ọ bụla nọ n'ụlọ, enweghị mmiri oriri, ya mere, ọ dịghị ntinye ọhụrụ na homeassistant.autogen.l. Ka ịzenarị ụkpụrụ efu na ajụjụ mgbe niile, ị nwere ike iji nju (nke gara aga). Nke a ga-amanye InfluxDB iji uru nke elekere ikpeazụ.

N'ụzọ dị mwute, ajụjụ na-aga n'ihu nwere ọdịdị dị iche iche: aghụghọ jupụtara (nke gara aga) anaghị arụ ọrụ ma emepụtaghị ndekọ. Ọzọkwa, nke a bụ ụfọdụ ụdị nsogbu a na-apụghị imeri emeri a tụlerela ya kemgbe ọtụtụ afọ ugbu a. Anyị ga-edozi nsogbu a ma emechaa, mana ka njupụta (nke gara aga) nọrọ na ajụjụ na-aga n'ihu - ọ naghị egbochi ya.

Ka anyị lelee ihe mere (n'ezie, ị ga-echere awa ole na ole):

> 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

Rịba ama na a na-echekwa ụkpụrụ dị na nchekwa data na UTC, yabụ ndepụta a dị iche na awa 3 - ụkpụrụ 7am na mmepụta InfluxDB kwekọrọ na ụkpụrụ 10am na eserese dị n'elu. Marakwa na n'etiti elekere 2 na 5 nke ụtụtụ, enweghị ndekọ ọ bụla - nke a bụ otu akụkụ nke ajụjụ na-aga n'ihu.

Dị ka ị na-ahụ, ọnụ ahịa achịkọtara bụkwa usoro na-arịwanye elu nke monotonically, naanị ntinye na-eme obere oge - otu ugboro kwa elekere. Mana nke a abụghị nsogbu - anyị nwere ike dee ajụjụ ọzọ nke ga-eweghachite data ziri ezi maka eserese ahụ.

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)

M ga-akọwapụta:

  • Site na ebe nchekwa data homeassistant.month.water_meter_hour anyị ga-ewepụta data maka entity_id='water_meter_cold' maka ụbọchị ikpeazụ (oge> = ugbu a () -24h).
  • Dịka m kwuburu, ụfọdụ ndenye nwere ike na-efu na usoro homeassistant.month.water_meter_hour. Anyị ga-emegharị data a site n'iji GROUP BY oge (1h) mee ajụjụ. Ndochi oge a (nke gara aga) ga-arụ ọrụ dị ka a tụrụ anya ya, na-emepụta data efu (ọrụ ahụ ga-ewere uru gara aga)
  • Ihe kachasị mkpa na arịrịọ a bụ ọrụ dị iche, nke ga-agbakọọ ọdịiche dị n'etiti akara elekere. Ọ naghị arụ ọrụ n'onwe ya ma chọọ ọrụ nchịkọta. Ka nke a bụrụ max() ejiri na mbụ.

Nsonaazụ ogbugbu dị ka nke a

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

Site na 2 ruo 5 am (UTC) enweghị oriri. Ka o sina dị, ajụjụ ahụ ga-eweghachi otu uru oriri ahụ ekele maka imeju (nke gara aga), ọrụ dị iche iche ga-ewepụ uru a n'onwe ya na mmepụta ga-abụ 0, nke bụ kpọmkwem ihe achọrọ.

Naanị ihe fọdụrụ bụ ịrụ eserese. Iji mee nke a, mepee Grafana, mepee ụfọdụ dashboard dị (ma ọ bụ mepụta nke ọhụrụ), wee mepụta panel ọhụrụ. Ntọala eserese ga-adị ka nke a.

Smart Home: Charting Water and Electricity Oriri n'ime ihe enyemaka ụlọ

M ga-egosipụta data oyi na mmiri ọkụ n'otu eserese ahụ. Arịrịọ a bụ otu ihe m kọwara n'elu.

A na-ahazi parampat ngosi dị ka ndị a. Maka m ọ ga-abụ eserese nwere ahịrị, nke na-aga na steepụ (steepụ). Aga m akọwa oke ngwungwu n'okpuru. Enwere nhọrọ ngosi di na nwunye ọzọ n'okpuru, mana ha adịghị adọrọ mmasị.

Smart Home: Charting Water and Electricity Oriri n'ime ihe enyemaka ụlọ

Ka ịgbakwunye chaatị a ga-apụta na onye enyemaka ụlọ ị ga-achọ:

  • pụọ na chaatị edezi mode. Maka ihe ụfọdụ, a na-enye ntọala nkekọrịta eserese ziri ezi naanị site na ibe dashboard
  • Pịa na triangle dị n'akụkụ aha eserese wee họrọ òkè na menu
  • Na mpio mepere emepe, gaa na taabụ embed
  • Wepu akara oge dị ugbu a - anyị ga-ewepụta oge site na URL
  • Họrọ isiokwu achọrọ. N'ọnọdụ m ọ bụ ìhè
  • Detuo URL nsonaazụ ya na kaadị ntọala 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"

Biko mara na edobere oke oge (ụbọchị abụọ gara aga) ebe a, ọ bụghị na ntọala dashboard.

Eserese ahụ dị ka nke a. Ejibeghị m mmiri ọkụ n'ime ụbọchị 2 gara aga, yabụ naanị eserese mmiri oyi na-ese.

Smart Home: Charting Water and Electricity Oriri n'ime ihe enyemaka ụlọ

M ka na-ekpebiri onwe m nke eserese na-amasị m nke ọma, akara-nzọụkwụ, ma ọ bụ ezigbo ụlọ mmanya. Ya mere, m ga-enye ihe atụ nke eserese oriri kwa ụbọchị, naanị oge a na ụlọ mmanya. A na-arụ ajụjụ dịka nke akọwara n'elu. Nhọrọ ngosi bụ:

Smart Home: Charting Water and Electricity Oriri n'ime ihe enyemaka ụlọ

Eserese a dị ka nke a:

Smart Home: Charting Water and Electricity Oriri n'ime ihe enyemaka ụlọ

Ya mere, gbasara oke Stack. Na eserese a, a na-ese otu kọlụm mmiri oyi n'elu kọlụm nke mmiri ọkụ. Ngụkọta elu kwekọrọ na ngụkọta oriri nke oyi na mmiri ọkụ maka oge ahụ.

Eserese niile egosiri dị ike. Ị nwere ike ịkwanye òké gị n'elu ebe mmasị ma hụ nkọwa na uru n'otu ebe.

N'ụzọ dị mwute, e nwere di na nwunye nke ijiji na ude. Na chaatị mmanya (n'adịghị ka eserese nwere ahịrị nzọụkwụ), etiti mmanya ahụ adịghị n'etiti ụbọchị, mana na 00:00. Ndị ahụ. A na-adọta ọkara aka ekpe nke kọlụm n'ọnọdụ ụbọchị gara aga. Ya mere, eserese nke Satọde na Sọnde na-adọta ntakịrị n'aka ekpe nke mpaghara bluish. Ruo mgbe m chepụtara ka m ga-esi merie ya.

Nsogbu ọzọ bụ enweghị ike ịrụ ọrụ nke ọma na etiti oge kwa ọnwa. Nke bụ eziokwu bụ na a na-edozi ogologo oge awa / ụbọchị / izu, mana ogologo ọnwa dị iche iche oge ọ bụla. InfluxDB nwere ike ịrụ ọrụ naanị n'otu oge. Ka ọ dị ugbu a, ụbụrụ m ezuola ịtọ oge a kapịrị ọnụ nke ụbọchị iri atọ. Ee, eserese ahụ ga-ese n'elu ntakịrị n'ime afọ niile na ogwe ndị ahụ agaghị adabara ọnwa ndị ahụ. Mana ebe ọ bụ na m nwere mmasị na ihe a naanị dị ka mita ngosi, ọ dị m mma.

M na-ahụ ma ọ dịkarịa ala abụọ ngwọta:

  • Hapụ na chaatị nke ọnwa ma kpachie onwe gị na nke izu. Ogwe 52 kwa izu maka afọ ahụ mara mma nke ukwuu
  • Tụlee oriri kwa ọnwa n'onwe ya dị ka usoro nke 2, ma jiri grafana naanị maka eserese mara mma. Ọ ga-abụ ihe ngwọta ziri ezi. Ị nwere ike machie eserese maka afọ gara aga maka ntụnyere - grafana nwekwara ike ime nke ahụ.

nkwubi

Amaghị m ihe kpatara ya, mana ụdị eserese ndị a na-amasị m. Ha na-egosi na ndụ na-aga n'ihu na ihe niile na-agbanwe. Ụnyaahụ nwere ọtụtụ ihe, taa enwere ntakịrị, echi ọ ga-abụ ihe ọzọ. Naanị ihe fọdụrụ bụ ka gị na ndị ezinụlọ na-arụkọ ọrụ na isiokwu nke oriri. Ma ọbụlagodi na agụụ dị ugbu a, naanị ọnụ ọgụgụ buru ibu na nke na-enweghị nghọta na mpempe akwụkwọ ịkwụ ụgwọ amalitelarị ka ọ bụrụ foto nke oriri a na-aghọta nke ọma.

N'agbanyeghị ọrụ m fọrọ nke nta ka ọ bụrụ afọ 20 dị ka onye mmemme, ọ fọrọ nke nta ka ọ bụrụ na enweghị m kọntaktị na ọdụ data. Ya mere, ịwụnye nchekwa data dị n'èzí dị ka ihe na-adịghị mma na nke a na-apụghị ịghọta aghọta. Gbanwee ihe niile isiokwu dị n'elu - ọ tụgharịrị na ijikọta ngwá ọrụ kwesịrị ekwesị na-eme na ọnụọgụ abụọ nke clicks, na ngwá ọrụ pụrụ iche, ọrụ nke ịmepụta eserese na-aghọ ntakịrị mfe.

Na aha m kwuru ọkụ eletrik. Ọ dị nwute, ugbu a enweghị m ike ịnye eserese ọ bụla. Otu mita SDM120 nwụrụ maka m, nke ọzọ na-egbuke egbuke mgbe a na-enweta ya site na Modbus. Otú ọ dị, nke a adịghị emetụta isiokwu nke isiokwu a n'ụzọ ọ bụla - a ga-ewu eserese ndị ahụ n'otu ụzọ ahụ maka mmiri.

N'isiokwu a, m gosipụtara ụzọ ndị m nwara onwe m. N'ezie enwere ụzọ ndị ọzọ iji hazie mkpokọta data na anya nke m na-amaghị. Gwa m banyere ya na nkwupụta, m ga-enwe mmasị dị ukwuu. M ga-enwe obi ụtọ na nkatọ na-ewuli elu na echiche ọhụrụ. Enwere m olileanya na ihe e gosipụtara ga-enyere mmadụ aka.

isi: www.habr.com

Tinye a comment