เครื่องบันทึกข้อมูลประวัติ Nest Thermostat: 6 ขั้นตอน (พร้อมรูปภาพ)
เครื่องบันทึกข้อมูลประวัติ Nest Thermostat: 6 ขั้นตอน (พร้อมรูปภาพ)
Anonim
เครื่องบันทึกข้อมูลประวัติ Nest Thermostat
เครื่องบันทึกข้อมูลประวัติ Nest Thermostat

Nest thermostat ติดตามอุณหภูมิ ความชื้น และการใช้เตาเผา/ไฟฟ้ากระแสสลับ และผู้ใช้จะดูข้อมูลย้อนหลังได้เพียง 10 วันเท่านั้น ฉันต้องการรวบรวมข้อมูลในอดีต (>10 วัน) และพบสคริปต์ของ Google สเปรดชีตที่ส่ง Ping ซ้อนทุก ๆ เวลาที่ตั้งไว้ และรับข้อมูลสภาพอากาศในท้องถิ่นจาก openweathermap.org และบันทึกในสเปรดชีต

ทุกอย่างเป็นไปด้วยดีเป็นเวลาหนึ่งปี และสคริปต์ก็หยุดรวบรวมข้อมูลในทันที หลังจากค้นหาโดย Google ฉันรู้ว่าหนึ่งแถวทุกๆ 5 นาทีสำหรับ Google spreadhseet หมายถึงการกดปุ่มถึงขีด จำกัด สูงสุดของเซลล์ที่ Google สเปรดชีตสามารถรองรับได้ ฉันอัปเดตสคริปต์ดั้งเดิมให้ยังคง ping Nest ทุก 5 นาที แต่รวบรวมข้อมูลใน 1 แถวต่อวัน สคริปต์ตรวจสอบแถวสุดท้ายและหากเป็นวันเดียวกัน สคริปต์จะผนวกข้อมูลในแถวเดียวกันแทนที่จะเพิ่มแถวใหม่

เครดิตสคริปต์ต้นฉบับ ฉันเพิ่งทำการแก้ไขเล็กน้อยเพื่อให้เหมาะกับความต้องการของฉัน

// งานของ michael-pesce: https://gist.github.com/michael-pesce/a4ba55d4fc4…// งานของ BEEZLY:

คำสำคัญ: ประวัติ Nest Thermostat, Nest Heat, Nest Temperature History, Nest Thermostat Hack, Nest Thermostat Tips, ประวัติ Nest Energy, Nest Daily Use, Nest Daily Usage, ดาวน์โหลดข้อมูล Nest Thermostat

ขั้นตอนที่ 1: สร้าง Google ชีตใหม่ (บันทึกเป็นในสเปรดชีตที่แชร์ของฉัน)

สร้าง Google ชีตใหม่ (บันทึกเป็นในสเปรดชีตที่แชร์ของฉัน)
สร้าง Google ชีตใหม่ (บันทึกเป็นในสเปรดชีตที่แชร์ของฉัน)

เริ่มต้นด้วย Google แผ่นงานที่ใช้ร่วมกันของฉันที่ลิงก์ด้านล่าง (เปิดไฟล์นั้นแล้วคลิกไฟล์ จากนั้น "ทำสำเนา" และบันทึกใน Google ไดรฟ์ของคุณ)

PS: อย่าขอให้ฉันอนุญาตให้คุณแก้ไขไฟล์นี้ ก่อนที่คุณจะทำการเปลี่ยนแปลงใดๆ ซึ่งคุณจะไม่สามารถทำการเปลี่ยนแปลงได้ เนื่องจากฉันแชร์สิ่งนี้เป็นสเปรดชีตแบบอ่านอย่างเดียว ให้ทำการ "ทำสำเนา" ใน Google ไดรฟ์ของคุณเอง แล้วดำเนินการแก้ไขต่อไป

docs.google.com/spreadsheets/d/1zTHUfiltWomhPYmfD3TYRRoJZsgcjrQ_A2xHSTK5_dE/edit?usp=sharing

สำหรับผู้ที่มีปัญหาเกี่ยวกับการให้สิทธิ์: ลองใช้สคริปต์ในไฟล์ต่อไปนี้ มีฟังก์ชันเพิ่มเติมที่เกี่ยวข้องกับโปรโตคอลการอนุญาต 2.0 ใหม่ของ Nest ฉันไม่ได้ลอง ดังนั้นหากคุณพบปัญหาหรือปัญหาใด ๆ โปรดโพสต์ในส่วนความคิดเห็น ให้เครดิตกับ mcr2582

www.dropbox.com/s/8rbtg7pb0xl9n9x/nest%20t…

รูปแบบอื่นของสคริปต์โดย Coder56: รายละเอียดเพิ่มเติมในส่วนความคิดเห็น ฉันไม่ได้ลอง แต่สคริปต์ได้รับการจัดระเบียบเป็นอย่างดีและดูเหมือนว่าจะทำงานได้ดีสำหรับผู้ใช้หลายคน

docs.google.com/spreadsheets/d/15bTn9_Cv9I…

ขั้นตอนที่ 2: คัดลอกสคริปต์

ข้ามขั้นตอนนี้หากคุณได้บันทึกสำเนาไว้ใน Google ชีตที่แชร์ของฉัน

  • บนแถบเมนู คลิก เครื่องมือ -> ตัวแก้ไขสคริปต์… เพื่อเปิด ตัวแก้ไขสคริปต์ (หน้าต่างใหม่)
  • ใน Script Editor ให้ลบสคริปต์/ไฟล์เริ่มต้นทั้งหมด และสร้างใหม่ (ฉันเรียกมันว่า "NestScript.gs")
  • ตัดและวางข้อความทั้งหมดนี้จากไฟล์ที่แนบมาใน NestScript.gs จากนั้นบันทึกสคริปต์ (สำหรับขั้นตอนนี้ โปรดใช้สคริปต์จาก Google ชีตที่ฉันแชร์ในขั้นตอนที่ 1 หากคุณบันทึกสำเนาในไฟล์นั้น คุณ ควรมีสคริปต์อยู่แล้ว หากคุณไม่ได้เปิดไฟล์นั้นและไปที่ส่วนสคริปต์แล้วคัดลอกข้อความที่ผ่านมา ฉันลบไฟล์ข้อความสคริปต์ที่แนบมากับขั้นตอนนี้เนื่องจากไม่ทันสมัยและอาจสร้างความสับสน.)

ขั้นตอนที่ 3: ปรับใช้เป็นเว็บแอป

ปรับใช้เป็นเว็บแอป
ปรับใช้เป็นเว็บแอป
ปรับใช้เป็นเว็บแอป
ปรับใช้เป็นเว็บแอป
  • บนแถบเมนู คลิก เครื่องมือ -> ตัวแก้ไขสคริปต์… เพื่อเปิด ตัวแก้ไขสคริปต์ (หน้าต่างใหม่)
  • บนแถบเมนู ให้คลิก เผยแพร่ -> ปรับใช้เป็น Web App
  • เลือก "เรียกใช้แอปในฐานะฉัน"
  • เลือกว่าใครมีสิทธิ์เข้าถึงแอป: "ใครก็ได้ แม้กระทั่งไม่ระบุชื่อ"
  • คัดลอก/จดลิงก์ไปยังเว็บแอปใหม่ของคุณในตอนนี้ และจะถูกเพิ่มไปยังรูทีน runDataCollection ด้านล่าง (โค้ดแรก) ในขั้นตอนถัดไป

ขั้นตอนที่ 4: ทริกเกอร์

ทริกเกอร์
ทริกเกอร์
ทริกเกอร์
ทริกเกอร์
ทริกเกอร์
ทริกเกอร์

นี่คือที่ที่คุณกำหนดความถี่ในการรวบรวมข้อมูล

  • บนแถบเมนู คลิกทริกเกอร์ของโปรเจ็กต์ปัจจุบัน
  • คลิกเพิ่มทริกเกอร์ใหม่
  • สำหรับ Run เลือกฟังก์ชัน runDataCollection, Events: time-driven และเลือกส่วนที่เหลือตามความต้องการของคุณ (ฉันทำทุกๆ 5 นาที)

ขั้นตอนที่ 5: ข้อมูลเพิ่มเติมใน Script

ข้อมูลเพิ่มเติมในสคริปต์
ข้อมูลเพิ่มเติมในสคริปต์
ข้อมูลเพิ่มเติมในสคริปต์
ข้อมูลเพิ่มเติมในสคริปต์
ข้อมูลเพิ่มเติมในสคริปต์
ข้อมูลเพิ่มเติมในสคริปต์

มาแก้ไขสคริปต์ให้เข้ากับตัวควบคุมอุณหภูมิ เมือง และ Google ชีตของคุณ

การเปลี่ยนแปลงแต่ละรายการจะแสดงด้วยหมายเลขบรรทัดของสคริปต์ คุณจะต้องไปที่บรรทัดนั้นในสคริปต์และอัปเดตตามคำแนะนำด้านล่าง (หมายเลขบรรทัดควรถูกต้องหากบรรทัดที่ 40 คือ "runDataCollection()…")

  • บรรทัดที่ 45: เพิ่มลิงค์ webapp ในการกำหนดเส้นทาง runDataCollection (นี่คือสิ่งที่คุณระบุไว้ในขั้นตอนใดขั้นตอนหนึ่งก่อนหน้านี้)
  • บรรทัดที่ 53: ชื่อผู้ใช้และรหัสผ่านของ Nest
  • บรรทัดที่ 77: ID อุปกรณ์เทอร์โมสตัท

คุณสามารถรับรหัสสำหรับตัวควบคุมอุณหภูมิแต่ละตัวได้โดยไปที่แดชบอร์ดของ Nest คลิกที่ตัวควบคุมอุณหภูมิ คลิกไอคอนรูปเฟืองที่ด้านบนขวา จากนั้นคัดลอกช่อง "หมายเลขซีเรียล" จะมีลักษณะดังนี้: 02XX01XX471XXX3S

บรรทัดที่ 90: City ID (คำแนะนำเพิ่มเติมในสคริปต์ด้านบนบรรทัดนี้อาจเป็นประโยชน์)

หากต้องการค้นหารหัสเมือง ไปที่ "https://openweathermap.org/find?q=" ค้นหาเมืองของคุณ คลิกที่ลิงค์เมืองและ ID จะเป็นตัวเลข 7 หลักใน URL

บรรทัดที่ 103: Google ชีต ID (คำแนะนำเพิ่มเติมในสคริปต์ด้านบนบรรทัดนี้อาจเป็นประโยชน์)

รหัสชีตสามารถดึงมาจากชีต URL ดูรูปแบบนี้สำหรับตำแหน่งที่รหัสชีตอยู่ใน URL:https://docs.google.com/spreadsheets/d/THIS_IS_WHERE_THE_SHEET_ID_IS/edit#gid=123456789

ขั้นตอนที่ 6: จบสเปรดชีต

ข้ามขั้นตอนนี้หากคุณเริ่มต้นด้วยสเปรดชีตที่แชร์ของฉัน

สองบรรทัดนี้ต้องอยู่ในสเปรดชีตเพื่อให้โค้ดทำงานได้

บรรทัดแรก (แถวส่วนหัว): ช่องว่างคั่นคอลัมน์

วันที่/เวลา เดือน วัน ปี อุณหภูมิ ความชื้น ภายนอก อุณหภูมิ ภายนอก ความชื้น ความร้อน_การใช้งาน AC_Usage สภาพอากาศ อัตโนมัติ

บรรทัดที่สอง:

เพิ่มวันที่ของเมื่อวานในคอลัมน์แรกและศูนย์ในคอลัมน์ที่เหลือ

อย่างนั้นแหละ. ปล่อยให้สคริปต์ทำงานและควรเพิ่มหนึ่งแถวต่อวัน แล้วส่ง Ping ตัวควบคุมอุณหภูมิและสภาพอากาศในท้องถิ่นของคุณเพื่อรับข้อมูลตามความถี่ทริกเกอร์ที่คุณตั้งไว้

หากคุณปรับใช้เว็บแอปอีกครั้ง ให้ใช้การแก้ไขใหม่ ฉันมีปัญหาในการใช้การแก้ไขแบบเดียวกันโดยที่สคริปต์ไม่ทำงาน

หากสคริปต์ไม่ทำงาน ให้ทำตามขั้นตอนก่อนหน้าอีกครั้ง และตรวจสอบให้แน่ใจว่าคุณได้อัปเดตสคริปต์ตามที่แนะนำโดยขั้นตอนเหล่านี้อย่างถูกต้อง นี่เป็นสาเหตุที่เป็นไปได้มากที่สุดของปัญหาที่สคริปต์ไม่ทำงาน

ปัญหาที่ทราบ (หากใครรู้วิธีแก้ไขโปรดตอบกลับในส่วนความคิดเห็น):

1) สคริปต์ล้มเหลวในการรับข้อมูลจากรังตลอดทั้งวัน ฉันมีทริกเกอร์ของฉันทุกๆ 5 นาที ซึ่งควรส่งผลให้มีการอ่านทั้งหมด 288 ครั้งตลอดทั้งวัน ฉันได้รับ ~ 170 ต่ำสุดที่ฉันได้รับคือ 16 และสูงสุดคือ 264