Elektroda.pl
Elektroda.pl
X
Elektroda.pl
PCBway
Proszę, dodaj wyjątek dla www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

Bezprzewodowe czujniki temperatury dla inteligentnego domu

krzbor 11 Maj 2019 17:32 3930 29
  • Bezprzewodowe czujniki temperatury dla inteligentnego domu
    Witam wszystkich.
    Postanowiłem się podzielić z Wami moimi doświadczeniami z bezprzewodowymi czujnikami temperatury dla inteligentnego domu. Inteligentny dom buduję, tak jak wiele osób, na ESP8266. Do tej pory były to sterowniki – bramy, garażu, ogrzewania, domofonu, alarmu. Wszystkie te układy mają dostęp do zasilania (230V lub 12V). Układy były zamykane w standardowych obudowach i nie były na eksponowanych, widocznych miejscach. Elektroniką zajmuję się czysto amatorsko i swoje układy buduję na płytkach uniwersalnych. W przypadku pojedynczej sztuki nie stanowi to problemu – jest to szybkie i wygodne. Opanowałem sztukę takiego rozmieszczania elementów i doginania wyprowadzeń, że „ścieżki” powstają niejako same, a ilość połączeń osobnymi przewodami jest minimalna. Stanąłem jednak przed problemem przygotowania czujników temperatury dla każdego pomieszczenia – 6 sztuk. Czujniki te z założenia miały mierzyć temperatury w sposób reprezentatywny – nie mogłem ich ukryć na szafie, czy za meblami. Do tego miały być zasilane bateryjnie/akumulatorowo i chciałem uzyskać czas działania min. 6 miesięcy lub nawet lepiej – 1 rok przy interwale wysyłanych danych co 5 minut. Klasyczne rozwiązania oparte o ESP nie podołają temu, a do tego wymagałyby zasilania z dwóch baterii AA lub akumulatorów LiFePo4. Akumulatory Li-Ion w pełnym naładowaniu mają za wysokie napięcie i wymagają stabilizatora, który będzie pochłaniał dodatkowe uA. Wymyśliłem więc układ oparty o ATTINY 2313 i ESP. ATTINY robi cały pomiar i staruje ESP poprzez CH_PD i UART. Mam już jeden termometr własnej konstrukcji oparty o ATTINY i nadajnik Telecontrolli. Na trzech bateriach AAA pracuje kilka lat. Układy ATTINY naprawdę są bardzo oszczędne jeśli się odpowiednio je oprogramuje, wyłączy zbędne moduły i nie pozostawi wejść bez podciągania. Dodatkowo układ ten może pełnić funkcję Watchdoga dla ESP, jeśli ten nie potwierdzi wysyłki w zadanym czasie. Oczywiście ESP musi pracować na stałym IP i przesyłać dane na lokalny serwer, także identyfikowany po IP. Jednak po przemyśleniu całości przyszło zniechęcenie – niezbyt mi się podobała koncepcja zastosowania dwóch procesorów aby zmierzyć temperaturę, podejrzewałem też kłopoty z estetyką tego rozwiązania i rozmiarami – sam akumulator nie jest przecież mały. Do tego technologia płytki uniwersalnej przy 6 sztukach też nie była optymalnym rozwiązaniem.
    Zacząłem szukać innych rozwiązań – tu kuszącą propozycją są rozwiązania oparte o BlueTooth zwłaszcza BLE. Wiedziałem, że nie będzie problemu z długim działaniem na zasilaniu bateryjnym. Urządzenia takie są też zwykle małe. Jedyny problem to zasięg. Czytałem wiele o zasięgu i wiedziałem, że nie jest różowo. U mnie całość miała działać w domku o 2 kondygnacjach ze stropem żelbetowym i gipsowymi tynkami. Postanowiłem jednak zaryzykować. Jako odbiornik BT zakupiłem Raspberry pi 3 – ma on docelowo pełnić 2 funkcje – jako urządzenie komunikacyjne BT i jako router WiFi dla urządzeń IoT. Ta druga funkcja wynika z faktu, że nie chcę aby urządzenia IoT pracowały na standardowym, domowym WiFi, choćby z powodu problematycznego zmieniania hasła. Dodatkowo osobny router może mieć złożone hasło i kontrolować ruch w domowej sieci. Wróćmy jednak do czujników temperatury na BT. Wybór padł na Xiaomi Mijia bluetooth temperature & humidity sensor. Na tej stronie: Link znalazłem opis jak dostać się do wysyłanych danych bez oryginalnego odbiornika BT Xiaomi.
    Bazując na tym przykładzie stworzyłem skrypt, który odczytywał dane z Xiaomi. Działa to bardzo dobrze, ale są problemy z zasięgiem, czego się niestety obawiałem. Ostatecznie odczyt działał na tym samym piętrze, gdzie było Pi 3 i do tego nie w każdym miejscu. Komunikacja z Xiaomi jest dwukierunkowa – oznacza to że oba urządzenia coś wysyłają i odbierają. Mały zasięg może być zatem winą Pi 3, a nie termometru, tym bardziej, że monitor BLE na komórce „łapał” sygnał przez żelbetowy strop. Dla mnie jednak rozwiązanie się nie sprawdziło. Były okresy, że brak odczytu trwał kilka godzin i później wracał. Nie lubię takich niepewnych urządzeń, zwłaszcza, że termometry miały sterować ogrzewaniem.
    Postanowiłem dać BT jeszcze jedną szansę – zakupiłem czujnik temperatury iNode. Są one niezwykle małe, a do tego dystrybutor napisał, że pracują z mocą +8dBm. Stosują one także inną technologię – dane wysyłane są w pakiecie rozgłoszeniowym, zatem nie są istotne właściwości nadawcze Pi – musi on tylko odczytać ramkę rozgłoszeniową. Urządzenie przyszło i pierwsze próby niestety skończyły się rozczarowaniem. Przez strop nie dało się niczego odebrać. Napisałem jednak do dystrybutora, z jaką mocą standardowo pracują te nadajniki i dostałem odpowiedź, że -2dBm. Dostałem także informację, że przy pomocy aplikacji na komórkę mogę to zmienić – tu minus dla dystrybutora – z urządzeniem nie przychodzi żaden opis nawet w postaci linku do instrukcji czy programów do sterowania; nie ma też mowy o tym, że urządzenie pracuje z -2dBm. Po przestawieniu na +8dBm byłem zachwycony. Strop nie stanowił przeszkody. W najdalszym kącie domu tracona (nieodebrana) była tylko co druga ramka. iNode nadaje standardowo co ok 1s, a ja na odbiór czekam 2 minuty mam zatem aż 60 poprawnych ramek! Od razu zmieniłem parametry iNode – czas zwiększyłem do maksimum (ok. 10s) i wyłączyłem niepotrzebne diody LED. Muszę powiedzieć, że rezultaty są wspaniałe – dokupiłem te czujniki do pozostałych pomieszczeń. Działają bezbłędnie od ponad pół roku. iNode wysyła także przybliżoną wartość napięcia baterii. Ja ze względu na posiadane Xiaomi (teraz są one w pomieszczeniach najbliższych odbiornikowi) napięcie pokazuję w procentach, gdzie 3V i więcej to 100%, a 1.8V to 0%). Po pół roku działania mam 100%! Zachęcony rezultatami zakupiłem kolejny iNode z myślą jego wystawienia na zewnątrz. Tu także spisuje się wyśmienicie mimo ujemnych temperatur w zimie. Przy mroźnych dniach napięcie spadało do 80%, ale teraz znowu jest 100%.
    Na stronach iNode znalazłem przykładowy skrypt do odczytu danych. Działał on jednak na zasadzie startu przy starcie Pi. Z doświadczenia wiem, że takie rozwiązanie zawsze kiedyś przestaje działać. Postanowiłem zatem oprzeć się o cron’a, który będzie powtarzał cały proces co 5 minut. Jeśli coś się nie powiedzie będzie kolejna szansa za 5 minut. Oto główny skrypt:
    Kod: bash
    Zaloguj się, aby zobaczyć kod

    Pierwsze dwie linie odpowiedzialne są za odczyt Xiaomi. „timeout” odpowiada za „zabicie” procesu jeśli będzie trwał ponad 60s.
    Oto zawartość bt_temp_mi.sh:
    Kod: bash
    Zaloguj się, aby zobaczyć kod

    Skrypt powstał w oparciu o wcześniej przywołaną stronę. Ma dwa parametry – MAC oraz numer czujnika. Jego dostosowanie do własnych potrzeb polega na zmianie adresów i parametrów w „wget”. Oczywiście trzeba też przekazać właściwe adresy MAC. Jednak głównym celem był odczyt z iNode. Główny skrypt uruchamia skanowanie na 120 sekund (hcitool) a następnie czyta dane z pakietów rozgłoszeniowych poprzez hcidump. Odczytywane dane przesyłane są do skryptu „bt_inode.sh”. Oto jego zawartość:
    Kod: bash
    Zaloguj się, aby zobaczyć kod

    Dostosowanie skryptu do własnych potrzeb, to przede wszystkim zmiana adresu i parametrów w „wget”, zmiana adresów MAC (tutaj są bez dwukropka). Oczywiście należy też skonfigurować własne pomieszczenia.

    Uwagi do skryptu
    Skrypt bazuje na „hcidump” – jeśli ulegnie zmianie format danych w tym programie, to oczywiście skrypt przestanie działać. Drugim problemem jest format ramki rozgłoszeniowej. Jest tam spora liczba nagłówków, a adresacja poszczególnych bloków powinna być względna. Ja dla uproszczenia zastosowałem adresację bezwzględną – jeśli jednak producent iNode zmieni format, to skrypt także przestanie działać. Tu nie mam obaw – ewentualna zmiana ramki wymaga upgrade iNode, a ja nie mam zamiaru tego robić. Wszystkie programy użyte w skrypcie były na Pi lub można je zainstalować poprzez apt-get. Nie było potrzeby pobierania źródeł i kompilacji czegokolwiek.

    Podsumowanie

    Metoda zastosowana przez iNode – wysyłania danych w ramce rozgłoszeniowej jest bardzo dobra, a moc +8dBm wystarczająca na domek jednorodzinny.

    Fajne! Ranking DIY
    Potrafisz napisać podobny artykuł? Wyślij do mnie a otrzymasz kartę SD 64GB.
  • PCBway
  • #2
    gulson
    Administrator Systemowy
    To miło, że się podzieliłeś praktycznym doświadczeniem. Zgłoś się do mnie po kartę SD 64GB, zawsze się przyda czy to w telefonie czy Raspberry ;)
  • #3
    czasnagli
    Poziom 16  
    krzbor napisał:
    Stanąłem jednak przed problemem przygotowania czujników temperatury dla każdego pomieszczenia – 6 sztuk.

    krzbor napisał:
    Postanowiłem dać BT jeszcze jedną szansę – zakupiłem czujnik temperatury iNode.

    iNode Care Sensor T kosztuje około 100 zł za sztukę.
  • #4
    VSS
    Poziom 21  
    ja używam Xiaomi gateway podpięte do domoticza. działa rewelacyjnie, czujniki nie są drogie (30-45 złotych) a na jednej baterii pracują 2 lata. aktualizacja danych jest co 5 minut. sama bramka ma jeszcze wiele innych ciekawych funkcji. transmisja to ZB

    poza tym można osobno dane czytać w aplikacji MiHome



    Bezprzewodowe czujniki temperatury dla inteligentnego domu
  • #5
    atari_robbo
    Poziom 22  
    Zdaje się, że Xiaomi to ciekawa alternatywa, jakis czas temu rozglądałem się za czujnikami - ale iNode to jakaś porażka, ponad 120 zł za pastylkę. Widzę że można mieć za 30 zł sensor Xiaomi.
  • #6
    krzbor
    Poziom 17  
    Jest sporo gotowych układów automatyki z czujnikiem temperatury. Ja jednak nie chciałem rozwiązań zależnych od serwerów innej firmy (np. Xiaomi). Niestety muszę przyznać rację, że iNode są stosunkowo drogie. Być może wynika to z faktu zastosowania BTM-800, których cena to ok. 50 zł brutto, a na Alle... nawet 63zł. Na stronie iNode można kupić ten układ za 49zł z wgranym oprogramowaniem. Są tam także schematy czujników - można więc wybudować te układy samodzielnie Link.
  • #7
    TvWidget
    Poziom 32  
    atari_robbo napisał:
    Zdaje się, że Xiaomi to ciekawa alternatywa, jakis czas temu rozglądałem się za czujnikami - ale iNode to jakaś porażka, ponad 120 zł za pastylkę. Widzę że można mieć za 30 zł sensor Xiaomi.

    109 zł kosztuje wersja z kalibrowanym czujnikiem o dokładności (nie rozdzielczości)i 0.1°C.
  • PCBway
  • #8
    VSS
    Poziom 21  
    krzbor napisał:
    Jest sporo gotowych układów automatyki z czujnikiem temperatury. Ja jednak nie chciałem rozwiązań zależnych od serwerów innej firmy (np. Xiaomi). Niestety muszę przyznać rację, że iNode są stosunkowo drogie. Być może wynika to z faktu zastosowania BTM-800, których cena to ok. 50 zł brutto, a na Alle... nawet 63zł. Na stronie iNode można kupić ten układ za 49zł z wgranym oprogramowaniem. Są tam także schematy czujników - można więc wybudować te układy samodzielnie Link.


    nie przesadzaj, serwer xiaomi to xiaomi gateway który kosztuje stówkę i jest naprawdę świetnym urządzeniem, stabilny, bez zwisow, pobiera niewiele prądu.
    oprócz zbierania danych jest radiem internetowym, lampką rgb, może mówić komunikaty. poza tym ZigBee działa zdecydowanie lepiej i ma większy zasięg niż BT.

    Bezprzewodowe czujniki temperatury dla inteligentnego domu
  • #9
    krzbor
    Poziom 17  
    VSS napisał:
    krzbor napisał:
    Jest sporo gotowych układów automatyki z czujnikiem temperatury. Ja jednak nie chciałem rozwiązań zależnych od serwerów innej firmy (np. Xiaomi). Niestety muszę przyznać rację, że iNode są stosunkowo drogie. Być może wynika to z faktu zastosowania BTM-800, których cena to ok. 50 zł brutto, a na Alle... nawet 63zł. Na stronie iNode można kupić ten układ za 49zł z wgranym oprogramowaniem. Są tam także schematy czujników - można więc wybudować te układy samodzielnie Link.


    nie przesadzaj, serwer xiaomi to xiaomi gateway który kosztuje stówkę i jest naprawdę świetnym urządzeniem, stabilny, bez zwisow, pobiera niewiele prądu.
    oprócz zbierania danych jest radiem internetowym, lampką rgb, może mówić komunikaty. poza tym ZigBee działa zdecydowanie lepiej i ma większy zasięg niż BT.

    Bezprzewodowe czujniki temperatury dla inteligentnego domu
    Może się mylę - ale to rozwiązanie wymaga połączenia z serwerami w chmurze. Ktoś napisał, że przez noc przeszło 500kB transferu. Co było wysyłane? Co zostało pobrane? Tego nikt nie wie. Moje założenie było takie, że to ja będę kontrolował dostęp. Tu nie chodzi tylko o bezpieczeństwo - cenię sobie po prostu niezależność :)
  • #10
    mario_ka
    Poziom 11  
    krzbor napisał:
    Jest sporo gotowych układów automatyki z czujnikiem temperatury. Ja jednak nie chciałem rozwiązań zależnych od serwerów innej firmy (np. Xiaomi). Niestety muszę przyznać rację, że iNode są stosunkowo drogie. Być może wynika to z faktu zastosowania BTM-800, których cena to ok. 50 zł brutto, a na Alle... nawet 63zł. Na stronie iNode można kupić ten układ za 49zł z wgranym oprogramowaniem. Są tam także schematy czujników - można więc wybudować te układy samodzielnie Link.

    Alternatywa kosztowa i funkcjonalna rodzi sie też tu: http://bbmagic.net/bbmagic-meteo-2/
    Precyzyjna temperatura i wilgotność z SHT20, poziom oświetlenia, wejścia analogowe 10bit i cyfrowe, zasilanie bateryjne, czas pomiaru do wyboru... Projektowana cena to około połowy iNode...

    Pozdrawiam
    Mariusz
  • #11
    dariuse
    Poziom 12  
    wszedłem na opisywaną oferte Xiaomi
    a tu link taki długi, że trudno zapamiętać

    https://www.aliexpress.com/item/Original-xiao...cdda650&transAbTest=ae803_5&priceBeautifyAB=0

    no i bariera cenowa, wszystko zaczyna się od 20$

    to już nie jest tani Chińczyk za 2$

    Ale moje pytanko dotyczy rozwiązania, jak wyłączyć centralne ogrzewanie w domu ( z sieci).
    7 grzejników i nawet jak są termostaty to aby wyłączyć wszystkie, to trzeba latać po całym mieszkaniu.
    Centralny zawór kulowy na korytarzu, na wysokości 3 metrów, bez drabiny ani rusz.

    Poniewaz sezon grzewczy nadal trwa, mimo globalnego ocieplenia i pewnie się nie skończy przed 1 czerwca , bo kolejne 2 tygodnie mają byc deszczowe i pochmurne,
    myślałem o rozwiązaniu typu mrożenie rury zasilającej c.o..
    Nakładam opaskę i mrożeniem zamykam przepływ ciepłej wody, bo grzejniki połączone w 1 string.

    Pewnie nie jest to rozwiązanie popularne, ale stosowane przez instalatorów czasowo, gdy wymieniają grzejnik, a nie mają opcji wyłączenia ogrzewania dla jednego mieszkania.

    Samo mrożenie jest energożerne, dlatego pomyślałem o modułach Peltiera.
    Niestety nie ma owalnych, zakładanych na rurę c.o. 1/4 cala.

    Nie lubię tego ciepłego, suchego powietrza z kaloryferów w nocy, wolę zimno w maju, ale zamknąć c.o. też nie chcę bo nie mam tak wysokiej drabiny.
  • #12
    Janusz_kk
    Poziom 20  
    dariuse napisał:
    Samo mrożenie jest energożerne, dlatego pomyślałem o modułach Peltiera.
    Niestety nie ma owalnych, zakładanych na rurę c.o. 1/4 cala.

    Kompletnie bez sensu, dużo energii w powietrze, już nie mówiąc o kosztach tego.

    dariuse napisał:
    Centralny zawór kulowy na korytarzu, na wysokości 3 metrów, bez drabiny ani rusz.

    To dokup do niego napęd albo dorób, albo wymień przy najbliższej okazji na zawór z napędem.
  • #13
    dariuse
    Poziom 12  
    Dzięki.

    A jakie zawory kulowe z napędem polecasz i zastosowałeś do c.o. ?

    Masz rację, to mrożenie rur c.o. i tak działa jedynie przy zamkniętym przepływie ciepłej wody

    "Zamrażanie rur pozostałe informacje:



    Podstawowym warunkiem aby zaślepić rurę czopem lodowym jest brak przepływu wody. Ciągle wymieniająca się woda w rurze uniemożliwia jej zamrożenie. Dlatego w sezonie grzewczym aby ściągnąć grzejnik przynajmniej na zasilaniu grzejnika musi być zawór odcinający (z reguły jest termostatyczny). Zdarzają się przypadki kiedy zawór termostatyczny przepuszcza, wtedy, jeśli woda w układzie jest ciepła zamrożenie rury może być niemożliwe. W przypadku braku zaworu lub jego nieszczelności musi być dostęp do zaworów odcinających dany pion w piwnicy. Po jego zamknięciu zamrożenie jest możliwe. Kiedy powstanie czop lodowy (trwa to od kilki do kilkunastu minut) zamyka on rurę i potrafi wytrzymać dość wysokie ciśnienie.

    http://www.zamrazanie-rur.com/
  • #14
    Janusz_kk
    Poziom 20  
    dariuse napisał:
    A jakie zawory kulowe z napędem polecasz i zastosowałeś do c.o. ?

    Takie jakie były :) robiłem z tym 10 lat temu ja robiłem swoją instalację teraz już się nie zajmuje
    hydrauliką więc nie wiem co jest na rynku, ale myślę że każdy do CO będzie dobry, w końcu to tylko zamknięcie
    przepływu a nie całkowite odcięcie.
  • #16
    dariuse
    Poziom 12  
    W inteligentnym domu te bateryjne czujniki temperatury są przecież po to, aby zdalnie kontrolować energią c.o.
    i bez elementów wykonawczych, będą tylko cyfrowymi termometrami IoT

    Nie każdy mieszka nad kotłownią w piwnicy
  • #17
    krzbor
    Poziom 17  
    mario_ka napisał:
    krzbor napisał:
    Jest sporo gotowych układów automatyki z czujnikiem temperatury. Ja jednak nie chciałem rozwiązań zależnych od serwerów innej firmy (np. Xiaomi). Niestety muszę przyznać rację, że iNode są stosunkowo drogie. Być może wynika to z faktu zastosowania BTM-800, których cena to ok. 50 zł brutto, a na Alle... nawet 63zł. Na stronie iNode można kupić ten układ za 49zł z wgranym oprogramowaniem. Są tam także schematy czujników - można więc wybudować te układy samodzielnie Link.

    Alternatywa kosztowa i funkcjonalna rodzi sie też tu: http://bbmagic.net/bbmagic-meteo-2/
    Precyzyjna temperatura i wilgotność z SHT20, poziom oświetlenia, wejścia analogowe 10bit i cyfrowe, zasilanie bateryjne, czas pomiaru do wyboru... Projektowana cena to około połowy iNode...

    Pozdrawiam
    Mariusz
    Widzę, że rodzi się ciekawy projekt. Mam dwa pytania:
    - czy projekt także wykorzystuje (dla czujników) jednokierunkową łączność poprzez ramki rozgłoszeniowe?
    - jaka jest moc nadajnika?
  • #18
    VSS
    Poziom 21  
    dariuse napisał:
    wszedłem na opisywaną oferte Xiaomi
    a tu link taki długi, że trudno zapamiętać

    https://www.aliexpress.com/item/Original-xiao...cdda650&transAbTest=ae803_5&priceBeautifyAB=0

    no i bariera cenowa, wszystko zaczyna się od 20$



    chyba coś źle szukasz. ja od ręki znalazłem czujniki w okolicy 10 dolarów:

    Link

    Link

    Link

    a kostka jest wypasiona, odpowiednio nią kręcąc lub uderzając możesz zdefiniować rożne reakcje

    Link
  • #19
    dariuse
    Poziom 12  
    super
    przypomina to projekt Philipsa Hue Light

    Kolega zainstalował w domu chyba 20 gniazdek na pilota i tylko się modli aby żona ich nie schowała.
  • #20
    mario_ka
    Poziom 11  
    krzbor napisał:
    Widzę, że rodzi się ciekawy projekt. Mam dwa pytania:
    - czy projekt także wykorzystuje (dla czujników) jednokierunkową łączność poprzez ramki rozgłoszeniowe?
    - jaka jest moc nadajnika?

    Komunikacja między sensorami i RPi jest jednostronna, a między aktorami i RPi dwustronna. Dlatego np. moduł sterujący przekaźnikiem ma równiez wejścia cyfrowe i analogowe ( http://bbmagic.net/bezprzewodowy-przekaznik-bbmagic-relay/ ). Oczywiście masz rację: Pakiety advertising są wykorzystywane - to podstawa w Bluetooth Smart :-).
    Moc nadajnika maksymalna możliwa wg standardu: +4dBm.

    Pozdrawiam
    Mariusz
  • #21
    Bojleros
    Poziom 15  
    Ja do zaworów elektronicznych BT kupiłem sobie dongla na usb. Wystarczyło go otworzyć , odciąć oryginalną antenę a w jej miejsce dolutować 20cm kabelka. Problem zasięgu rozwiązany.
  • #22
    krzbor
    Poziom 17  
    mario_ka napisał:
    Komunikacja między sensorami i RPi jest jednostronna
    W opisie projektu przeczytałem, że dane są szyfrowane i podpisane. Podpisywanie to typowe rozwiązanie dla ramek rozgłoszeniowych, ale szyfrowanie już nie. Czy rzeczywiście dane z czujników są szyfrowane? Bo jeśli nie, to mój skrypt też powinien czytać wartości z bbmagic, po odpowiednim zdekodowaniu ramki (ustaleniu pozycji z danymi).
  • #23
    mario_ka
    Poziom 11  
    krzbor napisał:
    mario_ka napisał:
    Komunikacja między sensorami i RPi jest jednostronna
    W opisie projektu przeczytałem, że dane są szyfrowane i podpisane. Podpisywanie to typowe rozwiązanie dla ramek rozgłoszeniowych, ale szyfrowanie już nie. Czy rzeczywiście dane z czujników są szyfrowane? Bo jeśli nie, to mój skrypt też powinien czytać wartości z bbmagic, po odpowiednim zdekodowaniu ramki (ustaleniu pozycji z danymi).

    Tak, dane są szyfrowane dla bezpieczeństwa. Ale to raczej nie problem bo projekt posiada ogólnodostępną bibliotekę funkcji, które robią za nas całą komunikację.
    - aby np. ustawić dimmer na 25% wystarczy funckcja: bbm_dimmer_set("moj_dimmer", 25) ;
    - aby włączyć światło funkcja: bbm_relay_on("swiatlo_pokoj", REL_CH0) ;
    itd. Wszystkie dostępne funkcje biblioteki można zobaczyć w pliku h: http://bbmagic.net/download/src_2/bbmagic_lib.h
    Funkcje biblioteki robią czasem to czego sam skrypt nie jest w stanie załatwić.
    Np.: aby włączyć pasek ledów na czerwono w sobotę i niedzielę o 22.00 wystarczy kod:
    if( bbm_time_is_now( SB | ND, 22.00) ) bbm_pwm_set("led_strip", 100, 0, 0) ; //-red 100%
    I aby wyłączyć o 23.00 piszemy:
    if( bbm_time_is_now( SB | ND, 23.00) ) bbm_pwm_set("led_strip", 0, 0, 0) ; //-off

    Więcej rozjaśni pierwszy z serii artykułów: http://bbmagic.net/aplikacja-bbmagic-na-10-linii-kodu/

    Pozdrawiam
    Mariusz
  • #24
    atari_robbo
    Poziom 22  
    Ten projekt BBMagic wygląda jakby był porzucony. Strona www wizualnie z lat 90-tych, w zasadzie nie widomo gdzie można kupić czujniki ani nie widać schematów.
  • #25
    mario_ka
    Poziom 11  
    On się właśnie budzi jak Feniks...
  • #26
    Janusz_kk
    Poziom 20  
    Ale jakoś nikt sie do niego przyznać nie chce, jedyne info o twórcy to korporacyjny bełkot, a kontakt to napisz do nas :)
  • #27
    atari_robbo
    Poziom 22  
    mario_ka napisał:
    On się właśnie budzi jak Feniks...


    Jasne :) Rok temu pisaleś że będą dostępne za dwa miesiące. Teraz to już trudno będzie z Chińczykami konkurować.
  • #28
    mario_ka
    Poziom 11  
    Janusz_kk napisał:
    Ale jakoś nikt sie do niego przyznać nie chce, jedyne info o twórcy to korporacyjny bełkot, a kontakt to napisz do nas :)

    :-)

    Dodano po 2 [minuty]:

    atari_robbo napisał:
    mario_ka napisał:
    On się właśnie budzi jak Feniks...

    Jasne :) Rok temu pisaleś że będą dostępne za dwa miesiące. Teraz to już trudno będzie z Chińczykami konkurować.

    Tak, bo w tzw. międzyczasie powstał m.in.: www.pokochajczystepowietrze.pl
  • #29
    noyo
    Poziom 18  
    Prośbę mam o podpowiedź co jest nie tak, bo nie wiem w czym problem. Też chce wyciągnąć temperaturę z iNode Care Sensor #1 (0x91) i wychodzą mi dziwne wyniki.
    Przy wyliczeniach Twoich to 306.99, przy wyliczeniach z załączonego pliku 9193. dziwne wychodzi :/
    Przykładowe paczki jakie uzyskuje po BT to:
    Code:
    04 3E 29 02 01 00 00 D7 E9 43 18 F0 D0 1D 02 01 06 19 FF A0 91 00 B0 00 00 C0 68 E0 80 00 00 E6 5C 1F EB E9 0F B4 3B 8D C0 CE 29 BD                   
    
    04 3E 29 02 01 00 00 D7 E9 43 18 F0 D0 1D 02 01 06 19 FF A0 91 00 B0 00 00 C0 68 E0 80 00 00 E6 5C 1F EB E9 0F B4 3B 8D C0 CE 29 BF


    Code:
    #!/bin/bash
    
    PACKET=""
    CAPTURING=""
    COUNT=0


    while read LINE
    do
       COUNT=$[COUNT + 1]
       if [ "$CAPTURING" ]; then
          if [[ $LINE =~ ^[0-9a-fA-F]{2}\ [0-9a-fA-F] ]]; then
            PACKET="$PACKET $LINE"
          else
             MAC=`echo $PACKET | awk '{  print $13$12$11$10$9$8 }'`
             if [ "$MAC" = "D0F01843E9D7" ]; then

                # TEST 1
                HEXtemp=`echo $PACKET | awk '{ print $29$28 }'`;
                DECtemp=`echo "ibase=16; $HEXtemp"|bc`;
                TEMP_TEST1=`echo "scale=2; ($DECtemp*175.72*4)/65536-46.85"|bc -l`;

                # TEST 2
                           HEXtemp=`echo $PACKET | awk '{ print $10$9 }'`
                           DECtemp=`echo "ibase=16; $HEXtemp"|bc`

                if [ $DECtemp -gt 0 ]; then
                   TEMP_TEST2=$[DECtemp-8192];
                elif [ $DECtemp -lt -30 ]; then
                   TEMP_TEST2=-30;
                elif [ $DECtemp -gt 70 ]; then
                   TEMP_TEST2=70;
                fi
                echo $TEMP_TEST1 $TEMP_TEST2;

             fi
             CAPTURING=""
             PACKET=""
          fi
       fi
       
       if [ ! "$CAPTURING" ]; then
       if [[ $LINE =~ ^\> ]]; then
         PACKET=`echo $LINE | sed 's/^>.\(.*$\)/\1/'`
         CAPTURING=1
       fi
       fi

    done


    Też będę chciał uzyskać pozycje z tego czujnika, jak masz przykładowy kawałek kodu to też z chęcią przygarnę. :)
  • #30
    TvWidget
    Poziom 32  
    W zależności od wersji czujnika Care #1 temperatura jest podawana z rozdzielczością 1°C lub 1/16 °C. O sposobie kodowania informują o dwa najstarsze bity. Jeśli tak jak w tym przypadku są są równe 0b10.... oznacza to, że na 13 młodszych bitach jest temperatura (liczba ze znakiem) w jednostkach 1/16 °C.

    Kod: javascript
    Zaloguj się, aby zobaczyć kod