logo elektroda
logo elektroda
X
logo elektroda
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

Rozszerzenie sterownika DS18(B)20 - wiele GPIO i wiele czujników na GPIO

max4elektroda 21 Cze 2025 19:10 5697 108

TL;DR LABEL_AI_GENERATED

  • Rozszerzony sterownik DS1820/DS18B20 dla OpenBeken obsługuje wiele czujników na wielu GPIO i przypisuje każdemu adres, nazwę, kanał oraz historię odczytów.
  • Sterownik skanuje magistrale 1-Wire, rozpoznaje unikalne adresy czujników i odczytuje temperaturę osobno dla każdego sensora, zamiast rozgłaszać jedną komendę do wszystkich.
  • Obsługuje komendy startDriver DS1820, DS18B20_setsensor, DS1820_SetResolution i DS18B20_scansensors, z domyślnym interwałem 15 sekund oraz narzutem około 6k na W800.
  • Dodany prosty interfejs konfiguracyjny generuje też backlog command do wklejenia w autoexec, a strona główna pokazuje opisy czujników i zaktualizowane kanały.
  • Autor zwraca uwagę, że wiele klonów DS18B20 ignoruje ustawianie rozdzielczości i zawsze pracuje w 12-bitach, więc pełny tryb nie zawsze da realną korzyść.
Podsumowanie AI na podstawie dyskusji. Może zawierać błędy.
Treść została przetłumaczona angielski » polski Zobacz oryginalną wersję tematu
Słuchaj:
  • Rozszerzenie sterownika DS18(B)20 - wiele GPIO i wiele czujników na GPIO
    Zgodnie z propozycją @p.kaczmarek2 postaram się podzielić tutaj kilkoma pomysłami na rozszerzenia i funkcje firmware OpenBeken IoT, zaczynając "zgodnie z życzeniem" ;-) od rozszerzonego sterownika DS18(B)20.

    Kod znajduje się w PR #1627 .

    Zacznę od kilku informacji i zrzutów ekranu, ale chętnie poznam opinie na bardziej podstawowe pytania w dalszej części tego postu.

    Tak więc "tylko" uruchomienie już obecnego sterownika (/src/driver/ds18b20.c) nie było takie trudne, najważniejsza część (synchronizacja protokołu OneWire) została wykonana i ulepszona przy wsparciu wielu innych osób dla "prostego" sterownika. Tak więc brakowało tylko warstwy sterownika, protokół działał już całkiem dobrze.

    Tak więc pierwsze podejście było następujące:
    Przeniesienie wszystkich podstawowych funkcji do osobnego pliku, tak aby wszystkie podstawowe funkcje "one_wire" lub "ds18b2" (aż do odczytu/zapisu bajtu) mogły być współdzielone między dwoma sterownikami.

    Nieco większym wyzwaniem były pewne ogólne decyzje: Jak obsługiwać czujniki?

    Krótka wycieczka:

    Wszystkie czujniki mają unikalny adres, który pozwala na adresowanie ich na magistrali, dzięki czemu możliwe jest rozróżnienie wielu urządzeń na tej magistrali. Prosty sterownik wybiera łatwą drogę ;-) Używa wyłącznie opcji, podobnej do rozgłaszania w sieci, aby zaadresować "wszystkie" urządzenia.

    Aby odczytać temperaturę, procedura jest następująca: "Wszystkie urządzenia: Przygotuj do odczytu temperatury", a następnie "Wszystkie urządzenia: Zapisz temperaturę" - a "wszystkie urządzenia" odnoszą się do jednego czujnika na tym pinie.

    To podejście nie działa w przypadku wielu czujników, przynajmniej jeśli chodzi o odczyt: Jeśli kilka czujników zgłosi swoją temperaturę jednocześnie, to nie będzie działać.

    Dlatego adresy czujników muszą być odpytywane indywidualnie: "Wszystkie urządzenia: Prepare for temperature reading", a następnie "Sensor A: Write temperature", "Sensor B: Write temperature" itd.


    Sterownik musi najpierw znać adresy urządzeń (czujników). Aby to osiągnąć, sterownik ma możliwość określenia wszystkich adresów czujników za pomocą sprytnego algorytmu (dla zainteresowanych można sprawdzić https://www.analog.com/en/resources/app-notes/1wire-search-algorithm.html ).

    Użyłem następującej struktury danych:

     typedef uint8_t DeviceAddress[8]; // wir müssen die Sensoren anhand ihrer Adresse unterscheiden
    
    typedef struct {
      DeviceAddress array[DS18B20MAX];      // unique address of the sensor
      uint8_t index;                        // an index ;-)
      char name[DS18B20MAX][DS18B20namel];  // a description/name for this sensor
      float lasttemp[DS18B20MAX];           // the last temperature read by this sensor
      unsigned short last_read[DS18B20MAX]; // keep track of when the sensor was last read successfully 
      short channel[DS18B20MAX];            // possibly set channel to this temperature value
      short GPIO[DS18B20MAX];               // on which pin is the sensor?
    
    } DS1820devices;
    
    .

    To również wyjaśnia, jakie funkcje powinien mieć sterownik, moim zdaniem:
    - W przypadku pojedynczego czujnika nie ma to znaczenia, ale w przypadku wielu czujników warto to rozważyć: Czujniki powinny mieć przypisaną "nazwę", ponieważ nam, ludziom, łatwiej jest skojarzyć "Kuchnia" lub "Sypialnia" niż "28-FF-3C-01-12-34-56-78" lub "28-7B-9C-01-23-45-67-89".
    - Wszystkie informacje, które wcześniej miałem tylko dla całego systemu, są teraz potrzebne dla każdego czujnika:
    - Na którym pinie należy go szukać?
    - Kiedy ten czujnik ostatnio odpowiadał?
    - Który kanał powinien być używany do pomiaru temperatury?


    Jak to wygląda?

    Tak wygląda strona główna po uruchomieniu sterownika z 10 (nieskonfigurowanymi) klonami DS18B20:
    Rozszerzenie sterownika DS18(B)20 - wiele GPIO i wiele czujników na GPIO

    Może chcesz zobaczyć jak wygląda moja konfiguracja? Zrobiłem małą "testową płytkę prototypową", która zapewni dwie "magistrale" z 7 i 3 czujnikami oraz jeden "pojedynczy" czujnik. Czujniki 7 i pojedynczy są przeznaczone do wyłącznego użytku; dzielą rezystor 4,7kΩ (dzięki użytkownikowi git "rpv-tomsk" - patrz PR PR #1579 - przy użyciu "HAL_PIN_Setup_Input_Pullup" może również działać bez zewnętrznego podciągania)..

    Rozszerzenie sterownika DS18(B)20 - wiele GPIO i wiele czujników na GPIO

    Teraz, aby skonfigurować czujniki, można użyć poleceń sterownika:

    Oczywiście zaczynamy od

    startDriver DS1820 [sekundy między odczytami temperatury]
    uruchomienie sterownika, opcjonalne ustawienie interwału odczytu czujników, domyślnie 15 sekund
    (obecne również w "trybie prostym")

    Sterownik przeskanuje wszystkie piny skonfigurowane jako "DS1820_IO", aby znaleźć adresy wszystkich czujników.
    Następnie można skonfigurować czujniki za pomocą następujących poleceń:

    DS18B20_setsensor <address> <GPIO> <name> [channel]
    Konfiguracja adresu czujnika, nazwy czujnika i (opcjonalnie) kanału
    Przykłady:
    
          DS18B20_setsensor "0x28 0x01 0x02 0x03 0x04 0x05 0x06 0x07" "5" "kitchen"
          DS18B20_setsensor "0x28 0x02 0x03 0x04 0x05 0x06 0x07 0x08" 5 "bedroom" 3
          DS18B20_setsensor "0x28 0x03 0x04 0x05 0x06 0x07 0x08 0x09" PB21 "my room" 3
    

    Jeśli adres czujnika jest "znany" (czujnik został znaleziony podczas (początkowego) skanowania), pin, nazwa i kanał są ustawiane/aktualizowane.
    Jeśli czujnik nie znajduje się jeszcze na liście, zostanie dodany wraz z pinem, nazwą i kanałem.

    Oznacza to, że możemy używać sterownika nawet bez (złożonego) skanowania magistrali - jest to dość duża funkcja i w najlepszym przypadku potrzebna tylko raz: do identyfikacji czujników przy pierwszym uruchomieniu.
    Później adresy są znane i można je ustawić bezpośrednio.


    DS1820_SetResolution <bits> [<sensor address>]
    ustawia rozdzielczość temperatury jednego / wszystkich czujników (jeśli opcjonalny adres nie jest obecny)
    (obecna również w "trybie prostym" - tam jedynym argumentem jest rozdzielczość)
    przykłady:
     
         DS1820_SetResolution 9 "0x28 0x01 0x02 0x03 0x04 0x05 0x06 0x07"
         DS1820_SetResolution 9
    


    Ważna uwaga: dla większości moich (klonów) DS18B20 ustawienie rozdzielczości nie działa, zawsze będą używać rozdzielczości 12-bitowej!

    DS18B20_scansensors
    Czyści wszystkie dane i skanuje wszystkie magistrale w poszukiwaniu podłączonych czujników.
    Jeśli dodano czujnik lub nie wszystkie czujniki zostały wykryte, można rozpocząć skanowanie od nowa.
    Wada: utracisz wszystkie skonfigurowane dane - ale dzięki funkcji "setsensor" możesz je później łatwo dodać ponownie.



    Ponieważ lubię prostotę, dodałem również prostą stronę konfiguracji, aby dokonać wszystkich ustawień:

    Rozszerzenie sterownika DS18(B)20 - wiele GPIO i wiele czujników na GPIO .

    Rozszerzenie sterownika DS18(B)20 - wiele GPIO i wiele czujników na GPIO

    Pozwala to również na wygenerowanie "backlog command" całej konfiguracji. W ten sposób można je łatwo skopiować i wkleić do autoexec lub jako polecenie startowe i zachować ustawienia po ponownym uruchomieniu. W moim przypadku wynikowa komenda to:
    
    backlog startDriver DS1820 ; DS18B20_setsensor "0x28 0x61 0x64 0x35 0xD5 0xB0 0x35 0x82"  10 "Kitchen door" 10; DS18B20_setsensor "0x28 0x61 0x64 0x35 0xD5 0xB1 0xB1 0xAB"  10 "Kitchen window" 11; DS18B20_setsensor "0x28 0x61 0x64 0x35 0xD5 0xC3 0xB2 0x6E"  10 "Master Bedroom" 12; DS18B20_setsensor "0x28 0x61 0x64 0x35 0xFB 0xD1 0x06 0x20"  10 "Livingroom " 13; DS18B20_setsensor "0x28 0x61 0x64 0x35 0xFB 0xBD 0x67 0x0C"  10 "Adams room" 14; DS18B20_setsensor "0x28 0x61 0x64 0x35 0xFB 0xAF 0x75 0x50"  10 "Eves room" 15; DS18B20_setsensor "0x28 0x61 0x64 0x35 0xFB 0xBF 0x27 0xDB"  10 "Garage" 16; DS18B20_setsensor "0x28 0x61 0x64 0x35 0xD4 0x7D 0xC4 0x3E"  37 "Pool" 17; DS18B20_setsensor "0x28 0x61 0x64 0x35 0xD4 0x1F 0x6D 0xC6"  37 "Cellar" 18; DS18B20_setsensor "0x28 0x61 0x64 0x35 0xD5 0xEF 0x00 0x6C"  37 "Garden" 19
    


    Strona główna będzie odzwierciedlać zmiany:

    Rozszerzenie sterownika DS18(B)20 - wiele GPIO i wiele czujników na GPIO .
    można zobaczyć opis każdego czujnika, a kanały zostały zaktualizowane.


    Mam nadzieję, że daje to pierwsze wyobrażenie o tym, co zrobiłem i jak korzystać ze sterownika.

    Być może zauważyłeś, że sterownik nazywa się "DS1820", a polecenia "DS18B20_XXX" - wynika to z faktu, że zacząłem od alternatywnego "pełnego" sterownika oprócz prostego sterownika (przenosząc część kodu prostego sterownika do współdzielonego pliku kodu).
    rpv-tomsk zaproponował użycie tylko jednego pliku, więc zintegrowałem wszystko w jednym pliku, gdzie "#define DS1820full 1" wybierze pełny kod.

    Oto moje pierwsze pytanie do innych deweloperów i zwolenników: Co według was jest "lepsze":

    Posiadanie tylko jednego pliku kodu z "#defines" do wyboru funkcji?
    + wprowadzone zmiany są zawsze wprowadzane dla obu wersji
    + nie ma potrzeby tworzenia oddzielnego pliku "ds1820 protocol" dla współdzielonego kodu
    - wiele "#defines" czasami utrudnia czytanie kodu, może prowadzić do błędów

    Pozostawienie/powrót do trzech plików: prostego, pełnego i współdzielonego kodu?
    + znacznie łatwiejszy do odczytania, nie ma potrzeby posiadania kilku "#definicji" wewnątrz funkcji
    - jeśli wprowadzane są zmiany, musimy dotknąć dwóch plików (jeśli jest to w jakimś wspólnym kodzie)
    (jest +/-, jeśli musimy również zmienić to w dwóch miejscach w jednym pliku, jeśli znajduje się wewnątrz "#defines")

    Na koniec najważniejsze pytanie - czy w ogóle tego potrzebujemy?
    Czy jest wielu użytkowników "czekających" na dołączenie wielu czujników?

    Tak, pozwoliłem sobie na to, ale może być też małe rozwiązanie: Wiele czujników, ale z wieloma GPIO, jeden czujnik na pin. Nie trzeba walczyć z adresami, wystarczy zapętlić wszystkie piny z rolą "DS1820_IO". Kanał jest już ustawiony (wraz z pinem) i wiem, że czujnik na pinie 18 znajduje się w kuchni, a ten na pinie 21 w salonie.


    Więc proszę o komentarze w każdym kierunku

    Dodano po 14 [minutach]: .

    Dla W800 dodatkowy rozmiar (prosty do pełnego) to około 6k - mamy skomplikowane skanowanie, ale przede wszystkim "ładne" GUI konfiguracyjne rozwali obraz.

    Fajne? Ranking DIY
    O autorze
    max4elektroda
    Poziom 24  
    Offline 
  • #2 21585831
    p.kaczmarek2
    Moderator Smart Home
    Posty: 14751
    Pomógł: 659
    Ocena: 12869
    Dziękuję za tę interesującą prezentację. Pomysł na interfejs użytkownika i nazewnictwo jest bardzo fajny, chociaż rozważałbym zrobienie tego w aplikacji internetowej. Ale skoro jest już gotowe...
    Moją sugestią jest połączenie go teraz w obecnej formie, ale pozostawienie go włączonego tylko w OBK-Sensors:
    Rozszerzenie sterownika DS18(B)20 - wiele GPIO i wiele czujników na GPIO

    Wolę pojedynczy plik z #ifdef, jest łatwiejszy do odczytania i utrzymania...

    Generator komend jest fajny, ale myślę, że nowsze OBK nie wymagają backlogu, można umieścić każdą komendę w następnej linii.
    Pomogłem? Kup mi kawę.
  • #3 21585943
    Borygo123
    Poziom 29  
    Posty: 1081
    Pomógł: 122
    Ocena: 196
    Jeśli ma się swój domek i urządzenia typu piec itp to przydaje się coś takiego. Ja mam odczyty temperatur zrobione na WEMOS D1 Mini które wysyła to do Supli. Mam podłączone 3 moduły. Na jednym 5 czujników, na drugim 4 a trzeci mam przenośny jak chcę coś zbadać. Zaletą tego jest to, że nie muszę nic programować, tylko skonfigurować moduł (czyli zrobić to co Kolega w programie, ale klikając w aplikacji).
  • #4 21585964
    max4elektroda
    Poziom 24  
    Posty: 758
    Pomógł: 49
    Ocena: 189
    Dzięki za opinię!
    Rozumiem, że nie jest to całkowicie bezużyteczne ;-) .

    @p.kaczmarek2 jeszcze tylko kilka pytań:
    Polecenie wieloliniowe jest teraz dostępne na wszystkich platformach?
    Jeśli dobrze rozumiem, kompilacje sensorów są tylko dla platform Beken?

    Myślę, że większość użytkowników nie będzie potrzebować więcej niż jednego czujnika, więc wszystkie rzeczy potrzebne dla większej liczby są trochę przesadzone (w obsłudze i GUI - nie tylko strona konfiguracji, ale także strona główna).
    Oznaczałoby to, że lepiej byłoby mieć dwa sterowniki, prosty i pełny, aby można było zdecydować, który z nich załadować.
    To nowy pomysł, ale może warto spróbować?

    Jeśli chodzi o aplikację internetową - dobry punkt, ale myślę, że najpierw będę musiał dowiedzieć się, jak to działa.
    Czy są jakieś informacje lub samouczek?
    Czy pamiętasz jakiś niedawny dodatek, który mógłbym zbadać, aby uzyskać pomysł?

    Dzięki!
  • #5 21586015
    p.kaczmarek2
    Moderator Smart Home
    Posty: 14751
    Pomógł: 659
    Ocena: 12869
    max4elektroda napisał:
    .
    @p.kaczmarek2 jeszcze tylko kilka pytań:
    Komenda multi line jest już dostępna na wszystkich platformach?

    Cóż, to słuszna uwaga. Może więc można po prostu dodać pole wyboru do wyboru między formatami...
    Wielowierszowa linia poleceń traktuje tekst jako plik skryptu, więc wymaga włączonego zaplecza skryptowego OBK, podczas gdy backlog działa bez niego i jest lżejszy i prostszy.

    Komenda startowa może być wielowierszowa tylko jeśli ENABLE_OBK_SCRIPTING jest włączone w obk_config.h

    max4elektroda napisał:

    Jeśli dobrze rozumiem, kompilacje sensorów są tylko dla platform Beken?

    Obecnie tak, ale nie jest to przesądzone. Po prostu każda kompilacja online zajmuje trochę czasu na Githubie i nie jestem pewien, czy potrzebujemy wszystkich permutacji. Obawiam się również, że może istnieć jakiś limit czasu pracy na Githubie i w końcu możemy go przekroczyć.

    Być może będziemy mogli dodać budowanie sensorów dla innych platform, w zależności od wymagań, ale nadal wspieramy również zmianę obk_config.h i budowanie w PR na żądanie użytkownika.


    max4elektroda napisał:

    Oznaczałoby to, że lepiej byłoby mieć dwa sterowniki, prosty i pełny, aby można było zdecydować, który z nich załadować.
    To nowy pomysł, ale może warto spróbować?

    Nie mam silnej opinii na ten temat. Jedyną rzeczą, która ma znaczenie, jest rozmiar pamięci flash w głównym (prostym sterowniku) kompilacji. To dlatego, że napotykamy wiele problemów, gdy użycie pamięci flash jest zbyt wysokie, OTA się psuje, LFS zostaje nadpisany itp. Sugerowałbym również, aby mieć przynajmniej jakiś wspólny kod, może wspólne definicje opóźnień itp, przynajmniej trudniej jest utrzymać dwa oddzielne sterowniki



    max4elektroda napisał:

    Jeśli chodzi o aplikację internetową - dobry punkt, ale myślę, że najpierw będę musiał dowiedzieć się, jak to działa.
    Czy są jakieś informacje lub samouczek?
    Czy pamiętasz jakiś niedawny dodatek, który mógłbym zbadać, aby uzyskać pomysł?

    Nie sądzę, aby było to teraz wymagane, twoja strona OBK wykonana w C jest również dobra. Myślę, że lepszym priorytetem jest scalenie innych PR-ów, takich jak ulepszenia czasu itp.

    Mimo to, jeśli chcesz wiedzieć - tutorial:
    https://www.elektroda.com/news/news3971355.html
    Kod:
    https://github.com/OpenBekenIOT/webapp/tree/gh-pages/vue
    Przepływ pracy jest prosty - najpierw dodaj API w rest_interface (styl OBK) lub json_interface.c (naśladuje Tasmota), a następnie użyj go.

    Widziałem również, że dokonałeś przełomowej zmiany, aby umożliwić przesunięcie czasu w minutach - mogę to scalić, ale czy najpierw możesz przywrócić godziny, a następnie zezwolić tylko na części ułamkowe?
    Pomogłem? Kup mi kawę.
  • #6 21586391
    max4elektroda
    Poziom 24  
    Posty: 758
    Pomógł: 49
    Ocena: 189
    Przyjrzę się jeszcze raz całemu PR. Do tej pory skupiałem się na funkcji: Czego potrzebujemy, aby uzyskać użyteczne podejście.
    Postaram się to trochę poprawić pod kątem "rozmiaru". Może być trochę debugowania, JS nie jest zoptymalizowany ...

    p.kaczmarek2 napisał:
    Widziałem również, że dokonałeś przełomowej zmiany, aby umożliwić przesunięcie czasu w minutach - mogę to scalić, ale najpierw możesz przywrócić godziny, a następnie zezwolić na części ułamkowe?

    Masz na myśli PR #1485 ?
    Czy dobrze zrozumiałem, że chcesz zmienić polecenie, aby było "kompatybilne wstecz", nie ustawiając całkowitych minut, ale ustawiając je np. jako "0 godzin i 30 minut", jak


    CLOCK_CalcDST ..... 1 dla jednej godziny
    CLOCK_CalcDST ..... 0:30 dla trzydziestu minut

    ??

    Zmieniłem to (ponownie wykorzystując logikę z polecenia timzone ....)

    Ale w końcu to tylko po to, aby było prawie kompletne - wydaje się, że jest tylko jedna lokalizacja na świecie, która nie używa przesunięcia o godzinę, ale o 30 minut, Lord Howe Island w Australii ...
  • #7 21586399
    p.kaczmarek2
    Moderator Smart Home
    Posty: 14751
    Pomógł: 659
    Ocena: 12869
    Rozmiar pamięci flash ma duże znaczenie w głównej wersji (pojedyncza wersja DS18B20). W kompilacji czujników rozmiar flasha nie jest priorytetem, ponieważ dla kompilacji czujników usuwamy sterownik TuyaMCU, sterowniki pomiaru mocy itp.
    Tak, mogę go scalić, jeśli jest kompatybilny wstecz, jednak myślę, że 1,5 na 1 godzinę 30 minut jest w porządku. Nie ma potrzeby analizowania 0:30.
    Pomogłem? Kup mi kawę.
  • #8 21586410
    max4elektroda
    Poziom 24  
    Posty: 758
    Pomógł: 49
    Ocena: 189
    Kod parsowania już tam jest, przeniosłem go tylko do funkcji pomocniczej, aby mógł być używany przez wiele poleceń.


    Rozszerzenie sterownika DS18(B)20 - wiele GPIO i wiele czujników na GPIO

    Wiem, że mogę sobie zaprzeczać (jest bardzo rzadko używany, więc kogo to obchodzi ;-) ), ale myślę, że 0,5 godziny jest mniej przyjazne dla użytkownika niż 0:30 przez 30 minut.
    Mamy wtedy spójną składnię między ustawianiem przesunięcia strefy czasowej a ustawianiem przesunięcia DST.
  • #9 21586421
    p.kaczmarek2
    Moderator Smart Home
    Posty: 14751
    Pomógł: 659
    Ocena: 12869
    Hm ok, ale pytanie brzmiałoby, ile zużywa parsowanie flash z :. Jeśli jednak nie jest to dużo, to jest to akceptowalne.
    Pomogłem? Kup mi kawę.
  • #10 21586422
    max4elektroda
    Poziom 24  
    Posty: 758
    Pomógł: 49
    Ocena: 189
    Sprawdzę rozmiar. Zgłoszę to tutaj.

    Zrobię "recenzję" DS18B20 w przyszłym tygodniu (mam nadzieję). Następnym razem będę dość zajęty.

    Dodano po 1 [godzinie] 9 [minutach]: .

    Właśnie sprawdziłem niektóre rozmiary plików:

    Brak widocznej zmiany rozmiaru dla Beken-N - czy jest on wyściełany?
    W800 jest powiększony o 128 bajtów
    BL602 jest powiększony o 144 bajty

    Obejmuje to nowe sprawdzanie poprawności dla przesunięć DST > 2h (w tym komunikat o błędzie, który sam ma 93 znaki).

       int off = Tokenizer_GetArgsCount() < 9 ? 60 : hourArg2seconds(8)/60;
       if (off != off%121) {
          ADDLOG_ERROR(LOG_FEATURE_RAW, "CLOCK_CalcDST: DST offset must be <= 2 hours, but is %i minutes. Setting to default of 1 hour",off);
          off=60;
       }


    Dwie rzeczy do zapamiętania:
    Ta funkcja jest wyłączona dla wszystkich platform (pomimo symulatora - potrzebujemy jej włączonej do testów)
    Jak wskazałem wcześniej: Ten PR nie ma wysokiego priorytetu lub może zostać zignorowany, ponieważ jego przypadek użycia jest bardzo niski.
    Tylko sprawdzanie poprawności może być przydatne, ale ponieważ nie sprawdzamy innych argumentów ....

    Więc to zależy od ciebie, naprawdę nie mam nic przeciwko, jeśli ten PR nie zostanie scalony, nasza dyskusja (nie zrozum mnie źle, podobała mi się) była dłuższa niż czas spędzony z kodem.
  • #11 21588290
    p.kaczmarek2
    Moderator Smart Home
    Posty: 14751
    Pomógł: 659
    Ocena: 12869
    Mogę je scalić, proszę tylko o wskazanie, które PR są gotowe.

    To też jest dobre:
    https://github.com/openshwprojects/OpenBK7231T_App/pull/1689
    Moglibyśmy następnie użyć tego JSON w aplikacji internetowej, aby użyć aplikacji internetowej jako szczegółowego panelu, aby wyeliminować potrzebę dodawania więcej HTML w oprogramowaniu układowym.

    @divadiow możesz przetestować ten PR?
    Pomogłem? Kup mi kawę.
  • #13 21588368
    p.kaczmarek2
    Moderator Smart Home
    Posty: 14751
    Pomógł: 659
    Ocena: 12869
    To samo dotyczy DS18B20, po prostu daj mi ostateczne potwierdzenie i połączę.
    Pomogłem? Kup mi kawę.
  • #14 21588720
    Tilator
    Poziom 12  
    Posty: 139
    Pomógł: 2
    Ocena: 13
    B.T.W Czy jest coś dziwnego w sterowniku DS1820?

    Mam dwa różne urządzenia, jedno z BK7231N, a drugie z ECR6600. Dodałem ten czujnik DS1820 do obu.

    I oba mają ten sam problem. Stają się bardzo powolne, jeśli czujnik jest podłączony do kanału 1. Ponadto odczyt kanału zmienia się raz na jakiś czas na 0 lub 1 w zależności od wersji FW, podczas gdy odczyt czujnika nadal wygląda inaczej na stronie HTTP.

    Nie dzieje się tak, jeśli skonfiguruję kanał 0 do użycia z tym czujnikiem. Nie testowałem jeszcze żadnych innych kanałów, ale dziwne zachowanie zniknęło i wszystko działa dobrze, gdy zmieniłem kanał 1 na kanał 0. To samo dotyczy obu urządzeń.

    Nie skonfigurowałem kanału 1 do niczego innego.

    ************************************************************
    Trochę więcej informacji:

    Mam teraz kanał 0 powiązany z DS1820 i kanał 2 powiązany z przyciskiem i przekaźnikiem. Kanał 1 nie jest w ogóle używany.

    Nadal widzę to w dzienniku co jakiś czas:

    Info:CMD:tasCmnd POWER (Power1) received with args On
    Info:GEN:Brak zmian w kanale 1 (wciąż ustawiony na 1) - ignorowanie

    Czy kanał 1 jest zakodowany na stałe?
  • #15 21588754
    max4elektroda
    Poziom 24  
    Posty: 758
    Pomógł: 49
    Ocena: 189
    @p.kaczmarek2: Będę potrzebował trochę więcej czasu: w trybie "prostym" sterownik za bardzo zwiększa ślad pamięciowy. Dzieje się tak głównie dlatego, że współdzielony kod jest bardziej ogólny, np. ustawienie rozdzielczości zajmie się faktycznym ustawieniem i ustawi tylko zmienioną wartość. To i trochę więcej informacji lub możliwe wyjście debugowania zwiększa rozmiar. Obecnie staram się to zmniejszyć, ale być może będę musiał ponownie przemyśleć, jak mieć dwa sterowniki w jednym.

    Tilator napisał:
    Info:CMD:tasCmnd POWER (Power1) received with args On
    Info:GEN:Brak zmian w kanale 1 (nadal ustawiony na 1) - ignorowanie

    tasCmnd nie pochodzi z DS1820. Wygląda na jakieś polecenie tasmota?
    Po prostu spróbuj innego kanału, jeśli 1 jest używany przez tasmota.
  • #16 21588756
    Tilator
    Poziom 12  
    Posty: 139
    Pomógł: 2
    Ocena: 13
    >>21588754 .

    Wszystko usunąłem. Config jest pusty i autoexec.bat usunięty. Wyczyściłem też przez lfs_format.

    Ale mam skrypt php na routerze uruchamiający polecenia włączania/wyłączania zasilania. Wygląda na to, że oczekuje, że przekaźnik jest powiązany z kanałem 1, ponieważ użycie polecenia exec('curl http://x.x.x.x/cm?cmnd=Power1%20On') inicjuje kanał 1, nawet jeśli przekaźnik jest skonfigurowany do korzystania z kanału 2.

    Więc - przekaźnik musi być skonfigurowany do kanału 1, aby polecenie php działało?

    Nie używam ani nie potrzebuję MQTT ani niczego innego poza ustawianiem wartości kanału przez skrypt php. Czy potrzebuję i mogę jakoś wyłączyć tasmota?

    A może wystarczy po prostu exec('curl http://x.x.x.x/cm?cmnd=Power2%20On'), aby użyć kanału 2?

    I odpowiadając samemu sobie: to wszystko ;)
  • #17 21588767
    max4elektroda
    Poziom 24  
    Posty: 758
    Pomógł: 49
    Ocena: 189
    Tak, 1 w poleceniu odnosiło się do kanału 1. Dobrze, że sam na to wpadłeś.
  • #18 21590269
    p.kaczmarek2
    Moderator Smart Home
    Posty: 14751
    Pomógł: 659
    Ocena: 12869
    max4elektroda napisał:
    @p.kaczmarek2: Będę potrzebował jeszcze trochę czasu: w trybie "prostym" sterownik za bardzo zwiększa ślad pamięciowy. Dzieje się tak głównie dlatego, że współdzielony kod jest bardziej ogólny, np. ustawienie rozdzielczości zajmie się faktycznym ustawieniem i ustawi tylko zmienioną wartość. To i trochę więcej informacji lub możliwe wyjście debugowania zwiększa rozmiar. Obecnie próbuję to zmniejszyć, ale być może będę musiał ponownie przemyśleć, jak mieć dwa sterowniki w jednym.

    To nowa informacja. Więc, skoro tak mówisz, może po prostu zachować stary sterownik (oddzielna baza kodu) jako prosty i umieścić bardziej zaawansowany osobno?
    Pomogłem? Kup mi kawę.
  • #19 21591096
    max4elektroda
    Poziom 24  
    Posty: 758
    Pomógł: 49
    Ocena: 189
    Krótka aktualizacja: lokalnie (jeszcze nie wypchnięty - nie mogłem przetestować) zmniejszyłem "narzut" do około 150 bajtów.
    Jeśli "każdy bajt się liczy" w prostym sterowniku, myślę, że powinienem wrócić do dwóch sterowników - dzieląc tylko bardzo podstawowe funkcje (odczyt / zapis na magistrali onewire), ponieważ są one już obecne w prostym sterowniku.
  • #20 21592997
    max4elektroda
    Poziom 24  
    Posty: 758
    Pomógł: 49
    Ocena: 189
    Próbowałem z dwoma różnymi sterownikami, tylko wspólny kod w pliku używanym przez oba - wciąż 100+ bajtów więcej. Mogę tylko myśleć, że jest to spowodowane faktem, że funkcje współdzielone będą wymagały symboli globalnych, nie mogę tutaj używać funkcji statycznych, tak jak w oryginalnym kodzie.

    A może brakuje mi innego punktu, który (nieznacznie) zwiększa rozmiar?

    https://github.com/MaxineMuster/OpenBK7231T_App/tree/DS18B20_simple%2Bfull
  • #21 21594164
    p.kaczmarek2
    Moderator Smart Home
    Posty: 14751
    Pomógł: 659
    Ocena: 12869
    Biorąc pod uwagę, że to tylko 100 bajtów, to może uda się to scalić tak jak jest... tylko upewnij się, że nie zepsujesz istniejącej funkcjonalności.

    Multi AHT również może zostać połączone.
    Pomogłem? Kup mi kawę.
  • #22 21595460
    max4elektroda
    Poziom 24  
    Posty: 758
    Pomógł: 49
    Ocena: 189
    Właściwie to wolę mieć dwa oddzielne sterowniki, w tym celu otworzyłem https://github.com/openshwprojects/OpenBK7231T_App/pull/1705.

    Dwie różnice w stosunku do innego PR:
    Zmieniono tylko kod DS1820, nie timing dla usypiania, to powinien być osobny wątek. Dla mnie DS 18B20 na BK7238 nie działa, dokładnie tak jak w wersji release.
    Dodałem również pole wyboru, aby zezwolić na komendy wielowierszowe.

    Teraz to tylko testowanie obu wersji na wszystkich platformach, a później zmiana obk_config.h, aby włączyć tylko pełny sterownik, np. w wydaniu czujników.

    Niestety nie mam jak przetestować, więc może poproszę @divadiow o wsparcie?

    Istnieją dwa sterowniki, oryginalny i DS1820_FULL, oba wzajemnie się wykluczają.
  • #23 21595464
    divadiow
    Poziom 38  
    Posty: 5205
    Pomógł: 446
    Ocena: 914
    max4elektroda napisał:
    Niestety nie mam jak przetestować, więc może ponownie poproszę @divadiow o wsparcie?
    .

    Jasne, ale obawiam się, że będzie to musiało nastąpić w przyszłym tygodniu. Nie mam przy sobie DS18B20.
  • #24 21601042
    divadiow
    Poziom 38  
    Posty: 5205
    Pomógł: 446
    Ocena: 914
    aby potwierdzić, sterownik FULL i SIMPLE wymagają przetestowania na każdej (wszystkich?) platformach z pojedynczym ( edit: oczywiście wielokrotność jest pożądana) DS18B20, binaria z tego PR https://github.com/openshwprojects/OpenBK7231T_App/pull/1705 ?

    Dodano po 1 [godzinie] 17 [minutach]:

    zaczął próbować rzeczy. 1705_merge_8cb2556b9604_4M

    ESP32
    zarówno pełne, jak i proste powodują panikę / restart
    Kod: Text
    Zaloguj się, aby zobaczyć kod


    nie ma znaczenia, który GPIO ma przypisaną rolę DS1820_IO ani czy czujnik jest podłączony czy nie.
    Jeśli żaden pin nie jest przypisany do roli, sterownik uruchamia się.

    Dodano po 22 [minutach]:

    LN882H - IO A7

    Rozszerzenie sterownika DS18(B)20 - wiele GPIO i wiele czujników na GPIO Rozszerzenie sterownika DS18(B)20 - wiele GPIO i wiele czujników na GPIO Rozszerzenie sterownika DS18(B)20 - wiele GPIO i wiele czujników na GPIO

    Prosty dziennik ALL
    Kod: Text
    Zaloguj się, aby zobaczyć kod


    Pełny log ALL
    Kod: Text
    Zaloguj się, aby zobaczyć kod
  • #25 21601158
    max4elektroda
    Poziom 24  
    Posty: 758
    Pomógł: 49
    Ocena: 189
    divadiow napisał:
    platformy z pojedynczym (edit: oczywiście wielokrotność jest pożądana) DS18B20, binaria z tego PR https://github.com/openshwprojects/OpenBK7231T_App/pull/1705 ?

    Tak, dokładnie, byłoby świetnie.
  • Pomocny post
    #26 21601211
    divadiow
    Poziom 38  
    Posty: 5205
    Pomógł: 446
    Ocena: 914
    Pomyślałem, że powinienem wrócić i przeczytać Twój pierwszy post. Założyłem (!), że każdy czujnik ma być na własnym gpio. Przerobię na wzór twojej płytki. Ciekawe jednak, że przy pełnym wykryje pierwsze dwa, ale nigdy ostatniego z 3, które ustawiłem, niezależnie od gpio powyżej drugiego.

    W każdym razie, zmienię to.

    Rozszerzenie sterownika DS18(B)20 - wiele GPIO i wiele czujników na GPIO .

    Dodano po 33 [minutach]: .

    Rozszerzenie sterownika DS18(B)20 - wiele GPIO i wiele czujników na GPIO Rozszerzenie sterownika DS18(B)20 - wiele GPIO i wiele czujników na GPIO

    Spoiler:
    Info:SENSOR:D S1820 - Sensor 0x28 0xA6 0xB2 0x55 0x00 0x00 0x65 on B3 reported 26.19
    Debug:SENSOR:D S1820 - Znaleziono urządzenie o indeksie 2 - GPIO=19
    Debug:SENSOR:D S1820 - Znaleziono GPIO dla urządzenia - DS18B20_GPIO=19
    Debug:SENSOR:D S1820 - Znaleziono urządzenie o indeksie 2 - GPIO=19
    Debug:SENSOR:D S1820 - ds18b20_readScratchPad zwrócił 1 - Crc8CQuick=121 / scratchPad[SCRATCHPAD_CRC]=121
    Debug:SENSOR:D S1820 - ds18b20_Scratchpat2TempC: family=28, raw=3376 (rozdzielczość 12 bitów)
    Debug:SENSOR:D S1820 - Urządzenie 2 (0x28 0x5E 0x34 0x59 0x00 0x00 0xF3) zgłosiło 26,38
    Info:SENSOR:D S1820 - Czujnik 0x28 0x5E 0x34 0x59 0x00 0x00 0x00 0xF3 na B3 zgłoszony 26.38
    Debug:SENSOR:D S1820 - Znaleziono urządzenie o indeksie 3 - GPIO=19
    Debug:SENSOR:D S1820 - Znaleziono GPIO dla urządzenia - DS18B20_GPIO=19
    Debug:SENSOR:D S1820 - Znaleziono urządzenie o indeksie 3 - GPIO=19
    Debug:SENSOR:D S1820 - ds18b20_readScratchPad zwrócił 1 - Crc8CQuick=121 / scratchPad[SCRATCHPAD_CRC]=121
    Debug:SENSOR:D S1820 - ds18b20_Scratchpat2TempC: family=28, raw=3376 (rozdzielczość 12 bitów)
    Debug:SENSOR:D S1820 - Urządzenie 3 (0x28 0xF9 0x28 0x5A 0x00 0x00 0xFF) zgłosiło 26,38
    Info:SENSOR:D S1820 - Czujnik 0x28 0xF9 0x28 0x5A 0x00 0x00 0xFF na B3 zgłoszony 26.38
    Debug:SENSOR:D S1820 - Znaleziono urządzenie o indeksie 4 - GPIO=19
    Debug:SENSOR:D S1820 - Znaleziono GPIO dla urządzenia - DS18B20_GPIO=19
    Debug:SENSOR:D S1820 - Znaleziono urządzenie o indeksie 4 - GPIO=19
    Debug:SENSOR:D S1820 - ds18b20_readScratchPad zwrócił 1 - Crc8CQuick=85 / scratchPad[SCRATCHPAD_CRC]=85
    Debug:SENSOR:D S1820 - ds18b20_Scratchpat2TempC: family=28, raw=3360 (rozdzielczość 12 bitów)
    Debug:SENSOR:D S1820 - Urządzenie 4 (0x28 0xFD 0xAB 0x55 0x00 0x00 0x00 0x3C) zgłosiło 26,25
    Info:SENSOR:D S1820 - Czujnik 0x28 0xFD 0xAB 0x55 0x00 0x00 0x00 0x3C na B3 zgłosił 26.25
    Debug:SENSOR:D S1820 - Znaleziono urządzenie o indeksie 5 - GPIO=19
    Debug:SENSOR:D S1820 - Znaleziono GPIO dla urządzenia - DS18B20_GPIO=19
    Debug:SENSOR:D S1820 - Znaleziono urządzenie o indeksie 5 - GPIO=19
    Debug:SENSOR:D S1820 - ds18b20_readScratchPad zwrócił 1 - Crc8CQuick=65 / scratchPad[SCRATCHPAD_CRC]=65
    Debug:SENSOR:D S1820 - ds18b20_Scratchpat2TempC: family=28, raw=3352 (rozdzielczość 12 bitów)
    Debug:SENSOR:D S1820 - Urządzenie 5 (0x28 0x33 0x03 0x57 0x00 0x00 0xBA) zgłosiło 26.19
    Info:SENSOR:D S1820 - Czujnik 0x28 0x33 0x03 0x57 0x00 0x00 0xBA na B3 zgłoszony 26.19
    Debug:SENSOR:D S1820 - ... Znaleziono pin 19! dsread=0
    Info:SENSOR:D S1820 - Rozpoczęcie konwersji
    Debug:SENSOR:D S1820 - ... Znaleziono pin 19! dsread=1
    Info:SENSOR:D S1820 - Odczyt temperatury z 6 czujników DS18B20
    Debug:SENSOR:D S1820 - Znaleziono urządzenie o indeksie 0 - GPIO=19
    Debug:SENSOR:D S1820 - Znaleziono GPIO dla urządzenia - DS18B20_GPIO=19
    Debug:SENSOR:D S1820 - Znaleziono urządzenie o indeksie 0 - GPIO=19
    Debug:SENSOR:D S1820 - ds18b20_readScratchPad zwrócił 1 - Crc8CQuick=87 / scratchPad[SCRATCHPAD_CRC]=87
    Debug:SENSOR:D S1820 - ds18b20_Scratchpat2TempC: family=28, raw=3344 (rozdzielczość 12 bitów)
    Debug:SENSOR:D S1820 - Urządzenie 0 (0x28 0x44 0x02 0x5B 0x00 0x00 0x78) zgłoszone 26.12
    Info:SENSOR:D S1820 - Czujnik 0x28 0x44 0x02 0x5B 0x00 0x00 0x78 na B3 zgłoszony 26.12
    Debug:SENSOR:D S1820 - Znaleziono urządzenie o indeksie 1 - GPIO=19
    Debug:SENSOR:D S1820 - Znaleziono GPIO dla urządzenia - DS18B20_GPIO=19
    Debug:SENSOR:D S1820 - Znaleziono urządzenie o indeksie 1 - GPIO=19
    Debug:SENSOR:D S1820 - ds18b20_readScratchPad zwrócił 1 - Crc8CQuick=65 / scratchPad[SCRATCHPAD_CRC]=65
    Debug:SENSOR:D S1820 - ds18b20_Scratchpat2TempC: family=28, raw=3352 (rozdzielczość 12 bitów)
    Debug:SENSOR:D S1820 - Urządzenie 1 (0x28 0xA6 0xB2 0x55 0x00 0x00 0x65) zgłosiło 26,19
    Info:SENSOR:D S1820 - Czujnik 0x28 0xA6 0xB2 0x55 0x00 0x00 0x65 na B3 zgłoszony 26.19
    Debug:SENSOR:D S1820 - Znaleziono urządzenie o indeksie 2 - GPIO=19
    Debug:SENSOR:D S1820 - Znaleziono GPIO dla urządzenia - DS18B20_GPIO=19
    Debug:SENSOR:D S1820 - Znaleziono urządzenie o indeksie 2 - GPIO=19
    Debug:SENSOR:D S1820 - ds18b20_readScratchPad zwrócił 1 - Crc8CQuick=120 / scratchPad[SCRATCHPAD_CRC]=120
    Debug:SENSOR:D S1820 - ds18b20_Scratchpat2TempC: family=28, raw=3368 (rozdzielczość 12 bitów)
    Debug:SENSOR:D S1820 - Urządzenie 2 (0x28 0x5E 0x34 0x59 0x00 0x00 0xF3) zgłosiło 26,31
    Info:SENSOR:D S1820 - Czujnik 0x28 0x5E 0x34 0x59 0x00 0x00 0x00 0xF3 na B3 zgłoszony 26.31
    Debug:SENSOR:D S1820 - Znaleziono urządzenie o indeksie 3 - GPIO=19
    Debug:SENSOR:D S1820 - Znaleziono GPIO dla urządzenia - DS18B20_GPIO=19
    Debug:SENSOR:D S1820 - Znaleziono urządzenie o indeksie 3 - GPIO=19
    Debug:SENSOR:D S1820 - ds18b20_readScratchPad zwrócił 1 - Crc8CQuick=121 / scratchPad[SCRATCHPAD_CRC]=121
    Debug:SENSOR:D S1820 - ds18b20_Scratchpat2TempC: family=28, raw=3376 (rozdzielczość 12 bitów)
    Debug:SENSOR:D S1820 - Urządzenie 3 (0x28 0xF9 0x28 0x5A 0x00 0x00 0xFF) zgłosiło 26,38
    Info:SENSOR:D S1820 - Czujnik 0x28 0xF9 0x28 0x5A 0x00 0x00 0xFF na B3 zgłoszony 26.38
    Debug:SENSOR:D S1820 - Znaleziono urządzenie o indeksie 4 - GPIO=19
    Debug:SENSOR:D S1820 - Znaleziono GPIO dla urządzenia - DS18B20_GPIO=19
    Debug:SENSOR:D S1820 - Znaleziono urządzenie o indeksie 4 - GPIO=19
    Debug:SENSOR:D S1820 - ds18b20_readScratchPad zwrócił 1 - Crc8CQuick=120 / scratchPad[SCRATCHPAD_CRC]=120
    Debug:SENSOR:D S1820 - ds18b20_Scratchpat2TempC: family=28, raw=3368 (rozdzielczość 12 bitów)
    Debug:SENSOR:D S1820 - Urządzenie 4 (0x28 0xFD 0xAB 0x55 0x00 0x00 0x00 0x3C) zgłosiło 26,31
    Info:SENSOR:D S1820 - Czujnik 0x28 0xFD 0xAB 0x55 0x00 0x00 0x00 0x3C na B3 zgłoszony 26.31
    Debug:SENSOR:D S1820 - Znaleziono urządzenie o indeksie 5 - GPIO=19
    Debug:SENSOR:D S1820 - Znaleziono GPIO dla urządzenia - DS18B20_GPIO=19
    Debug:SENSOR:D S1820 - Znaleziono urządzenie o indeksie 5 - GPIO=19
    Debug:SENSOR:D S1820 - ds18b20_readScratchPad zwrócił 1 - Crc8CQuick=65 / scratchPad[SCRATCHPAD_CRC]=65
    Debug:SENSOR:D S1820 - ds18b20_Scratchpat2TempC: family=28, raw=3352 (rozdzielczość 12 bitów)
    Debug:SENSOR:D S1820 - Urządzenie 5 (0x28 0x33 0x03 0x57 0x00 0x00 0xBA) zgłosiło 26,19
    Info:SENSOR:D S1820 - Czujnik 0x28 0x33 0x03 0x57 0x00 0x00 0xBA na B3 zgłoszono 26.19
    Debug:SENSOR:D S1820 - ... Znaleziono pin 19! dsread=0
    Info:SENSOR:D S1820 - Rozpoczęcie konwersji
    Debug:SENSOR:D S1820 - ... Znaleziono pin 19! dsread=1
    Info:SENSOR:D S1820 - Odczyt temperatury z 6 czujników DS18B20
    Debug:SENSOR:D S1820 - Znaleziono urządzenie o indeksie 0 - GPIO=19
    Debug:SENSOR:D S1820 - Znaleziono GPIO dla urządzenia - DS18B20_GPIO=19
    Debug:SENSOR:D S1820 - Znaleziono urządzenie o indeksie 0 - GPIO=19
    Debug:SENSOR:D S1820 - ds18b20_readScratchPad zwrócił 1 - Crc8CQuick=86 / scratchPad[SCRATCHPAD_CRC]=86
    Debug:SENSOR:D S1820 - ds18b20_Scratchpat2TempC: family=28, raw=3336 (rozdzielczość 12 bitów)
    Debug:SENSOR:D S1820 - Urządzenie 0 (0x28 0x44 0x02 0x5B 0x00 0x00 0x78) zgłosiło 26,06
    Info:SENSOR:D S1820 - Czujnik 0x28 0x44 0x02 0x5B 0x00 0x00 0x78 na B3 zgłoszony 26.06
    Debug:SENSOR:D S1820 - Znaleziono urządzenie o indeksie 1 - GPIO=19
    Debug:SENSOR:D S1820 - Znaleziono GPIO dla urządzenia - DS18B20_GPIO=19
    Debug:SENSOR:D S1820 - Znaleziono urządzenie o indeksie 1 - GPIO=19
    Debug:SENSOR:D S1820 - ds18b20_readScratchPad zwrócił 1 - Crc8CQuick=65 / scratchPad[SCRATCHPAD_CRC]=65
    Debug:SENSOR:D S1820 - ds18b20_Scratchpat2TempC: family=28, raw=3352 (rozdzielczość 12 bitów)
    Debug:SENSOR:D S1820 - Urządzenie 1 (0x28 0xA6 0xB2 0x55 0x00 0x00 0x65) zgłosiło 26,19
    Info:SENSOR:D S1820 - Czujnik 0x28 0xA6 0xB2 0x55 0x00 0x00 0x65 na B3 zgłoszony 26.19
    Debug:SENSOR:D S1820 - Znaleziono urządzenie o indeksie 2 - GPIO=19
    Debug:SENSOR:D S1820 - Znaleziono GPIO dla urządzenia - DS18B20_GPIO=19
    Debug:SENSOR:D S1820 - Znaleziono urządzenie o indeksie 2 - GPIO=19
    Debug:SENSOR:D S1820 - ds18b20_readScratchPad zwrócił 1 - Crc8CQuick=121 / scratchPad[SCRATCHPAD_CRC]=121
    Debug:SENSOR:D S1820 - ds18b20_Scratchpat2TempC: family=28, raw=3376 (rozdzielczość 12 bitów)
    Debug:SENSOR:D S1820 - Urządzenie 2 (0x28 0x5E 0x34 0x59 0x00 0x00 0xF3) zgłosiło 26,38
    Info:SENSOR:D S1820 - Czujnik 0x28 0x5E 0x34 0x59 0x00 0x00 0x00 0xF3 na B3 zgłoszony 26.38
    Debug:SENSOR:D S1820 - Znaleziono urządzenie o indeksie 3 - GPIO=19
    Debug:SENSOR:D S1820 - Znaleziono GPIO dla urządzenia - DS18B20_GPIO=19
    Debug:SENSOR:D S1820 - Znaleziono urządzenie o indeksie 3 - GPIO=19
    Debug:SENSOR:D S1820 - ds18b20_readScratchPad zwrócił 1 - Crc8CQuick=121 / scratchPad[SCRATCHPAD_CRC]=121
    Debug:SENSOR:D S1820 - ds18b20_Scratchpat2TempC: family=28, raw=3376 (rozdzielczość 12 bitów)
    Debug:SENSOR:D S1820 - Urządzenie 3 (0x28 0xF9 0x28 0x5A 0x00 0x00 0xFF) zgłosiło 26,38
    Info:SENSOR:D S1820 - Czujnik 0x28 0xF9 0x28 0x5A 0x00 0x00 0xFF na B3 zgłoszony 26.38
    Debug:SENSOR:D S1820 - Znaleziono urządzenie o indeksie 4 - GPIO=19
    Debug:SENSOR:D S1820 - Znaleziono GPIO dla urządzenia - DS18B20_GPIO=19
    Debug:SENSOR:D S1820 - Znaleziono urządzenie o indeksie 4 - GPIO=19
    Debug:SENSOR:D S1820 - ds18b20_readScratchPad zwrócił 1 - Crc8CQuick=85 / scratchPad[SCRATCHPAD_CRC]=85
    Debug:SENSOR:D S1820 - ds18b20_Scratchpat2TempC: family=28, raw=3360 (rozdzielczość 12 bitów)
    Debug:SENSOR:D S1820 - Urządzenie 4 (0x28 0xFD 0xAB 0x55 0x00 0x00 0x00 0x3C) zgłosiło 26,25
    Info:SENSOR:D S1820 - Czujnik 0x28 0xFD 0xAB 0x55 0x00 0x00 0x00 0x3C na B3 zgłosił 26.25
    Debug:SENSOR:D S1820 - Znaleziono urządzenie o indeksie 5 - GPIO=19
    Debug:SENSOR:D S1820 - Znaleziono GPIO dla urządzenia - DS18B20_GPIO=19
    Debug:SENSOR:D S1820 - Znaleziono urządzenie o indeksie 5 - GPIO=19
    Debug:SENSOR:D S1820 - ds18b20_readScratchPad zwrócił 1 - Crc8CQuick=65 / scratchPad[SCRATCHPAD_CRC]=65
    Debug:SENSOR:D S1820 - ds18b20_Scratchpat2TempC: family=28, raw=3352 (rozdzielczość 12 bitów)
    Debug:SENSOR:D S1820 - Urządzenie 5 (0x28 0x33 0x03 0x57 0x00 0x00 0xBA) zgłosiło 26,19
    Info:SENSOR:D S1820 - Czujnik 0x28 0x33 0x03 0x57 0x00 0x00 0xBA na B3 zgłoszono 26.19
    Debug:SENSOR:D S1820 - ... Znaleziono pin 19! dsread=0
    Info:SENSOR:D S1820 - Rozpoczęcie konwersji
    Debug:SENSOR:D S1820 - ... Znaleziono pin 19! dsread=1
    Info:SENSOR:D S1820 - Odczyt temperatury z 6 czujników DS18B20
    Debug:SENSOR:D S1820 - Znaleziono urządzenie o indeksie 0 - GPIO=19
    Debug:SENSOR:D S1820 - Znaleziono GPIO dla urządzenia - DS18B20_GPIO=19
    Debug:SENSOR:D S1820 - Znaleziono urządzenie o indeksie 0 - GPIO=19
    Debug:SENSOR:D S1820 - ds18b20_readScratchPad zwrócił 1 - Crc8CQuick=87 / scratchPad[SCRATCHPAD_CRC]=87
    Debug:SENSOR:D S1820 - ds18b20_Scratchpat2TempC: family=28, raw=3344 (rozdzielczość 12 bitów)
    Debug:SENSOR:D S1820 - Urządzenie 0 (0x28 0x44 0x02 0x5B 0x00 0x00 0x78) zgłosiło 26.12
    Info:SENSOR:D S1820 - Czujnik 0x28 0x44 0x02 0x5B 0x00 0x00 0x78 na B3 zgłoszony 26.12
    Debug:SENSOR:D S1820 - Znaleziono urządzenie o indeksie 1 - GPIO=19
    Debug:SENSOR:D S1820 - Znaleziono GPIO dla urządzenia - DS18B20_GPIO=19
    Debug:SENSOR:D S1820 - Znaleziono urządzenie o indeksie 1 - GPIO=19
    Debug:SENSOR:D S1820 - ds18b20_readScratchPad zwrócił 1 - Crc8CQuick=65 / scratchPad[SCRATCHPAD_CRC]=65
    Debug:SENSOR:D S1820 - ds18b20_Scratchpat2TempC: family=28, raw=3352 (rozdzielczość 12 bitów)
    Debug:SENSOR:D S1820 - Urządzenie 1 (0x28 0xA6 0xB2 0x55 0x00 0x00 0x65) zgłosiło 26,19
    Info:SENSOR:D S1820 - Czujnik 0x28 0xA6 0xB2 0x55 0x00 0x00 0x65 na B3 zgłoszony 26.19
    Debug:SENSOR:D S1820 - Znaleziono urządzenie o indeksie 2 - GPIO=19
    Debug:SENSOR:D S1820 - Znaleziono GPIO dla urządzenia - DS18B20_GPIO=19
    Debug:SENSOR:D S1820 - Znaleziono urządzenie o indeksie 2 - GPIO=19
    Debug:SENSOR:D S1820 - ds18b20_readScratchPad zwrócił 1 - Crc8CQuick=121 / scratchPad[SCRATCHPAD_CRC]=121
    Debug:SENSOR:D S1820 - ds18b20_Scratchpat2TempC: family=28, raw=3376 (rozdzielczość 12 bitów)
    Debug:SENSOR:D S1820 - Urządzenie 2 (0x28 0x5E 0x34 0x59 0x00 0x00 0xF3) zgłosiło 26,38
    Info:SENSOR:D S1820 - Czujnik 0x28 0x5E 0x34 0x59 0x00 0x00 0x00 0xF3 na B3 zgłoszony 26.38
    Debug:SENSOR:D S1820 - Znaleziono urządzenie o indeksie 3 - GPIO=19
    Debug:SENSOR:D S1820 - Znaleziono GPIO dla urządzenia - DS18B20_GPIO=19
    Debug:SENSOR:D S1820 - Znaleziono urządzenie o indeksie 3 - GPIO=19
    Debug:SENSOR:D S1820 - ds18b20_readScratchPad zwrócił 1 - Crc8CQuick=121 / scratchPad[SCRATCHPAD_CRC]=121
    Debug:SENSOR:D S1820 - ds18b20_Scratchpat2TempC: family=28, raw=3376 (rozdzielczość 12 bitów)
    Debug:SENSOR:D S1820 - Urządzenie 3 (0x28 0xF9 0x28 0x5A 0x00 0x00 0xFF) zgłosiło 26,38
    Info:SENSOR:D S1820 - Czujnik 0x28 0xF9 0x28 0x5A 0x00 0x00 0xFF na B3 zgłoszony 26.38
    Debug:SENSOR:D S1820 - Znaleziono urządzenie o indeksie 4 - GPIO=19
    Debug:SENSOR:D S1820 - Znaleziono GPIO dla urządzenia - DS18B20_GPIO=19
    Debug:SENSOR:D S1820 - Znaleziono urządzenie o indeksie 4 - GPIO=19
    Debug:SENSOR:D S1820 - ds18b20_readScratchPad zwrócił 1 - Crc8CQuick=85 / scratchPad[SCRATCHPAD_CRC]=85
    Debug:SENSOR:D S1820 - ds18b20_Scratchpat2TempC: family=28, raw=3360 (rozdzielczość 12 bitów)
    Debug:SENSOR:D S1820 - Urządzenie 4 (0x28 0xFD 0xAB 0x55 0x00 0x00 0x00 0x3C) zgłosiło 26,25
    Info:SENSOR:D S1820 - Czujnik 0x28 0xFD 0xAB 0x55 0x00 0x00 0x00 0x3C na B3 zgłosił 26.25
    Debug:SENSOR:D S1820 - Znaleziono urządzenie o indeksie 5 - GPIO=19
    Debug:SENSOR:D S1820 - Znaleziono GPIO dla urządzenia - DS18B20_GPIO=19
    Debug:SENSOR:D S1820 - Znaleziono urządzenie o indeksie 5 - GPIO=19
    Debug:SENSOR:D S1820 - ds18b20_readScratchPad zwrócił 1 - Crc8CQuick=65 / scratchPad[SCRATCHPAD_CRC]=65
    Debug:SENSOR:D S1820 - ds18b20_Scratchpat2TempC: family=28, raw=3352 (rozdzielczość 12 bitów)
    Debug:SENSOR:D S1820 - Urządzenie 5 (0x28 0x33 0x03 0x57 0x00 0x00 0xBA) zgłosiło 26,19
    Info:SENSOR:D S1820 - Czujnik 0x28 0x33 0x03 0x57 0x00 0x00 0xBA na B3 zgłoszono 26.19
    Debug:SENSOR:D S1820 - ... Znaleziono pin 19! dsread=0
    Info:SENSOR:D S1820 - Rozpoczęcie konwersji
    Debug:SENSOR:D S1820 - ... Znaleziono pin 19! dsread=1
    Info:SENSOR:D S1820 - Odczyt temperatury z 6 czujników DS18B20
    Debug:SENSOR:D S1820 - Znaleziono urządzenie o indeksie 0 - GPIO=19
    Debug:SENSOR:D S1820 - Znaleziono GPIO dla urządzenia - DS18B20_GPIO=19
    Debug:SENSOR:D S1820 - Znaleziono urządzenie o indeksie 0 - GPIO=19
    Debug:SENSOR:D S1820 - ds18b20_readScratchPad zwrócił 1 - Crc8CQuick=86 / scratchPad[SCRATCHPAD_CRC]=86
    Debug:SENSOR:D S1820 - ds18b20_Scratchpat2TempC: family=28, raw=3336 (rozdzielczość 12 bitów)
    Debug:SENSOR:D S1820 - Urządzenie 0 (0x28 0x44 0x02 0x5B 0x00 0x00 0x78) zgłosiło 26,06
    Info:SENSOR:D S1820 - Czujnik 0x28 0x44 0x02 0x5B 0x00 0x00 0x78 na B3 zgłoszony 26.06
    Debug:SENSOR:D S1820 - Znaleziono urządzenie o indeksie 1 - GPIO=19
    Debug:SENSOR:D S1820 - Znaleziono GPIO dla urządzenia - DS18B20_GPIO=19
    Debug:SENSOR:D S1820 - Znaleziono urządzenie o indeksie 1 - GPIO=19
    Debug:SENSOR:D S1820 - ds18b20_readScratchPad zwrócił 1 - Crc8CQuick=65 / scratchPad[SCRATCHPAD_CRC]=65
    Debug:SENSOR:D S1820 - ds18b20_Scratchpat2TempC: family=28, raw=3352 (rozdzielczość 12 bitów)
    Debug:SENSOR:D S1820 - Urządzenie 1 (0x28 0xA6 0xB2 0x55 0x00 0x00 0x65) zgłosiło 26,19
    Info:SENSOR:D S1820 - Czujnik 0x28 0xA6 0xB2 0x55 0x00 0x00 0x65 na B3 zgłoszony 26.19
    Debug:SENSOR:D S1820 - Znaleziono urządzenie o indeksie 2 - GPIO=19
    Debug:SENSOR:D S1820 - Znaleziono GPIO dla urządzenia - DS18B20_GPIO=19
    Debug:SENSOR:D S1820 - Znaleziono urządzenie o indeksie 2 - GPIO=19
    Debug:SENSOR:D S1820 - ds18b20_readScratchPad zwrócił 1 - Crc8CQuick=121 / scratchPad[SCRATCHPAD_CRC]=121
    Debug:SENSOR:D S1820 - ds18b20_Scratchpat2TempC: family=28, raw=3376 (rozdzielczość 12 bitów)
    Debug:SENSOR:D S1820 - Urządzenie 2 (0x28 0x5E 0x34 0x59 0x00 0x00 0xF3) zgłosiło 26,38
    Info:SENSOR:D S1820 - Czujnik 0x28 0x5E 0x34 0x59 0x00 0x00 0x00 0xF3 na B3 zgłoszony 26.38
    Debug:SENSOR:D S1820 - Znaleziono urządzenie o indeksie 3 - GPIO=19
    Debug:SENSOR:D S1820 - Znaleziono GPIO dla urządzenia - DS18B20_GPIO=19
    Debug:SENSOR:D S1820 - Znaleziono urządzenie o indeksie 3 - GPIO=19
    Debug:SENSOR:D S1820 - ds18b20_readScratchPad zwrócił 1 - Crc8CQuick=121 / scratchPad[SCRATCHPAD_CRC]=121
    Debug:SENSOR:D S1820 - ds18b20_Scratchpat2TempC: family=28, raw=3376 (rozdzielczość 12 bitów)
    Debug:SENSOR:D S1820 - Urządzenie 3 (0x28 0xF9 0x28 0x5A 0x00 0x00 0xFF) zgłosiło 26,38
    Info:SENSOR:D S1820 - Czujnik 0x28 0xF9 0x28 0x5A 0x00 0x00 0xFF na B3 zgłosił 26.38
    Debug:SENSOR:D S1820 - Znaleziono urządzenie o indeksie 4 - GPIO=19
    Debug:SENSOR:D S1820 - Znaleziono GPIO dla urządzenia - DS18B20_GPIO=19
    Debug:SENSOR:D S1820 - Znaleziono urządzenie o indeksie 4 - GPIO=19
    Debug:SENSOR:D S1820 - ds18b20_readScratchPad zwrócił 1 - Crc8CQuick=85 / scratchPad[SCRATCHPAD_CRC]=85
    Debug:SENSOR:D S1820 - ds18b20_Scratchpat2TempC: family=28, raw=3360 (rozdzielczość 12 bitów)
    Debug:SENSOR:D S1820 - Urządzenie 4 (0x28 0xFD 0xAB 0x55 0x00 0x00 0x00 0x3C) zgłosiło 26,25
    Info:SENSOR:D S1820 - Czujnik 0x28 0xFD 0xAB 0x55 0x00 0x00 0x00 0x3C na B3 zgłosił 26.25
    Debug:SENSOR:D S1820 - Znaleziono urządzenie o indeksie 5 - GPIO=19
    Debug:SENSOR:D S1820 - Znaleziono GPIO dla urządzenia - DS18B20_GPIO=19
    Debug:SENSOR:D S1820 - Znaleziono urządzenie o indeksie 5 - GPIO=19
    Debug:SENSOR:D S1820 - ds18b20_readScratchPad zwrócił 1 - Crc8CQuick=65 / scratchPad[SCRATCHPAD_CRC]=65
    Debug:SENSOR:D S1820 - ds18b20_Scratchpat2TempC: family=28, raw=3352 (rozdzielczość 12 bitów)
    Debug:SENSOR:D S1820 - Urządzenie 5 (0x28 0x33 0x03 0x57 0x00 0x00 0xBA) zgłosiło 26,19
    Info:SENSOR:D S1820 - Czujnik 0x28 0x33 0x03 0x57 0x00 0x00 0xBA na B3 zgłoszono 26.19
    Debug:SENSOR:D S1820 - ... Znaleziono pin 19! dsread=0
    Info:SENSOR:D S1820 - Rozpoczęcie konwersji
    Debug:SENSOR:D S1820 - ... Znaleziono pin 19! dsread=1
    Info:SENSOR:D S1820 - Odczyt temperatury z 6 czujników DS18B20
    Debug:SENSOR:D S1820 - Znaleziono urządzenie o indeksie 0 - GPIO=19
    Debug:SENSOR:D S1820 - Znaleziono GPIO dla urządzenia - DS18B20_GPIO=19
    Debug:SENSOR:D S1820 - Znaleziono urządzenie o indeksie 0 - GPIO=19
    Debug:SENSOR:D S1820 - ds18b20_readScratchPad zwrócił 1 - Crc8CQuick=225 / scratchPad[SCRATCHPAD_CRC]=225
    Debug:SENSOR:D S1820 - ds18b20_Scratchpat2TempC: family=28, raw=3328 (rozdzielczość 12 bitów)
    Debug:SENSOR:D S1820 - Urządzenie 0 (0x28 0x44 0x02 0x5B 0x00 0x00 0x78) zgłosiło 26,00
    Info:SENSOR:D S1820 - Sensor 0x28 0x44 0x02 0x5B 0x00 0x00 0x78 on B3 reported 26.00
    Debug:SENSOR:D S1820 - Znaleziono urządzenie o indeksie 1 - GPIO=19
    Debug:SENSOR:D S1820 - Znaleziono GPIO dla urządzenia - DS18B20_GPIO=19
    Debug:SENSOR:D S1820 - Znaleziono urządzenie o indeksie 1 - GPIO=19
    Debug:SENSOR:D S1820 - ds18b20_readScratchPad zwrócił 1 - Crc8CQuick=65 / scratchPad[SCRATCHPAD_CRC]=65
    Debug:SENSOR:D S1820 - ds18b20_Scratchpat2TempC: family=28, raw=3352 (rozdzielczość 12 bitów)
    Debug:SENSOR:D S1820 - Urządzenie 1 (0x28 0xA6 0xB2 0x55 0x00 0x00 0x65) zgłosiło 26,19
    Info:SENSOR:D S1820 - Czujnik 0x28 0xA6 0xB2 0x55 0x00 0x00 0x65 na B3 zgłoszony 26.19
    Debug:SENSOR:D S1820 - Znaleziono urządzenie o indeksie 2 - GPIO=19
    Debug:SENSOR:D S1820 - Znaleziono GPIO dla urządzenia - DS18B20_GPIO=19
    Debug:SENSOR:D S1820 - Znaleziono urządzenie o indeksie 2 - GPIO=19
    Debug:SENSOR:D S1820 - ds18b20_readScratchPad zwrócił 1 - Crc8CQuick=121 / scratchPad[SCRATCHPAD_CRC]=121
    Debug:SENSOR:D S1820 - ds18b20_Scratchpat2TempC: family=28, raw=3376 (rozdzielczość 12 bitów)
    Debug:SENSOR:D S1820 - Urządzenie 2 (0x28 0x5E 0x34 0x59 0x00 0x00 0xF3) zgłosiło 26,38
    Info:SENSOR:D S1820 - Czujnik 0x28 0x5E 0x34 0x59 0x00 0x00 0x00 0xF3 na B3 zgłoszony 26.38
    Debug:SENSOR:D S1820 - Znaleziono urządzenie o indeksie 3 - GPIO=19
    Debug:SENSOR:D S1820 - Znaleziono GPIO dla urządzenia - DS18B20_GPIO=19
    Debug:SENSOR:D S1820 - Znaleziono urządzenie o indeksie 3 - GPIO=19
    Debug:SENSOR:D S1820 - ds18b20_readScratchPad zwrócił 1 - Crc8CQuick=120 / scratchPad[SCRATCHPAD_CRC]=120
    Debug:SENSOR:D S1820 - ds18b20_Scratchpat2TempC: family=28, raw=3368 (rozdzielczość 12 bitów)
    Debug:SENSOR:D S1820 - Urządzenie 3 (0x28 0xF9 0x28 0x5A 0x00 0x00 0xFF) zgłosiło 26.31
    Info:SENSOR:D S1820 - Czujnik 0x28 0xF9 0x28 0x5A 0x00 0x00 0xFF na B3 zgłoszony 26.31
    Debug:SENSOR:D S1820 - Znaleziono urządzenie o indeksie 4 - GPIO=19
    Debug:SENSOR:D S1820 - Znaleziono GPIO dla urządzenia - DS18B20_GPIO=19
    Debug:SENSOR:D S1820 - Znaleziono urządzenie o indeksie 4 - GPIO=19
    Debug:SENSOR:D S1820 - ds18b20_readScratchPad zwrócił 1 - Crc8CQuick=85 / scratchPad[SCRATCHPAD_CRC]=85
    Debug:SENSOR:D S1820 - ds18b20_Scratchpat2TempC: family=28, raw=3360 (rozdzielczość 12 bitów)
    Debug:SENSOR:D S1820 - Urządzenie 4 (0x28 0xFD 0xAB 0x55 0x00 0x00 0x00 0x3C) zgłosiło 26,25
    Info:SENSOR:D S1820 - Czujnik 0x28 0xFD 0xAB 0x55 0x00 0x00 0x00 0x3C na B3 zgłosił 26.25
    Debug:SENSOR:D S1820 - Znaleziono urządzenie o indeksie 5 - GPIO=19
    Debug:SENSOR:D S1820 - Znaleziono GPIO dla urządzenia - DS18B20_GPIO=19
    Debug:SENSOR:D S1820 - Znaleziono urządzenie o indeksie 5 - GPIO=19
    Debug:SENSOR:D S1820 - ds18b20_readScratchPad zwrócił 1 - Crc8CQuick=85 / scratchPad[SCRATCHPAD_CRC]=85
    Debug:SENSOR:D S1820 - ds18b20_Scratchpat2TempC: family=28, raw=3360 (rozdzielczość 12 bitów)
    Debug:SENSOR:D S1820 - Urządzenie 5 (0x28 0x33 0x03 0x57 0x00 0x00 0xBA) zgłosiło 26,25
    Info:SENSOR:D S1820 - Czujnik 0x28 0x33 0x03 0x57 0x00 0x00 0xBA na B3 zgłosił 26.25
    Debug:SENSOR:D S1820 - ... Znaleziono pin 19! dsread=0
    Info:SENSOR:D S1820 - Rozpoczęcie konwersji
    Debug:SENSOR:D S1820 - ... Znaleziono pin 19! dsread=1
    Info:SENSOR:D S1820 - Odczyt temperatury z 6 czujników DS18B20
    Debug:SENSOR:D S1820 - Znaleziono urządzenie o indeksie 0 - GPIO=19
    Debug:SENSOR:D S1820 - Znaleziono GPIO dla urządzenia - DS18B20_GPIO=19
    Debug:SENSOR:D S1820 - Znaleziono urządzenie o indeksie 0 - GPIO=19
    Debug:SENSOR:D S1820 - ds18b20_readScratchPad zwrócił 1 - Crc8CQuick=86 / scratchPad[SCRATCHPAD_CRC]=86
    Debug:SENSOR:D S1820 - ds18b20_Scratchpat2TempC: family=28, raw=3336 (rozdzielczość 12 bitów)
    Debug:SENSOR:D S1820 - Device 0 (0x28 0x44 0x02 0x5B 0x00 0x00 0x78) reported 26.06
    Info:SENSOR:D S1820 - Czujnik 0x28 0x44 0x02 0x5B 0x00 0x00 0x78 na B3 zgłoszony 26.06
    Debug:SENSOR:D S1820 - Znaleziono urządzenie o indeksie 1 - GPIO=19
    Debug:SENSOR:D S1820 - Znaleziono GPIO dla urządzenia - DS18B20_GPIO=19
    Debug:SENSOR:D S1820 - Znaleziono urządzenie o indeksie 1 - GPIO=19
    Debug:SENSOR:D S1820 - ds18b20_readScratchPad zwrócił 1 - Crc8CQuick=87 / scratchPad[SCRATCHPAD_CRC]=87
    Debug:SENSOR:D S1820 - ds18b20_Scratchpat2TempC: family=28, raw=3344 (rozdzielczość 12 bitów)
    Debug:SENSOR:D S1820 - Urządzenie 1 (0x28 0xA6 0xB2 0x55 0x00 0x00 0x65) zgłosiło 26,12
    Info:SENSOR:D S1820 - Czujnik 0x28 0xA6 0xB2 0x55 0x00 0x00 0x65 na B3 zgłoszony 26.12
    Debug:SENSOR:D S1820 - Znaleziono urządzenie o indeksie 2 - GPIO=19
    Debug:SENSOR:D S1820 - Znaleziono GPIO dla urządzenia - DS18B20_GPIO=19
    Debug:SENSOR:D S1820 - Znaleziono urządzenie o indeksie 2 - GPIO=19
    Debug:SENSOR:D S1820 - ds18b20_readScratchPad zwrócił 1 - Crc8CQuick=120 / scratchPad[SCRATCHPAD_CRC]=120
    Debug:SENSOR:D S1820 - ds18b20_Scratchpat2TempC: family=28, raw=3368 (rozdzielczość 12 bitów)
    Debug:SENSOR:D S1820 - Urządzenie 2 (0x28 0x5E 0x34 0x59 0x00 0x00 0xF3) zgłosiło 26,31
    Info:SENSOR:D S1820 - Czujnik 0x28 0x5E 0x34 0x59 0x00 0x00 0x00 0xF3 na B3 zgłoszony 26.31
    Debug:SENSOR:D S1820 - Znaleziono urządzenie o indeksie 3 - GPIO=19
    Debug:SENSOR:D S1820 - Znaleziono GPIO dla urządzenia - DS18B20_GPIO=19
    Debug:SENSOR:D S1820 - Znaleziono urządzenie o indeksie 3 - GPIO=19
    Debug:SENSOR:D S1820 - ds18b20_readScratchPad zwrócił 1 - Crc8CQuick=120 / scratchPad[SCRATCHPAD_CRC]=120
    Debug:SENSOR:D S1820 - ds18b20_Scratchpat2TempC: family=28, raw=3368 (rozdzielczość 12 bitów)
    Debug:SENSOR:D S1820 - Urządzenie 3 (0x28 0xF9 0x28 0x5A 0x00 0x00 0xFF) zgłosiło 26,31
    Info:SENSOR:D S1820 - Czujnik 0x28 0xF9 0x28 0x5A 0x00 0x00 0xFF na B3 zgłoszony 26.31
    Debug:SENSOR:D S1820 - Znaleziono urządzenie o indeksie 4 - GPIO=19
    Debug:SENSOR:D S1820 - Znaleziono GPIO dla urządzenia - DS18B20_GPIO=19
    Debug:SENSOR:D S1820 - Znaleziono urządzenie o indeksie 4 - GPIO=19
    Debug:SENSOR:D S1820 - ds18b20_readScratchPad zwrócił 1 - Crc8CQuick=85 / scratchPad[SCRATCHPAD_CRC]=85
    Debug:SENSOR:D S1820 - ds18b20_Scratchpat2TempC: family=28, raw=3360 (rozdzielczość 12 bitów)
    Debug:SENSOR:D S1820 - Urządzenie 4 (0x28 0xFD 0xAB 0x55 0x00 0x00 0x00 0x3C) zgłosiło 26,25
    Info:SENSOR:D S1820 - Czujnik 0x28 0xFD 0xAB 0x55 0x00 0x00 0x00 0x3C na B3 zgłosił 26.25
    Debug:SENSOR:D S1820 - Znaleziono urządzenie o indeksie 5 - GPIO=19
    Debug:SENSOR:D S1820 - Znaleziono GPIO dla urządzenia - DS18B20_GPIO=19
    Debug:SENSOR:D S1820 - Znaleziono urządzenie o indeksie 5 - GPIO=19
    Debug:SENSOR:D S1820 - ds18b20_readScratchPad zwrócił 1 - Crc8CQuick=87 / scratchPad[SCRATCHPAD_CRC]=87
    Debug:SENSOR:D S1820 - ds18b20_Scratchpat2TempC: family=28, raw=3344 (rozdzielczość 12 bitów)
    Debug:SENSOR:D S1820 - Urządzenie 5 (0x28 0x33 0x03 0x57 0x00 0x00 0xBA) zgłosiło 26,12
    Info:SENSOR:D S1820 - Czujnik 0x28 0x33 0x03 0x57 0x00 0x00 0xBA na B3 zgłoszono 26.12
    Debug:SENSOR:D S1820 - ... Znaleziono pin 19! dsread=0
    Info:SENSOR:D S1820 - Rozpoczęcie konwersji
    Debug:SENSOR:D S1820 - ... Znaleziono pin 19! dsread=1
    Info:SENSOR:D S1820 - Odczyt temperatury z 6 czujników DS18B20
    Debug:SENSOR:D S1820 - Znaleziono urządzenie o indeksie 0 - GPIO=19
    Debug:SENSOR:D S1820 - Znaleziono GPIO dla urządzenia - DS18B20_GPIO=19
    Debug:SENSOR:D S1820 - Znaleziono urządzenie o indeksie 0 - GPIO=19
    Debug:SENSOR:D S1820 - ds18b20_readScratchPad zwrócił 1 - Crc8CQuick=225 / scratchPad[SCRATCHPAD_CRC]=225
    Debug:SENSOR:D S1820 - ds18b20_Scratchpat2TempC: family=28, raw=3328 (rozdzielczość 12 bitów)
    Debug:SENSOR:D S1820 - Urządzenie 0 (0x28 0x44 0x02 0x5B 0x00 0x00 0x78) zgłosiło 26,00
    Info:SENSOR:D S1820 - Sensor 0x28 0x44 0x02 0x5B 0x00 0x00 0x78 on B3 reported 26.00
    Debug:SENSOR:D S1820 - Znaleziono urządzenie o indeksie 1 - GPIO=19
    Debug:SENSOR:D S1820 - Znaleziono GPIO dla urządzenia - DS18B20_GPIO=19
    Debug:SENSOR:D S1820 - Znaleziono urządzenie o indeksie 1 - GPIO=19
    Debug:SENSOR:D S1820 - ds18b20_readScratchPad zwrócił 1 - Crc8CQuick=87 / scratchPad[SCRATCHPAD_CRC]=87
    Debug:SENSOR:D S1820 - ds18b20_Scratchpat2TempC: family=28, raw=3344 (rozdzielczość 12 bitów)
    Debug:SENSOR:D S1820 - Urządzenie 1 (0x28 0xA6 0xB2 0x55 0x00 0x00 0x65) zgłosiło 26,12
    Info:SENSOR:D S1820 - Czujnik 0x28 0xA6 0xB2 0x55 0x00 0x00 0x65 na B3 zgłoszony 26.12
    Debug:SENSOR:D S1820 - Znaleziono urządzenie o indeksie 2 - GPIO=19
    Debug:SENSOR:D S1820 - Znaleziono GPIO dla urządzenia - DS18B20_GPIO=19
    Debug:SENSOR:D S1820 - Znaleziono urządzenie o indeksie 2 - GPIO=19
    Debug:SENSOR:D S1820 - ds18b20_readScratchPad zwrócił 1 - Crc8CQuick=120 / scratchPad[SCRATCHPAD_CRC]=120
    Debug:SENSOR:D S1820 - ds18b20_Scratchpat2TempC: family=28, raw=3368 (rozdzielczość 12 bitów)
    Debug:SENSOR:D S1820 - Urządzenie 2 (0x28 0x5E 0x34 0x59 0x00 0x00 0xF3) zgłosiło 26,31
    Info:SENSOR:D S1820 - Czujnik 0x28 0x5E 0x34 0x59 0x00 0x00 0x00 0xF3 na B3 zgłoszony 26.31
    Debug:SENSOR:D S1820 - Znaleziono urządzenie o indeksie 3 - GPIO=19
    Debug:SENSOR:D S1820 - Znaleziono GPIO dla urządzenia - DS18B20_GPIO=19
    Debug:SENSOR:D S1820 - Znaleziono urządzenie o indeksie 3 - GPIO=19
    Debug:SENSOR:D S1820 - ds18b20_readScratchPad zwrócił 1 - Crc8CQuick=120 / scratchPad[SCRATCHPAD_CRC]=120
    Debug:SENSOR:D S1820 - ds18b20_Scratchpat2TempC: family=28, raw=3368 (rozdzielczość 12 bitów)
    Debug:SENSOR:D S1820 - Urządzenie 3 (0x28 0xF9 0x28 0x5A 0x00 0x00 0xFF) zgłoszone 26.31
    Info:SENSOR:D S1820 - Czujnik 0x28 0xF9 0x28 0x5A 0x00 0x00 0xFF na B3 zgłoszono 26.31
    Debug:SENSOR:D S1820 - Znaleziono urządzenie o indeksie 4 - GPIO=19
    Debug:SENSOR:D S1820 - Znaleziono GPIO dla urządzenia - DS18B20_GPIO=19
    Debug:SENSOR:D S1820 - Znaleziono urządzenie o indeksie 4 - GPIO=19
    Debug:SENSOR:D S1820 - ds18b20_readScratchPad zwrócił 1 - Crc8CQuick=65 / scratchPad[SCRATCHPAD_CRC]=65
    Debug:SENSOR:D S1820 - ds18b20_Scratchpat2TempC: family=28, raw=3352 (rozdzielczość 12 bitów)
    Debug:SENSOR:D S1820 - Urządzenie 4 (0x28 0xFD 0xAB 0x55 0x00 0x00 0x00 0x3C) zgłosiło 26,19
    Info:SENSOR:D S1820 - Czujnik 0x28 0xFD 0xAB 0x55 0x00 0x00 0x00 0x3C na B3 zgłoszony 26.19
    Debug:SENSOR:D S1820 - Znaleziono urządzenie o indeksie 5 - GPIO=19
    Debug:SENSOR:D S1820 - Znaleziono GPIO dla urządzenia - DS18B20_GPIO=19
    Debug:SENSOR:D S1820 - Znaleziono urządzenie o indeksie 5 - GPIO=19
    Debug:SENSOR:D S1820 - ds18b20_readScratchPad zwrócił 1 - Crc8CQuick=65 / scratchPad[SCRATCHPAD_CRC]=65
    Debug:SENSOR:D S1820 - ds18b20_Scratchpat2TempC: family=28, raw=3352 (rozdzielczość 12 bitów)
    Debug:SENSOR:D S1820 - Urządzenie 5 (0x28 0x33 0x03 0x57 0x00 0x00 0xBA) zgłosiło 26,19
    Info:SENSOR:D S1820 - Czujnik 0x28 0x33 0x03 0x57 0x00 0x00 0xBA na B3 zgłoszono 26.19
    Debug:SENSOR:D S1820 - ... Znaleziono pin 19! dsread=0
    Info:SENSOR:D S1820 - Rozpoczęcie konwersji
    Debug:SENSOR:D S1820 - ... Znaleziono pin 19! dsread=1
    Info:SENSOR:D S1820 - Odczyt temperatury z 6 czujników DS18B20
    Debug:SENSOR:D S1820 - Znaleziono urządzenie o indeksie 0 - GPIO=19
    Debug:SENSOR:D S1820 - Znaleziono GPIO dla urządzenia - DS18B20_GPIO=19
    Debug:SENSOR:D S1820 - Znaleziono urządzenie o indeksie 0 - GPIO=19
    Debug:SENSOR:D S1820 - ds18b20_readScratchPad zwrócił 1 - Crc8CQuick=86 / scratchPad[SCRATCHPAD_CRC]=86
    Debug:SENSOR:D S1820 - ds18b20_Scratchpat2TempC: family=28, raw=3336 (rozdzielczość 12 bitów)
    Debug:SENSOR:D S1820 - Urządzenie 0 (0x28 0x44 0x02 0x5B 0x00 0x00 0x78) zgłosiło 26,06
    Info:SENSOR:D S1820 - Czujnik 0x28 0x44 0x02 0x5B 0x00 0x00 0x78 na B3 zgłoszony 26.06
    Debug:SENSOR:D S1820 - Znaleziono urządzenie o indeksie 1 - GPIO=19
    Debug:SENSOR:D S1820 - Znaleziono GPIO dla urządzenia - DS18B20_GPIO=19
    Debug:SENSOR:D S1820 - Znaleziono urządzenie o indeksie 1 - GPIO=19
    Debug:SENSOR:D S1820 - ds18b20_readScratchPad zwrócił 1 - Crc8CQuick=87 / scratchPad[SCRATCHPAD_CRC]=87
    Debug:SENSOR:D S1820 - ds18b20_Scratchpat2TempC: family=28, raw=3344 (rozdzielczość 12 bitów)
    Debug:SENSOR:D S1820 - Urządzenie 1 (0x28 0xA6 0xB2 0x55 0x00 0x00 0x65) zgłosiło 26.12
    Info:SENSOR:D S1820 - Czujnik 0x28 0xA6 0xB2 0x55 0x00 0x00 0x65 na B3 zgłoszony 26.12
    Debug:SENSOR:D S1820 - Znaleziono urządzenie o indeksie 2 - GPIO=19
    Debug:SENSOR:D S1820 - Znaleziono GPIO dla urządzenia - DS18B20_GPIO=19
    Debug:SENSOR:D S1820 - Znaleziono urządzenie o indeksie 2 - GPIO=19
    Debug:SENSOR:D S1820 - ds18b20_readScratchPad zwrócił 1 - Crc8CQuick=120 / scratchPad[SCRATCHPAD_CRC]=120
    Debug:SENSOR:D S1820 - ds18b20_Scratchpat2TempC: family=28, raw=3368 (rozdzielczość 12 bitów)
    Debug:SENSOR:D S1820 - Urządzenie 2 (0x28 0x5E 0x34 0x59 0x00 0x00 0xF3) zgłosiło 26,31
    Info:SENSOR:D S1820 - Czujnik 0x28 0x5E 0x34 0x59 0x00 0x00 0x00 0xF3 na B3 zgłoszony 26.31
    Debug:SENSOR:D S1820 - Znaleziono urządzenie o indeksie 3 - GPIO=19
    Debug:SENSOR:D S1820 - Znaleziono GPIO dla urządzenia - DS18B20_GPIO=19
    Debug:SENSOR:D S1820 - Znaleziono urządzenie o indeksie 3 - GPIO=19
    Debug:SENSOR:D S1820 - ds18b20_readScratchPad zwrócił 1 - Crc8CQuick=85 / scratchPad[SCRATCHPAD_CRC]=85
    Debug:SENSOR:D S1820 - ds18b20_Scratchpat2TempC: family=28, raw=3360 (rozdzielczość 12 bitów)
    Debug:SENSOR:D S1820 - Urządzenie 3 (0x28 0xF9 0x28 0x5A 0x00 0x00 0xFF) zgłosiło 26,25
    Info:SENSOR:D S1820 - Czujnik 0x28 0xF9 0x28 0x5A 0x00 0x00 0xFF na B3 zgłoszony 26.25
    Debug:SENSOR:D S1820 - Znaleziono urządzenie o indeksie 4 - GPIO=19
    Debug:SENSOR:D S1820 - Znaleziono GPIO dla urządzenia - DS18B20_GPIO=19
    Debug:SENSOR:D S1820 - Znaleziono urządzenie o indeksie 4 - GPIO=19
    Debug:SENSOR:D S1820 - ds18b20_readScratchPad zwrócił 1 - Crc8CQuick=65 / scratchPad[SCRATCHPAD_CRC]=65
    Debug:SENSOR:D S1820 - ds18b20_Scratchpat2TempC: family=28, raw=3352 (rozdzielczość 12 bitów)
    Debug:SENSOR:D S1820 - Urządzenie 4 (0x28 0xFD 0xAB 0x55 0x00 0x00 0x00 0x3C) zgłosiło 26,19
    Info:SENSOR:D S1820 - Czujnik 0x28 0xFD 0xAB 0x55 0x00 0x00 0x00 0x3C na B3 zgłoszony 26.19
    Debug:SENSOR:D S1820 - Znaleziono urządzenie o indeksie 5 - GPIO=19
    Debug:SENSOR:D S1820 - Znaleziono GPIO dla urządzenia - DS18B20_GPIO=19
    Debug:SENSOR:D S1820 - Znaleziono urządzenie o indeksie 5 - GPIO=19
    Debug:SENSOR:D S1820 - ds18b20_readScratchPad zwrócił 1 - Crc8CQuick=65 / scratchPad[SCRATCHPAD_CRC]=65
    Debug:SENSOR:D S1820 - ds18b20_Scratchpat2TempC: family=28, raw=3352 (rozdzielczość 12 bitów)
    Debug:SENSOR:D S1820 - Urządzenie 5 (0x28 0x33 0x03 0x57 0x00 0x00 0xBA) zgłosiło 26,19
    Info:SENSOR:D S1820 - Czujnik 0x28 0x33 0x03 0x57 0x00 0x00 0xBA na B3 zgłoszono 26.19
    Debug:SENSOR:D S1820 - ... Znaleziono pin 19! dsread=0
    Info:SENSOR:D S1820 - Rozpoczęcie konwersji


    jest jednak coś dziwnego z komendą startową - wieloliniowa i nie. podczas zapisywania zatrzyma się na "WIFI_GetMacAddress", a następnie uruchomi się ponownie.

    Kod: Text
    Zaloguj się, aby zobaczyć kod


    Rozszerzenie sterownika DS18(B)20 - wiele GPIO i wiele czujników na GPIO
  • #27 21601346
    max4elektroda
    Poziom 24  
    Posty: 758
    Pomógł: 49
    Ocena: 189
    Dzięki, przyjrzę się znalezionym problemom.
    Procedura wyszukiwania nie zawsze jest niezawodna, ale można ją ponownie uruchomić za pomocą "DS1820_FULL_scansensors".

    Tak więc głównymi wynikami są: awarie ESP32 i komendy. Czy dobrze zrozumiałem, że nie chodzi o samą komendę, ale o jej zapisanie? Więc może jest po prostu za duży?
    To było z LN882H w teście, czy z innymi platformami też?

    Jeszcze raz dzięki za wsparcie.
    Zrobię testy na BL602 i W800 - na BK7238 nigdy nie udało mi się uruchomić DS1820 (z "oryginalnym" prostym sterownikiem), tylko ze zmianami w HAL_Delay_us, a nie chcę tu mieszać.
  • #28 21601356
    divadiow
    Poziom 38  
    Posty: 5205
    Pomógł: 446
    Ocena: 914
    po ESP32 wszystko poniżej jest z LN882H. Mogę robić bardziej szczegółowe rzeczy z komendą startową - świeży flash, krótsze komendy, więcej prób itp.

    Dodano po 25 [minutach]:

    na ln882h jest to długość. przy 497 znakach zapisze OK. przy 498 robi restart

    Rozszerzenie sterownika DS18(B)20 - wiele GPIO i wiele czujników na GPIO

    Dodano po 8 [minutach]: .

    OK, więc to jest inny problem. Czy mam kontynuować z innymi platformami? (moglibyśmy zrobić coś w rodzaju Discorda Threads , gdzie mamy osobny podwątek dla każdej platformy pod głównym tematem, aby pomóc w skupieniu się i oddzieleniu).
  • #29 21601379
    max4elektroda
    Poziom 24  
    Posty: 758
    Pomógł: 49
    Ocena: 189
    Mogę spróbować skrócić komendy, zwłaszcza szczegółowy adres można uprościć np. z "0x28 0x61 0x64 0x35 0xD4 0x7D 0xC4 0x3E" do "28616435D47DC43E", a samą komendę może z "DS1820_FULL_setsensor" do czegoś w stylu "setDS1820".
  • #30 21601384
    divadiow
    Poziom 38  
    Posty: 5205
    Pomógł: 446
    Ocena: 914
    fajnie. Test 2s z BL602 wygląda podobnie. za długo i będzie błąd:

    Kod: Text
    Zaloguj się, aby zobaczyć kod
    .

    (standardowy BLDC 1.9.0 toml - nie insmod XtremeToml©)

    ale nie restartuje się jak LN882H
    skrócenie komendy startowej o połowę i zapisuje
Słuchaj:

Podsumowanie tematu

LABEL_AI_GENERATED
Dyskusja dotyczy rozszerzenia sterownika DS18(B)20 w firmware OpenBeken IoT, umożliwiającego obsługę wielu czujników na wielu GPIO. Wprowadzono dwa warianty sterownika: prosty (SIMPLE) i pełny (FULL), z podziałem na wspólne funkcje niskopoziomowe obsługi magistrali OneWire. Pełny sterownik oferuje rozbudowane funkcje i obsługę wieloczujnikową, lecz zwiększa rozmiar pamięci flash o kilka kilobajtów, podczas gdy prosty jest bardziej oszczędny. Testowano kompatybilność i stabilność na różnych platformach, w tym BK7231N, BK7238, BL602, W800, ESP32, ESP32S2, ESP32-C6 oraz LN882H. Zidentyfikowano i naprawiono problemy z czasowaniem i resetami, zwłaszcza na ESP32 i LN882H, skracając czas bez przerwania podczas resetu OneWire. Wprowadzono skrócone formaty komend startowych, aby uniknąć restartów przy zbyt długich poleceniach. Omówiono kwestie przypisywania kanałów GPIO, zapobiegania konfliktom i wyświetlania stanu kanałów w GUI. Przeprowadzono testy taktowania sygnałów za pomocą analizatora logicznego, dostosowując współczynniki opóźnień dla poprawnej pracy czujników DS18B20 i DHT11. Poruszono także temat obsługi trybu PowerSave na platformach BK7238 i BK7525, w tym poprawki timingów HAL_Delay_us, które wpływają na stabilność sterowników DS1820 i DHT. Wskazano na potrzebę dalszych testów i integracji zmian w konfiguracji obk_config.h, aby domyślnie włączać pełny sterownik tylko w kompilacjach dedykowanych czujnikom. Dyskusja zawiera liczne zrzuty ekranu i linki do PR na GitHubie, dokumentujące postęp prac i testów.
Podsumowanie AI na podstawie dyskusji. Może zawierać błędy.
REKLAMA