Rejestrator danych historii termostatu Nest: 6 kroków (ze zdjęciami)
Rejestrator danych historii termostatu Nest: 6 kroków (ze zdjęciami)
Anonim
Rejestrator danych historii termostatu Nest
Rejestrator danych historii termostatu Nest

Termostat Nest śledzi temperaturę, wilgotność i zużycie pieca/AC, a użytkownicy mogą wyświetlać dane historyczne tylko przez 10 dni. Chciałem zebrać dane historyczne (>10 dni) i natknąłem się na skrypt arkuszy kalkulacyjnych Google, który pinguje zagnieżdżanie za każdym razem, a także pobiera lokalne dane pogodowe z openweathermap.org i zapisuje w arkuszu kalkulacyjnym.

Wszystko szło dobrze przez rok, a skrypt nagle przestał zbierać dane. Po kilku poszukiwaniach w Google zdałem sobie sprawę, że jeden wiersz co 5 minut dla arkusza kalkulacyjnego Google oznacza osiągnięcie maksymalnego limitu komórek, które może pomieścić arkusz kalkulacyjny Google. Zaktualizowałem oryginalny skrypt, aby nadal pingował Nest co 5 minut, ale zbierałem dane w 1 rzędzie dziennie. Skrypt sprawdza ostatni wiersz i jeśli jest to ten sam dzień, to dołącza dane do tego samego wiersza zamiast dodawać nowy wiersz.

Kredyt za oryginalny scenariusz. Wprowadziłem tylko kilka zmian, które pasują do moich potrzeb.

// praca michaela-pesce: https://gist.github.com/michael-pesce/a4ba55d4fc4…// praca BEEZLY:

Słowa kluczowe: historia Nest Thermostat, Nest Heat, Nest Temperature History, Nest Thermostat Hack, Nest Thermostat Tips, Nest Energy History, Nest Codzienne użytkowanie, Nest Codzienne użytkowanie, Pobieranie danych termostatu Nest

Krok 1: Utwórz nowy arkusz Google (zapisz jako w moim udostępnionym arkuszu kalkulacyjnym)

Utwórz nowy arkusz Google (zapisz jako w moim udostępnionym arkuszu kalkulacyjnym)
Utwórz nowy arkusz Google (zapisz jako w moim udostępnionym arkuszu kalkulacyjnym)

Zacznij od mojego udostępnionego arkusza Google, do którego link znajduje się poniżej (Otwórz ten plik i kliknij Plik, a następnie „zrób kopię” i zapisz na dysku Google).

PS: Nie proś mnie o pozwolenie na edycję tego pliku. Zanim wprowadzisz jakiekolwiek zmiany, których nie będziesz mógł wprowadzić, ponieważ udostępniłem to jako arkusz kalkulacyjny tylko do odczytu, wykonaj „zrób kopię” na swoim dysku Google, a następnie kontynuuj wprowadzanie zmian.

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

Do osób, które mają problemy z autoryzacją: Wypróbuj skrypt w następującym pliku. Posiada dodatkową funkcjonalność związaną z nowymi protokołami autoryzacyjnymi Nest 2.0. Nie próbowałem tego, więc jeśli natkniesz się na jakiekolwiek pytania lub problemy, napisz w sekcji komentarzy. Kredyt do mcr2582.

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

Kolejna odmiana skryptu autorstwa Coder56: Dodatkowe szczegóły w sekcji komentarzy. Nie próbowałem tego, ale skrypt jest bardzo dobrze zorganizowany i wydaje się, że działa dobrze dla wielu użytkowników.

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

Krok 2: Skopiuj skrypt

Pomiń ten krok, jeśli zapisałeś kopię na moim udostępnionym arkuszu Google.

  • Na pasku menu kliknij Narzędzia -> Edytor skryptów…, aby otworzyć Edytor skryptów (nowe okno)
  • W edytorze skryptów usuń wszystkie domyślne skrypty/pliki i utwórz nowy (nazwałem go „NestScript.gs”)
  • Wytnij i wklej cały tekst z załączonego pliku do NestScript.gs, a następnie ZAPISZ SKRYPT (W tym kroku użyj skryptu z arkusza Google, który udostępniłem w kroku 1. Jeśli zapisałeś kopię tego pliku, powinien już mieć skrypt. Jeśli tego nie zrobiłeś, możesz otworzyć ten plik i przejść do sekcji skryptu i skopiować tekst. Usunąłem plik tekstowy skryptu, który był dołączony do tego kroku, ponieważ nie był aktualny i może powodować zamieszanie.).

Krok 3: Wdróż jako aplikację internetową

Wdróż jako aplikację internetową
Wdróż jako aplikację internetową
Wdróż jako aplikację internetową
Wdróż jako aplikację internetową
  • Na pasku menu kliknij Narzędzia -> Edytor skryptów…, aby otworzyć Edytor skryptów (nowe okno)
  • Na pasku menu kliknij Opublikuj -> Wdróż jako aplikację internetową
  • Wybierz „Uruchom aplikację jako ja”
  • Wybierz Kto ma dostęp do aplikacji: „Każdy, nawet anonimowy”
  • Skopiuj/zanotuj link do nowej aplikacji internetowej na razie, a zostanie on dodany do poniższej procedury runDataCollection (pierwszy kod) w kolejnych krokach.

Krok 4: Wyzwalacze

Wyzwalacze
Wyzwalacze
Wyzwalacze
Wyzwalacze
Wyzwalacze
Wyzwalacze

Tutaj określasz, jak często zbierać dane.

  • Na pasku menu kliknij Wyzwalacze bieżącego projektu
  • Kliknij dodaj nowy wyzwalacz
  • W polu Uruchom wybierz funkcję runDataCollection, Zdarzenia: sterowane czasem, a resztę wybierz według własnych preferencji (robię co 5 minut)

Krok 5: Dodatkowe informacje w skrypcie

Dodatkowe informacje w skrypcie
Dodatkowe informacje w skrypcie
Dodatkowe informacje w skrypcie
Dodatkowe informacje w skrypcie
Dodatkowe informacje w skrypcie
Dodatkowe informacje w skrypcie

Zmodyfikujmy skrypt do konkretnego termostatu, miasta i arkusza Google.

Każda zmiana jest wymieniona z numerem wiersza skryptu. Będziesz musiał przejść do tej linii w skrypcie i zaktualizować zgodnie z poniższymi instrukcjami. (Numery wierszy powinny być poprawne, jeśli wiersz 40 to „runDataCollection()…”).

  • Linia 45: dodaj link do aplikacji internetowej w routingu runDataCollection (to, co zauważyłeś w jednym z poprzednich kroków)
  • Linia 53: Zagnieżdżenie nazwy użytkownika i hasła
  • Linia 77: Identyfikator termostatu

Możesz uzyskać identyfikator każdego termostatu, przechodząc do pulpitu nawigacyjnego Nest, klikając Termostat, klikając ikonę koła zębatego w prawym górnym rogu, a następnie kopiując pole „Numer seryjny”. Będzie to wyglądać mniej więcej tak: 02XX01XX471XXX3S

Wiersz 90: Identyfikator miasta (dodatkowe instrukcje w skrypcie nad tym wierszem mogą być pomocne)

Aby znaleźć identyfikator miasta, przejdź do „https://openweathermap.org/find?q= wyszukaj swoje miasto, kliknij link do miasta, a identyfikatorem będzie 7-cyfrowa liczba w adresie URL

Wiersz 103: identyfikator arkusza Google (dodatkowe instrukcje w skrypcie powyżej tego wiersza mogą być pomocne)

Identyfikator arkusza można pobrać z adresu URL arkusza Zobacz ten wzorzec, aby sprawdzić, gdzie w adresie URL znajduje się identyfikator arkusza:https://docs.google.com/spreadsheets/d/THIS_IS_WHERE_THE_SHEET_ID_IS/edit#gid=123456789

Krok 6: Sfinalizuj arkusz kalkulacyjny

Pomiń ten krok, jeśli zacząłeś od mojego udostępnionego arkusza kalkulacyjnego.

Te dwa wiersze muszą znajdować się w arkuszu kalkulacyjnym, aby kod działał.

Pierwszy wiersz (wiersz nagłówka): Spacja oddziela kolumny

Data/Godzina Miesiąc Dzień Rok Temp Wilgotność OutsideTemp OutsideHumidity Heat_Usage AC_Usage Pogoda AutoAway

Druga linia:

Dodaj wczorajszą datę w pierwszej kolumnie i zera w pozostałych kolumnach.

To jest to. Uruchom skrypt, który powinien dodać jeden wiersz dziennie i pingować termostat i lokalną pogodę w celu uzyskania danych zgodnie z ustawioną częstotliwością wyzwalania.

Jeśli ponownie wdrożysz aplikację internetową, użyj nowej wersji. Miałem problemy z używaniem tych samych wersji, gdy skrypt nie działał

Jeśli skrypt nie działa, przejdź ponownie do poprzednich kroków i upewnij się, że poprawnie zaktualizowałeś skrypt zgodnie z sugestiami tych kroków. Jest to najbardziej prawdopodobna przyczyna problemu z niedziałającym skryptem

Znane problemy (jeśli ktoś zna rozwiązanie, odpowiedz w sekcji komentarzy):

1) Skrypt nie pobiera danych z gniazda w ciągu dnia. Mam spust co 5 minut, co powinno dać w sumie 288 odczytów w ciągu dnia. Dostaję ~170. Najniższy, jaki otrzymałem, to 16, a najwyższy to 264.