ዝርዝር ሁኔታ:

Autostat: የርቀት ቴርሞስታት: 8 ደረጃዎች (ከስዕሎች ጋር)
Autostat: የርቀት ቴርሞስታት: 8 ደረጃዎች (ከስዕሎች ጋር)

ቪዲዮ: Autostat: የርቀት ቴርሞስታት: 8 ደረጃዎች (ከስዕሎች ጋር)

ቪዲዮ: Autostat: የርቀት ቴርሞስታት: 8 ደረጃዎች (ከስዕሎች ጋር)
ቪዲዮ: Обзор приложения AutoStat. Подсчёт расходов на авто, в одном удобном месте! 2024, ሀምሌ
Anonim
Autostat: የርቀት ቴርሞስታት
Autostat: የርቀት ቴርሞስታት

ምናልባት እርስዎ የጠየቁት ጥያቄ “ለምን ሌላ የርቀት ቴርሞስታት ትሠራላችሁ?” ነው።

ለዚያ ጥያቄ መልሱ እኔ ነበረብኝ ፣ እና የገበያው ስማርት ቴርሞስታቶች በጣም ውድ ናቸው።

ትክክለኛ ማስጠንቀቂያ ፣ ይህ ቴርሞስታትዎን ለመቆጣጠር ጥቂት ተጨማሪ ውጤቶችን የሚፈልግ “የንድፈ-ሀሳብ” ግንባታ ነው ፣ ግን ዋናው በቦታው ላይ ነው እና እንደ ልዩ ሁኔታዎ ሊለወጥ ይችላል። እንዲሁም ፣ ይህ አሁንም በሂደት ላይ ያለ ሥራ ነው ፣ ስለዚህ ጥቂት ዝመናዎችን እና ለውጦችን ይጠብቁ (በተለይ ወደ ማትላብ ኮድ)

ለመጀመር ላስጠነቅቅዎ እፈልጋለሁ ፣ ይህ ሶስት ፕሮግራሞችን ይፈልጋል (አንደኛው በጣም ውድ ነው) ፣ ለፕሮግራሞቹ በጣም ጥቂት ቤተመፃህፍት እና የድጋፍ ጥቅሎች ፣ እና ሁሉም እርስ በእርስ እንዲነጋገሩ ማድረግ ያስፈልግዎታል። የራስ ምታት ነው። ይህ ማስጠንቀቂያ ከመንገዱ ወጥቶ በቁሳቁሶች እንጀምር።

ሃርድዌር

  • አርዱዲኖ ናኖ
  • አርዱዲኖ ኡኖ (ወይም ሌላ ናኖ ፣ እኔ በዙሪያዬ አንድ መዘርጋቴ ስለነበረኝ ዩኒኖውን ብቻ ተጠቀምኩ)
  • የተለያዩ ዝላይ ኬብሎች ፣ አንዳንድ ወንድ/ወንድ እና ሁለት ስብስቦች ከሶስት የተቀላቀሉ ወንድ/ሴት ዝላይዎች
  • 433 ሜኸ የሬዲዮ ድግግሞሽ (አርኤፍ) ተቀባይ ፣ እኔ MX-05V ን እጠቀም ነበር
  • 433MHz RF አስተላላፊ ፣ እኔ MX-FS-03V ን እጠቀም ነበር
  • DHT11 ከፍተኛ ትክክለኝነት ቴርሞሜትር እና የእርጥበት ዳሳሽ (እኔ የተጠቀምኩት ቀድሞውኑ በተፈለገው ተከላካዮች በሶስት መወጣጫ ቺፕ ላይ ተጭኗል)
  • የዳቦ ሰሌዳ (ይህንን ሁሉ በአንድ ላይ መሸጥ ካልፈለጉ)
  • ጂፒኤስ ያለው ስልክ (በዚህ ጉዳይ ላይ iPhone 8 ፣ ግን እኔ ደግሞ ጋላክሲ ኤስ 8 ን እጠቀም ነበር)
  • 3 ዲ የታተመ መያዣ (በእውነቱ አስፈላጊ አይደለም ፣ ማንኛውም መያዣ ይሠራል ወይም በጭራሽ የለም)

ሶፍትዌር

  • ማትላብ ከሂሳብ ሥራ (እኔ የ 2018a እትም አለኝ ፣ ግን እኔ ደግሞ የ 2017a-b እትሞችን እጠቀም ነበር)
  • ማትላብ ሞባይል በስልክዎ ላይ ተጭኗል
  • ለማትላብ የአርዲኖ ድጋፍ ጥቅል
  • ለ Matlab የ iPhone ዳሳሽ ጥቅል
  • arduino IDE
  • የ RadioHead የድጋፍ ጥቅሎች እና የአርዱዲኖ አይዲኢ ቤተመፃህፍት
  • የ DHT11 ቤተ -መጽሐፍት ለአርዱዲኖ አይዲኢ
  • ፓይዘን 3.7 (የሥርዓት ቤተ -መጽሐፍት ወይም ተከታታይ ቤተ -መጽሐፍት መጫኑን ያረጋግጡ ፣ ለስሪት 3.4 ወይም ለአዲሱ መሆን ያለበት)

ደረጃ 1 ሁሉንም በአንድ ላይ ማሰባሰብ

ሁሉንም በአንድ ላይ ማዋሃድ
ሁሉንም በአንድ ላይ ማዋሃድ
ሁሉንም በአንድ ላይ ማዋሃድ
ሁሉንም በአንድ ላይ ማዋሃድ
ሁሉንም በአንድ ላይ ማዋሃድ
ሁሉንም በአንድ ላይ ማዋሃድ

ክፍሎችዎ እየሰሩ መሆኑን እና ሽቦው ትክክል መሆኑን ለማረጋገጥ በመጀመሪያ ከኤፍዲኤፍ አስተላላፊዎች ጋር የሚነጋገሩ ጥቂት የአሩዲኖ ትምህርቶችን እንዲያደርጉ እመክራለሁ። ብዙ ምሳሌዎች አሉ ፣ ኮዱ ተካትቷል (ስለ እኛ ስለ C እና C ++ ምንም ለማያውቁት እዚያ ላሉት)።

አርዱዲኖ እና ዳሳሾች ተሰብስበው ለመገኘት ከዚህ በታች ያሉትን የወልና ንድፎችን ይከተሉ። አርዱኖኖቹን በሚያሽከረክሩበት ጊዜ ሊታሰብበት የሚገባ አንድ ነገር እኔ የተጠቀምኳቸው የውሂብ ወደቦች አስፈላጊ አይደሉም ፣ ግን የሚመከሩ ናቸው።

እርስዎ የሚጠቀሙባቸውን የውሂብ ወደቦች ለመለወጥ ከወሰኑ በኮድዎ ውስጥ ያሉትን ፒኖች መግለፅ ያስፈልግዎታል። በግሌ ፣ የአርዱዲኖ ቤተ -መጻህፍት ከሚያውቋቸው ነባሪ ወደቦች ጋር መጣበቅ ቀላል ይመስለኛል።

እና ግልፅ ለመሆን ፣ ናኖ እና ኡኖ ሊለዋወጡ ይችላሉ ፣ ግን የሙቀት መቆጣጠሪያውን መጠን ለመቀነስ ናኖውን ለፕሮጀክቱ አስተላላፊ ጎን እጠቀም ነበር።

የጎን ማስታወሻ -ናኖውን የሚይዘው አረንጓዴ ኮንትራክተሩ 3 ዲ የታተመ መያዣ ነው።

ደረጃ 2: ተቀባይ

ተቀባይ
ተቀባይ

ደረጃ 3 አስተላላፊ

አስተላላፊ
አስተላላፊ

ደረጃ 4 - ኮዱ

ሽቦው ከተጠናቀቀ በኋላ ሁሉም ፕሮግራሞች እንዲሠሩ እና ቤተ -ፍርግሞቹ እንዲጫኑ (እርስዎ እስካሁን ካልነበሩ) ፣ እርስዎ እንዳሉዎት እገምታለሁ ፣ ማትላብን ማስጀመር እና የ iPhone ድጋፍ ጥቅልን ማካሄድ ያስፈልግዎታል። ሁለቱም ስልክዎ እና ማትላብ በዚህ ጊዜ በተመሳሳይ የ wifi አውታረ መረብ ላይ መሆን አለባቸው።

በማትላብ የትእዛዝ መስኮት ውስጥ ይፃፉ-

አገናኝ በርቷል

ይህ በእርስዎ iPhone ላይ ለማገናኘት የሚጠቀሙበትን ባለ አምስት አሃዝ የይለፍ ቃል እንዲያስገቡ ይጠቁማል። የይለፍ ቃሉን ማስታወስዎን ያረጋግጡ። የይለፍ ቃሉን ሲያስገቡ ማትላብ የአይፒ አድራሻዎን ጨምሮ አንዳንድ መረጃዎችን ያሳያል። በማትላብ ሞባይል ውስጥ ከ “ዳሳሾች መጀመር” የእገዛ ምናሌ ውስጥ ከሚገኙት መመሪያዎች የሚመጣውን በሚቀጥለው ደረጃ ይህንን ይጠቀሙ።

  • የአነፍናፊ ውሂብን ወደ MathWorks ደመና ወይም ኮምፒተር ለመላክ እነዚህን ደረጃዎች ይከተሉ
  • የአነፍናፊ መረጃን ወደ ኮምፒዩተር ከላኩ እና እሱ ገና ካልተጫነ ፣ በ MATLAB ውስጥ ለ Apple iOS ዳሳሾች የ MATLAB ድጋፍ ጥቅልን ያውርዱ እና ይጫኑ።
  • ቅንብሮችን በመጠቀም MATLAB ሞባይልን ከ MathWorks ደመና ወይም ከኮምፒዩተር ጋር ያገናኙ።
  • በ MATLAB (በኮምፒተርዎ) ውስጥ የሞባይል ዴቭ ነገርን ይፍጠሩ ፣ ለምሳሌ ፦ >> m = mobiledev
  • አንድ ወይም ከዚያ በላይ ዳሳሾችን ይምረጡ እና ጀምርን መታ ያድርጉ።

በመሣሪያዎ ላይ የአከባቢ ዳሳሽ ውሂብን ለማስገባት እነዚህን ደረጃዎች ይከተሉ

  • በአነፍናፊዎቹ ማያ ገጽ ላይ ውሂብ ለመሰብሰብ የሚፈልጉትን ዳሳሾች ይምረጡ።
  • ምዝግብ ምረጥ።
  • የመነሻ ቁልፍን መታ ያድርጉ።
  • ውሂብ መሰብሰብ ሲጨርሱ አቁም የሚለውን ቁልፍ መታ ያድርጉ።
  • በብቅ-ባይ ውስጥ ፣ የዳሳሽ ምዝግብ ማስታወሻውን ስም ያስገቡ።
  • አስፈላጊ ከሆነ እርምጃዎችን 1-5 ይድገሙ።

ይህ ክፍል በክፍል 4 ውስጥ ተመልሶ ይመለሳል ፣ ስለዚህ በእውነቱ ገና መረጃ መሰብሰብ መጀመር አያስፈልግም። በቀላሉ ስልክዎን ምቹ እና የማትላብ ሞባይል ዝግጁ ያድርጉት።

አሁን የማትላብ ኮድ ፋይሎችን ለማኖር በኮምፒተርዎ ውስጥ የሆነ ቦታ አቃፊ መፍጠር ያስፈልግዎታል። አራት የተለያዩ ፋይሎች ይኖሩዎታል ፣ ሁለት ለጀርባ ተግባራት (.m ፋይሎች) እና አንድ የማትላብ ኮድ ፋይል ለ GUI (.mlapp) ፣.

በመጀመሪያ በቤትዎ ውስጥ ያለው አየር የጅምላ ስሌት ነው (ይህ ማትላብን ቤትዎን ለማሞቅ/ለማቀዝቀዝ ምን ያህል ጊዜ እንደሚወስድ እንዲያውቅ ያደርጋል)

ተግባር [ቅዳሴ] = CalcMass (T_ins ፣ P_out ፣ Chng_dir)

runCalc = 0; Tmp_start = T_ins; time_start = ሰዓት; time_end = 0 በሚሮጥበት ጊዜ Calc <= 1 T_ins == (Tmp_start+(7*Chng_dir)) time_end = ሰዓት; PwrCntr = 0; runCalc = 0; ሌላ PwrCntr = P_out; runCalc = runCalc+0.1 መጨረሻ መጨረሻ time_diag = time_end-time_start Mass = (P_out*time_diag) /7.035

እና ሁለተኛው -

ተግባር [የጊዜ ማህተሞች ፣ pwr_usage] = dist_cntrl (Lat_in ፣ Lon_in ፣ P_out ፣ r_pref ፣ ፍጥነት ፣ T_pref ፣ mass)

AutoStat = 1; እኔ = 1; AutoStat == 1 time_start = ሰዓት; m = mobiledev; t = csvread ('values.csv', 0, 1); t = t (i); የጊዜ ማህተሞች = [0, 0, 0, 0, 0, 0]; pwr_usage = 0; i = i+1; ቅርጸት longg; በኬክሮስ እና %longintude a_hav = (sind ((m. Latitude-Lat_in)./ 2)) ላይ የተመሠረተ ርቀት ለማስላት %haversine ቀመር።^2+cosd (Lat_in)።*cosd (m.latitude).*(sind ((ሜ.ኬንትሮስ-ሎን_ኢን) ።/ 2)).^2; c_hav = 2.*atan2d (sqrt (a_hav) ፣ sqrt (1-a_hav)); d_hav = 6371.*c_hav; Dist = d_hav.*1000; %ጊዜን ለመመለስ ጊዜዎን ይገምታል_rtn = (Dist-r_pref)./ speed; %በ %አየር ማቀዝቀዣ እና በቤቱ አየር ላይ ባለው የኃይል አቅርቦት ላይ በመመርኮዝ አስፈላጊውን የሙቀት መቆጣጠሪያ ቅንብር ያሰላል። calcTmp_set = ((-1.*P_out.*time_rtn)./ (ብዛት።*(1.005)))+T_pref; %ክብ (calcTmp_set) ~ = ዙር (t) ጊዜ ACon = ሰዓት ከሆነ የአሁኑ ቴርሞስታት ቅንብር መለወጥ እንደሚያስፈልገው ይወስናል። PwrCntr = P_out; timeACon = timeACon + የሰዓት-ጊዜ_መጀመር; ወጪ = P_out*timeACon*ተመን; ሌላ PwrCntr = 0 የመጨረሻ የጊዜ ማህተሞች (መጨረሻ+1 ፣ [1: 6]) = ሰዓት; pwr_usage (መጨረሻ+1, 1) = PwrCntr; ለአፍታ አቁም (5) መጨረሻ መጨረሻ

እነዚህ ሁለቱም ፋይሎች የማትላብ ተግባራት ናቸው። እርስዎ ከ GUI ስለሚደውሏቸው ለተወሰኑ ፍላጎቶች እነሱን ለማስተካከል ካላሰቡ በስተቀር እነሱን መድረስ አያስፈልግዎትም። ሁለቱንም ፋይሎች በተናጠል ያስቀምጡ ፣ አንደኛው እንደ CalcMass.m እና ሁለተኛው እንደ dist_cntrl.m ፣ እነዚያ የ GUI ኮድ ተግባሮቹን ለመጥራት የሚጠቀምባቸው ስሞች ይሆናሉ ፣ ስለዚህ ቀሪውን ኮድ ከዚህ በታች ማርትዕ ካልፈለጉ በስተቀር ፣ ተጣብቀው የመሰየሚያ ስምምነቱ።

ወደ GUI ኮድ ከመግባትዎ በፊት በማትላብ ምናሌ አሞሌ ውስጥ በማሰስ ወይም በማትላብ የትእዛዝ መስኮት ውስጥ የሚከተለውን ትእዛዝ በሚያስገባበት የእኔ ተወዳጅ ዘዴ ለ Matlab የመተግበሪያ ዲዛይነሩን መክፈት ያስፈልግዎታል።

appdesigner

አንዴ የመተግበሪያ ዲዛይነሩ ከተከፈተ በኋላ አዲስ የመተግበሪያ ፋይል (.mlapp) ይክፈቱ እና ሁሉንም ነባሪውን ኮድ ከኮድ መስኮቱ ይሰርዙ። ከዚያ ሁሉንም በሚከተለው ይተኩ እና የአሂድ ቁልፍን ይምቱ።

classdef Control_1 <matlab.apps. AppBase % ንብረቶች ከመተግበሪያ ክፍሎች ባህሪዎች ጋር የሚዛመዱ (መዳረሻ = የህዝብ) UIFigure matlab.ui. Figure TabGroup matlab.ui.container. TabGroup SetupTab matlab.ui.container. Tab RunDiagnosticButton matlab.uicontrol. አዝራር EnergyEfficiencyRatingEditFieldLabel matlab.ui.control. Label EnergyEfficiencyRatingEditField matlab.ui.control. NumericEditField PowerOutputRatingEditFieldLabel matlab.ui.control. Label PowerOutputRatingEditField matlab.ui.control. NumericEditField AvgLocalSpeedEditFieldLabel matlab.ui.control. Label AvgLocalSpeedEditField matlab.ui.control. NumericEditField DesiredDistancefromHouseEditFieldLabel matlab.ui.control. Label DDFH matlab.ui.control. NumericEditField TemperatureDirectionSwitchLabel matlab.ui.control. ui.control. Spinner Temperature2SpinnerLabel matlab.ui.cont rol. Label Temperature2Spinner matlab.ui.control. Spinner Switch matlab.ui.control. Switch EditFieldLabel matlab.ui.control. Lelel tempnow matlab.ui.control. NumericEditField GaugeLel matlab.ui.control. የመለኪያ ቁጠባዎች ታብ matlab.ui.container.ab UIAxes matlab.ui.control. UIAxes this MonthCostEditFieldLabel matlab.ui.control.

ዘዴዎች (መዳረሻ = የግል)

% እሴት ተለውጧል ተግባር ፦ tempnow

ተግባር tempnowValueChanged (መተግበሪያ ፣ ክስተት) temp = app.tempnow. Value; temp = randi ([60, 90] ፣ 1 ፣ 50) app. Gauge. Value = 0 ለ i = ርዝመት (temp) መተግበሪያ ።Gauge. Value = temp (i) ለአፍታ ቆም (1) መጨረሻ መጨረሻ

% እሴት ተቀይሯል ተግባር ፦ TemperatureDirectionSwitch

ተግባር TemperatureDirectionSwitchValueChanged (መተግበሪያ ፣ ክስተት) መንገድ = app. TemperatureDirectionSwitch. Value; መንገድ = uint8 (መንገድ) መንገድ = ርዝመት (መንገድ) መንገድ ከሆነ == 4 Chng_dir = -1; ሌላ Chng_dir = 1; መጨረሻ Chng_dir; አበቃ

% እሴት ተቀይሯል ተግባር ፦ DDFH

ተግባር DDFHValueChanged (መተግበሪያ ፣ ክስተት) r_pref = app. DDFH. Value; አበቃ

% እሴት ተቀይሯል ተግባር ፦ AvgLocalSpeedEditField

ተግባር AvgLocalSpeedEditFieldValueChanged (መተግበሪያ ፣ ክስተት) ፍጥነት = app. AvgLocalSpeedEditField. Value; አበቃ

% እሴት ተቀይሯል ተግባር ፦ PowerOutputRatingEditField

ተግባር PowerOutputRatingEditFieldValueChanged (መተግበሪያ ፣ ክስተት) እሴት = app. PowerOutputRatingEditField. Value; አበቃ

% እሴት ተቀይሯል ተግባር ፦ EnergyEfficiencyRatingEditField

ተግባር EnergyEfficiencyRatingEditFieldValueChanged (መተግበሪያ ፣ ክስተት) እሴት = app. EnergyEfficiencyRatingEditField. Value; አበቃ

% አዝራር የተገፋ ተግባር: RunDiagnosticButton

ተግባር RunDiagnosticButtonPushed (መተግበሪያ ፣ ክስተት) መንገድ = app. TemperatureDirectionSwitch. Value; መንገድ = uint8 (መንገድ) መንገድ = ርዝመት (መንገድ) መንገድ ከሆነ == 4 Chng_dir = -1; ሌላ Chng_dir = 1; T_ins = app.tempnow. Value P_out = app. PowerOutputRatingEditField. Value CalcMass1 (T_ins ፣ P_out ፣ Chng_dir)

አበቃ

% እሴት ተቀይሯል ተግባር ፦ Temperature1Spinner

ተግባር Temperature1SpinnerValueChanged (መተግበሪያ ፣ ክስተት) እሴት = app. Temperature1Spinner. Value; አበቃ

% እሴት ተቀይሯል ተግባር ፦ Temperature2Spinner

ተግባር Temperature2SpinnerValueChanged (መተግበሪያ ፣ ክስተት) እሴት = app. Temperature2Spinner. Value; አበቃ

% እሴት ተቀይሯል ተግባር ፦ ቀይር

ተግባር SwitchValueChanged (መተግበሪያ ፣ ክስተት) m = mobiledev; Lat_in = m. Latitude Lon_in = m. Longitude P_out = 0; r_pref = app. DDFH. Value; T_pref = app. Temperature1Spinner. Value; ፍጥነት = m. Speed; ብዛት = 200; ፍጥነት = app. AvgLocalSpeedEditField. Value; Auto_Stat = app. Switch. Value; dist_cntrl (Lat_in ፣ Lon_in ፣ P_out ፣ r_pref ፣ T_pref ፣ ፍጥነት ፣ ብዛት) መጨረሻ መጨረሻ

% የመተግበሪያ አጀማመር እና ግንባታ

ዘዴዎች (መዳረሻ = የግል)

% UIFigure እና ክፍሎችን ይፍጠሩ

ተግባር ፍጠር ተባባሪዎች (መተግበሪያ)

% UIFigure ን ይፍጠሩ

app. UIFigure = uifigure; app. UIFigure. አቀማመጥ = [100 100 640 480]; app. UIFigure. Name = 'UI Figure';

% TabGroup ፍጠር

app. TabGroup = uitabgroup (app. UIFigure); app. TabGroup. አቀማመጥ = [1 1 640 480];

% SetupTab ፍጠር

app. SetupTab = uitab (app. TabGroup); app. SetupTab. Title = 'Setup';

% RunDiagnosticButton ን ይፍጠሩ

app. RunDiagnosticButton = uibutton (app. SetupTab ፣ 'push'); መተግበሪያ. app. RunDiagnosticButton. FontWeight = 'ደፋር'; app. RunDiagnosticButton. አቀማመጥ = [465 78 103 23]; app. RunDiagnosticButton. Text = 'ምርመራን አሂድ';

% EnergyEfficiencyRatingEditFieldLabel ን ይፍጠሩ

app. EnergyEfficiencyRatingEditFieldLabel = uilabel (app. SetupTab); app. EnergyEfficiencyRatingEditFieldLabel. HorizontalAlignment = 'right'; app. EnergyEfficiencyRatingEditFieldLabel. አቀማመጥ = [8 425 135 22]; app. EnergyEfficiencyRatingEditFieldLabel. Text = 'የኢነርጂ ውጤታማነት ደረጃ';

% EnergyEfficiencyRatingEditField ን ይፍጠሩ

app. EnergyEfficiencyRatingEditField = uieditfield (app. SetupTab ፣ 'ቁጥራዊ'); app. EnergyEfficiencyRatingEditField. Limits = [0 100]; app. EnergyEfficiencyRatingEditField. ValueChangedFcn = createCallbackFcn (መተግበሪያ ፣ @EnergyEfficiencyRatingEditFieldValueChanged ፣ እውነት); app. EnergyEfficiencyRatingEditField. HorizontalAlignment = 'center'; app. EnergyEfficiencyRatingEditField. አቀማመጥ = [158 425 100 22];

% PowerOutputRatingEditFieldLabel ን ይፍጠሩ

app. PowerOutputRatingEditFieldLabel = uilabel (app. SetupTab); app. PowerOutputRatingEditFieldLabel. HorizontalAlignment = 'right'; app. PowerOutputRatingEditFieldLabel. Position = [18 328 118 22]; app. PowerOutputRatingEditFieldLabel. Text = 'የኃይል ውፅዓት ደረጃ';

% PowerOutputRatingEditField ይፍጠሩ

app. PowerOutputRatingEditField = uieditfield (app. SetupTab ፣ 'ቁጥራዊ'); app. PowerOutputRatingEditField. Limits = [0 Inf]; app. PowerOutputRatingEditField. ValueChangedFcn = createCallbackFcn (መተግበሪያ ፣ @PowerOutputRatingEditFieldValueChanged ፣ እውነት); app. PowerOutputRatingEditField. HorizontalAlignment = 'center'; app. PowerOutputRatingEditField. Position = [151 328 100 22];

% AvgLocalSpeedEditFieldLabel ን ይፍጠሩ

app. AvgLocalSpeedEditFieldLabel = uilabel (app. SetupTab); app. AvgLocalSpeedEditFieldLabel. HorizontalAlignment = 'ትክክል'; app. AvgLocalSpeedEditFieldLabel. Position = [27 231 100 22]; app. AvgLocalSpeedEditFieldLabel. Text = 'አማካይ. አካባቢያዊ ፍጥነት ';

% AvgLocalSpeedEditField ይፍጠሩ

app. AvgLocalSpeedEditField = uieditfield (app. SetupTab ፣ 'ቁጥራዊ'); app. AvgLocalSpeedEditField. Limits = [0 70]; app. AvgLocalSpeedEditField. ValueChangedFcn = createCallbackFcn (መተግበሪያ ፣ @AvgLocalSpeedEditFieldValueChanged ፣ እውነት); app. AvgLocalSpeedEditField. HorizontalAlignment = 'center'; app. AvgLocalSpeedEditField. Position = [142 231 100 22];

% DesiredDistanceHouseEditFieldLabel ን ይፍጠሩ

app. DesiredDistancefromHouseEditFieldLabel = uilabel (app. SetupTab); app. DesiredDistancefromHouseEditFieldLabel. HorizontalAlignment = 'right'; app. DesiredDistancefromHouseEditFieldLabel. አቀማመጥ = [24 129 100 28]; app. DesiredDistancefromHouseEditFieldLabel. Text = {'የሚፈለገው ርቀት'; 'ከቤቱ'};

% DDFH ን ይፍጠሩ

app. DDFH = uieditfield (app. SetupTab ፣ 'ቁጥራዊ'); app. DDFH. Limits = [0 50]; app. DDFH. ValueChangedFcn = createCallbackFcn (መተግበሪያ ፣ @DDFHValueChanged ፣ እውነት); app. DDFH. HorizontalAlignment = 'center'; app. DDFH. አቀማመጥ = [139 135 100 22];

% TemperatureDirectionSwitchLabel ፍጠር

app. TemperatureDirectionSwitchLabel = uilabel (app. SetupTab); app. TemperatureDirectionSwitchLabel. HorizontalAlignment = 'center'; app. TemperatureDirectionSwitchLabel. አቀማመጥ = [410 343 124 22]; app. TemperatureDirectionSwitchLabel. Text = 'የሙቀት አቅጣጫ';

% የሙቀት መጠንን ይፍጠሩ አቅጣጫ ቀይር

app. TemperatureDirectionSwitch = uiswitch (app. SetupTab ፣ 'ተንሸራታች'); app. TemperatureDirectionSwitch. Items = {'Up', 'Down'}; app. TemperatureDirectionSwitch. ValueChangedFcn = createCallbackFcn (መተግበሪያ ፣ @TemperatureDirectionSwitchValueChanged ፣ እውነት); app. TemperatureDirectionSwitch. አቀማመጥ = [449 380 45 20]; app. TemperatureDirectionSwitch. Value = 'ወደ ላይ';

% TempSettingsTab ፍጠር

app. TempSettingsTab = uitab (app. TabGroup); app. TempSettingsTab. Title = 'Temp. ቅንብሮች ';

% ሙቀት 1SpinnerLabel ፍጠር

app. Temperature1SpinnerLabel = uilabel (app. TempSettingsTab); app. Temperature1SpinnerLabel. HorizontalAlignment = 'center'; app. Temperature1SpinnerLabel. አቀማመጥ = [66 363 76 28]; app. Temperature1SpinnerLabel. Text = {'ሙቀት'; '#1'};

% የሙቀት መጠን 1Spinner ፍጠር

app. Temperature1Spinner = uispinner (app. TempSettingsTab); app. Temperature1Spinner. Limits = [60 90]; app. Temperature1Spinner. ValueChangedFcn = createCallbackFcn (መተግበሪያ ፣ @Temperature1SpinnerValueChanged ፣ እውነት); app. Temperature1Spinner. አቀማመጥ = [157 346 100 68]; app. Temperature1Spinner. Value = 60;

% የሙቀት መጠንን ይፍጠሩ2SpinnerLabel

app. Temperature2SpinnerLabel = uilabel (app. TempSettingsTab); app. Temperature2SpinnerLabel. HorizontalAlignment = 'center'; app. Temperature2SpinnerLabel. አቀማመጥ = [66 248 76 28]; app. Temperature2SpinnerLabel. Text = {'ሙቀት'; '#2'};

% የሙቀት መጠን 2Spinner ፍጠር

app. Temperature2Spinner = uispinner (app. TempSettingsTab); app. Temperature2Spinner. Limits = [60 90]; app. Temperature2Spinner. ValueChangedFcn = createCallbackFcn (መተግበሪያ ፣ @Temperature2SpinnerValueChanged ፣ እውነት); app. Temperature2Spinner. አቀማመጥ = [157 230 100 70]; app. Temperature2Spinner. Value = 60;

% መቀየሪያ ፍጠር

app. Switch = uiswitch (app. TempSettingsTab ፣ 'ተንሸራታች'); app. Switch. Items = {'1', '0'}; app. Switch. ValueChangedFcn = createCallbackFcn (መተግበሪያ ፣ @SwitchValueChanged ፣ እውነት); app. Switch. FontName = 'ኒያላ'; app. Switch. FontSize = 28; app. Switch. አቀማመጥ = [522 21 74 32]; app. Switch. Value = '0';

% EditFieldLabel ን ይፍጠሩ

app. EditFieldLabel = uilabel (app. TempSettingsTab); app. EditFieldLabel. HorizontalAlignment = 'right'; app. EditFieldLabel. አቀማመጥ = [374 291 25 22]; app. EditFieldLabel. Text = ";

% የሙቀት መጠን ይፍጠሩ

app.tempnow = uieditfield (app. TempSettingsTab ፣ 'ቁጥራዊ'); app.tempnow. Limits = [60 89]; app.tempnow. ValueChangedFcn = createCallbackFcn (መተግበሪያ ፣ @tempnowValueChanged ፣ እውነት); app.tempnow. HorizontalAlignment = 'center'; app.tempnow. FontSize = 26; app.tempnow. አቀማመጥ = [409 230 133 117]; app.tempnow. Value = 60;

% GaugeLabel ን ይፍጠሩ

app. GaugeLabel = uilabel (app. TempSettingsTab); app. GaugeLabel. HorizontalAlignment = 'center'; app. GaugeLabel. አቀማመጥ = [225 32 42 22]; app. GaugeLabel. Text = 'መለኪያ';

% መለኪያ ፍጠር

app. Gauge = uigauge (app. TempSettingsTab ፣ 'ክብ'); app. Gauge. Limits = [60 90]; app. Gauge. MajorTicks = [60 65 70 75 80 85 90]; app. Gauge. አቀማመጥ = [185 69 120 120]; app. Gauge. Value = 60;

% የቁጠባ ታብ ይፍጠሩ

app. SavingsTab = uitab (app. TabGroup); app. SavingsTab. Title = 'ቁጠባ';

% UIAxes ን ይፍጠሩ

app. UIAxes = uiaxes (app. SavingsTab); ርዕስ (app. UIAxes ፣ 'ቁጠባ') xlabel (app. UIAxes ፣ 'ወር እና ዓመት') ylabel (app. UIAxes ፣ 'Money') app. UIAxes. PlotBoxAspectRatio = [1 0.60666666666667 0.6066666666666767]; app. UIAxes. Color = [0.9412 0.9412 0.9412]; app. UIAxes. አቀማመጥ = [146 219 348 237];

% ThisMonthCostEditFieldLabel ን ይፍጠሩ

app. ThisMonthCostEditFieldLabel = uilabel (app. SavingsTab); app. ThisMonthCostEditFieldLabel. HorizontalAlignment = 'center'; app. ThisMonthCostEditFieldLabel. Position = [439 96 94 22]; app. ThisMonthCostEditFieldLabel. Text = 'የዚህ ወር ወጪ';

% ThisMonthCostEditField ፍጠር

app. ThisMonthCostEditField = uieditfield (app. SavingsTab ፣ 'ቁጥራዊ'); app. ThisMonthCostEditField. Limits = [0 Inf]; app. ThisMonthCostEditField. ValueDisplayFormat = '$%7.2f'; app. ThisMonthCostEditField. HorizontalAlignment = 'center'; app. ThisMonthCostEditField. አቀማመጥ = [417 39 137 58];

% TotalSavingsEditFieldLabel ን ይፍጠሩ

app. TotalSavingsEditFieldLabel = uilabel (app. SavingsTab); app. TotalSavingsEditFieldLabel. HorizontalAlignment = 'right'; app. TotalSavingsEditFieldLabel. አቀማመጥ = [111 96 77 22]; app. TotalSavingsEditFieldLabel. Text = 'ጠቅላላ ቁጠባ';

% TotalSavingsEditField ፍጠር

app. TotalSavingsEditField = uieditfield (app. SavingsTab ፣ 'ቁጥራዊ'); app. TotalSavingsEditField. Limits = [0 Inf]; app. TotalSavingsEditField. ValueDisplayFormat = '$%9.2f'; app. TotalSavingsEditField. HorizontalAlignment = 'center'; app. TotalSavingsEditField. አቀማመጥ = [88 39 137 58]; መጨረሻ መጨረሻ

ዘዴዎች (መዳረሻ = ይፋዊ)

% መተግበሪያ ይገንቡ

የተግባር መተግበሪያ = ቁጥጥር_1

% ክፍሎችን ይፍጠሩ እና ያዋቅሩ

ተጓዳኞችን ፍጠር (መተግበሪያ)

% መተግበሪያውን በመተግበሪያ ዲዛይነር ያስመዝግቡት

registerApp (መተግበሪያ ፣ መተግበሪያ። ውቅር)

nargout == 0 ከሆነ

ግልጽ የመተግበሪያ መጨረሻ መጨረሻ

ከመተግበሪያው ስረዛ በፊት የሚፈፀም %

ተግባር ሰርዝ (መተግበሪያ)

መተግበሪያው ሲሰረዝ UIFigure ን ይሰርዙ

ሰርዝ (app. UIFigure) የመጨረሻ መጨረሻ መጨረሻ

ምናልባት ስህተት ያጋጥምዎታል ፣ ይህ ምንም ችግር የለውም። ሩጫውን ከተጫኑ በኋላ የተፈጠረውን GUI ብቻ ይዝጉ ፣ ቀሪዎቹን አስፈላጊ ፕሮግራሞች እና መረጃዎች በአንድ ጊዜ እንሰበስባለን።

ማትላብ ስለተዋቀረ ወደ ፓይዘን መቀጠል እንችላለን። በመጀመሪያ ፣ የትእዛዝ ጥያቄዎን (በመስኮቶች ላይ) ወይም በፓይዘን አቃፊዎ ውስጥ ያለውን የ.exe ፋይል በመጠቀም የ Python ፕሮግራሙን ያሂዱ። የማስመጣት ትዕዛዙን በመጠቀም ሁሉም ተገቢ ቤተ -መጽሐፍት መጫናቸውን ያረጋግጡ።

ማስመጣት ተከታታይ

የማስመጣት ጊዜ አስመጪ csv

በቅርቡ እኛ የራሳችንን ቤተመፃሕፍት ብናደርግም ፣ ለመጀመር የሚያስፈልጉዎት ሦስቱ ቤተ -መጻሕፍት ናቸው። በእነዚህ ትዕዛዞች አንድ ዓይነት ስህተት ከነበረ ተመልሰው ይሂዱ እና ቤተ -መጽሐፍቶቹ መጫናቸውን እና በፓይዘን አቃፊው ውስጥ ባለው የሊብ አቃፊ ውስጥ መሆናቸውን ያረጋግጡ። ቀጥሎ እኔ የፒዮቶሎገር ቤተ -መጽሐፍት ብዬ የጠራሁትን እናመነጫለን። ይህ ስም አስፈላጊ አይደለም ፣ የፈለጉትን ሊደውሉት ይችላሉ ፣ እሱ የፈጠሩት የፓይዘን ፋይል ስም (.py) ብቻ ነው።

የጽሑፍ አርታኢን ይክፈቱ ፣ እኔ Sublime3 ን እጠቀማለሁ ፣ ግን የማስታወሻ ደብተር በትክክል ይሠራል እና ይህንን ኮድ ያስገቡ።

def pythonprint ():

pythonlogger ማስመጣት ተከታታይ የማስመጣት ጊዜ ማስመጣት csv ser = serial. Serial ('COM8') # COM8 የአርዱዲኖ ተከታታይ ወደብ ነው ፣ ይህ ለእያንዳንዱ ተጠቃሚ የተለየ ሊሆን ይችላል ፣ ማለትም በአርዲኖ አይዲኢ ser.flushInput () ውስጥ የእርስዎን ተከታታይ ወደብ ይመልከቱ። እውነት: ይሞክሩት ser_bytes = ser.readline () ህትመት (ser_bytes) ክፍት ("test_data.csv", "a") እንደ f: writer = csv.writer (f, delimiter = ",") # ውሂቡን ያስቀምጣል በነጠላ ሰረዝ ተለያይቷል። ጸሐፊ።

በሊብ አቃፊ ውስጥ "የሚፈልጉትን የቤተ -መጽሐፍት ስም ያስገቡ".py የሚለውን ጽሑፍ ያስቀምጡ። እንዲሁም የ defi Pythonprint () መስመር እርስዎ የሚጠሩትን ተግባር ስም እንደሚገልጽ ልብ ይበሉ ፣ ስለዚህ ያንን “ለተግባርዎ የሚፈልጉትን ስም ያስገቡ” () ን ለመቀየር ይችላሉ። ቤተ -መጽሐፍት ሲቀመጥ ወደ አርዱዲኖ ኮድ መቀጠል እንችላለን።

የአሩዲኖ አይዲኢን ይክፈቱ እና ሁለት አዲስ የስዕል መስኮቶችን ይክፈቱ። እነዚያን ሁለት ረቂቅ ፋይሎች ምቹ በሆነ ቦታ ያስቀምጡ ፣ የእነዚህ ፋይሎች ስም ምንም አይደለም። ከዚያ ሁሉንም ነባሪ ኮድ ይሰርዙ እና በሚከተለው ይተኩት።

ለተቀበለው አርዱዲኖ

#ያካትቱ

#ያካትቱ #ያካትቱ #ያካትቱ // ይህ ጥቅም ላይ አልዋለም ነገር ግን የ RH_ASK ነጂን ለማጠናቀር ያስፈልጋል ፣ የተዋቀረ ውሂብStruct {float temp; } myData; ባዶነት ማዋቀር () {Serial.begin (9600); // ማረም ((driver.init ()) Serial.println ("init failed") ከሆነ ብቻ; } ባዶነት loop () {uint8_t buf [RH_ASK_MAX_MESSAGE_LEN]; uint8_t buflen = sizeof (buf); ከሆነ (driver.recv (buf, & buflen)) // የማያግድ {int i; // ጥሩ ቼክ የተቀበለው መልእክት ፣ ጣለው። //driver.printBuffer("Got: ", buf, buflen); memcpy (& myData ፣ buf ፣ sizeof (myData)); Serial.println (""); Serial.print (myData.temp); }}

ፒ.ኤስ. የ //driver.printBuffer…. ወዘተ መስመር የሙከራ ኮድ ነው። ምርመራዎችን ካላደረጉ እና በትክክል ውሂብ እየተቀበሉ እንደሆነ ለማወቅ ካልፈለጉ በስተቀር ስለሱ መጨነቅ አያስፈልግም።

ለአስተላላፊው አርዱዲኖ

#ያካትቱ

#አካትት #አካትት #አካትት // ይህ ጥቅም ላይ አልዋለም ነገር ግን ለማቀናበር የሚያስፈልገው #ማካተት #ኢንቴን ፒን = 4; DHT11 dht11 (ፒን); RH_ASK ሾፌር; የተዋቀረ ውሂብStruct {float temp; } myData; ባይት tx_buf [sizeof (myData)] = {0}; // ስለዚህ ክርክሮች ቢትሬት ናቸው ፣ ፒን (tx) ያስተላልፋሉ ፣ // ፒን ይቀበሉ (rx) ፣ ppt pin ፣ isverse። የመጨረሻዎቹ 2 ጥቅም ላይ አልዋሉም። ማዋቀርን ያስወግዱ () {Serial.begin (9600) ፤ // ማረም ((driver.init ()) Serial.println ("init failed") ከሆነ ብቻ; } void loop () {int err; ተንሳፋፊ የሙቀት መጠን ፣ ሁሚ; uint8_t msg; ከሆነ ((err = dht11.read (humi, temp)) == 0) myData.temp = temp; memcpy (tx_buf ፣ & myData ፣ sizeof (myData)); ባይት zize = sizeof (myData); {Serial.println (myData.temp) ፤ driver.send ((uint8_t *) tx_buf, zize); driver.waitPacketSent (); // ሁሉም መረጃዎች መዘግየት (2000) እስኪላክ ድረስ አፈፃፀሙን ያቁሙ። // 2 ሰከንዶች ይጠብቁ}}

የተካተቱት ትዕዛዞች በቂ መሆን አለባቸው ፣ ግን በኋላ ላይ በውሂብ ማስተላለፍ ላይ ችግሮች ካጋጠሙዎት በ RadioHead ቤተ -መጽሐፍት አቃፊ ውስጥ ማየት እና ቀሪውን የፋይል ስሞች በተመሳሳይ ቅርጸት ማካተት ይፈልጉ ይሆናል።

ደረጃ 5: እንዲሠራ ማድረግ

እንዲሰራ ማድረግ
እንዲሰራ ማድረግ
እንዲሰራ ማድረግ
እንዲሰራ ማድረግ
እንዲሰራ ማድረግ
እንዲሰራ ማድረግ

አሁን ሁሉም ኮዱ አንድ ላይ አለን እና አርዱዲኖ ተሰብስቧል ፣ አርዱዲኖን ወደ ኮምፒተርዎ ማያያዝ እና ኮዱን መጫን እንችላለን። ማይክሮ መቆጣጠሪያዎችን ወደሚቀበለው እና ወደሚያስተላልፈው ትክክለኛውን ኮድ መላክዎን ያረጋግጡ። ይህ በሚሠራበት ጊዜ ሁለቱንም አርዱኢኖዎች ከኮምፒዩተርዎ ጋር እንዲገናኙ ማድረግ ይችላሉ ፣ ነገር ግን ወደፊት የሚሄድ ትክክለኛ ወደብ እንዳለዎት ማረጋገጥ አለብዎት ፣ ወይም ኮዱ አንዴ ከተላለፈ የማሰራጫውን አርዱዲኖ ማለያየት እና ከሌላ ምንጭ ኃይል መስጠት ይችላሉ። ተሰቅሏል።

ስለእሱ ስናገር አሁን ከመቀበያ አርዱinoኖ ጋር የተገናኘውን ወደብ ከ IDE መሣሪያዎች ምናሌ አሁን መምረጥ እና ፓይዘን ማሄድ አለብዎት።

ይህንን በሚያደርጉበት ጊዜ ተከታታይ ማሳያውን አይክፈቱ ፣ ተቆጣጣሪው ክፍት ሆኖ ሳለ ፓይዞን ተከታታይ ማንበብ አይችልም። አንዴ ፓይዘን ከተከፈተ በኋላ የ Pythonprint ተግባሩን እንደሚከተለው ይደውሉ።

pythonlogger.pythonprint ()

ይህ ከአርዱዲኖ ተከታታይ ወደብ የመረጃ መሰብሰቡን ይጀምራል። አሁን የፓይዘን አቃፊዎን ከከፈቱ ፣ ሁሉንም ጊዜ እና የሙቀት መረጃ የሚይዝ “test_data.csv” የተባለ አዲስ.csv ፋይል እንደተፈጠረ ያያሉ። ይህ ማትላብ ሁሉንም ስሌቶቹን እና መቆጣጠሪያዎቹን ለማድረግ የሚደርስበት ፋይል ይሆናል።

ሌላ ማስጠንቀቂያ ፦ ውሂቡ እየተደረሰበት ወይም እየተጻፈ ሳለ test_data.csv ን አይክፈቱ። እርስዎ ካደረጉ ፣ ፓይዘን እና/ወይም የማትላብ ኮድ ይሰናከላሉ እና አንድ ስህተት ይልካሉ።

. Csv ን በኋላ ለመክፈት ከወሰኑ ፣ የጊዜ ዓምድ በጣም ትልቅ የቁጥሮች ሕብረቁምፊ መሆኑን ያስተውላሉ። ይህ የሆነው የ time.time () ትዕዛዙ ከጃንዋሪ 1 ቀን 1970 ጀምሮ የሰከንዶችን ቁጥር ስለሚጽፍ ነው።

በዚህ ጊዜ ፓይዘን ከሲሪያል ወደብ እያነበበ ያለውን የሙቀት መጠን መረጃ ማተም አለበት። እንደዚህ ያለ ነገር መታየት አለበት-

b'25.03 '/r/n

ስለ ተጨማሪ ቁምፊዎች አይጨነቁ ፣ የማትላብ ኮድ በ.csv ፋይል በሁለተኛው ዓምድ ውስጥ ለመካከለኛዎቹ አምስት እሴቶች መረጃ ጠቋሚዎች።

አሁን ሁሉም የድጋፍ መርሃ ግብሮች እየሠሩ እና መረጃ እየተሰበሰበ ስለሆነ ቀደም ሲል ከተዋቀረው የማትላብ ሞባይል ፕሮግራም የጂፒኤስ መረጃን መሰብሰብ እና የማትላብ GUI ኮዱን ማካሄድ እንችላለን። በማትላብ ሞባይል አነፍናፊ ትር ውስጥ ከገቡ በኋላ ጂፒኤስን ይምረጡ እና የመነሻ ቁልፍን ይምቱ።

ለማትላብ ሞባይል አዲስ ከሆኑ ወደ ደረጃ 4 ይመለሱ እና ከላይ ያሉትን ማያ ገጾች ይመልከቱ። አሁንም ችግሮች እያጋጠሙዎት ከሆነ ፣ ቀደም ብለው ከመረጡት ኮምፒተር (በቅንብሮች ትር ውስጥ) ጋር መገናኘታቸውን ያረጋግጡ እና ማትላብ መስመር ላይ መሆኑን ለመፈተሽ ከ “አገናኝ ላይ” ትዕዛዙ አገናኙን ይጠቀሙ።

ደረጃ 6 - ፕሮግራሙን መጠቀም

ፕሮግራሙን በመጠቀም
ፕሮግራሙን በመጠቀም

በዚህ ሥርዓት ውስጥ ከበስተጀርባ በርካታ ነገሮች አሉ። የሙቀት መረጃ በአርዱዲኖ እና በፒቶን እየተሰበሰበ እና እየተመዘገበ ነው ፣ ማትላብ ከእርስዎ ቤት ምን ያህል ርቀዎት እንደሆነ ለማወቅ እና ያንን ሁሉ መረጃ መሠረት በማድረግ ቴርሞስታትዎን በማስተካከል ከስልክዎ የጂፒኤስ መረጃን እየሰበሰበ እና ስሌቶችን ያካሂዳል። የገቡበት ምርጫዎችዎን እያቀረበ ነው።

የማትላብ GUI ኮድ ያሂዱ። የ.mlapp ፋይልን ይክፈቱ እና የመጀመሪያውን ትር ይመልከቱ። ለእራስዎ መረጃውን መሰብሰብ ያስፈልግዎታል ፣ የማሞቂያ/የማቀዝቀዣ ክፍልዎ ቅልጥፍና እና የኃይል ደረጃ ብዙውን ጊዜ በእራሱ ክፍል ላይ ሊገኝ ይችላል ፣ እና አማካይ ፍጥነትዎ ምን ያህል በፍጥነት እንደሚነዱ ጥሩ ግምት ብቻ ነው። እሴቶቹ አንዴ ከገቡ በኋላ “ምርመራን አሂድ” የሚለውን ቁልፍ ይምቱ እና ፕሮግራሙ ስለ ቤትዎ መረጃ ለመሰብሰብ ቴርሞስታትዎን ይቆጣጠራል።

ወደሚቀጥለው ምናሌ ይሂዱ።

ደረጃ 7 - የሙቀት መቆጣጠሪያ

የሙቀት መቆጣጠሪያ
የሙቀት መቆጣጠሪያ

ይህ ምናሌ እርስዎ እና ከቤት ውጭ በሚሆኑበት ጊዜ እርስዎ የሚመርጠውን የሙቀት መጠን እንዲመርጡ ያስችልዎታል። የሙቀት መጠንዎን 1 ወደ ምቹ የሙቀት መጠንዎ ያኑሩ ፣ እና የሙቀት መጠን #2 ለቤትዎ ደህንነቱ የተጠበቀ ወደሆነ ከፍተኛ ወይም ዝቅተኛ እሴት (ቤት ውስጥ ውሾች ሲኖሩት 100 ዲግሪ እንዳያስቀምጡት ያረጋግጡ)።

ደረጃ 8 - ታሪካዊ መረጃ

ታሪካዊ መረጃ
ታሪካዊ መረጃ

በመጨረሻ አውቶማቲክ መቆጣጠሪያውን በመጠቀም ምን ያህል ገንዘብ እንደሚቆጥብ ማየት ይችላሉ። ይህ በዋናነት የእርስዎ ቴርሞስታት ወደ ተመራጭ የሙቀት መጠንዎ 24/7 ከተዋቀረ ምን ያህል ኃይል ጥቅም ላይ እንደሚውል ይገምታል ፣ ከዚያ ያገለገለውን ትክክለኛ ኃይልዎን ይቀንሳል።

መልካም ዕድል ግንባታ።

የሚመከር: