Raspberry Pi B+, ds18b20, ESP8266

Domoticz cz. 2: Termometr WiFi – stacja pogodowa, czyli ESP8266 dla początkująch w praktyce

Ostatnio uruchamialiśmy Domoticz’a – zanim przejdziemy do Z-Wave – przyjrzyjmy się fantastycznemu małemu gadżetowi – ESP8266

Co to jest ESP8266?

ESP8266 to SoC – System on a Chip, co w tym przypadku oznacza bardzo ciekawe rozwiązanie – CPU/RAM/FLASH z GPIO i WiFi – w skrócie bezprzewodowy mini komputer. Można o nim myśleć jako o ultra małym, bardzo energooszczędnym Pi w wersji AAA (z dość ograniczoną możliwością uruchamiania własnych programów), z własnym WLAN i minimalnie dwoma GPIO do sterowania. Tak możemy na nim uruchomić serwer WWW!

  • CPU – 80MHz  (szybszy niż Arduino, wolniejszy niż Pi)
  • RAM – 64kB dla instukcji i 96kB
  • ROM – 64kB (uruchomienie)
  • FLASH: 4Mb (512kB)
  • WLAN: radio 2,4GHz – 802.11 b/g/n z obsługą WPA2
  • GPIO, I2C, ADC, SPI, PWM
  • Zasilanie 3,3V (przypadkiem mamy tyle na PIN 1 w Raspbery Pi)
  • Interpreter oraz kompilator LUA (sic!)
  • CENA: $3. Tak. Trzy dolary amerykańskie

Producentem jest Espressif, a inne firmy tworzą gotowe płytki ze złączami i antenami:

  • ESP-01 (wersja 1 i wersja 2) – część wspólna to zasilanie +3,3V, GND, TX,RX oraz GPIO 0 i GPIO 2 (mają także pull-up). Antena WiFi to wydrukowana ścieżka. Najpopularniejszy i najlepszy na początek – PINy takie jak w Pi, łatwy do podłączenia
  • ESP-03 – tym razem mamy 8x GPIO
  • ESP-12 – SoC ma ekranowanie, lepszą antenę oraz 10x GPIO

    ESP-12
    ESP-12

Dlaczego?

Podsumujmy – mamy możliwość sterowania dwoma GPIO, łącząc się z urządzeniem po WiFi, które zużywa bardzo mało prądu. Możemy też napisać program, który cyklicznie dokonuje aktualizacji danych – ponieważ możemy nie tylko uruchomić serwer http (WWW) czy telnetu, ale także w pętli czytać z GPIO i przesyłać np: w stylu nodejs albo URL json.html dla domoticza. Ta druga opcja jest zdecydowanie bardziej stabilna i niewymagająca od ESP zbyt dużo na początek.
Zatem – mamy świetny zdalny termometr do stacji pogodowej – pod warunkiem, że są gotowe przykłady, które możemy zaadaptować.

Hardware

  • Raspberry Pi (dowolny model – A, B, B+, 2 lub 3, nawet Pi Zero)

    Raspberyy Pi B+
    Raspberyy Pi B+
  • ESP8266 (dowolna wersja, całkiem przyjazna wersja z PIN’ami to ESP-01 – tak też go szukamy)

    ESP-8266 01 PINout
    ESP-8266 01 PINout
  • Termometr ds18b20 – szukamy według nazwy – są wersje wodoodporne

    Termometr Dallas ds18b20
    Termometr Dallas ds18b20
  • Rezystor 4,7k – dla zapewnienia prawidłowego odczytu z temometru. Jeśli odczyt nie działa, możesz zastosować mniejszy – 2,2k:
    Rezystor 4,7k
  • OPCJA: Moduł step-down zmiejszający napięcie stałe z 5V na 3,3V (szukamy przez step-down 3.3V)
    pi-esp-1
  • OPCJA: Jedna lub dwie baterie Li-Ion 18650 – mogą być to baterie z starych baterii dla laptopów albo power banków – ale polecam bardzo dużą ostrożność w odzyskiwaniu z obudowy – 18650 są niebiezpieczne przy zwarciu, a bardzo niebiezpieczne przy perforacji! Może to być właściwie dowolna bateria Li-Ion o ile potrafimy ją bezpiecznie zamontować. Załadowana w pełni ma napięcie 4,2V i pojemność około 2300mAh
  • OPCJA: moduł zasilania i ładowania 5V do baterii Li-Ion. Często jest to moduł z wejściem USB (mini albo micro), który służy do odpowiedniego ładowania baterii 18650

    Regulator i zasilacz dla baterii Li-Ion
    Regulator i zasilacz dla baterii Li-Ion

Podłączenie i aktualizacja firmware

Układ posiada UART – złącza TX,RX – które świetnie nadają się do domyślnej komunikacji przez… Raspberry Pi. Jest to najlepsza moim zdaniem konsola dla ESP8266. Ta jednak domyślnie jest okupowana przez konsolę systemową – a więc jeśli podłączymy ją do ESP to zalejemy go danymi. Należy w pliku /boot/cmdline.txt usunąć część: console=/dev/ttyAMA0,115000. Po ponownym uruchomieniu możemy ją wreszcie wykorzystać.
Będziemy potrzebować:

Raspberry Pi + ESP8266
Raspberry Pi + ESP8266

ESP8266 najczęściej trafia do nas z firmware reagującym na komendy AT, jeśli kiedyś rozmawialiście z modemem w latach 90-tych albo modemem GSM – wiecie o czym mówię. My jednak użyjemy firmware od NodeMCU – obsługujący LUA – bardzo prosty do nauki język programowania (a więc bardzo potężny!). W chwili pisania dostępny był: nodemcu_integer_0.9.6-dev_20150704.bin, który pobieramy wraz z narzędziem – esptool.py. Teraz przystępujemy do prawidłowego połączenia ESP8266 do Raspberry Pi:

  • pobieramy 3,3V z pinu PI – +3,3V i podłączamy do pinu VCC oraz do PINu CH_PD na ESP (zobacz na zdjęciu – należy połączyć kable razem)
  • GND z Pi do GND na ESP
  • PIN 13 Pi do TX na ESP a PIN 14 na Pi do RX ESP
  • Dodatkowo musimy jeszcze koniecznie zewrzeć GPIO 0 do GND na ESP-01, ponieważ tylko wtedy pozwoli na zmianę firmware. Aktualizacja firmware sprowadza się do wydania komendy:

Upewnijmy się najpierw – czy w systemie mamy bibliotekę do obsługi portu szeregowego przez pythona:

Teraz możemy aktualizować firmware:

Jeśli zapomniałeś o podłączeniu GPIO0 z ESP-01 do GND Raspberry Pi to zobaczysz:

A jeśli nie to, po podłączeniu GPIO0 do masy (GND) i resecie (odłącz zasilanie ESP8266 na chwilę) aktualizacja przebiegnie poprawnie:

Po aktualizacji należałoby się oswoić z nową zabawką. W tym celu – dostaniemy się do niej przez konsolę. Instalujemy picocom i wydajemy:

Jak widać powitał nas prompt „>”. Jeśli znacie LUA to można przystąpić do testów komend, albo po prostu użyć: przykładów z oficjalnej strony:

Jak widać, po zamianie SSID oraz password na właściwe dla Waszej sieci domowej – urządzenie połączy się z Access Point’em i pobierze adres z DHCP. Dobra nasza, to połowa sukcesu. Teraz czas na połączenie termometru Dallas DS18b20. Jest to dość ciekawe i tanie rozwiązanie pozwalające na pomiar temperatury. NodeMCU posiada doskonały przykład obsługi tego konkretnego chipu, z którego skorzystamy. Pobieramy więc następujący plik z: biblioteki modułówds18b20.lua.
Ponieważ jednak standardowo po jego wykonaniu (o tym za chwilę) dostajemy precyzję tylko do jednego stopnia Celsjusza – lokalizujemy linię:

i zamieniamy ją na

Otrzymamy teraz precyzję do dwóch miejsc po przecinku. Gotowy plik – dla pewności – zamieszczam jego wersję po zmianach:

zachowujemy na później (za chwilę o wgrywaniu na ESP) – przechodzimy do podstawowej własności ESP8266 w wersji z LUa od NodeMCU – uruchamianiu programów po starcie SoC’a

Autostart programów na ESP8266

 

ESP8266 po starcie wykonuje automatycznie program w init.lua, który jest umieszczony na jego flash. Bardzo ważne jest przetestowanie programu przed zapisaniem go jako init.lua, tak aby ESP nie wpadł w pętlę. Wszyscy znamy sytuacje, gdzie jeden błąd powoduje, że pętla wykonuje się w nieskończoność. W związku z tym – nasz plik/program init.lua powinien zawierać minimalny zestaw komend – faktycznie powinien tylko pobrać adres IP przez WiFi i wykonać główny program czytający i wysysający temperaturę do domoticza. Tak więc niezłym pomysłem będzie próba połączenia z DWOMA różnymi sieciami WiFi – najpierw z pierwszą – a jeśli się nie powiedzie to z drugą. Dzięki temu mamy możliwość ustawienia sobie ‚roboczej’ sieci WiFi na potrzeby debugowania lub zmiany oprogramowania w ESP. Druga ważna funkcja to pauzy. Init.lua przed pobraniem adresu powinno dawać wystarczająco dużo czasu na zmianę pliku init.lua – skasowanie go, tak aby zastąpić go nowym – jeśli nie mamy możliwości zestawienia połączenia z siecią WiFi. Zatem – tworzymy init.lua w edytorze (nano, joe – na Pi):

Tak przygotowany program na początku ustawia w tryb kliencki ESP (bo ESP może być też np: Access Pointem), ustawia parametry sieci WiFi i nakazuje się połączyć. Następnie po 6000ms spradzany jest warunek czy wifi.sta.getip() zawiera cokolwiek innego niż „nil” i jeśli nie zawiera – to konfigurowana jest zapasowa sieć WiFi i co 6000ms próba jest ponawiana do skutku. Jest to też czas na skasowanie programu jeśli coś poszło nie tak. Na końcu mamy komendę dofile, której zadaniem jest uruchomienie głównego programu – domoticz.lua:

Główny program odczytujący temperaturę oraz wysyłający do domoticz’a

Główny program ma za zadanie wykorzystać wcześniej załączoną bibliotekę ze strony NodeMCU (z drobną modyfikacją). Następnie ustawia PINy na ESP odpowiednio, tak aby czytać temperaturę z GPIO 2. Możemy szybko wyświetlić surowy odczyt, który będzie zawierał 4 cyfry. To jest właśnie sedno modyfikacji – nie przetestowany do końca hack, który pobiera 4 cyfry, a następnie manipulując zamianą na ciąg znaków – bierze ostanie dwie, dwie pierwsze i wstawia między nie kropkę. Tak spreparowaną zmienną wysyła używając interfejsu JSON domoticza, który występuje tutaj pod adresem 192.168.1.15 na porcie 8080 – w którym należy poprawnie podać IDX sensora temperatury jaki stworzyliśmy (Urządzenia). I to wszystko, chociaż nadal czekam na ujemną temperaturę aby móc wrócić do pomysłu odbierania precyzyjnych danych! Pozostaje więc umieszczenie trzech plików na ESP8266.

Wgrywanie programów na ESP8266

Dzięki kolejnemu programowi w Pythonie, możemy zamiast przepisywać linia po linii kod, który trzeba umieścić w pliku na ESP8266, otworzyć/zamknąć – możemy użyć luatool.py:

Jeśli wcześniej poprawnie udało się połączyć z ESP przez picocom, luatool.py powinien podać po kolei wydawane komendy, a następnie zapisać plik. Jeszcze raz przypominam, że init.lua musi być bezpieczny – jeśli ESP wpadnie w pętlę, zacznie się resetować – będzie ciężko wymazać filesystem.

Podłączenie do panelu fotowolatanicznego (solarnego)

Ponieważ czujnik temperatury z WiFi jest z natury urządzeniem bardzo „mobilnym” – możemy zadbać o zasilenie go z baterii, które będą ładowane przez panel fotowoltaniczny. W tym celu należy wybrać panel, baterie Li-Ion oraz najlepszą metodę ładowania i zasilania.
Po kilku próbach najlepsze okazały się następujące komponenty:

  • trzy baterie Li-Ion typu 18650
  • kontroler ładowania z powerbanku DIY, który ma opcję jednoczesnego zasilania układu z portu USB i ładowania baterii z drugiego portu (micro) USB
  • Panelu 5V o mocy max. 400mA
  • UWAGA: Pamiętaj, aby nie używać baterii 18650 poza specyfikacją – np: w niskich lub wysokich temperaturach! Baterie 18650 mogą być niebezpieczne, jeśli używane są niezgodnie z przeznaczeniem i specyfikacją.

Panel montujemy na podstawce – tutaj po prostu kawałek pleksi i umieszczamy frontem do przechodzącego przez nieboskłon słońca pod kątem 45 stopni:

Panel fotowoltaniczny 5V, zamontowany na pleksi
Panel fotowoltaniczny 5V, zamontowany na pleksi

Panel należy zabezpieczyć przed wilgocią – klejem:

Tył panelu fotowoltanicznego
Tył panelu fotowoltanicznego

A następnie podłączyć do gotowego układu (przez przejściówkę z załączonej wtyczki na USB:

ESP8266 na NodeMCU Amica Board z zasilaniem bateryjnym oraz czujnikiem DHT22
ESP8266 na NodeMCU Amica Board z zasilaniem bateryjnym oraz czujnikiem DHT22

Tutaj jak widać mamy już wersję w obudowie ESP-12E oraz płytce NodeMCU (o czym w kolejnym wpisie o ESP Easy)



  • Marcin P (pyby)

    za wszystkie tutoriale do Domoticza duży plus. Niestety bardzo mało informacji w internecie o rozwiązaniach , sposobach połączenia itd.. mamy niby Wiki, które swoją drogą też jest niekompletne..

    • Łukasz C. Jokiel

      Dzięki – tutoriale z natury są suche, a to jest z kolei zapis podczas „roboty nad”. Tak więc jak się coś wykolei to można opisać, bo może się wykoleić gdzie indziej. LICZĘ na WAS – jeśli krorzystacie, a trafiacie na inne problemy – to staram się dołączać je do wpisu. Jeszcze nic nigdy nie działało od razu, zawsze coś po drodze się popsuje.

      • seba

        –domoticz.lua
        require(‚ds18b20’)
        gpio0 =3
        gpio2 =4
        ds18b20.setup(gpio2)
        t=ds18b20.read()
        print(„Surowy odczyt z ds28b20:” .. t .. ” Cn”)
        if(t==nil) then
        t=0
        end
        tmr.alarm(0,240000, 1, function()
        t=ds18b20.read()

        temp=string.sub(t, 1, 9)

        print(„Temperatura przekazywana:” .. temp .. ” Cn”)
        conn=net.createConnection(net.TCP, 0)
        conn:on(„receive”, function(conn, payload) print(payload) end )
        conn:connect(8080,”192.168.1.15″)
        conn:send(„GET /json.htm?type=command&param=udevice&idx=11&nvalue=0&svalue=” .. temp .. ” HTTP/1.1rnHost: termometr.domekrn”..”Connection: keep-alivernAccept: */*rnrn”)
        end)

        poprzedni kod poprawiony pokazuje temp do dwóch miejsc po przecinku

        • Łukasz C. Jokiel

          Dzięki za poprawkę, postaram się sprawdzić i zaktualizować wpis!

  • Marek Kucmerka

    Hej, dzięki za poradnik. Próbowałem dzisiaj zastosować porady do flashowania ESP-01 i ESP-12E. Czy połączenie pinów z ESP-12E powinno być analogiczne jak w ESP-01? Próbowałeś może robić to przez konwerter CP2102? Pytam ponieważ flashowanie poszło mi niestety kiepsko – esptool nie potrafił nawiązać połączenia z esp („A fatal error occurred: Failed to connect to Espressif device: Timed out waiting for packet header”). Wygląda jakby oba moje moduły były martwe, chociaż w ESP-01 jest czerwona dioda, która świeci. Próbowałem też innym softem pod windowsa, ale skutek niestety podobny. Nie miałeś może podobnego przypadku przy swoich doświadczeniach z ESP8266? Dzięki 🙂

    • Łukasz C. Jokiel

      Nie, nie używam konwerterów, bo mam bezpośrednio połączenie po porcie szeregowym w RPi. ESP-12E (bez płytki) – tak samo jak ESP-01. Po Windowsem – raczej się nie męczę z tą materią. Nigdy nie wiem czemu coś nie działa, a na RPi mam logi, mogę zawsze cat /dev/ttyAMA0 😉

      • Marek Kucmerka

        Na RPi przy podpięciu bezpośrednio do UART też mam ten sam błąd niestety. Byc może te układy są wadliwe ale trochę mało prawdopodobne że dwa niezależnie kupione w różnych miejscach były padnięte. Będę próbował dalej a jak się zniechęcę to pójdę kupić jakiś gotowy moduł podpinany przez USB, np. Wemos 😉

        • Łukasz C. Jokiel

          Po podpięciu zasilania powinien mrugnąć niebieski LED – odczyt z FLASH. Przy flashowaniu – powinien mrugać cały czas. Spróbuj na świeżo rano, konsolę w /boot w RPi wyłączyłeś?

          • Marek Kucmerka

            No to chyba sprawa jasna. U mnie na ESP-12e nie mruga żadna dioda po podpięciu do 3.3V. Nawet już zastanawiałem się dlaczego nie zrobili czegoś do pokazywania statusu. Wychodzi na to, że trafiłem na wadliwy układ 🙁

          • Łukasz C. Jokiel

            Spróbuj na świeżo rano – pomaga :). ESP-12e może nie mieć LED’a.

          • Marek Kucmerka

            Okazało się, że ESP-12e jednak ma LEDa, tylko jak to zwykle w takich wypadkach bywa popełniałem dość prymitywny błąd – kabel zasilający 3.3V miał wyrobiony pin i po prostu nie stykał na mojej płytce, wskutek czego moduł praktycznie w ogóle nie był zasilany… Jak to odkryłem to już poszło jak z płatka, flashowanie dla testów zrobiłem nawet dwukrotnie – raz używając linuxowego esptool’a a drugi raz windowsowym flasherem. Wszystko gładko przechodzi. W sumie lekkie zawieszenie miałem już przy konfiguracji samego DHT22 i Domoticza. Muszę przyznać że są tam dwa haki, które zajęły mi ponad godzinę. Otóż po podpięciu DHT22 do modułu ESP wskazywał on cały czas 0-0 na stronie serwera ESP – zupełnie tak jakby nie działał. Okazuje się że to dość powszechny błąd polegający na tym, że konfiguracja Domoticza jest błędna (!!!) Dość absurdalne moim zdaniem – mając źle sparowanego ESP z Domoticzem termometr pokazuje niewłaściwe odczyty. Nawiasem mówiąc samo dodawanie wirtualnego sensora w Domoticzu też jest mało intuicyjne, ale może się czepiam 😉
            W każdym razie dzięki za poradnik i pomoc. Zamawiam kolejne moduły ESP bo ten dzisiaj złożony póki co zadziwia mnie responsywnością i możliwościami jak na tak małe i tanie urządzenie. Na pierwszy ogień po DHT pójdzie teraz sterowanie oświetleniem przez przekaźniki podpięte do ESP

          • Łukasz C. Jokiel

            Wow, dzięki za podzielenie się ścieżką – fajnie że udało się odpalić. Ja dziś musiałem pójść i zresetować samo DHT22 (odpiąć od ESP) bo pokazywał ‚nan’. Chyba czas zamontować w to miejsce BME280!

          • Marek Kucmerka

            Mój przy problemach z dogadaniem się z Domoticzem pokazywał na zmianę 0-0 i nan-nan więc może to coś na styku tej komunikacji? Swoją drogą to wydaje mi się że wystarczyłoby zmodyfikować jakoś firmware EspEasy żeby cały moduł sam się resetował co kilka dni bo nie oszukujmy się – dzisiaj żaden sprzęt nie jest gotowy do pracy 24/7 nawet drogie routery trzeba raz na jakis czas zresetować a co dopiero moduły za kilka dolarów 😉

          • Łukasz C. Jokiel

            Moduł ma uptime 2 miesiące (od wymiany fw na 147) – to DHT22 zastrajkowało.

          • Marek Kucmerka

            No to czapki z głów, nawet mój router tyle nie wytrzyma 😉 A jak oceniasz dokładność DHT22? Bo wszędzie zachwalali a póki co działa od kilku godzin i mam wrażenie że zawyża temp. o ok. 5C

          • Łukasz C. Jokiel

            Jest taki sobie w porównaniu z BME280, szczególnie, że cena ta sama.

          • Marek Kucmerka

            A gdzie go zamawiasz? Bo z tego co widzę to jest to dużo mniej popularny sensor niż DHT, np. na Bootlandzie mają tylko całe moduły po prawie 100PLN/szt. EspEasy dogada się z tym bez problemu?

          • Łukasz C. Jokiel

            Na Ali jest za $3.6 🙂

          • Marek Kucmerka

            Też go właśnie zamówiłem 🙂 Z dwóch powodów – po pierwsze mierzy dodatkowo ciśnienie atm. czego DHT nie robi. A po drugie patrząc na specyfikację – jest mniej prądożerny niż DHT. Po jednym dniu doświadczeń uważam że to jest największy problem jeśli chce się budować stosunkowo małe sensory.
            Mój pierwszy zestaw złożony z ESP i DHT odpaliłem na 2xAAA i pochodził około godziny, później DHT się zbuntował, ale ESP działał cały czas. Drugi zestaw skomponowałem na baterii 9V podpiętej do modułu zasilacza (https://goo.gl/LWm3iU). Do wyjścia 5V podłączyłem DHT a do 3.3V – ESP. Tym razem ESP zaczał wariować i to już po około 15 minutach – migał na niebiesko diodą (bateria 9V była nowa).
            Teraz skomponowałem trzeci zestaw zasilania – 3xAAA w szereg i od godziny chodzi stabilnie na tym ESP, DHT i dodatkowo czujnik ruchu HC-SR501. Zobaczymy czy do rana wytrzyma 😉

          • Łukasz C. Jokiel

            BME280 jest znacznie bardziej dokładny w całym zakresie. A DHT22 – cóż jest jaki jest.

  • Marek Kucmerka

    Po kilku dniach testów jestem pozytywnie zaskoczony oprogramowaniem EspEasy ale niestety negatywnie – czasem pracy na bateriach zwykłego sensora DHT w połączeniu z ESP. Na 2 bateriach 18650 połączonych szeregowo z wpiętym regulatorem napięcia (5V / 3.3V) cały układ wytrzymał niecałe 3 doby… Dodam, że ESP działał w trybie deep sleep z interwałem wybudzeń ustawionym na 4 minuty. Jakim cudem zwykłe sensory do stacji meteo działają na bateryjkach 2xAAA rok czy dwa lata? W dodatku jeden z takich sensorów wysyła do mojego Domoticza dane w interwałach około 60-sekundowych a mimo tego działa z powodzeniem ponad rok na jednej wymianie baterii 🙂

    • Łukasz C. Jokiel

      Wstaw miernik prądu na USB – taki za grosze. O ile są to pełne 18650, powinien znacznie więcej w deep sleep wytrzymać.

  • Krzysztof Maliwiacki

    Witam serdecznie.
    Zamiast ESP-01 próbuje zrobić to samo na Yellow Board ESP 8266 ESP 12-E.
    Zasilanie VCC mam w tym przypadku z koszyka baterii AA, zamiast z PIN 2 Maliny.
    Nie pasuje mi podłączenie :
    „PIN 13 Pi do TX na ESP a PIN 14 na Pi do RX ESP”

    PIN 13 PI to GPIO 27 – ok, ale PIN 14 na PI to przecież GND…
    Na pewno GND z maliny połączyć do RX na ESP ?
    Jak tak podłączyłem to po wywołaniu :

    python esptool.py -p /dev/ttyAMA0 write_flash 0x000000 nodemcu_integer_0.9.6-dev_20150704.bin
    mam cały czas :
    Connecting… – i żadnej reakcji 🙁

    • Łukasz C. Jokiel

      Mam także tą wersję – tutaj konsola jest oznaczona TX,RX,GND – trzy osobne PINy na południu płytki. Jednak – jeśli pamieć mnie nie myli tam inicjalnie jest inny formware dla ESP – oraz inna prędkość konsoli – sprawdź po kolei każdą prędkość od 9600 do 115200 – za każdym razem resetując urządzenie – jeśli pojawiają się krzaczki to jest dobre połączenie, ale krzaczki oznaczają złą prędkość. Powodzenia!

  • Cześć. Jestem początkujący w temacie ESP, LUA i wszystkiego co jest z tym związane, także proszę o wyrozumiałość…
    Piszesz: „Bardzo ważne jest przetestowanie programu przed zapisaniem go jako init.lua, tak aby ESP nie wpadł w pętlę.” – jak to można sprawdzić? Jest jakieś do tego narzędzie? Czy po prostu mam wierzyć sobie na tzw. „słowo honoru”? 🙂

    • Łukasz C. Jokiel

      Ba, interpretujesz w głowie ;). Dodatkowo – dodajesz pauzę przed wykonaniem, tak abyś miał szansę mu przerwać i go skaskować. Dopiero wersję finalną – możesz uruchamiać bez pauzy – jeśli jest już przetestowana.

  • Piotr Szczerbanowski

    Witam
    Dzisiaj dostałem NodeMcu i od razu wgrałem ten zestaw plików. Nie wiem, czy ktoś zwrócił uwagę, ale jest mały błąd w pliku DS18b20.lua w dwóch miejscach – zamiast znaku „>” jest „&gt”, ale ot może wina przeglądarki.
    Ja z innym problemem. NodeMcu łączy się z AP, dostaje IP, mierzy poprawnie, ale nie aktualizuje.
    Linia wysylki
    conn:send(„GET /json.htm?type=command&param=udevice&idx=13&nvalue=0&svalue=” .. temp .. ” HTTP/1.1rnHost: 192.168.0.154:8080rn”..”Connection: keep-alivernAccept: */*rnrn”)
    może coś z nią nie tak
    w terminalu mam:
    NodeMCU 0.9.5 build 20150318 powered by Lua 5.1.4
    > WiFi mode ESP8266: 1
    MAC address ESP8266: 1A-FE-34-13-4A-BF
    Success, IP is: 192.168.0.160
    Surowy odczyt z ds28b20:1981 C

    Temperatura przekazywana:19.68 C
    HTTP/1.1 200 OK
    Content-Length: 24
    Content-Type: application/json;charset=UTF-8
    Cache-Control: no-cache
    Pragma: no-cache
    Access-Control-Allow-Origin: *
    Connection: Keep-Alive
    Keep-Alive: max=20, timeout=20

    {
    „status” : „ERR”
    }

    • Łukasz C. Jokiel

      To kwestia edycji – cytowany tekst ze znakami większości – edytor zmienia na przyjazne HTMLowo amperasnd gt.

      Jak wygląda definicja urządzenia w domoticz – IDX 13? Co w logach Domoticza?

      • Piotr Szczerbanowski

        IDX Sprzęt ID Unit Nazwa Typ Podtyp
        13 Dom 171405D
        1
        Solar Średnia Temp LaCrosse TX3
        W logu jest ” Incoming connection from: 192.168.0.101″
        Domoticz mam zainstalowany na OrangePi Zero 512 Mb

      • Piotr Szczerbanowski

        Przy takim wysyłaniu:
        conn:send(„GET /json.htm?type=command&param=udevice&idx=13&nvalue=0&svalue=”
        ..” HTTP/1.1rn”
        ..”Host: 192.168.0.154:8080rn”
        ..”Connection: closern”
        ..”Accept: */*rn”
        ..”User-Agent: Atmega-Client (compatible; esp8266 Lua; Windows NT 5.1)rn”
        ..”rn”)

        mam :

        HTTP/1.1 200 OK
        Content-Length: 53
        Content-Type: application/json;charset=UTF-8
        Cache-Control: no-cache
        Pragma: no-cache
        Access-Control-Allow-Origin: *

        {
        „status” : „OK”,
        „title” : „Update Device”
        }

        ale wartość 0.0, czyli tak jak było – natomiast na liście czujników jest data i godzina ostatniej aktualizacji, ale z wartością 0.0