ዘመናዊ ቤት፡ የውሃ እና የኤሌክትሪክ ፍጆታ በቤት ረዳት ውስጥ ቻርቲንግ

ዘመናዊ ቤት፡ የውሃ እና የኤሌክትሪክ ፍጆታ በቤት ረዳት ውስጥ ቻርቲንግ
የመብራት እና የውሃ ክፍያ በተቀበልኩ ቁጥር አስባለሁ - ቤተሰቦቼ በጣም ብዙ ይበላሉ? ደህና, አዎ, በመታጠቢያ ቤት ውስጥ ሞቃታማ ወለል እና ቦይለር አለ, ነገር ግን ሁልጊዜ እንደ የእሳት አደጋ መከላከያ ሰራተኞች አይሰሩም. እኛ ደግሞ ውሃን የምንቆጥብ ይመስለናል (ምንም እንኳን በመታጠቢያ ቤት ውስጥ መበተን እንወዳለን)። ከጥቂት አመታት በፊት እኔ ቀድሞውኑ የተገናኙ የውሃ ቆጣሪዎች и ኤሌክትሪክ ወደ ብልጥ ቤት፣ ነገር ግን ነገሮች የተጣበቁበት እዚህ ነው። እጆች አሁን የፍጆታ ትንተና ላይ ደርሰዋል, በእውነቱ, ይህ ጽሑፍ ስለ እሱ ነው.

በቅርብ ጊዜ ወደ ቤት ረዳት እንደ ብልጥ ቤት ስርዓቴ ቀይሬያለሁ። ከምክንያቶቹ ውስጥ አንዱ የተለያዩ አይነት ግራፎችን ምቹ የመገንባቱ እድል ያለው ከፍተኛ መጠን ያለው መረጃ መሰብሰብን የማደራጀት ችሎታ ብቻ ነበር።

በዚህ ጽሑፍ ውስጥ የተገለጸው መረጃ አዲስ አይደለም, እነዚህ ሁሉ በተለያዩ ድስቶች ስር ያሉ ነገሮች ቀደም ሲል በኢንተርኔት ላይ ተገልጸዋል. ነገር ግን እያንዳንዱ ጽሑፍ, እንደ አንድ ደንብ, አንድ አቀራረብ ወይም ገጽታ ብቻ ይገልፃል. እነዚህን ሁሉ አቀራረቦች ማወዳደር እና በጣም ተስማሚ የሆነውን እራሴን መምረጥ ነበረብኝ. ጽሑፉ አሁንም በመረጃ አሰባሰብ ላይ የተሟላ መረጃ አይሰጥም፣ ነገር ግን እኔ እንዴት እንዳደረግኩት የማጠቃለያ ዓይነት ነው። ስለዚህ ገንቢ ትችቶች እና የማሻሻያ ምክሮች በደስታ ይቀበላሉ።

የችግሩ ቀመር

ስለዚህ የዛሬው የአካል ብቃት እንቅስቃሴ ግብ ውብ የውሃ እና የኤሌክትሪክ ፍጆታ ግራፎችን ማግኘት ነው።

  • በሰዓት ለ 2 ቀናት
  • በየቀኑ ለ 2 ሳምንታት
  • (አማራጭ) በየሳምንቱ እና በየወሩ

በዚህ ውስጥ አንዳንድ ችግሮች አሉ-

  • የመደበኛ ገበታ ክፍሎች በጣም ደካማ ናቸው. በጥሩ ሁኔታ የመስመር ግራፍ በነጥብ መገንባት ይችላሉ።

    በደንብ ከፈለግክ የመደበኛ ገበታውን አቅም የሚያራዝሙ የሶስተኛ ወገን ክፍሎችን ማግኘት ትችላለህ። ለቤት ረዳት, በመርህ ደረጃ, ጥሩ እና የሚያምር አካል አነስተኛ ግራፍ ካርድግን በተወሰነ መልኩ የተገደበ ነው፡-

    • የአሞሌ ገበታውን መመዘኛዎች በትልልቅ ክፍተቶች ማዘጋጀት አስቸጋሪ ነው (የአሞሌው ስፋት በአንድ ሰዓት ክፍልፋዮች ተዘጋጅቷል ይህም ማለት ከአንድ ሰዓት በላይ የሚረዝሙ ክፍተቶች በክፍልፋይ ቁጥሮች ይቀመጣሉ)
    • የተለያዩ አካላትን ወደ አንድ ግራፍ ማከል አይችሉም (ለምሳሌ የሙቀት መጠን እና እርጥበት ወይም የአሞሌ ግራፍ ከአንድ መሾመር ጋር ማጣመር)
  • የቤት ረዳቱ በነባሪነት እጅግ ጥንታዊውን የSQLite ዳታቤዝ ብቻ አይደለም የሚጠቀመው (እና እኔ የእጅ ባለሙያው የ MySQL ወይም Postgresን ጭነት በደንብ አላወቅሁም) ውሂቡ በጣም ጥሩ በሆነ መንገድ አይከማችም። ስለዚህ፣ ለምሳሌ፣ በእያንዳንዱ ለውጥ የመለኪያ ትንሹ ዲጂታል መለኪያ፣ አንድ ኪሎባይት የሚያህል ግዙፍ json ወደ ዳታቤዝ ይፃፋል።
    {"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}}}

    በጣም ጥቂት ሴንሰሮች አሉኝ (የሙቀት ዳሳሾች በእያንዳንዱ ክፍል፣ ውሃ እና ኤሌክትሪክ ቆጣሪዎች) እና አንዳንዶቹ ደግሞ በጣም ብዙ ውሂብ ያመነጫሉ። ለምሳሌ ፣ የኤስዲኤም220 ኤሌክትሪክ ቆጣሪ ብቻ በየ10-15 ሰከንድ ደርዘን ያህል እሴቶችን ያመነጫል ፣ እና 8 እንደዚህ ያሉ ሜትሮችን መጫን እፈልጋለሁ ። እና በሌሎች ዳሳሾች ላይ የተመሰረቱ አጠቃላይ ልኬቶችም አሉ። ያ። እነዚህ ሁሉ ዋጋዎች በየቀኑ በ 100-200 ሜባ የውሂብ ጎታውን በቀላሉ መጨመር ይችላሉ. በአንድ ሳምንት ውስጥ ስርዓቱ እምብዛም አይወዛወዝም እና ይለወጣል, እና በአንድ ወር ውስጥ ፍላሽ አንፃፊው ይሞታል (በተለምዶ የቤት ውስጥ ረዳት በ Raspberry PI ላይ ሲጫን) እና ለአንድ አመት ሙሉ መረጃ ስለማከማቸት ምንም ንግግር ሊኖር አይችልም. .

  • እድለኛ ከሆንክ ቆጣሪው ልሹ ፍጆታን ሊቆጥር ይችላል። ቆጣሪውን በማንኛውም ጊዜ ማነጋገር እና የተጠራቀመ የፍጆታ ዋጋ ስንት ሰዓት እንደሆነ መጠየቅ ይችላሉ። እንደ ደንቡ, ዲጂታል በይነገጽ (RS232 / RS485 / Modbus / Zigbee) ያላቸው ሁሉም የኤሌክትሪክ ሜትሮች እንደዚህ አይነት እድል ይሰጣሉ.

    ይባስ፣ መሳሪያው በቀላሉ አንዳንድ ቅጽበታዊ መለኪያዎችን (ለምሳሌ ቅጽበታዊ ሃይል ወይም ጅረት) መለካት ወይም በቀላሉ በየX ዋት-ሰዓቱ ወይም ሊትር (pulses) ማመንጨት ከቻለ። ከዚያ እንዴት እና በምን እንደሚዋሃድ እና ዋጋ የት እንደሚከማች ማሰብ አለብዎት። በማንኛውም ምክንያት የሚቀጥለውን ሪፖርት የማጣት አደጋ አለ, እና የስርዓቱ ትክክለኛነት በአጠቃላይ ጥያቄዎችን ያስነሳል. በእርግጥ ይህንን ሁሉ እንደ ቤት ረዳት ላለው ዘመናዊ የቤት ስርዓት አደራ መስጠት ይችላሉ ፣ ግን ማንም ሰው በመረጃ ቋቱ ውስጥ ስላለው የመግቢያ ብዛት ነጥቡን የሰረዘው የለም ፣ እና የድምጽ መስጫ ዳሳሾች በሰከንድ ከአንድ ጊዜ በላይ አይሰሩም (የ የቤት ረዳት ሥነ ሕንፃ).

አቀራረብ 1

በመጀመሪያ፣ ምን የቤት ረዳት ከሳጥኑ ውስጥ እንደሚሰጥ እንይ። በአንድ ጊዜ ውስጥ ፍጆታን መለካት በጣም የሚፈለግ ተግባር ነው። እርግጥ ነው, ከረጅም ጊዜ በፊት እንደ ልዩ አካል - utility_meter ተተግብሯል.

የንጥረቱ ይዘት የአሁኑን_የተጠራቀመ_ዋጋ ተለዋዋጭ ከውስጥ ይጀምር እና ከተወሰነ ጊዜ (ሰአት/ሳምንት/ወር) በኋላ ዳግም ማስጀመር ነው። ክፍሉ ራሱ መጪውን ተለዋዋጭ (የአንዳንድ ዓይነት ዳሳሽ ዋጋ) ይቆጣጠራል ፣ በእሴቱ ውስጥ ለውጦችን ይመዘግባል - የተጠናቀቀውን ውጤት ብቻ ያገኛሉ። ይህ ነገር በማዋቀሪያው ፋይል ውስጥ በጥቂት መስመሮች ውስጥ ተገልጿል

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

እዚህ ሴንሰር.የውሃ_ሜትር_ቀዝቃዛው እኔ የማገኘው በሊትር ውስጥ ያለው የሜትር ዋጋ ነው። በቀጥታ ከብረት በ mqtt ዲዛይኑ 2 አዳዲስ ሴንሰሮች የውሃ_ቀዝቃዛ_hour_um እና የውሃ_ቀዝቃዛ_day_um ይፈጥራል፣ በሰዓት እና በየቀኑ ንባቦችን ይሰበስባሉ፣ ከተወሰነ ጊዜ በኋላ ወደ ዜሮ ያዘጋጃቸዋል። ለግማሽ ቀን የሰዓት ባትሪው ግራፍ እዚህ አለ።

ዘመናዊ ቤት፡ የውሃ እና የኤሌክትሪክ ፍጆታ በቤት ረዳት ውስጥ ቻርቲንግ

የሰዓት እና ዕለታዊ ገበታ ኮድ የ lovelace-UI ይህን ይመስላል።

      - 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

በእውነቱ, በዚህ ስልተ-ቀመር ውስጥ የዚህ አሰራር ችግር አለ. አስቀድሜ እንደገለጽኩት ለእያንዳንዱ ገቢ እሴት (ለእያንዳንዱ ቀጣይ ሊትር የአሁኑ የሜትር ንባብ) በመረጃ ቋቱ ውስጥ 1 ኪባ መዝገብ ይፈጠራል። እያንዳንዱ የመገልገያ ሜትር አዲስ እሴት ያመነጫል, እሱም ደግሞ በመሠረቱ ላይ ተጨምሯል. በየሰዓቱ / በየቀኑ / ሳምንታዊ / ወርሃዊ ንባቦችን መሰብሰብ ከፈለግኩ, አዎ, ለብዙ የውሃ መወጣጫዎች, እና የኤሌክትሪክ ሜትሮች እሽግ እንኳን መጨመር, ይህ በጣም ብዙ ውሂብ ይሆናል. ደህና ፣ በትክክል ፣ ብዙ ውሂብ የለም ፣ ግን የቤት ረዳቱ ብዙ አላስፈላጊ መረጃዎችን ወደ ዳታቤዝ ስለሚጽፍ ፣ የውሂብ ጎታው መጠን በዘለለ እና ወሰን ያድጋል። ለሳምንታዊ እና ወርሃዊ ገበታዎች የመሠረቱን መጠን ለመገመት እንኳን እፈራለሁ።

በተጨማሪም የመገልገያ ቆጣሪው ራሱ ችግሩን አይፈታውም. የዩቲሊቲ ሜትር ሴራ በየሰዓቱ ወደ 0 የሚጀምር ነጠላ እየጨመረ የሚሄድ ተግባር ነው። እንዲሁም ለተጠቃሚ ምቹ የሆነ የፍጆታ መርሃ ግብር ያስፈልገናል, በጊዜው ምን ያህል ሊትር ተበላ. መደበኛው የታሪክ-ግራፍ አካል ይህን አያደርግም, ነገር ግን ውጫዊው ሚኒ-ግራፍ-ካርድ ክፍል ሊረዳን ይችላል.

ይህ የ 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'

እንደ ዳሳሽ ስም፣ የግራፍ አይነት፣ ቀለም (መደበኛውን ብርቱካናማ አልወደድኩትም) ከመደበኛ ቅንብሮች በተጨማሪ እዚህ 3 ቅንብሮችን ማስተዋሉ ጠቃሚ ነው።

  • ቡድን_በ፡ሰዓት - ገበታው ከሰዓቱ መጀመሪያ ጋር በተሰለፉ አምዶች ይፈጠራል።
  • ነጥቦች_በሰዓት: 1 - በሰዓት አንድ አሞሌ
  • እና ከሁሉም በላይ፣ aggregate_func፡ ከፍተኛው በእያንዳንዱ ሰአት ውስጥ ከፍተኛውን ዋጋ መውሰድ ነው። የ sawtooth ገበታውን ወደ አሞሌዎች የሚቀይረው ይህ ግቤት ነው።

ዘመናዊ ቤት፡ የውሃ እና የኤሌክትሪክ ፍጆታ በቤት ረዳት ውስጥ ቻርቲንግ

በግራ በኩል ባለው የአምዶች ረድፍ ላይ ትኩረት አትስጥ - ይህ ምንም መረጃ ከሌለ የክፍሉ መደበኛ ባህሪ ነው. ነገር ግን ምንም አይነት መረጃ አልነበረም - ለዚህ ፅሁፍ ስል ከጥቂት ሰአታት በፊት የመረጃ አሰባሰብን የከፈትኩት የዩቲሊቲ ሜትርን በመጠቀም ነው (የአሁኑን አካሄድ በጥቂቱ እገልጻለሁ)።

በዚህ ሥዕል ላይ አንዳንድ ጊዜ የውሂብ ማሳያው እንኳን እንደሚሰራ ለማሳየት ፈልጌ ነበር, እና አሞሌዎቹ በትክክል ትክክለኛ እሴቶችን ያንፀባርቃሉ. ግን ያ ብቻ አይደለም። በሆነ ምክንያት ከጠዋቱ 11 ሰዓት እስከ 12 ሰዓት ባለው ጊዜ ውስጥ የደመቀው አምድ 19 ሊትር ያሳያል ፣ ምንም እንኳን በጥርስ ግራፍ ላይ ለተመሳሳይ ጊዜ ከተመሳሳይ ዳሳሽ የ 62 ሊት ፍጆታን እናያለን። ሳንካ ወይም እጆች ጠማማ ናቸው። ግን በቀኝ በኩል ያለው መረጃ ለምን እንደተቋረጠ አሁንም አልገባኝም - እዚያ ያለው ፍጆታ የተለመደ ነበር ፣ እሱም ከጥርስ ግራፍም ይታያል።

በአጠቃላይ, የዚህን አቀራረብ አሳማኝነት ማሳካት አልቻልኩም - ግራፉ ሁልጊዜ ማለት ይቻላል አንዳንድ ዓይነት መናፍቅነትን ያሳያል.

ለቀኑ ዳሳሽ ተመሳሳይ ኮድ።

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

እባክዎን የቡድን_በመለኪያው ወደ ክፍተት መዘጋጀቱን እና የነጥብ_በሰዓት መለኪያው ሁሉንም ነገር ይቆጣጠራል። እና ይሄ የዚህ አካል ሌላ ችግር ነው - Point_per_hour በሰአት ወይም ከዚያ ባነሰ ገበታዎች ላይ በደንብ ይሰራል ነገር ግን በትላልቅ ክፍተቶች ላይ አጸያፊ ነው። ስለዚህ በአንድ ቀን ውስጥ አንድ አምድ ለማግኘት እሴቱን 1/24=0.04166666 ማስገባት ነበረብኝ። የማወራው ስለ ሳምንታዊ እና ወርሃዊ ገበታዎች አይደለም።

አቀራረብ 2

የቤት ረዳቱን እያጣራሁ፣ ይህን ቪዲዮ አገኘሁት፡-


ባልደረባው ከተለያዩ የ Xiaomi ሶኬቶች የፍጆታ መረጃን ይሰበስባል። የእሱ ተግባር ትንሽ ቀላል ነው - ለዛሬ, ትላንትና እና ለወሩ የፍጆታ ዋጋን ብቻ ያሳዩ. ምንም ገበታዎች አያስፈልግም።

ስለ ቅጽበታዊ የኃይል እሴቶች በእጅ ውህደት ክርክሮችን ወደ ጎን እንተወው - ስለ የዚህ አቀራረብ “ትክክለኝነት” ቀደም ብዬ ጽፌ ነበር። ቀደም ሲል በተመሳሳይ መውጫ የተሰበሰቡትን የተከማቸ የፍጆታ ዋጋዎች ለምን እንዳልተጠቀመ ግልጽ አይደለም. በእኔ አስተያየት, በብረት ቁርጥራጭ ውስጥ ያለው ውህደት በተሻለ ሁኔታ ይሰራል.

ከቪዲዮው ውስጥ ለተወሰነ ጊዜ ፍጆታን በእጅ የመቁጠር ሀሳብ እንወስዳለን ። ለአንድ ሰው ፣ ለዛሬ እና ለትላንት ዋጋዎች ብቻ ይታሰባሉ ፣ ግን የበለጠ እንሄዳለን እና ግራፍ ለመሳል እንሞክራለን። በእኔ ጉዳይ ላይ የቀረበው ዘዴ ዋናው ነገር እንደሚከተለው ነው.

በሰዓቱ_መጀመሪያ_ተለዋዋጭ እሴት እንፈጥራለን፣ በዚህ ውስጥ የአሁኑን የቆጣሪ ንባቦችን እንጽፋለን።
በሰዓቱ መጨረሻ (ወይም በሚቀጥለው መጀመሪያ ላይ) በጊዜ ቆጣሪው መሰረት, አሁን ባለው ንባብ እና በሰዓቱ መጀመሪያ ላይ በተከማቸው መካከል ያለውን ልዩነት እናሰላለን. ይህ ልዩነት ለአሁኑ ሰዓት ፍጆታ ይሆናል - እሴቱን ወደ ሴንሰሩ እናስቀምጠዋለን, እና ለወደፊቱ በዚህ እሴት ላይ በመመስረት ግራፍ እንሰራለን.
እንዲሁም የቆጣሪውን የአሁኑን ዋጋ እዚያ በመጻፍ ተለዋዋጭ እሴቱን "በመጀመሪያ_ሰዓት_መጀመሪያ" ላይ "ዳግም ማስጀመር" ያስፈልግዎታል።

ይህ ሁሉ በጥሩ ሁኔታ ሊከናወን ይችላል ... በራሱ የቤት ረዳት አማካኝነት.

ከቀዳሚው አቀራረብ ይልቅ ትንሽ ተጨማሪ ኮድ መጻፍ ይኖርብዎታል። በእነዚህ "ተለዋዋጮች" እንጀምር. ከሳጥኑ ውጭ፣ “ተለዋዋጭ” አካል የለንም፣ ግን የ mqtt ደላላ አገልግሎቶችን መጠቀም ይችላሉ። እሴቶችን ከመጠባበቂያው = እውነተኛ ባንዲራ ጋር እንልካለን - ይህ በደላላው ውስጥ ያለውን ዋጋ ይቆጥባል እና የቤት ረዳቱ እንደገና በሚነሳበት ጊዜ እንኳን በማንኛውም ጊዜ ሊወጣ ይችላል። በየሰዓቱ እና በየቀኑ ቆጣሪዎችን በአንድ ጊዜ ሠራሁ።

- 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

ሁሉም አስማት በየሰዓቱ እና በየምሽቱ በሚሠራው አውቶሜትድ ውስጥ ይከሰታል።

- 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

ሁለቱም አውቶማቲክስ 2 ነገሮችን ይሰራሉ።

  • በመነሻ እና በመጨረሻው እሴት መካከል ያለው ልዩነት በእያንዳንዱ የጊዜ ክፍተት ውስጥ ያለውን ዋጋ አስላ
  • ለቀጣዩ የጊዜ ክፍተት መሰረታዊ እሴቱን ያዘምኑ

በዚህ ጉዳይ ላይ የግራፎች ግንባታ በተለመደው ታሪክ-ግራፍ ተፈትቷል-

      - 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

ይህን ይመስላል።

ዘመናዊ ቤት፡ የውሃ እና የኤሌክትሪክ ፍጆታ በቤት ረዳት ውስጥ ቻርቲንግ

በመርህ ደረጃ, ይህ እርስዎ የሚፈልጉት ቀድሞውኑ ነው. የዚህ ዘዴ ጥቅም መረጃው በየተወሰነ ጊዜ አንድ ጊዜ መፈጠሩ ነው. እነዚያ። ለሰዓቱ ቻርት በቀን 24 ግቤቶች።

እንደ አለመታደል ሆኖ, ይህ አሁንም የእድገት መሰረትን አጠቃላይ ችግር አይፈታውም. ወርሃዊ የፍጆታ ግራፍ ከፈለግኩ ቢያንስ ለአንድ አመት መረጃ ማከማቸት አለብኝ። እና የቤት ውስጥ ረዳት ለጠቅላላው የውሂብ ጎታ አንድ የማከማቻ ቆይታ ቅንብር ብቻ ስለሚያቀርብ፣ ይህ ማለት በስርዓቱ ውስጥ ያሉ ሁሉም መረጃዎች ለአንድ አመት ያህል መቀመጥ አለባቸው ማለት ነው። ለምሳሌ, በአንድ አመት ውስጥ 200 ሜትር ኩብ ውሃ እበላለሁ, ይህም ማለት በመረጃ ቋቱ ውስጥ 200000 መግባቶች ማለት ነው. እና ሌሎች ዳሳሾችን ከግምት ውስጥ ካስገቡ ፣ ከዚያ ምስሉ በአጠቃላይ ጨዋነት የጎደለው ይሆናል።

አቀራረብ 3

እንደ እድል ሆኖ፣ ብልህ ሰዎች የ InfluxDB ዳታቤዝ በመጻፍ ይህንን ችግር ፈትተውታል። ይህ የውሂብ ጎታ በተለይ በጊዜ ላይ የተመሰረተ መረጃን ለማከማቸት የተመቻቸ እና የተለያዩ ዳሳሾችን እሴቶችን ለማከማቸት ተስማሚ ነው. ስርዓቱ እሴቶችን ከመረጃ ቋቱ ለማውጣት እና ከዚያም በተለያዩ መንገዶች እንዲዋሃዱ የሚያስችልዎትን SQL የሚመስል የጥያቄ ቋንቋ ያቀርባል። በመጨረሻም, የተለያዩ መረጃዎች ለተለያዩ ጊዜያት ሊቀመጡ ይችላሉ. ለምሳሌ፣ እንደ የሙቀት መጠን ወይም እርጥበት ያሉ ንባቦችን በተደጋጋሚ መቀየር የሚቻለው ለሁለት ሳምንታት ብቻ ሲሆን በየቀኑ የውሃ ፍጆታ ንባቦች ለአንድ አመት ያህል ሊቀመጡ ይችላሉ።

ከInfluxDB በተጨማሪ ብልህ ሰዎች ግራፋናን ፈለሰፉት፣ ከ InfluxDB ውሂብ ግራፎችን የመሳል ስርዓት። ግራፋና የተለያዩ የገበታ ዓይነቶችን መሳል፣ በዝርዝር ሊያበጅላቸው ይችላል፣ እና ከሁሉም በላይ፣ እነዚህ ገበታዎች ወደ lovelace-UI የቤት ረዳት ውስጥ “መሰካት” ይችላሉ።

ተነሳሱ እዚህ и እዚህ. ጽሑፎቹ InfluxDB እና Grafanaን ከቤት ረዳት ጋር የመጫን እና የማገናኘት ሂደትን በዝርዝር ያብራራሉ። የእኔን ልዩ ችግር ለመፍታት ትኩረት አደርጋለሁ.

ስለዚህ፣ በመጀመሪያ፣ በ influxDB ውስጥ የቆጣሪ እሴት ማከል እንጀምር። የቤት ረዳት ውቅር ቁራጭ (በዚህ ምሳሌ ፣ በብርድ ብቻ ሳይሆን በሞቀ ውሃም እዝናናለሁ)

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

ተመሳሳዩን ውሂብ እንደገና እንዳንበላሽ ወደ የቤት ረዳት የውስጥ ዳታቤዝ ማስቀመጥን እናጥፋ፡

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

አሁን ወደ InfluxDB ኮንሶል እንሂድ እና የውሂብ ጎታችንን እናዋቅር። በተለይም, የተወሰነ ውሂብ ለምን ያህል ጊዜ እንደሚከማች ማዋቀር ያስፈልግዎታል. ይህ የሚቆጣጠረው በሚባሉት ነው። የማቆያ ፖሊሲ - ይህ በዋናው የውሂብ ጎታ ውስጥ ካሉ የውሂብ ጎታዎች ጋር ተመሳሳይ ነው፣ እያንዳንዱ የውስጥ ዳታቤዝ የራሱ መቼት አለው። በነባሪ፣ ሁሉም ውሂብ አውቶገን ተብሎ ወደሚጠራው የማቆያ ፖሊሲ ይታከላል፣ ይህ ውሂብ ለአንድ ሳምንት ይቀመጣል። የሰዓት ውሂብ ለአንድ ወር እንዲከማች፣ ሳምንታዊ መረጃ ለአንድ አመት እና ወርሃዊ መረጃ በጭራሽ እንዳይሰረዝ እፈልጋለሁ። ተገቢ የማቆያ ፖሊሲዎችን እንፈጥራለን

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

አሁን፣ በእውነቱ፣ ዋናው ዘዴ ቀጣይነት ያለው መጠይቅን በመጠቀም የውሂብ ማሰባሰብ ነው። ይህ በተወሰነ የጊዜ ልዩነት ውስጥ መጠይቁን በራስ-ሰር የሚያስጀምር፣የዚህን መጠይቅ መረጃ የሚሰበስብ እና ውጤቱን ወደ አዲስ እሴት የሚጨምር ዘዴ ነው። አንድ ምሳሌ እንመልከት (ለተነባቢነት በአምድ ውስጥ እጽፋለሁ ፣ ግን በእውነቱ ይህንን ትዕዛዝ በአንድ መስመር ላይ ማስገባት ነበረብኝ)

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

ይህ ትእዛዝ፡-

  • በቤት ረዳት ዳታቤዝ ውስጥ cq_water_cold_hourly የሚል ቀጣይነት ያለው ጥያቄ ይፈጥራል
  • መጠይቁ በየሰዓቱ (ሰዓት(1ሰ)) ይከናወናል
  • መጠይቁ የቀዝቃዛ እና የሙቅ ውሃ ንባቦችን ጨምሮ ሁሉንም መረጃዎች ከመለካትa homeassistant.autogen.l (ሊትር) ያወጣል።
  • የተዋሃደ ውሂብ በEntity_id ይመደባል፣ ይህም ለቅዝቃዛ እና ሙቅ ውሃ የተለየ እሴቶችን ይፈጥራል።
  • የሊትሮች ቆጣሪ በእያንዳንዱ ሰዓት ውስጥ በአንድ ጊዜ እየጨመረ የሚሄድ ቅደም ተከተል ስለሆነ ከፍተኛውን እሴት መውሰድ ያስፈልግዎታል ፣ ስለሆነም ውህደቱ በከፍተኛው (እሴት) ተግባር ይከናወናል ።
  • አዲሱ እሴት ወር የአንድ ወር የማቆያ ጊዜ ፖሊሲ ስም በሆነበት homeassistant.month.water_meter_hour ይፃፋል። በተጨማሪም ፣ በቀዝቃዛ እና ሙቅ ውሃ ላይ ያለው መረጃ በተዛማጅ ህጋዊ መታወቂያ እና በእሴት መስኩ ውስጥ ካለው እሴት ጋር ወደ ተለያዩ መዝገቦች ይሰራጫል።

በሌሊት ወይም ማንም ሰው ቤት ውስጥ በማይኖርበት ጊዜ የውሃ ፍጆታ አይኖርም, እና በዚህ መሠረት በ homeassistant.autogen.l ውስጥ ምንም አዲስ መዝገቦች የሉም. በመደበኛ መጠይቆች ውስጥ የጎደሉ እሴቶችን ለማስወገድ ፣ ሙሌት (የቀድሞ) መጠቀም ይችላሉ። ይህ InfluxDB ያለፈውን ሰዓት ዋጋ እንዲጠቀም ያስገድደዋል።

እንደ አለመታደል ሆኖ ቀጣይነት ያለው መጠይቅ ልዩ ባህሪ አለው፡ መሙላት(የቀድሞው) ብልሃት አይሰራም እና መዝገቦች በቀላሉ አልተፈጠሩም። ከዚህም በላይ ይህ አንድ ዓይነት የማይታለፍ ችግር ነው, እሱም ከአንድ ዓመት በላይ ውይይት ተደርጓል. ይህንን ችግር በኋላ ላይ እናስተናግዳለን, ነገር ግን በተከታታይ መጠይቅ እንዲሞላ (ቀደም ሲል) - ጣልቃ አይገባም.

ምን እንደተፈጠረ እንፈትሽ (በእርግጥ ለጥቂት ሰዓታት መጠበቅ አለብዎት)

> 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

በመረጃ ቋቱ ውስጥ ያሉት ዋጋዎች በዩቲሲ ውስጥ የተከማቹ መሆናቸውን ልብ ይበሉ ፣ ስለሆነም ይህ ዝርዝር በ 3 ሰዓታት ውስጥ ይለያያል - በ InfluxDB ውፅዓት ውስጥ ያሉት የ 7am ዋጋዎች ከዚህ በላይ ባሉት ገበታዎች ውስጥ ካሉት የ 10 am እሴቶች ጋር ይዛመዳሉ። እንዲሁም ጠዋት ከ 2 እስከ 5 ባለው ጊዜ ውስጥ ምንም መዝገቦች እንደሌሉ ልብ ይበሉ - ይህ ቀጣይነት ያለው መጠይቅ ባህሪ ነው።

እንደሚመለከቱት ፣ የተዋሃደ እሴት እንዲሁ ነጠላ በሆነ ሁኔታ እየጨመረ የሚሄድ ቅደም ተከተል ነው ፣ ግቤቶች ብቻ ብዙ ጊዜ ያነሱ ናቸው - በሰዓት አንድ ጊዜ። ግን ይህ ችግር አይደለም - ለገበታው ትክክለኛውን ውሂብ የሚያወጣ ሌላ መጠይቅ መፃፍ እንችላለን።

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)

እኔ እፈታለሁ፡-

  • ከ homeassistant.month.water_meter_hour ዳታቤዝ፣ ለመጨረሻው ቀን (ሰዓት >= አሁን() -24ሰአት) ለ entity_id='water_meter_cold' ዳታ እንጎትታለን።
  • እንደገለጽኩት፣ አንዳንድ ግቤቶች ከhomeassistant.month.water_meter_hour ቅደም ተከተል ሊጎድሉ ይችላሉ። ጥያቄውን በGROUP BY ጊዜ(1ሰአት) በማስኬድ ይህንን መረጃ እናድሳለን። በዚህ ጊዜ መሙላት (የቀድሞው) በትክክል ይሰራል, የጎደለውን ውሂብ በማመንጨት (ተግባሩ የቀደመውን ዋጋ ይወስዳል)
  • በዚህ መጠይቅ ውስጥ በጣም አስፈላጊው ነገር የልዩነት ተግባር ነው, ይህም በሰዓት ምልክቶች መካከል ያለውን ልዩነት ያሰላል. በራሱ, አይሰራም እና የመደመር ተግባር ያስፈልገዋል. ይህ ከዚህ በፊት ጥቅም ላይ የዋለው ከፍተኛ() ይሁን።

የማስፈጸሚያ ውጤቱ ይህን ይመስላል

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

ከጠዋቱ 2 am እስከ 5 am (UTC) ምንም ፍጆታ አልነበረም። ቢሆንም፣ መጠይቁ ተመሳሳይ የፍጆታ ዋጋን በመሙላት ይመልሳል (የቀድሞው) እና የልዩነት ተግባር ይህንን እሴት ከራሱ በመቀነስ 0ን ያገኛል ፣ ይህም በእውነቱ ያስፈልጋል።

የሚቀረው ግራፍ መገንባት ብቻ ነው። ይህንን ለማድረግ, Grafana ን ይክፈቱ, አንዳንድ ነባር (ወይም አዲስ) ዳሽቦርድ ይክፈቱ, አዲስ ፓነል ይፍጠሩ. የገበታ ቅንጅቶች እንደሚከተለው ይሆናሉ.

ዘመናዊ ቤት፡ የውሃ እና የኤሌክትሪክ ፍጆታ በቤት ረዳት ውስጥ ቻርቲንግ

የቀዝቃዛ እና የሙቅ ውሃ መረጃን በተመሳሳይ ግራፍ ላይ አሳይሻለሁ። ጥያቄው ከላይ ከገለጽኩት ጋር ተመሳሳይ ነው።

የማሳያ መለኪያዎች እንደሚከተለው ተቀምጠዋል. ለእኔ መስመሮች (መስመሮች) ያለው ግራፍ ይሆናል, እሱም በደረጃ (ደረጃዎች) ውስጥ ይሄዳል. የቁልል መለኪያ ከዚህ በታች ይብራራል። ከዚህ በታች ሁለት ተጨማሪ የማሳያ አማራጮች አሉ፣ ግን ያን ያህል አስደሳች አይደሉም።

ዘመናዊ ቤት፡ የውሃ እና የኤሌክትሪክ ፍጆታ በቤት ረዳት ውስጥ ቻርቲንግ

የተገኘውን ግራፍ ወደ የቤት ረዳት ለመጨመር የሚከተሉትን ማድረግ አለብዎት:

  • ከገበታ አርትዖት ሁነታ ውጣ። በሆነ ምክንያት ትክክለኛው የገበታ ማጋሪያ ቅንጅቶች የሚቀርቡት ከዳሽቦርድ ገጽ ብቻ ነው።
  • ከገበታው ስም ቀጥሎ ያለውን ትሪያንግል ጠቅ ያድርጉ፣ ከምናሌው ውስጥ አጋራን ይምረጡ
  • በሚከፈተው መስኮት ውስጥ ወደ መክተቻ ትር ይሂዱ
  • የአሁኑን የጊዜ ክልል ምልክት ያንሱ - የጊዜ ክልሉን በዩአርኤል እናዘጋጃለን።
  • አስፈላጊውን ርዕስ ይምረጡ. በእኔ ሁኔታ ብርሃን ነው
  • የተገኘውን ዩአርኤል ወደ 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"

እባክዎን የጊዜ ክልሉ (ያለፉት 2 ቀናት) የተቀናበረው እዚህ ነው እንጂ በዳሽቦርድ ቅንጅቶች ውስጥ አለመሆኑን ልብ ይበሉ።

ሰንጠረዡ ይህን ይመስላል። ባለፉት 2 ቀናት ውስጥ ሙቅ ውሃ አልተጠቀምኩም, ስለዚህ ቀዝቃዛ ውሃ አንድ ግራፍ ብቻ ይሳባል.

ዘመናዊ ቤት፡ የውሃ እና የኤሌክትሪክ ፍጆታ በቤት ረዳት ውስጥ ቻርቲንግ

የትኛውን ገበታ እንደምወደው ለራሴ አልወሰንኩም፣ ደረጃ መስመር ወይም እውነተኛ አሞሌዎች። ስለዚህ ፣ የዕለታዊ ፍጆታ መርሃ ግብርን በቀላሉ ምሳሌ እሰጣለሁ ፣ በዚህ ጊዜ በቡና ቤቶች ውስጥ። መጠይቆች የተገነቡት ከላይ እንደተገለፀው በተመሳሳይ መንገድ ነው. የማሳያ አማራጮች የሚከተሉት ናቸው:

ዘመናዊ ቤት፡ የውሃ እና የኤሌክትሪክ ፍጆታ በቤት ረዳት ውስጥ ቻርቲንግ

ይህ ገበታ ይህን ይመስላል።

ዘመናዊ ቤት፡ የውሃ እና የኤሌክትሪክ ፍጆታ በቤት ረዳት ውስጥ ቻርቲንግ

ስለዚህ፣ ስለ ቁልል መለኪያ። በዚህ ግራፍ ላይ ቀዝቃዛ ውሃ ባር በጋለ ባር ላይ ይሳሉ. አጠቃላይ ቁመቱ ከጠቅላላው ቀዝቃዛ እና ሙቅ ውሃ ፍጆታ ጋር ይዛመዳል.

የሚታዩት ሁሉም ግራፎች ተለዋዋጭ ናቸው። አይጤውን በፍላጎት ነጥብ ላይ ማንቀሳቀስ እና ዝርዝሮችን እና ዋጋን በአንድ የተወሰነ ነጥብ ላይ ማየት ይችላሉ።

በሚያሳዝን ሁኔታ, በቅባት ውስጥ ያለ ጥንድ ዝንብ አልነበረም. በባር ገበታ ላይ (ከደረጃ መስመሮች ጋር ካለው ግራፍ በተለየ) የአሞሌው መሃከል በቀኑ አጋማሽ ላይ አይደለም, ግን በ 00:00. እነዚያ። የአሞሌው የግራ ግማሽ በቀድሞው ቀን ምትክ ተስሏል. ስለዚህ የቅዳሜ እና የእሁድ ሰንጠረዦች ከሰማያዊው ዞን በስተግራ ትንሽ ይሳሉ። እንዴት እንደምሸነፍ እስካል ድረስ።

ሌላው ችግር በወርሃዊ ክፍተቶች በትክክል መስራት አለመቻል ነው. እውነታው ግን የሰዓት / ቀን / ሳምንት ርዝመት ቋሚ ነው, ነገር ግን የወሩ ርዝመት በእያንዳንዱ ጊዜ የተለየ ነው. InfluxDB መስራት የሚችለው በእኩል ክፍተቶች ብቻ ነው። እስካሁን ድረስ፣ አንጎሎቼ ለ 30 ቀናት የተወሰነ የጊዜ ክፍተት ለማዘጋጀት በቂ ናቸው። አዎ፣ ገበታው በዓመቱ ውስጥ ትንሽ ይንሳፈፋል እና አሞሌዎቹ ከወራት ጋር በትክክል አይዛመዱም። ነገር ግን ይህ ነገር ለእኔ ልክ እንደ ማሳያ መለኪያ ስለሚስብ፣ በዚህ ጉዳይ ላይ ደህና ነኝ።

ቢያንስ ሁለት መፍትሄዎችን አያለሁ።

  • በወርሃዊ ገበታዎች ላይ ለማስቆጠር እና እራስዎን በየሳምንቱ ብቻ ይገድቡ። በዓመት ውስጥ 52 ሳምንታዊ መጠጥ ቤቶች በጣም ጥሩ ሆነው ይታያሉ
  • ወርሃዊ ፍጆታ እራሱን እንደ ዘዴ ቁጥር 2 ይቁጠሩ እና ግራፋናን ለሚያምሩ ግራፎች ብቻ ይጠቀሙ። በጣም ትክክለኛ መፍትሄ ነው። ለማነፃፀር ያለፈውን አመት ገበታዎችን እንኳን መደራረብ ይችላሉ - grafana ያንን ማድረግ ይችላል።

መደምደሚያ

ለምን እንደሆነ አላውቅም፣ ግን እነዚህን አይነት ገበታዎች እወዳለሁ። ህይወት በከፍተኛ ፍጥነት እና ሁሉም ነገር እየተቀየረ መሆኑን ያሳያሉ. ትላንት ብዙ ነበር ዛሬ ትንሽ አለ ነገ ሌላ ነገር ይኖራል። በፍጆታ ርዕስ ላይ ከቤተሰብ ጋር አብሮ ለመስራት ይቀራል. ነገር ግን አሁን ባለው የምግብ ፍላጎት እንኳን ፣ በሂሳቡ ውስጥ ያለው ትልቅ እና ለመረዳት የማይቻል ሰው ቀድሞውኑ በትክክል ወደሚቻል የፍጆታ ምስል እየተለወጠ ነው።

በፕሮግራምነት ወደ 20 ዓመት የሚጠጋ ሥራ ብኖርም ከመረጃ ቋቶች ጋር አልተገናኘሁም። ስለዚህ፣ የውጭ ዳታቤዝ መጫን በጣም የተወሳሰበ እና ለመረዳት የማይቻል ነገር ይመስላል። ሁሉም ነገር ተቀይሯል ከላይ ያለው ጽሑፍ - ተስማሚ መሣሪያን መንኮራኩሩ በሁለት ጠቅታዎች ውስጥ ይከናወናል ፣ እና በልዩ መሣሪያ ፣ የማቀድ ስራው ትንሽ ቀላል ይሆናል።

በርዕሱ ውስጥ የኤሌክትሪክ ፍጆታን ጠቅሻለሁ. እንደ አለመታደል ሆኖ በአሁኑ ጊዜ ምንም ግራፍ ማቅረብ አልችልም። አንድ ኤስዲኤም120 ሜትር ሞቷል፣ ሌላኛው ደግሞ በሞድባስ በኩል ሲደረስ ችግር አለበት። ሆኖም, ይህ በምንም መልኩ የዚህን ጽሑፍ ርዕስ አይጎዳውም - ግራፎች እንደ ውሃ በተመሳሳይ መንገድ ይገነባሉ.

በዚህ ጽሑፍ ውስጥ እኔ ራሴ የሞከርኳቸውን እነዚያን አቀራረቦች ሰጥቻቸዋለሁ። በእርግጠኝነት የማላውቀውን የመረጃ አሰባሰብ እና እይታን የማደራጀት ሌሎች መንገዶች አሉ። በአስተያየቶቹ ውስጥ ስለ እሱ ይንገሩኝ, በጣም ፍላጎት እኖራለሁ. ገንቢ ትችቶችን እና አዳዲስ ሀሳቦችን በደስታ እሰጣለሁ። ከላይ ያለው ጽሑፍ አንድን ሰው እንደሚረዳው ተስፋ አደርጋለሁ.

ምንጭ: hab.com

አስተያየት ያክሉ