Spisu treści:
2025 Autor: John Day | [email protected]. Ostatnio zmodyfikowany: 2025-01-13 06:58
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)
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ą
- 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
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
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.