<?xml version="1.0" encoding="UTF-8"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="pl-pl">
<link rel="self" type="application/atom+xml" href="https://forum.atnel.pl/feed.php?f=4&amp;t=24760&amp;mode" />

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2025-01-05T22:36:30+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=4&amp;t=24760&amp;mode</id>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2025-01-05T22:36:30+01:00</updated>
<published>2025-01-05T22:36:30+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=24760&amp;p=238746#p238746</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=24760&amp;p=238746#p238746"/>
<title type="html"><![CDATA[Re: mqtt za pomocą g510 i karty sim]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=24760&amp;p=238746#p238746"><![CDATA[
<div class="quotetitle">Arek1111111111 napisał(a):</div><div class="quotecontent"><br />Najbardziej mam ochotę uruchomić jakiś prosty gotowiec.<br /></div><br />Obawiam się, że gotowca i to wprost z modemem GSM niestety nie znajdziesz na większe procki - ale może się mylę, szukaj<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=54">mirekk36</a> — 5 sty 2025, o 22:36</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Arek1111111111]]></name></author>
<updated>2025-01-05T21:34:30+01:00</updated>
<published>2025-01-05T21:34:30+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=24760&amp;p=238745#p238745</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=24760&amp;p=238745#p238745"/>
<title type="html"><![CDATA[Re: mqtt za pomocą g510 i karty sim]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=24760&amp;p=238745#p238745"><![CDATA[
Z całej dyskusji wywnioskowałem że najlepiej będzie tak czy siak przesiąść na większy procek. Najbardziej mam ochotę uruchomić jakiś prosty gotowiec.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=3349">Arek1111111111</a> — 5 sty 2025, o 21:34</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Jaglarz]]></name></author>
<updated>2025-01-05T19:04:19+01:00</updated>
<published>2025-01-05T19:04:19+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=24760&amp;p=238743#p238743</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=24760&amp;p=238743#p238743"/>
<title type="html"><![CDATA[Re: mqtt za pomocą g510 i karty sim]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=24760&amp;p=238743#p238743"><![CDATA[
Panooowie, bo malkontenci pewnie już się cieszą widząc co tu się dzieje  <img src="https://forum.atnel.pl/images/smilies/icon_cool.gif" alt="8-)" title="Cool" />  <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=471">Jaglarz</a> — 5 sty 2025, o 19:04</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2025-01-05T16:43:52+01:00</updated>
<published>2025-01-05T16:43:52+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=24760&amp;p=238737#p238737</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=24760&amp;p=238737#p238737"/>
<title type="html"><![CDATA[Re: mqtt za pomocą g510 i karty sim]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=24760&amp;p=238737#p238737"><![CDATA[
nawet nie skomentuję tego dalej<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=54">mirekk36</a> — 5 sty 2025, o 16:43</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[SunRiver]]></name></author>
<updated>2025-01-05T16:41:53+01:00</updated>
<published>2025-01-05T16:41:53+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=24760&amp;p=238736#p238736</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=24760&amp;p=238736#p238736"/>
<title type="html"><![CDATA[Re: mqtt za pomocą g510 i karty sim]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=24760&amp;p=238736#p238736"><![CDATA[
<div class="quotetitle">mirekk36 napisał(a):</div><div class="quotecontent"><br />ie ja mylę tylko ty pomyliłeś właśnie na początku z tą atmegą ewidentnie i z tym kodem który nie może zadziałać bo właśnie brak klienta MQTT, i podpowiadasz to autorowi wątku, który kompletnie nie ma doświadczenia i mógł uwierzyć że to zadziała<br /></div><br /><br />tak sie składa  że nic nie pomyliłem ....<br /><br /><div class="quotetitle">mirekk36 napisał(a):</div><div class="quotecontent"><br />Szczerze mówiąc nie sądziłem że po kilku latach sam będziesz wdawał się w dyskusje o wyższości Świąt Bożego Narodzenia nad Świętami Wielkanocnymi, czyli wyższości jednych procków nad drugimi. Zawsze na tym forum preferowaliśmy postawę (ty też) że nie ważne jaki procek - ważne żeby znać różne narzędzia ... a teraz widzę, że nagle tylko STM a esp koci  .... no coś pięknego<br /></div><br /><br />Niema tu żadnej wyższosci jednych nad drugimi , po prostu pracuje z tym z czym muszę , nikt sie nie cofa , swiat idzie do przodu  wiec używanie AVR czy 8051 jest ekonomicznie przemysłowo nieefektywne <br />klient oczekuje konkretntych kosztów i wyników .. ważne czy się słupki zgadzają  księgowemu  wiec trochę słabe jest pchanie przestarzałego AVR z wysokim kosztem jednostkowym i  nie idącymi w parze zasobami i możliwościami -- atmel sie też na tym przejechał .. i nie zapominaj  ze napisałem &quot;pracuje na 32 bitowych STM lub na kocich ESP..&quot;   to ukłon w stronę twoją gdzie wyzywałeś je a teraz się podniecasz<br />nie mirku SZKODA CZASU NA JAŁOWE DYSKUSJE  czytasz dalej tylko nagłówki i nie wychwytujesz sensu ??   Bo przecież jasno napisałem że używam STM32 lub ESP ... no ale twój cyrk i twoje małpy: <br />jakbyś popatrzył to nawet grama kodu niema w Cpp który przedstawiłem ,   i jakby ci się chciało po patrzeć to byś też zauważył ze ręczne składanie binariów na potrzeby MQTT jest proste nie wymaga żadnych <br />stosów ..  no ale jak kiedyś doczytasz to może ... Szkoda że niema już od dawna Mirka którego znałem teraz jedynie słuszność  niepodważalna , brak ogłady i pokory to niebezpieczne połaczenie. <br />szczęścia w nowym roku ...<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=58">SunRiver</a> — 5 sty 2025, o 16:41</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2025-01-05T15:55:58+01:00</updated>
<published>2025-01-05T15:55:58+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=24760&amp;p=238734#p238734</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=24760&amp;p=238734#p238734"/>
<title type="html"><![CDATA[Re: mqtt za pomocą g510 i karty sim]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=24760&amp;p=238734#p238734"><![CDATA[
Na początku opisałeś i podałeś przykład gołego niby klienta mqtt na atmega32 wprost z modemem gsm i twierdziłeś że to zadziała - a nie ma takiej możliwości, i to wyjaśniłem wszystkim którzy to czytają. <br /><br />To co później i teraz opisujesz - czyli wszystko na 32-bitowcach i nie ważne czy na andruino czy na stm z hall'em ale wszędzie musisz mieć i masz bibliotekę do obsługi stosu MQTT, i nie trzeba chcieć pisać brokera żeby mieć mini stos MQTT, że tak powiem a w zasadzie klienta MQTT ... jeszcze raz przypominam, SPECYFIKACJA MQTT to protokół binarny, i to doprecyzowałem bo o tym ani słowa nie napisałeś w kodzie z atmegą i gms - co nie miało prawa zadziałać.<br /><br />Fakt, że używasz MQTT na 32-bitowcach z gotowymi bibliotekami do klienta MQTT ma się nijak do początku dyskusji bo i ja o tym mówiłem że taki klient MQTT to już bardziej na 32-bitowce się nadaje.<br /><br />I nie mam zamiaru się kłócić ani dać wciągnąć w jakieś kłótnie. A implementacja protokołu MQTT wcale nie jest aż taka prosta - ty mylisz implementację biblioteki klienta MQTT po prostu ze sposobem korzystania z MQTT dzięki takiej bibliotece - gdzie już bawić się można tylko tekstem.<br /><br />I tak samo wyjaśniłem że protokół ZIGBEE nie ma nic wspólnego z protokołem MQTT - zobacz wyżej co pisałeś o urządzeniach bateryjnych i że MQTT nie musi utrzymywać połączenia ciągłego - i wcale nie chodzi o poziom TCP tylko o utrzymanie statusu ciągłego połączenia MQTT. Nie wiem czy zdajesz sobie sprawę jak to działa niskopoziomowo - skoro wciąż piszesz i traktujesz MQTT jako protokół tekstowy, ale jeśli zdajesz sobie sprawę (ja tego nie rozstrzygam ani nie oceniam) to po prostu zrozum - że wyjaśniłem i doprecyzowałem to co pisałeś o ATMEGA+GSM no i troszkę to pomieszanie zigbee z mqtt<br /><br /><strong><span style="color: #808000">------------------------ [ Dodano po: 5 minutach ]</span></strong><br /><br /><div class="quotetitle">SunRiver napisał(a):</div><div class="quotecontent"><br />Nie kożystam z arduino przedstawiłem to jako jeden z pomysłów wpisujący się w twoje przenoszenie bibliotek z arduino, od dawna nie uzywam tych przestarzałych uC<br />pracuje na 32 bitowych STM lub na kocich ESP..<br /></div><br />Szczerze mówiąc nie sądziłem że po kilku latach sam będziesz wdawał się w dyskusje o wyższości Świąt Bożego Narodzenia nad Świętami Wielkanocnymi, czyli wyższości jednych procków nad drugimi. Zawsze na tym forum preferowaliśmy postawę (ty też) że nie ważne jaki procek - ważne żeby znać różne narzędzia ... a teraz widzę, że nagle tylko STM a esp koci <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /> .... no coś pięknego<br /><br /><strong><span style="color: #808000">------------------------ [ Dodano po: 7 minutach ]</span></strong><br /><br /><div class="quotetitle">SunRiver napisał(a):</div><div class="quotecontent"><br />Wiec nie myl tu pojęć bo nie piszemy brokera tylko klienta który w prosty sposób komunikuje się protokołem MQTT czy to plain text czy json<br />za pośrednictwem brokera np Mosquito postawionym na nawet PiZero ...<br /></div><br />Nie ja mylę tylko ty pomyliłeś właśnie na początku z tą atmegą ewidentnie i z tym kodem który nie może zadziałać bo właśnie brak klienta MQTT, i podpowiadasz to autorowi wątku, który kompletnie nie ma doświadczenia i mógł uwierzyć że to zadziała<br /><br />Nie jest moim celem wytykanie tu błędów - ale zawsze mieliśmy dobre dyskusje gdzie ktoś kogoś kulturalnie uzupełniał i tego się trzymajmy na tym forum ok ?<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=54">mirekk36</a> — 5 sty 2025, o 15:55</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[SunRiver]]></name></author>
<updated>2025-01-05T12:25:38+01:00</updated>
<published>2025-01-05T12:25:38+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=24760&amp;p=238733#p238733</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=24760&amp;p=238733#p238733"/>
<title type="html"><![CDATA[Re: mqtt za pomocą g510 i karty sim]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=24760&amp;p=238733#p238733"><![CDATA[
<div class="quotetitle">mirekk36 napisał(a):</div><div class="quotecontent"><br />No właśnie - więc nie mieszajmy MQTT tutaj z atmegą i modemem GSM - bo SMS tak jak najbardziej.<br /><br />No i na koniec<br /></div><br /><br />chyba nie czytasz ze zrozumieniem .,.. dane z modułu leca przez MQTT na żądanie np przez SMS ,  pokazałem nawet screena z MQTT Explorera <br /><br />Nie kożystam z arduino przedstawiłem to jako jeden z pomysłów wpisujący się w twoje przenoszenie bibliotek z arduino, od dawna nie uzywam tych przestarzałych uC <br />pracuje na 32 bitowych STM lub na kocich ESP..<br /><br /><div class="quotetitle">mirekk36 napisał(a):</div><div class="quotecontent"><br />Zatem tak jak mówiłem - na prockach 32-bitowych to już zaczyna być normalne ale nie na małych 8-bitowcach<br /></div><br /><br />dalej brakl czytania ze zrozumieniem <br />całe podejscie opisałem dla przypadku Atmega 32 w której użyte są ESP8266 lub sim800 w roli mednium WIFI lub GSM Telemnetri  <br />kod pisany w GCC na AVR  ...  Niema tu ani grama Cpp i Arduino ... i wszystko działą zgodnie z założeniem zgodnie ze specyfikacją MQTT <br />i wreszcie na koniec MQTT to tylko protokół do transmisji danych ,<br /><br /><strong><span style="color: #808000">------------------------ [ Dodano po: 5 minutach ]</span></strong><br /><br />Wiec nie myl tu pojęć bo nie piszemy brokera tylko klienta który w prosty sposób komunikuje się protokołem MQTT czy to plain text czy json  <br />za pośrednictwem brokera np Mosquito postawionym na nawet PiZero ...<br />Nie bądź jak apple zamkniety i zmieniający definicje i znaczenie rzeczy dla własnej wygody ..<br />Nikomu w kliencie nie jest potrzebny żaden magiczny stos jedynie  prosta implementacja protokołu  MQTT<br /><br /><strong><span style="color: #808000">------------------------ [ Dodano po: 6 minutach ]</span></strong><br /><br />A teraz pewnie dostanę bana <img src="https://forum.atnel.pl/images/smilies/icon_razz.gif" alt=":P" title="Pokazuje język" /><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=58">SunRiver</a> — 5 sty 2025, o 12:25</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2025-01-05T11:57:18+01:00</updated>
<published>2025-01-05T11:57:18+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=24760&amp;p=238732#p238732</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=24760&amp;p=238732#p238732"/>
<title type="html"><![CDATA[Re: mqtt za pomocą g510 i karty sim]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=24760&amp;p=238732#p238732"><![CDATA[
<div class="quotetitle">SunRiver napisał(a):</div><div class="quotecontent"><br />Mirtku bez urazy ale za długo siedze w MQTT<br /></div><br />Tu nie o to chodzi kto siedzi dłużej czy nie dłużej - to co teraz przedstawiłeś to kod w C++ i tu widać wszystko to o czym mówiłem czyli binarkę MQTT i tylko o to mi chodziło, że bez binarki MQTT nie zadziała bo to kompletnie nie jest zgodne ze specyfikacją MQTT, w tym szkopuł. W tych nagłówkach z pliku *.h twojego kodu obecnego widać, że w tle działa stos MQTT i nie ma to nic wspólnego z tekstową obsługą MQTT jaka została przedstawiona w pierwszym kodzie w C.<br /><br />To gdzie i jak działa MQTT to ja doskonale wiem, bo też nie od dzisiaj korzystam z MQTT i to w zaawansowanych projektach. I nie da się wprost w taki sposób jak pokazałeś używać MQTT na tej atmedze z modemem gsm, no nie da się i wyjaśniłem dokładnie dlaczego.<br /><br />Fakt, że ty w C++ (nie wiem jakie to środowisko) wykorzystujesz gotowy stos MQTT, który działa (pod spodem i jest oprogramowany - a widać to chociażby już po prawidłowych definicjach nagłówków binarnych, nie oznacza - jeszcze raz to powtórzę, że to jest protokół tekstowy - w żadnym wypadku. Tu w tym kodzie widać po klasach pokazanych w pliku nagłówkowym, że jest obsługa stosu MQTT i dla ciebie jako użytkownika pozostaje już tylko wygodna obsługa MQTT za pomocą prostych w sumie kilku funkcji:<br /><br />CONNECT<br />DISCONNECT<br />PUSH<br />SUBSCRIBE<br />LWT<br /><br />Nie można niestety udawać, że &quot;pod spodem&quot; nic się nie dzieje, skoro korzystasz z gotowej biblioteki do obsługi stosu MQTT. Taka jest zresztą idea - żeby mieć dobrą i porządną bibliotekę do obsługi stosu MQTT a później jako programista posługiwać się wygodnymi metodami stosu.  I to nijak się ma do określenia że robienie tego na atmega32 jest masochistyczne ... bo żeby działało to trzeba by próbować CAŁY ten stos MQTT sobie napisać a przy modemie GSM i komendach AT to jest masakra po prostu. Prędzej by się dało używając jakiegoś enc28j60 ale tu znowu TCP ma drastyczne ograniczenia więc też to bierze w łeb. To JEDNO.<br /><br />Niestety w tym co piszesz jest kolejne GIGANTYCZNE nieporozumienie i niezrozumienie. MQTT to protokół połączeniowy i w 100% wymaga stałego połączenia z brokerem w trakcie działania, z tego względu nie nadaje się do urządzeń opartych o zigbee. Zigbee to sieć mesh ze swoim własnym specyficznym protokołem i nie ma możliwości żeby ożenić te dwa protokoły w żadnym wypadku. To że masz urządzenia zigbee które korzystają niby z MQTT to jest kwestia odpowiednich BRAMEK, które mogą się zajmować tłumaczeniem pakietów przesyłanych przez zigbee na MQTT w dwie strony. Taka bramka wtedy utrzymuje stałe połączenie - i nie ma innej możliwości. Bo jeśli coś ma być zigbee to nie może pracować w mqtt bo nie byłoby możliwe spełnienie założeń protokołu zigbee. Więc proszę - nie MOŻNA mieszać pojęć i sprawdzić jak to wszystko działa NISKOPOZIOMOWO a nie z punktu widzenia programisty posługującego się kodem na wyższym poziomie abstrakcji.<br /><br /><div class="quotetitle">SunRiver napisał(a):</div><div class="quotecontent"><br />Moduł sobie siedzi grzecznie w garażu mozna zawsze sprawdzić co się dzieje lub wysłać dane na żądanie<br />wysyłając SMS ..<br /></div><br />No właśnie - więc nie mieszajmy MQTT tutaj z atmegą i modemem GSM - bo SMS tak jak najbardziej. <br /><br />No i na koniec <br /><div class="quotetitle">SunRiver napisał(a):</div><div class="quotecontent"><br />co w dalszym ciągu nadmiernie nie komplikuje ani kodu ani tematu , ani podejścia<br />a do client.h mozna podejść np tak :<br /></div><br /><br />- myślę, że niezrozumienie działania MQTT bierze się tu z tego że korzystasz z gotowych bibliotek andruino o czym świadczy:<br /><br /><br />#ifndef PubSubClient_h<br /><br /><br />bo to właśnie fragment tej biblioteki i być może nie zajrzałeś do źródeł jak działa MQTT. W ogóle działając tylko w andruino często ludzie nie wiedzą co się dzieje &quot;pod spodem&quot; więc później można nabrać przekonania że MQTT to posługiwanie się protokołem tekstowym - tak nie można, mówię ci zajrzyj do źródeł ... choć wiem, że źródła andruinowych bibliotek w tym zakresie są mega porypane i ich analiza bywa tragiczna.<br /><br />Jak chcesz mieć coś łatwiejszego do analizy to pobierz starą już ale ostatnią dostępną wersję ESP8266 NonOS SDK, gdzie w exaplesach masz bibliotekę do MQTT ale napisaną wprost w C i to w miarę łatwą do analizy - no może nie dla początkującego, ale ty nie jesteś początkujący więc spokojnie dasz radę zobaczyć co to jest MQTT od środka.<br /><br />Zobaczysz też od razu że to protokół połączeniowy który MUSI stale utrzymywać połączenie z brokerem i dlaczego nie da się z MQTT korzystać wprost na zigbee - tylko przez specjalne bramki.<br /><br />No niestety - ze specyfikacją protokołów nie da się dyskutować na zasadzie wiary  - trzeba to okiełznać. <br /><br />Piszę to wszystko tylko po to żeby coś wyjaśnić i doprecyzować i żeby nie patrzeć tylko na gotowce andruino bo to bardzo mocno sprowadza nieraz na manowce i nie można sobie tego co masz w tych klasach C++ swojej biblioteki andruinowej wprost zastosować na Atmedze z modemem GPRS wysyłając przez uart sam tekst - nie widząc MAGII tego co robi &quot;pod spodem&quot; stos MQTT<br /><br />Oczywiście nie straszę MQTT  - wręcz odwrotnie - wyjaśniam go i to od podstaw w swoim Kursie ESP i RTOS na przykładach z esp8266 i esp32 - ale OD PODSTAW i to w C ... dzięki czemu wszyscy studenci w końcu dowiadują się o co tu chodzi i z pełną świadomością już działają z MQTT<br /><br /><strong><span style="color: #808000">------------------------ [ Dodano po: 1 minucie ]</span></strong><br /><br /><div class="quotetitle">SunRiver napisał(a):</div><div class="quotecontent"><br />Podstawowe założenia na potrzeby tego wyjaśnienia<br />- ESP8266 i SIM800 komunikują się z mikrokontrolerem za pomocą UART<br />- Mikrokontroler obsługuje logikę MQTT (tworzenie pakietów, zarządzanie połączeniem).<br />- Publikowanie i subskrypcja są ograniczone do podstawowych funkcji.<br /></div><br /><br />No ale takie podejście to już zaczyna być słuszne i nie ważne nawet czy na tym esp8266 używać się będzie C czy C++(andruino) z tym to się zgadzam<br /><br /><strong><span style="color: #808000">------------------------ [ Dodano po: 3 minutach ]</span></strong><br /><br /><div class="quotetitle">SunRiver napisał(a):</div><div class="quotecontent"><br />Używając ESP8266 lub SIM800, możemy łatwo dodać obsługę sieci Wi-Fi lub GSM.<br /></div><br />Zatem tak jak mówiłem - na prockach 32-bitowych to już zaczyna być normalne ale nie na małych 8-bitowcach<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=54">mirekk36</a> — 5 sty 2025, o 11:57</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[SunRiver]]></name></author>
<updated>2025-01-05T11:37:35+01:00</updated>
<published>2025-01-05T11:37:35+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=24760&amp;p=238731#p238731</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=24760&amp;p=238731#p238731"/>
<title type="html"><![CDATA[Re: mqtt za pomocą g510 i karty sim]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=24760&amp;p=238731#p238731"><![CDATA[
Oczywiście to podejście jest znacznie uproszczone , ale skoro się Mirku upierasz to można to zrobić tak strikte po mojemu a najprościej opisać mi bedzie <br />to w prosty sposób dla potomnych co uczynię następująco:<br /><br />MQTT (Message Queuing Telemetry Transport) jest protokołem komunikacyjnym zoptymalizowanym pod kątem urządzeń o ograniczonych zasobach, <br />takich jak mikrokontrolery. Jego lekkość sprawia, że jest szeroko stosowany w systemach IoT (Internet of Things).  Od dziś nie bedzie to już ani problemem <br />ani tym bardziej skomplikowane .<br /><br /><strong>Wymagania sprzetowe na których będziemy bazować w przykładowej implementacji </strong><br />1. Mikrokontroler AVR (np. ATmega32).<br />2. Moduł ESP8266 (np. ESP-01).<br />3. Modem GSM SIM800 (np. SIM800L).<br /><br /><br /><strong> Podstawowe założenia na potrzeby tego wyjaśnienia </strong><br />- ESP8266 i SIM800 komunikują się z mikrokontrolerem za pomocą UART <br />- Mikrokontroler obsługuje logikę MQTT (tworzenie pakietów, zarządzanie połączeniem).<br />- Publikowanie i subskrypcja są ograniczone do podstawowych funkcji.<br /><br /><strong>Implementacja MQTT</strong><br /><br /><strong>1. Struktura klienta MQTT</strong><br />Najpierw zdefiniujmy podstawowe struktury danych dla klienta MQTT:<br /><br /><br />[syntax=c]#include &lt;stdint.h&gt;<br />#include &lt;string.h&gt;<br /><br />#define MQTT_BUFFER_SIZE 128<br /><br />typedef struct {<br />    char client_id&#91;32&#93;;<br />    char username&#91;32&#93;;<br />    char password&#91;32&#93;;<br />    char topic&#91;64&#93;;<br />    char message&#91;MQTT_BUFFER_SIZE&#93;;<br />    uint8_t buffer&#91;MQTT_BUFFER_SIZE&#93;;<br />    uint16_t keep_alive;<br />} mqtt_client_t;<br /><br />mqtt_client_t mqtt_client = {<br />    .client_id = &quot;avr_mqtt_client&quot;,<br />    .username = &quot;&quot;,<br />    .password = &quot;&quot;,<br />    .keep_alive = 60<br />};[/syntax]<br /><br /><strong>2. Funkcje do obsługi MQTT</strong><br />Poniżej przedstawiam przykładowe funkcje do tworzenia pakietów CONNECT, PUBLISH i SUBSCRIBE:<br /><strong><em>(pakiet CONNECT)</em></strong><br />[syntax=c]#include &lt;stdio.h&gt;<br /><br />uint16_t mqtt_connect(mqtt_client_t *client) {<br />    uint8_t *ptr = client-&gt;buffer;<br />    *ptr++ = 0x10; // Typ pakietu CONNECT<br /><br />    uint16_t len = 10 + strlen(client-&gt;client_id) + 2;<br />    *ptr++ = len; // Długość pakietu<br /><br />    // Protokół<br />    *ptr++ = 0x00; *ptr++ = 0x04; // &quot;MQTT&quot;<br />    memcpy(ptr, &quot;MQTT&quot;, 4);<br />    ptr += 4;<br /><br />    *ptr++ = 0x04; // Wersja protokołu<br />    *ptr++ = 0x02; // Flagi<br /><br />    *ptr++ = (client-&gt;keep_alive &gt;&gt; 8) &amp; 0xFF;<br />    *ptr++ = client-&gt;keep_alive &amp; 0xFF;<br /><br />    // Client ID<br />    *ptr++ = (strlen(client-&gt;client_id) &gt;&gt; 8) &amp; 0xFF;<br />    *ptr++ = strlen(client-&gt;client_id) &amp; 0xFF;<br />    memcpy(ptr, client-&gt;client_id, strlen(client-&gt;client_id));<br />    ptr += strlen(client-&gt;client_id);<br /><br />    return (ptr - client-&gt;buffer);<br />}[/syntax]<br /><br />Podobnie implementujemy funkcje dla PUBLISH i SUBSCRIBE.<br /><br /><br />[syntax=c]uint16_t mqtt_publish(mqtt_client_t *client, const char *topic, const char *message) {<br />    uint8_t *ptr = client-&gt;buffer;<br />    *ptr++ = 0x30; // Typ pakietu PUBLISH<br /><br />    uint16_t topic_len = strlen(topic);<br />    uint16_t message_len = strlen(message);<br />    uint16_t len = 2 + topic_len + message_len;<br /><br />    *ptr++ = len; // Długość pakietu<br /><br />    *ptr++ = (topic_len &gt;&gt; 8) &amp; 0xFF;<br />    *ptr++ = topic_len &amp; 0xFF;<br />    memcpy(ptr, topic, topic_len);<br />    ptr += topic_len;<br /><br />    memcpy(ptr, message, message_len);<br />    ptr += message_len;<br /><br />    return (ptr - client-&gt;buffer);<br />}<br /><br />uint16_t mqtt_subscribe(mqtt_client_t *client, const char *topic) {<br />    uint8_t *ptr = client-&gt;buffer;<br />    *ptr++ = 0x82; // Typ pakietu SUBSCRIBE<br /><br />    uint16_t topic_len = strlen(topic);<br />    uint16_t len = 2 + 2 + topic_len + 1;<br /><br />    *ptr++ = len; // Długość pakietu<br /><br />    *ptr++ = 0x00; // ID pakietu (MSB)<br />    *ptr++ = 0x01; // ID pakietu (LSB)<br /><br />    *ptr++ = (topic_len &gt;&gt; 8) &amp; 0xFF;<br />    *ptr++ = topic_len &amp; 0xFF;<br />    memcpy(ptr, topic, topic_len);<br />    ptr += topic_len;<br /><br />    *ptr++ = 0x00; // QoS 0<br /><br />    return (ptr - client-&gt;buffer);<br />}[/syntax]<br /><br /><br /><br /><strong>Użycie ESP8266 do przesyłania danych przez sieć Wi-Fi<br /></strong><br /><strong>1. Inicjalizacja ESP8266</strong><br /><br />Do ESP wgrywamy firmware, które obsługuje komendy  AT do konfiguracji. <br />Teraz musimy przygotować funkcję do wysyłania komend AT:<br /><br />[syntax=c]void esp8266_send_command(const char *command) {<br />    printf(&quot;%s\r\n&quot;, command);<br />}[/syntax]<br /><br /><strong>Inicjalizacja ESP8266:</strong><br /><br />[syntax=c]void esp8266_init(void) {<br />    esp8266_send_command(&quot;AT&quot;);<br />    _delay_ms(1000);<br />    esp8266_send_command(&quot;AT+CWMODE=1&quot;); // Ustaw tryb klienta<br />    _delay_ms(1000);<br />    esp8266_send_command(&quot;AT+CWJAP=\&quot;SSID\&quot;,\&quot;PASSWORD\&quot;&quot;); // Połącz z Wi-Fi<br />    _delay_ms(5000);<br />    esp8266_send_command(&quot;AT+CIPMUX=0&quot;); // Ustaw pojedyncze połączenie<br />}[/syntax]<br /><strong><br />2. Połączenie z brokerem MQTT</strong><br /><br />[syntax=c]void esp8266_connect_mqtt(const char *host, uint16_t port) {<br />    char command&#91;64&#93;;<br />    snprintf(command, sizeof(command), &quot;AT+CIPSTART=\&quot;TCP\&quot;,\&quot;%s\&quot;,%d&quot;, host, port);<br />    esp8266_send_command(command);<br />    _delay_ms(3000);<br />}[/syntax]<br /><br />Po nawiązaniu połączenia wysyłamy pakiet CONNECT wygenerowany przez funkcję `mqtt_connect`.<br /><br /><strong>Użycie SIM800 jako modemu GSM</strong><br /><br /><strong>1. Inicjalizacja SIM800</strong><br /><br />[syntax=c]void sim800_send_command(const char *command) {<br />    printf(&quot;%s\r&quot;, command);<br />}<br /><br />void sim800_init(void) {<br />    sim800_send_command(&quot;AT&quot;);<br />    _delay_ms(1000);<br />    sim800_send_command(&quot;AT+CGATT=1&quot;); // Uaktywnij GPRS<br />    _delay_ms(1000);<br />    sim800_send_command(&quot;AT+CSTT=\&quot;APN\&quot;,\&quot;USER\&quot;,\&quot;PASS\&quot;&quot;); // Ustaw APN<br />    _delay_ms(1000);<br />    sim800_send_command(&quot;AT+CIICR&quot;); // Uaktywnij połączenie<br />    _delay_ms(5000);<br />    sim800_send_command(&quot;AT+CIFSR&quot;); // Pobierz adres IP<br />    _delay_ms(1000);<br />}[/syntax]<br /><br /><strong>2. Połączenie z brokerem MQTT</strong><br /><br />[syntax=c]void sim800_connect_mqtt(const char *host, uint16_t port) {<br />    char command&#91;64&#93;;<br />    snprintf(command, sizeof(command), &quot;AT+CIPSTART=\&quot;TCP\&quot;,\&quot;%s\&quot;,%d&quot;, host, port);<br />    sim800_send_command(command);<br />    _delay_ms(3000);<br />}[/syntax]<br /><br /><strong>Publikowanie wiadomości</strong><br /><br />[syntax=c]void mqtt_publish(const char *topic, const char *message) {<br />    uint8_t *ptr = mqtt_client.buffer;<br />    *ptr++ = 0x30; // Typ pakietu PUBLISH<br /><br />    uint16_t topic_len = strlen(topic);<br />    uint16_t msg_len = strlen(message);<br /><br />    *ptr++ = 2 + topic_len + msg_len; // Długość pakietu<br /><br />    *ptr++ = (topic_len &gt;&gt; 8) &amp; 0xFF;<br />    *ptr++ = topic_len &amp; 0xFF;<br />    memcpy(ptr, topic, topic_len);<br />    ptr += topic_len;<br /><br />    memcpy(ptr, message, msg_len);<br />    ptr += msg_len;<br /><br />    // Wysłanie danych przez UART<br />    uart_send(mqtt_client.buffer, ptr - mqtt_client.buffer);<br />}[/syntax]<br /><br /><br />Implementacja klienta MQTT w mikrokontrolerach AVR jest pewnego rodzaju wyzwaniem, a ich(AVR) użycie jest nieekonomiczne i ostatecznie niema w dzisiejszych realiach <br />żadnego uzasadnienia, poza zaleganiem w szufladzie, ale daje możliwość komunikacji w systemach IoT przy niekoniecznie niskim koszcie. <br />Używając ESP8266 lub SIM800, możemy łatwo dodać obsługę sieci Wi-Fi lub GSM. Choć można sobie pozwolić na duże uproszczenia to jednak poprawna obsługa protokołu MQTT, <br />w tym generowanie pakietów i zarządzanie połączeniami jest istotna ze względu na powtarzalność i skuteczność działania urządzenia. <br />Powyższe przykłady kodu mogą stanowić zarówno inspirację jak i solidną bazę do budowy bardziej rozbudowanych aplikacji.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=58">SunRiver</a> — 5 sty 2025, o 11:37</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[SunRiver]]></name></author>
<updated>2025-01-05T10:41:09+01:00</updated>
<published>2025-01-05T10:41:09+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=24760&amp;p=238730#p238730</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=24760&amp;p=238730#p238730"/>
<title type="html"><![CDATA[Re: mqtt za pomocą g510 i karty sim]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=24760&amp;p=238730#p238730"><![CDATA[
Tu ja się nie zgodzę , <br />Bo urządzenia działają nie trzeba utrzymywać połączenia z brokerem , gdyż było by to bezsensowne dla urządzeń zasilanych bateryjnie <br />które łączą się z brokerem w momencie wykrycia zmiany parametru i wysłania wartości , tak działają wszystkie nie tylko moje urządzenia <br />na zigbee ale i część moich urządzeń używających wifi . MQTT jest proste do oprogramowania i niema sensu ludzi straszyć ...<br />a zaprezentowany kod który twoim zdaniem Mirku nie działa , działa bardzo dobrze zarówno z sim800 jak i m590 jedyny kłopot jaki występuje <br />to nawiązanie połaczenia z siecią TCPIP  bo czasem zwłaszcza m590 sie wykopuje ,  Na podobnym rozwiązaniu działają parkometry i systemy telemetryczne <br />w autobusach ,wiec twój wywód niema absolutnie żadnego zastosowania ...<br />W taego typu połaczeniach bazujących na modemach gsm stosuje się QoS 0  wprawdzie jest on najnizszy i bez potwierdzenia i gwarancji dostarczenia informacji<br />ale zmieny są wysyłane na tyle szybko że utrata 2ch pakietów jest pomijalna .<br /><br />Mirtku bez urazy ale za długo siedze w MQTT<br /><br /><strong><span style="color: #808000">------------------------ [ Dodano po: 10 minutach ]</span></strong><br /><br />oczywiście to co przedstawiłem jest najprostrzą możliwą działającą możliwością porzesyłania danych przez MQTT <br />ale bez gwarancji diostarczenia wiadomości QoS0    można obsłużyć to w bardziej wyrafinowany sposób <br />choćby z użyciem biblioteki bazującej na arduinowej pubSubClient<br /><br />[syntax=c]#ifndef PubSubClient_h<br />#define PubSubClient_h<br /><br />#include &lt;stdint.h&gt;<br />#include &lt;stddef.h&gt;<br />#include &lt;stdbool.h&gt;<br />#include &lt;string.h&gt;<br />#include &lt;avr/pgmspace.h&gt;<br />#include &quot;IPAddress.h&quot;<br />#include &quot;Client.h&quot;<br />#include &quot;Stream.h&quot;<br /><br />#define MQTT_VERSION_3_1      3<br />#define MQTT_VERSION_3_1_1    4<br /><br />#ifndef MQTT_VERSION<br />#define MQTT_VERSION MQTT_VERSION_3_1_1<br />#endif<br /><br />#ifndef MQTT_MAX_PACKET_SIZE<br />#define MQTT_MAX_PACKET_SIZE 256<br />#endif<br /><br />#ifndef MQTT_KEEPALIVE<br />#define MQTT_KEEPALIVE 15<br />#endif<br /><br />#ifndef MQTT_SOCKET_TIMEOUT<br />#define MQTT_SOCKET_TIMEOUT 15<br />#endif<br /><br />#define MQTT_CONNECTION_TIMEOUT     -4<br />#define MQTT_CONNECTION_LOST        -3<br />#define MQTT_CONNECT_FAILED         -2<br />#define MQTT_DISCONNECTED           -1<br />#define MQTT_CONNECTED               0<br />#define MQTT_CONNECT_BAD_PROTOCOL    1<br />#define MQTT_CONNECT_BAD_CLIENT_ID   2<br />#define MQTT_CONNECT_UNAVAILABLE     3<br />#define MQTT_CONNECT_BAD_CREDENTIALS 4<br />#define MQTT_CONNECT_UNAUTHORIZED    5<br /><br />#define MQTTCONNECT     (1 &lt;&lt; 4)  <br />#define MQTTCONNACK     (2 &lt;&lt; 4)<br />#define MQTTPUBLISH     (3 &lt;&lt; 4)<br />#define MQTTPUBACK      (4 &lt;&lt; 4)<br />#define MQTTPUBREC      (5 &lt;&lt; 4)<br />#define MQTTPUBREL      (6 &lt;&lt; 4)<br />#define MQTTPUBCOMP     (7 &lt;&lt; 4)<br />#define MQTTSUBSCRIBE   (8 &lt;&lt; 4)<br />#define MQTTSUBACK      (9 &lt;&lt; 4)<br />#define MQTTUNSUBSCRIBE (10 &lt;&lt; 4)<br />#define MQTTUNSUBACK    (11 &lt;&lt; 4)<br />#define MQTTPINGREQ     (12 &lt;&lt; 4)<br />#define MQTTPINGRESP    (13 &lt;&lt; 4)<br />#define MQTTDISCONNECT  (14 &lt;&lt; 4)<br /><br />#define MQTTQOS0        (0 &lt;&lt; 1)<br />#define MQTTQOS1        (1 &lt;&lt; 1)<br />#define MQTTQOS2        (2 &lt;&lt; 1)<br /><br />#define MQTT_MAX_HEADER_SIZE 5<br /><br />#define CHECK_STRING_LENGTH(l, s) if ((l) + 2 + strnlen((s), this-&gt;bufferSize) &gt; this-&gt;bufferSize) {_client-&gt;stop(); return false;}<br /><br />typedef void (*MQTT_CALLBACK_SIGNATURE)(char*, uint8_t*, unsigned int);<br /><br />class PubSubClient {<br />private:<br />    Client* _client;<br />    uint8_t* buffer;<br />    uint16_t bufferSize;<br />    uint16_t keepAlive;<br />    uint16_t socketTimeout;<br />    uint16_t nextMsgId;<br />    unsigned long lastOutActivity;<br />    unsigned long lastInActivity;<br />    bool pingOutstanding;<br />    MQTT_CALLBACK_SIGNATURE callback;<br />    uint32_t readPacket(uint8_t*);<br />    bool readByte(uint8_t* result);<br />    bool readByte(uint8_t* result, uint16_t* index);<br />    bool write(uint8_t header, uint8_t* buf, uint16_t length);<br />    uint16_t writeString(const char* string, uint8_t* buf, uint16_t pos);<br />    size_t buildHeader(uint8_t header, uint8_t* buf, uint16_t length);<br />    IPAddress ip;<br />    const char* domain;<br />    uint16_t port;<br />    Stream* stream;<br />    int _state;<br /><br />public:<br />    PubSubClient();<br />    PubSubClient(Client&amp; client);<br />    PubSubClient(IPAddress ip, uint16_t port, Client&amp; client);<br />    PubSubClient(const char* domain, uint16_t port, Client&amp; client);<br /><br />    ~PubSubClient();<br /><br />    PubSubClient&amp; setServer(IPAddress ip, uint16_t port);<br />    PubSubClient&amp; setServer(const char* domain, uint16_t port);<br />    PubSubClient&amp; setCallback(MQTT_CALLBACK_SIGNATURE);<br />    PubSubClient&amp; setClient(Client&amp; client);<br />    PubSubClient&amp; setStream(Stream&amp; stream);<br />    PubSubClient&amp; setKeepAlive(uint16_t keepAlive);<br />    PubSubClient&amp; setSocketTimeout(uint16_t timeout);<br /><br />    bool setBufferSize(uint16_t size);<br />    uint16_t getBufferSize();<br /><br />    bool connect(const char* id);<br />    bool connect(const char* id, const char* user, const char* pass);<br />    bool connect(const char* id, const char* willTopic, uint8_t willQos, bool willRetain, const char* willMessage);<br />    bool connect(const char* id, const char* user, const char* pass, const char* willTopic, uint8_t willQos, bool willRetain, const char* willMessage);<br />    void disconnect();<br />    bool publish(const char* topic, const char* payload);<br />    bool publish(const char* topic, const char* payload, bool retained);<br />    bool publish(const char* topic, const uint8_t* payload, unsigned int plength);<br />    bool publish(const char* topic, const uint8_t* payload, unsigned int plength, bool retained);<br />    bool subscribe(const char* topic);<br />    bool subscribe(const char* topic, uint8_t qos);<br />    bool unsubscribe(const char* topic);<br />    bool loop();<br />    bool connected();<br />    int state();<br />};<br /><br />#endif[/syntax]<br /><br />co w dalszym ciągu nadmiernie nie komplikuje ani kodu ani tematu , ani podejścia<br />a do client.h mozna podejść np tak :<br /><br /><br />[syntax=c]#ifndef client_h<br />#define client_h<br /><br />#include &lt;stdint.h&gt;<br />#include &lt;stddef.h&gt;<br />#include &quot;Print.h&quot;<br />#include &quot;Stream.h&quot;<br />#include &quot;IPAddress.h&quot;<br /><br />class Client : public Stream {<br />public:<br />    virtual int connect(IPAddress ip, uint16_t port) = 0;<br />    virtual int connect(const char* host, uint16_t port) = 0;<br />    virtual size_t write(uint8_t) = 0;<br />    virtual size_t write(const uint8_t* buf, size_t size) = 0;<br />    virtual int available() = 0;<br />    virtual int read() = 0;<br />    virtual int read(uint8_t* buf, size_t size) = 0;<br />    virtual int peek() = 0;<br />    virtual void flush() = 0;<br />    virtual void stop() = 0;<br />    virtual uint8_t connected() = 0;<br />    virtual operator bool() = 0;<br /><br />protected:<br />    uint8_t* rawIPAddress(IPAddress&amp; addr) { return addr.raw_address(); };<br />};<br /><br />#endif[/syntax]<br /><br /><br />oczywiście używanie Atmegi jest raczej masochistyczne w tym temacie , ale da się i to bez wiekszych kłopotów<br /><br /><img src="https://obrazkiforum.atnel.pl/thumb/58/7797bd1fded20b20e281885487aae2d7.jpg" alt="Obrazek" />[/url]<br /><br />Moduł sobie siedzi grzecznie w garażu mozna zawsze sprawdzić co się dzieje lub wysłać dane na żądanie <br />wysyłając SMS ..<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=58">SunRiver</a> — 5 sty 2025, o 10:41</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2025-01-05T01:48:14+01:00</updated>
<published>2025-01-05T01:48:14+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=24760&amp;p=238728#p238728</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=24760&amp;p=238728#p238728"/>
<title type="html"><![CDATA[Re: mqtt za pomocą g510 i karty sim]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=24760&amp;p=238728#p238728"><![CDATA[
<div class="quotetitle">SunRiver napisał(a):</div><div class="quotecontent"><br />Nie trzeba nic specjalnego i żadnych specjalnych modemów , MQTT jest opartr na TCP/IP i nie wymaga niczego poza połaczeniem z siecią<br />i brokerem a to umożliwiają nawet najprostsze modemy GSM łacznie z prostackim M590 ..<br /></div><br /><br />Pozwolę się z tym całkowicie nie zgodzić i nie z żadnej przekory tylko z uwagi na specyfikację protokołu MQTT, który nie jest prostym protokołem tekstowym jak np http, więc ten pokazany przykładowy kod, przykro mi ale absolutnie nie zadziała. Nie wystarczy bowiem samo połączenie TCP z brokerem.<br /><br />Po pierwsze MQTT to protokół binarny, gdzie przesyłane dane &quot;tekstowe&quot; muszą być opakowane w nagłówki binarne, sam nagłówek musi nieść informacje, wymienię takie podstawowe jak:<br /><br />[syntax=c]10: Typ pakietu CONNECT.<br />0C: Długość pakietu CONNECT.<br />00 04 MQTT: Protokół MQTT.<br />04: Poziom protokołu (4 dla MQTT 3.1.1).<br />02: Flagi (np. clean session).<br />00 3C: Keep Alive (60 sekund).<br />00 05 my_id: ID klienta („my_id”)[/syntax]<br /><br />Tego w przykładowym kodzie w ogóle nie ma, co spowoduje, że taki pakiet z samym tekstem który ma być opublikowany zostanie kompletnie zignorowany przez brokera. <br /><br />Po drugie ja rozumiem, że tu dla lepszej przejrzystości użyte zostały proste delaje, które są i będą masakrą dla komunikacji z brokerem zgodnie ze standardem MQTT, więc żeby w ogóle mówić o działaniu trzeba czy się chce czy nie zacząć tworzyć swój chociażby minimalistyczny ala &quot;stos&quot; MQTT począwszy od porządnej komunikacji UART opartej na zdarzeniach ale też PRZEDE WSZYSTKIM odpowiedziach nie tylko z modemu (jeśli chodzi o odpowiedzi na komendy AT) ale na odpowiedzi (i to BINARNE) z brokera <br /><br />Po trzecie jeśli chodzi o komunikację chociażby w jedną stronę i załóżmy pominięcie faktu logowania i ssl, to sama maszyna stanów binarnego protokołu MQTT jest dość skomplikowana i zawiła do oprogramowania we własnym zakresie, jeśli ktoś dopiero zaczyna przygodę z MQTT i nie zajrzał do specyfikacji protokołu<br /><br />Jednym z poważniejszych błędów tego przykładowego kodu jest chociażby to, że kompletnie pominięto pakiet &quot;CONNECT&quot; ... pakiet binarny, nie odebrano odpowiedzi na niego z brokera, nie przesłano własnego ID. Więc wszystko co wyśle ten kod poleci w przysłowiowy kosmos i nie doczeka się żadnej ale to żadnej reakcji ze strony żadnego brokera. Z uwagi na to że co by nie mówić przykładowy kod jest ładnie i rzetelnie przygotowany jeśli chodzi o C dla AVR - to bardzo łatwo go skopiować do swojego procka i go wypróbować....<br /><br />Ale i to nie wszystko - żeby MQTT działało prawidłowo to po CONNECT trzeba odpowiadać brokerowi na zapytania czy klient żyje (też binarnie) bo jeśli nie to broker od razu się rozłącza.<br /><br />Jednym z większych problemów modemów GSM jest niestabilność połączeń GPRS co z kolei drastycznie obniża jakość działania stosu MQTT nawet jeśli go w jakimś stopniu sobie napiszemy w oparciu o specyfikację komunikacji BINARNEJ zaznaczam.<br /><br />W ogóle bez ciągłej analizy odpowiedzi z brokera kompletnie nie będziemy wiedzieć czy ala wysłane dane w ogóle dotarły czy nie ....<br /><br />Nie wspomnę już o flagach QoS, Retain itp itd - to wszystko musi być cały czas na bieżąco obsługiwane - nie ma prostego jakby zabawkowego wysłania tekstu jako danych do brokera i w 5 sekund będzie można się przekonać, że ten właśnie przykładowy kod przyniesie taki skutek.<br /><br />Podsumowując, żeby mieć obsługę jakąś nawet minimalistyczną samego wysyłania to trzeba:<br /><br />1. CONNECT - nawiązać prawidłowo i binarnie połączenie z brokerem - a to KOMPLETNIE nie jest równoznaczne z połączeniem się za pomocą TCP z brokerem. Samo połączenie TCP to część fizyczna i nie związana z protokołem MQTT<br /><br />2. Żeby zrobić PUSH to trzeba po prawidłowym połączeniu z pkt.1 wysłać dane ale kurczę z nagłówkami binarnymi np coś w stylu:<br /><br />[syntax=c]UART_Send(&quot;\x30\x11\x00\x04testHello MQTT!&quot;);[/syntax]<br /><br />ale pominąłem tu świadomie dla uproszczenia - przepuszczenie tego przez odpowiednie komendy AT do modemu w sposób asynchroniczny i co ważne poczekać na odpowiedź binarną z brokera, przeanalizować ją żeby wiedzieć, że w ogóle broker to przyjął a nie odrzucił jak zły przeszczep<br /><br />3. Naturalnie w dalszej części kodu trzeba jak wspominałem wcześniej utrzymywać połączenie z brokerem (binarnie) bo bez tego będzie padaczka i mechanizm nada się co najwyżej jako zabawka<br /><br /><br />Krótko mówiąc - jak ktoś się uprze to może stworzyć taki stosik nawet minimalistyczny, ale żeby coś robić to niestety TRZEBA zajrzeć do specyfikacji protokołu MQTT, a najlepiej do jakichś przykładów tego stosu, które w postaci otwartej są przecież dostępne na ESP nawet na esp8266. Po zajrzeniu do tego kodu dopiero człowiek zacznie widzieć o co tu chodzi.<br /><br />Wniosek - no moim zdaniem nie można aż tak upraszczać przykładów do obsługi MQTT - a kto nie wierzy, to proszę bardzo uruchmić ten skąd inąd jak mówiłem, fajnie przygotowany kod źródłowy , który w całości można skopiować, skompilować i sprawdzić. Wtedy każdy sam sobie odpowie.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=54">mirekk36</a> — 5 sty 2025, o 01:48</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Arek1111111111]]></name></author>
<updated>2025-01-04T21:27:57+01:00</updated>
<published>2025-01-04T21:27:57+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=24760&amp;p=238727#p238727</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=24760&amp;p=238727#p238727"/>
<title type="html"><![CDATA[Re: mqtt za pomocą g510 i karty sim]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=24760&amp;p=238727#p238727"><![CDATA[
uruchamiałem tylko gotowce z Internetu, i to w arduino. Więc będę musiał zgłębić temat bardziej.<br />Karta sim to Otvarta.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=3349">Arek1111111111</a> — 4 sty 2025, o 21:27</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[SunRiver]]></name></author>
<updated>2025-01-04T21:24:11+01:00</updated>
<published>2025-01-04T21:24:11+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=24760&amp;p=238726#p238726</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=24760&amp;p=238726#p238726"/>
<title type="html"><![CDATA[Re: mqtt za pomocą g510 i karty sim]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=24760&amp;p=238726#p238726"><![CDATA[
nie mam najmniejszego problemu z wysyłaniem na tym module smsów  , mogę na niego zadzwonić po 4 dzwonkach się rozłacza i oddzwania do mnie .. wiec nie wiem <br />w czym masz kłopot , może coś źle robisz w kodzie może problemem jest sieć lub operator który blokuje .. uzywam karty telemetrycznej z plusa<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=58">SunRiver</a> — 4 sty 2025, o 21:24</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Arek1111111111]]></name></author>
<updated>2025-01-04T20:45:06+01:00</updated>
<published>2025-01-04T20:45:06+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=24760&amp;p=238725#p238725</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=24760&amp;p=238725#p238725"/>
<title type="html"><![CDATA[Re: mqtt za pomocą g510 i karty sim]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=24760&amp;p=238725#p238725"><![CDATA[
kiedy wpisywałem komendy do wysyłania lub dzwonienia dostawałem komunikat error. Potem gdzieś na forach doczytałem  ze SIM7670E tak, ale już z literą G nie obsługuje sms i dzwonienia<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=3349">Arek1111111111</a> — 4 sty 2025, o 20:45</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[SunRiver]]></name></author>
<updated>2025-01-04T20:15:53+01:00</updated>
<published>2025-01-04T20:15:53+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=24760&amp;p=238724#p238724</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=24760&amp;p=238724#p238724"/>
<title type="html"><![CDATA[Re: mqtt za pomocą g510 i karty sim]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=24760&amp;p=238724#p238724"><![CDATA[
oczywiście że SIM7670 umozliwia wysyłanie SMS i dzwonienie na wskazany numer <br />obsługuje też sieci 4G co w przypadku starszych modułów nie jest osiągalne i pracują zwykle w sieciach 3G<br />która jest wygaszana w polsce<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=58">SunRiver</a> — 4 sty 2025, o 20:15</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Arek1111111111]]></name></author>
<updated>2025-01-04T19:48:15+01:00</updated>
<published>2025-01-04T19:48:15+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=24760&amp;p=238723#p238723</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=24760&amp;p=238723#p238723"/>
<title type="html"><![CDATA[Re: mqtt za pomocą g510 i karty sim]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=24760&amp;p=238723#p238723"><![CDATA[
wiem też czytałem ale tylko ebooka. Zakupiłem nawet taki zestaw: <!-- m --><a class="postlink" href="https://www.waveshare.com/esp32-s3-sim7670g-4g.htm" >https://www.waveshare.com/esp32-s3-sim7670g-4g.htm</a><!-- m --> ale z tego co zrozumiałem to moduł ten nie obsługuje sms i dzwonienia.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=3349">Arek1111111111</a> — 4 sty 2025, o 19:48</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[SunRiver]]></name></author>
<updated>2025-01-04T19:33:13+01:00</updated>
<published>2025-01-04T19:33:13+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=24760&amp;p=238722#p238722</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=24760&amp;p=238722#p238722"/>
<title type="html"><![CDATA[Re: mqtt za pomocą g510 i karty sim]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=24760&amp;p=238722#p238722"><![CDATA[
proszę bardzo <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" />  czasem wystarczy znać temat i samo rozwiązanie przychodzi <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /><br />Trochę też opisałem w mojej nowej książce , ale tam głownie skupiałem się na ESP<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=58">SunRiver</a> — 4 sty 2025, o 19:33</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Arek1111111111]]></name></author>
<updated>2025-01-04T19:28:03+01:00</updated>
<published>2025-01-04T19:28:03+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=24760&amp;p=238721#p238721</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=24760&amp;p=238721#p238721"/>
<title type="html"><![CDATA[Re: mqtt za pomocą g510 i karty sim]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=24760&amp;p=238721#p238721"><![CDATA[
super! cały Internet przeszukiwałem i nie znalazłem nic na ten temat a tu dostałem praktycznie gotowca <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /> Mam zajęcie na weekend <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=3349">Arek1111111111</a> — 4 sty 2025, o 19:28</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[SunRiver]]></name></author>
<updated>2025-01-04T17:01:14+01:00</updated>
<published>2025-01-04T17:01:14+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=24760&amp;p=238719#p238719</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=24760&amp;p=238719#p238719"/>
<title type="html"><![CDATA[Re: mqtt za pomocą g510 i karty sim]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=24760&amp;p=238719#p238719"><![CDATA[
Aby zrealizować komunikację MQTT na mikrokontrolerze ATmega32 z użyciem modemu GSM Fibocom G510, <br />należy zaimplementować obsługę modemu przez AT-komendy, stworzyć stos MQTT, oraz zintegrować to wszystko w oprogramowaniu mikrokontrolera. <br />Zadanie jest bardzo proste i skuteczne <br /><br />na poczatek jak wiadomo musisz w kodzie zaimplementować sobie <br />odpowiednie komendy AT sterujące modemem<br /><br />Inicjalizacja modemu:<br /><br />AT: Sprawdzenie komunikacji.<br />ATE0: Wyłączenie echa (opcjonalnie).<br />AT+CGATT=1: Dołączenie do sieci GPRS.<br />AT+SAPBR=1,1: Ustawienie profilu danych (jeśli wymagane).<br />AT+SAPBR=2,1: Sprawdzenie statusu profilu.<br /><br />Konfiguracja i otwieranie połączenia TCP to cię interesuje :<br /><br />AT+CIPSTART=&quot;TCP&quot;,&quot;&lt;MQTT_BROKER_IP&gt;&quot;,&quot;&lt;PORT&gt;&quot;: Połączenie z serwerem MQTT.<br />AT+CIPSEND: Rozpoczęcie wysyłania danych.<br /><br />Teraz pozostaje implementacja w oprogramowaniu stosu MQTT<br /><br />Struktura komunikacji:<br />Connect Packet:<br />Wyślij pakiet CONNECT, zawierający identyfikator klienta oraz dane uwierzytelniające (jeśli wymagane).<br />Publish Packet:<br />Pakiety PUBLISH zawierają temat oraz dane wiadomości.<br />Subscribe Packet:<br />Używane do subskrybowania tematów, jeśli mikrokontroler ma odbierać dane.<br /><br /><br />to tylko przykład .... bez problemu działa <img src="https://forum.atnel.pl/images/smilies/icon_razz.gif" alt=":P" title="Pokazuje język" /><br /><br />[syntax=c]#include &lt;avr/io.h&gt;<br />#include &lt;util/delay.h&gt;<br />#include &quot;uart.h&quot; // Biblioteka do obsługi UART<br /><br />void modem_init() {<br />    UART_Send(&quot;AT\r\n&quot;); // Sprawdzenie modemu<br />    _delay_ms(1000);<br />    UART_Send(&quot;AT+CGATT=1\r\n&quot;); // Dołączenie do sieci<br />    _delay_ms(2000);<br />    UART_Send(&quot;AT+CIPSTART=\&quot;TCP\&quot;,\&quot;broker.hivemq.com\&quot;,\&quot;1883\&quot;\r\n&quot;);<br />    _delay_ms(3000);<br />}<br /><br />void mqtt_connect() {<br />    char connect_packet&#91;&#93; = { ... }; // Pakiet CONNECT<br />    UART_Send(&quot;AT+CIPSEND=&lt;DŁUGOŚĆ PAKIETU&gt;\r\n&quot;);<br />    _delay_ms(500);<br />    UART_Send(connect_packet);<br />}<br /><br />void mqtt_publish(char* topic, char* message) {<br />    char publish_packet&#91;&#93; = { ... }; // Pakiet PUBLISH<br />    UART_Send(&quot;AT+CIPSEND=&lt;DŁUGOŚĆ PAKIETU&gt;\r\n&quot;);<br />    _delay_ms(500);<br />    UART_Send(publish_packet);<br />}<br /><br />int main() {<br />    UART_Init(115200);<br />    modem_init();<br />    mqtt_connect();<br />    mqtt_publish(&quot;test/topic&quot;, &quot;Hello MQTT!&quot;);<br />    while(1) {}<br />}[/syntax]<br /><br />Nie trzeba nic specjalnego i żadnych specjalnych modemów ,  MQTT jest opartr na TCP/IP  i nie wymaga niczego poza połaczeniem z siecią <br />i brokerem a to umożliwiają nawet najprostsze modemy GSM łacznie z prostackim M590 ..<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=58">SunRiver</a> — 4 sty 2025, o 17:01</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2025-01-03T22:18:57+01:00</updated>
<published>2025-01-03T22:18:57+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=24760&amp;p=238718#p238718</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=24760&amp;p=238718#p238718"/>
<title type="html"><![CDATA[Re: mqtt za pomocą g510 i karty sim]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=24760&amp;p=238718#p238718"><![CDATA[
no to już by chyba trzeba było może szukać jakiegoś pecjalizowanego modemu gprs który ma MQTT <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=54">mirekk36</a> — 3 sty 2025, o 22:18</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Arek1111111111]]></name></author>
<updated>2025-01-03T13:08:49+01:00</updated>
<published>2025-01-03T13:08:49+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=24760&amp;p=238714#p238714</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=24760&amp;p=238714#p238714"/>
<title type="html"><![CDATA[Re: mqtt za pomocą g510 i karty sim]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=24760&amp;p=238714#p238714"><![CDATA[
wiem i to mi pięknie działa już od ponad roku. <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /> Chciałem korzystając z tej samej karty sim aby nie opłacać kolejnej na Internet lte, obsługiwać komunikacje MQTT.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=3349">Arek1111111111</a> — 3 sty 2025, o 13:08</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2025-01-02T10:59:31+01:00</updated>
<published>2025-01-02T10:59:31+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=24760&amp;p=238711#p238711</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=24760&amp;p=238711#p238711"/>
<title type="html"><![CDATA[Re: mqtt za pomocą g510 i karty sim]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=24760&amp;p=238711#p238711"><![CDATA[
<div class="quotetitle">Arek1111111111 napisał(a):</div><div class="quotecontent"><br />Nie wiem jak zrobić aby po wykryciu alarmu na którejkolwiek działce mój moduł na avr podłączony pod kartę sim dzwoni na mój numer i wysyła sms z info z której działki wystąpił alarm.<br /></div><br />Wszystko to masz przepięknie pokazane w Yellowbooku<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=54">mirekk36</a> — 2 sty 2025, o 10:59</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Arek1111111111]]></name></author>
<updated>2025-01-01T17:06:31+01:00</updated>
<published>2025-01-01T17:06:31+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=24760&amp;p=238707#p238707</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=24760&amp;p=238707#p238707"/>
<title type="html"><![CDATA[Re: mqtt za pomocą g510 i karty sim]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=24760&amp;p=238707#p238707"><![CDATA[
no tak właśnie myślałem że nie będzie tak prosto. Pomyśle nad innym rozwiązaniem, chce zrobić na ogródku działkowym alarm który dzwoni w razie włamania do altany, ale jednocześnie umożliwia sprawdzanie innych alarmów które są podłączone tylko do wifi w innych sieciach i już działają na mqtt. Nie wiem jak zrobić aby po wykryciu alarmu na którejkolwiek działce mój moduł na avr podłączony pod kartę sim dzwoni na mój numer i wysyła sms z info  z której działki wystąpił alarm. Może znacie jakąś aplikacje obslugującą MQTT na iPhone w której można by ustalić jakiś dzwonek, nawet w trybie czuwania?<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=3349">Arek1111111111</a> — 1 sty 2025, o 17:06</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2024-12-29T14:18:44+01:00</updated>
<published>2024-12-29T14:18:44+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=24760&amp;p=238697#p238697</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=24760&amp;p=238697#p238697"/>
<title type="html"><![CDATA[Re: mqtt za pomocą g510 i karty sim]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=24760&amp;p=238697#p238697"><![CDATA[
moduły gsm mają zwykle gprs czyli dają dostęp do internetu poprzez różne protokoły od wyższych http, ftp po niższe udp i tcp ... zwykle za pomocą komend AT ... ale żeby na tym zrobić obsługę MQTT ... no to niezłe wyzwanie panie kochany a jeszcze z takim 8-bitowcem ... ho ho hoooo<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=54">mirekk36</a> — 29 gru 2024, o 14:18</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Arek1111111111]]></name></author>
<updated>2024-12-29T09:53:58+01:00</updated>
<published>2024-12-29T09:53:58+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=24760&amp;p=238696#p238696</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=24760&amp;p=238696#p238696"/>
<title type="html"><![CDATA[mqtt za pomocą g510 i karty sim]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=24760&amp;p=238696#p238696"><![CDATA[
Cześć, mam uruchomiony alarm na atmega32 i moduł g510, ładnie działa sms i dzwonienie. Chciałbym projekt rozbudować o obsługę MQTT. Jest to wykonalne? nie znalazłem nigdzie w sieci nic podobnego.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=3349">Arek1111111111</a> — 29 gru 2024, o 09:53</p><hr />
]]></content>
</entry>
</feed>