sobota, 26 września 2015

Domoticz i pomiar temperatury czujnikami DS18B20

W programie Domoticz możemy wykorzystać czujniki DS18B20 do pomiary temperatury.

Czujnik DS18B20 posiada 3 nóżki, które mają sygnały GND (masa), wyjście i zasilanie.


Aby czujnik działał prawidłowo będzie jeszcze potrzebny rezystor podciągający 4,7 K, łączymy go z nóżką od zasilania i wyjściem danych.

Podłączamy nasz czujnik lub więcej czujników zgodnie ze schematem do Raspberry Pi, jak wejście danych wykorzystamy PIN 4 GPIO.

Gdy podłaczamy wiećej czujników wystarczy tylko jeden rezystor podciaągający ponieważ jest to czujnik 1-wire.



Ja w swoim projekcie użyłem 2 czujników podłączonych do kabla telefonicznego, jeden krótki umieszczony w pokoju, a drugi dłuższy wystawiony za okno.



Ponieważ mam RPi 2 należy dopisać w plik konfiguracyjnym obsługę czujnika.
Gdy już mam podłączone czujnik logujemy się w terminalu i wpisujemy:

sudo nano /boot/config.txt

W pliku config.txt należy dopisać linijkę:

dtoverlay=w1-GPIO,gpiopin=4

Ponieważ wykorzystaliśmy PIN GPIO 4, to wpis tak powinien wyglądać.
Wciskamy Ctrl+x, wpisujemy t i ENTER.
Teraz restartujemy RPi, więc wpisujemy:

sudo reboot

Po restarcie wpisujemy w terminalu:

cd /sys/bus/w1/devices
ls

Wyświetlą nam się numery podłączonych czujników


Kopiujemy sobie nazwę czujnika, w moim przypadku, będzie to: 28-0215021ddaff i wpisujemy:

cd 28-0215021ddaff
ls
cat w1_slave

Jak widać czujnik działa i odczytuje prawidłowo temperaturę


Wchodzimy na stronę Domoticz i klikamy Ustawienia -> Sprzęt
Wybieramy jak TYP: 1-Wire (System) i wpisujemy sobie nazwę np. DS18B20 i klikamy Dodaj


Teraz wchodzimy w Ustawienia -> Urządzenia i zobaczymy nasze czujniki


Klikamy zieloną strzałkę przy wybranym czujniku, jako pierwszy wybiorę pierwszy od góry, który pokazuje temperaturę 14,1 st. C
Wpisuję sobie nazwę Zewnątrz i klikam Dodaj


Tak samo robię z drugim czujnikiem i wpisuję sobie pokój, teraz w zakładce Temperatura pokazuje temperaturę na zewnątrz i w pokoju.


Klikając Logi zobaczymy wykresy przebiegu temperatury.

37 komentarzy:

  1. Hej czy pin jest obojętny bo ja na RPI2 dodaje też pin 4 i nici brak odczytu :( z kosoli działa ale nie w domoticz :(

    OdpowiedzUsuń
  2. Wybierasz 1-Wire (System) jako urządzenie, trzeba je dodać, a później wchodzisz w Urządzenia i muszą być widoczne odczyty. Jak w pliku config.txt dodasz dtoverlay=w1-GPIO,gpiopin=4 to jest uastwione na pin 4, jak np. dtoverlay=w1-GPIO,gpiopin=5 to pin 5. Jest ważne aby to dodać i zrobić restart RPi.

    OdpowiedzUsuń
    Odpowiedzi
    1. Witam mam tak jak pasta20 - z konsoli ok a w domoticz jak dodaję 1-wire to nie pokazuje mi czujnika do dodania - ustawione wszystko jak u Ciebie czyli gpio na 4 ale domoticz przy konfigu ma juz inaczej bo jest OWFS path w ktory nie wiem co wpisac

      Usuń
    2. poradziłem sobie - ale dla pozostałych - wszystko co jest poniżej przycisku dodaj kasujemy -- czyli pole owfs patch i szybkosci odczytow pozostawiamy puste - wówczas zadziała :)

      Usuń
    3. A ja mam taki problem że w konsoli pokazuje mi 6 czujników a w domomoticzu wykrywa mi tylko 5. Co może być nie tak?

      Usuń
  3. Aby czujnik działał prawidłowo będzie jeszcze potrzebny rezystor podciągający 4,7 K, łączymy go z nóżką od zasilania i wyjściem danych.

    Pytanie dla totalnego ale nie laika tylko amatora - po co ten rezystor?

    OdpowiedzUsuń
    Odpowiedzi
    1. Rezystor podciąga zasianie dla czujnika podczas pomiaru (konwersji) temperatury, przy dłuższych przewodach można go zmniejszyć. Ja minimum stosuje 1,1kom

      Usuń
  4. Działa poprawnie, podłączyłem u siebie 12 czujników, jednak jak zmienić częstotliwość odczytu temp. w domoticz? Odczyt co 5 min. jest w pewnych zastosowaniach niewystarczający.

    OdpowiedzUsuń
    Odpowiedzi
    1. Widzę 2 rozwiązania, można zrobić na MySensors i zdefiniować sobie sleep time w programie https://www.mysensors.org/build/temp
      Albo napisać program w Pythonie do odczytu, w którym dane będzie przekazywać przez JSON do wirtualnego czujnika w Domoticz.
      Przykładowy program w Pythonie
      http://www.raspberrypi-spy.co.uk/2013/03/raspberry-pi-1-wire-digital-thermometer-sensor/
      JSON w Domoticz
      https://www.domoticz.com/wiki/Domoticz_API/JSON_URL's
      Ja jeszcze nie wiem jak przekazuje się dane przez JSON, ale jak znajdę czas posiedzę nad tym i napiszę co i jak.

      Usuń
    2. Dzięki. Link https://www.mysensors.org/build/temp odsyła do programu dla arduino.
      Przykładowy programik na pytona zainstalowałem i ładnie odczytuje, ale komunikacja przez JSON jest mi obca, a link o "JONS w Domoticz" to jedank przecieranie szlaków i raczej dla bardziej zaawansowanych niż ja. Pozdrawiam

      Usuń
    3. Ten link co podałem, to są odbiorniki MySensors, a to jest Arduino+NRF24L01. Robi się bramkę MySensors podłączaną na USB do RPi i gdy mamy bramkę możemy bezprzewodowo łączyć się odbiornikiem z dowolnymi czujnikami, opisałem to tu http://projektpimalina.blogspot.com/2015/10/domoticz-i-bramka-mysensors-arduino.html
      Wczoraj opisałem co to jest JSON i jak się go używa, jak znajdę czas napiszę o DS18B20 z JSON.

      Usuń
  5. Hej.
    Dzieki za informacje zawarte w Twoim blogu. Mam pytanie - czy mozna sterowac przekaznikiem w oparciu o otrzymane wartosci temperatury? chodzi o termostat, ktory bylby samodzielnym 'urzadzeniem' sterujacym np. temperatura 21C z mozliwoscia wlaczenia i wylaczenia funkcji wirtualnym toggle switchem? chcialbym moc sterowac temperatura w domu z poziomu telefonu, gdy wychodze z pracy.
    dzieki

    OdpowiedzUsuń
    Odpowiedzi
    1. Jak już masz urządzenia dodane w Domoticz, to wchodzisz w Konfiguracja -> Więcej Opcji -> Zdarzenia i tam definiujesz sobie reguły i tworzysz taką regułę
      https://goo.gl/photos/UWoEgHZNTpNNKtBcA

      Usuń
  6. Cześć,
    Powalczyłem trochę i temperaturę już mam. Mam też kilka innych prostych rzeczy jak czujnik input wykorzystany to monitorowania stanu szamba - podłączony pływak, zdalnie też włączam pompę obiegu ciepłej wody. Niemniej chcę zrobić zdecydowanie bardziej zaawansowany termostat niż to co proponujesz. W związku z tym że na starość robię się leniwy a mam na to budżet przeznaczony szukam kogoś kto mnie w tym odpłatnie/zdalnie nawet, pomoże.
    W razie zainteresowania: 501385395

    OdpowiedzUsuń
  7. Witam serdecznie. Mam podpięte 3 czujniki DS18B20 i 3 widze w malince. Natomiast w urzadzeniach cały czas pokazuje mi tylko jeden termometr. Jak rozwiązać ten problem

    OdpowiedzUsuń
    Odpowiedzi
    1. Spróbuj na wersji beta Domoticz, teraz są dodatkowe parametry do wpisania, ma być wybrany:
      Typ: 1- Wire (System)
      Limit czasu danych: Wyłączone
      OWFS Path: zostawiamy puste
      Częstotliwość odpytywania sensora i przełącznika: 0

      Usuń
    2. Witam. U mnie trzy ds'y pokazuje dobrze w Domoticzu, jak podepnę następny to nie wykrywa mi żadnego. Wgrywałem na nowo najnowszego Raspbiana, Domoticza, podmieniałem ds'y i dalej to samo. W konsoli Putty mam prawidłowy odczyt z czterech termometrów.
      Gdzie szukać przyczyny takiego zachowania?

      Usuń
    3. Witam, Mam ten sam problem ja Paweł. Jestem na wersji Beta problem pojawił się trzy dni temu. Co ciekawe jak ustawię Częstotliwość odpytywania na 1000 m/s to działa, tylko obciążenie procesora ok 50% :)

      Usuń
  8. Ja już sobie poradziłem, wgrałem starszą/ stabilną wersję domoticza i działa ok

    OdpowiedzUsuń
    Odpowiedzi
    1. Dokładnie przejście na wersję Stabilną rozwiązuje problem

      Usuń
  9. Witam, u mnie w terminalu nic się nie pojawia mam tylko pliki 00-xxxx i co chwile znikają. Próbowałem różnych portów i już nie wiem jak to zrobić. Ma ktoś jakiś pomysł?

    OdpowiedzUsuń
    Odpowiedzi
    1. Podłączyłeś zgodnie ze schematem?? Może trzeba obniżyć wartość opornik jeżeli masz podłączone Dallasy na długim kablu??

      Usuń
  10. Paweł jaką wersje wgrałeś?

    OdpowiedzUsuń
  11. Witam :)
    pytanie co ile czujnik odczytuje temperature ? czy konieczna jest modyfikacja crontab -e ?
    czy czujnik automatycznie wlaczy sie po restarcie maliny ?

    OdpowiedzUsuń
    Odpowiedzi
    1. Tak czujnik się włączy po restarcie, a aktualizacja jest co 5 minut.

      Usuń
  12. Witam,
    mam problem z brakiem obecności czujnika w zakładce Device.
    Zainstalowałem jeden DS, w konsoli jest widoczny, poprawnie wyświetla odczyty i CRC, w Domoticzu, po dodaniu w Hardware, w logu pojawiają się wpisy :

    2017-05-09 12:00:33.443 Using 1-Wire support (kernel W1 module)...

    2017-05-09 12:00:33.443 1Wire: Added Device: 28-000008a7f8e5
    czyli też ok, nr się zgadza.

    a w zakładce Device pusto :(

    Instalowałem na wersji stabilnej, potem zaktualizowałem do najnowszej beta, ale nic nie pomogło.

    Oczywiście wykasowałem wpis w OWFS .

    Czy trzeba zaistalować Domoticza od nowa?

    OdpowiedzUsuń
    Odpowiedzi
    1. @Arek: czy rozwiązałeś swój problem?

      Mam identyczną sytuację: DS poprawnie widoczny w konsoli, dodany do Hardware (analogiczne wpisy w Logu się pojawiają), natomiast w Devices pusto. Wersja beta Domoticza.

      Warto nadmienić, że podłączyłem czujnik do Arduino - poprawnie odczytuje temperatury.

      Czy ktoś również miał podobny przypadek i go rozwiązał?

      Usuń
  13. Jak podłączyć ten czujnik do mysensors 2.1.1 ? chodzi mi o program

    OdpowiedzUsuń
  14. Ten komentarz został usunięty przez autora.

    OdpowiedzUsuń
  15. Mam problem z dodaniem czujników jak są podłączone pod różne piny gpio. Mam trzy czujniki podłączone pod gpio17 oraz jeden pod gpio4, dodałem w pliku config.txt linijki dtoverlay=w1-GPIO,gpiopin=17 oraz dtoverlay=w1-GPIO,gpiopin=4 ale mimo tego widzi tylko czujniki na gpio17. Z góry dzięuję za informację - zaczynam dopiero przygodę z raspberry i domoticzem stąd takie pytanie :)

    OdpowiedzUsuń
    Odpowiedzi
    1. Proponuję podłączyć wszystkie czujniki pod jeden pin, można podłączyć do 8 czujników.
      Nie wiem dlaczego tak jest.

      Usuń
  16. Witam a czy jest mozliwisc korekty termometru pokazuje 38 a che zeby pokzywal 41

    OdpowiedzUsuń
  17. Mam Problem Z Swoim Czujnikiem :-(.
    W Konsoli Wyświetla "00-300000000000 00-d00000000000 w1_bus_master2"
    W Kolejnej Linijce "00-b00000000000 w1_bus_master1"

    Mam Podłączony Jeden Czujnik pod GPIO 17, bo pod 4 nie działało.

    OdpowiedzUsuń
    Odpowiedzi
    1. udało ci się rozwiązać problem?

      Usuń
    2. Musi być GPIO 4, do poczytania, bardzo dobre kursy na Forbocie https://forbot.pl/blog/kurs-raspberry-pi-czujnik-temperatury-ds18b20-id26430

      Usuń