eGospodarka.pl
eGospodarka.pl poleca

eGospodarka.plGrupypl.misc.elektronikaBiblioteka MQTT i dziwny kod w C
Ilość wypowiedzi w tym wątku: 25

  • 21. Data: 2022-08-10 23:26:26
    Temat: Re: Biblioteka MQTT i dziwny kod w C
    Od: heby <h...@p...onet.pl>

    On 10/08/2022 22:06, Marek wrote:
    > On Wed, 10 Aug 2022 20:41:36 +0200, heby <h...@p...onet.pl> wrote:
    >> Teraz, to się używa ESP8266/ESP32 do tego a nie jakieś PICe od migania
    >> ledami ;)
    > Uu pic32 od migania ledami, mocne.

    Cieszymy się, że również zauwazyłeś emotkę na końcu zdania.


  • 22. Data: 2022-08-12 11:25:32
    Temat: Re: Biblioteka MQTT i dziwny kod w C
    Od: Piotr Gałka <p...@c...pl>

    W dniu 2022-08-10 o 19:25, Atlantis pisze:

    > Jeden if nie wykonywał się wcale, a
    > część kodu w dalszej części była pomijana zupełnie z uwagi "break"
    > umieszczony w złym miejscu. Efekt był taki, że kod przechodził dalej już
    > po odebraniu nagłówka pakietu i nie pobierał pozostałych dwóch bajtów.

    Ktoś się pomylił.

    > Biblioteka w takiej formie działała tylko dlatego, że w wyniku innego
    > błędu kod zawsze zakładał, że autoryzacja przeszła poprawnie. ;)

    A potem znalazł i poprawił błąd :)
    P.G.


  • 23. Data: 2022-08-16 13:20:50
    Temat: Re: Biblioteka MQTT i dziwny kod w C
    Od: Atlantis <m...@w...pl>

    Ok, udało mi się trochę pchnąć do przodu prace nad biblioteką.
    Na chwilę obecną działa już nie tylko wysyłanie wiadomości, ale także
    jestem w stanie subskrybować temat i odbierać wiadomości od brokera.
    Usunąłem większość najbardziej rzucających się w oczy błędów oraz
    konstrukcji, które w pewnych sytuacjach powodowały zawieszanie się kodu.
    Pozostało jeszcze kilka rzeczy do posprzatania i poprawienia, a na
    chwilę obecną mierzę się z dziwnym błędem, którego nie potrafię
    zdiagnozować.

    Sytuacja wygląda następująco:
    1. Broker (mosquitto) jest odpalony na Raspberry Pi.
    2. Do brokera podłączone jest jedno z moich urządzeń na ESP8266, które
    cyklicznie wrzuca dane na jeden temat.
    3. Temat na brokerze podglądam za pomocą mosquitto_sub - faktycznie się
    tam pojawiają.
    3. Jednocześnie jestem w stanie wrzucać swoje własne dane zapomocą
    mosquitto_pub - tetrafiają tam, gdzie powinny.

    Dziwne zachowanie pojawia się w momencie, gdy do tego samego
    brokera/tematu podpinam PIC32 z testowaną biblioteką. Normalnie loguje
    się na brokerze i subskrybuje do tego tematu. Przez jakiś czas odbiera
    rozsyłane dane pochodzące z ESP8266, ale potem przestaje (na brokerze
    pojawiają się nadal). Dane, które wrzucam ręcznie (mosquitto_pub) nadal
    docierają na PIC32.

    Co może być przyczyną? Zakładam, że może za to odpowiadać jakaś
    specyfika protokołu MQTT, której nie jestem świadom.


  • 24. Data: 2022-08-17 18:58:36
    Temat: Re: Biblioteka MQTT i dziwny kod w C
    Od: Mirek <m...@n...dev>

    On 16.08.2022 13:20, Atlantis wrote:

    > Dziwne zachowanie pojawia się w momencie, gdy do tego samego
    > brokera/tematu podpinam PIC32 z testowaną biblioteką. Normalnie loguje
    > się na brokerze i subskrybuje do tego tematu. Przez jakiś czas odbiera
    > rozsyłane dane pochodzące z ESP8266, ale potem przestaje (na brokerze
    > pojawiają się nadal). Dane, które wrzucam ręcznie (mosquitto_pub) nadal
    > docierają na PIC32.
    >

    Czyli ręcznie wrzucasz pod ten sam temat i dochodzą, a od ESP nie dochodzą?
    Zakładam, że qos i retained masz w obydwu przypadkach takie same?
    Client-id unikalne? (!)
    No to już czary musiały by być żeby jedno dochodziło drugie nie.

    --
    Mirek.


  • 25. Data: 2022-08-18 11:03:02
    Temat: Re: Biblioteka MQTT i dziwny kod w C
    Od: Atlantis <m...@w...pl>

    On 17.08.2022 18:58, Mirek wrote:

    > Czyli ręcznie wrzucasz pod ten sam temat i dochodzą, a od ESP nie dochodzą?
    > Zakładam, że qos i retained masz w obydwu przypadkach takie same?
    > Client-id unikalne? (!)
    > No to już czary musiały by być żeby jedno dochodziło drugie nie.

    Ok, już znalazłem przyczynę. Tak jak piszesz - przepisując kod
    zapomniałem o wywołaniu funkcji, która w przypadku wykrycia ustawionej
    flagi QoS inicjowała odsyłanie potwierdzenia odebrania wiadomości
    PUBLISH. Broker nie otrzymując potwierdzeń po jakimś czasie zaprzestawał
    rozsyłania wiadomości do tego konkretnego subskrybenta. Natomiast
    wiadomości wysyłane ręcznie nie miały ustawionej flagi, więc dochodziły
    nadal.

    Po uzupełnieniu kodu wszystko działa prawidłowo. Urządzenie pracuje już
    prawie dobę i cały czas odbiera wiadomości z brokera. W oczy rzuciła mi
    się natomiast inna kwestia - gdy sprawdzałem za pierwszym razem za
    pomocą tcpdumpa (odpalonego na Raspberry Pi, gdzie pracuje broker) i
    wiresharka, widziałem wszystkie pakiety.

    Teraz natomiast wygląda to tak, jakby tcpdump nie rejestrował wiadomości
    wychodzących od klienta (PUBACK, PINGREQ), chociaż wiadomości są
    wysyłane i najwyraźniej docierają, bo powodują reakcję (np. w postaci
    odesłania PINGRESP). Jakiś pomysł co może być przyczyną takiego stanu
    rzeczy?

strony : 1 . 2 . [ 3 ]


Szukaj w grupach

Szukaj w grupach

Eksperci egospodarka.pl

1 1 1

Wpisz nazwę miasta, dla którego chcesz znaleźć jednostkę ZUS.

Wzory dokumentów

Bezpłatne wzory dokumentów i formularzy.
Wyszukaj i pobierz za darmo: