Prosíme přihlašte se nebo zaregistrujte.

Přihlašte se svým uživatelským jménem a heslem.
Vaše pomoc je stále potřeba!

Autor Téma: UDP komunikace ....  (Přečteno 7591 krát)

miro_

  • Aktivní člen
  • *
  • Příspěvků: 238
UDP komunikace ....
« kdy: 13 Června 2023, 09:30:48 »
Je tu nekdo se zkusenostmi s UDP Wifi komunikacemi mezi PC s linuxem a
mikroprocesorem rizenym modulem s WizFi360 (ovladany podobne jako
moduly ESP8266 ... pres AT prikazy), kdo by mi poradil jak dal, atd...

Modul Wizfi360 ovladam 'malym' AVR procesorem. Jsem schopen s takto vytvorenym
systemem provozovat jenoduchou WiFi komunikaci s PC s linuxem jen pres 'NetCat'.
Nepodarilo se mi ale vyresit nekolik problemu:
 - Zatim neumim ve WizFi ani v linuxu resit komunikace v MQTT.
   Zkousel jsem v Ubuntu prelozit src. texty z webu 'jednoducheho UDP serveru'
   pres CodeBlock v C++.   Skoncil jsem na knihovnach  pro  'socket()'
    nepouzitelnych pro linux.
 - Jednoduchou komunikaci mam funkcni v 'nc'  pouze na portu 5353 (v Ubuntu-20.).
 - To co chodi s 'nc' v linuxu na portu 5353 v Android v NetPal se tvari,
   ze posloucha, ale zadna data, ktera by mela prijjimat nevypisuje.
 - Ve wifi siti mam dve uzivane zarizeni ('Sonoff modul' a 'Shelly zasuvka'),
   ktere obcas 'neco' vysilaji na port 5353. Toto  mi zpusobuje problemy     
   pri spousteni komunikace s WizFi systemem.
   Zpusob, jak selektovat prijem v 'nc' dle IP odesilatele v UDP jsem nenasel.
   (Nektere priklady, nalezene na webu o 'nc' nejsou funkcni.)
 - Pro rozbehnuti komunikace s 'nc' musim nejprve rozbehnout na Wizfi
   'rychlou' vysilaci smycku s necim. Az po te spustit 'nc'. I kdyz vypnu
   'Sonoff modul' a 'Shelly zasuvku' tak vyslani jednoho info stringu
   (ze neco ocekavam na WizFi od serveru) komunikaci s 'nc' nerozbehne.
 - 'nc' je funkcni v linuxu jen pri zavolani pres 'sudo'. To je neprijemne pro
    opakovane uziti volani startu 'nc' pres nejaky 'spoustec'.
     

ramael

  • Stálý člen
  • **
  • Příspěvků: 644
Re:UDP komunikace ....
« Odpověď #1 kdy: 13 Června 2023, 22:35:55 »
Rád si hraju s ESP32. Kvůli nedostatku času už jsem skoro rok nic s tímto skvělým počinem neudělal. Avšak komunikaci jsem vždy dělal skrz RPC protokol. V ESP32 (8266 z fitka) si připojíš knihovny http serveru a sockety. Vytvoříš v tom nějaké jednoduché web rozhraní včetně javascriptu (plynulá socket komunikace) a s tím komunikuješ (ovládáš). Mimochodem, když bys rozebral Shelly, tak zjistíš, že je v ní ESP32. Jen ten jejich firmware je strašně složitý a těžce se dodělávají vlastní funkce v tom jejich Jscriptu. Nedávno jsem dopisoval script na ovládání čerpadla v závislosti teplot dvou senzorú. Docela porod. Lepší bude si to napsat sám v nativním C++ včetně RPC ovládání přes http server. Což oni také tak vyřešily, avšak nemáš šanci si tam nativně něco dopsat a jsi nucen používat jejich řešení...
Avšak neznám specifika Tvého zadání, k čemu to potřebuješ nebo co to má dělat.
Lenovo: ThinkPad X380 Yoga
Joutůůůůb

Roman Vacho

  • Moderátor
  • Závislák
  • ***
  • Příspěvků: 6075
Vyřešená vlákna je vhodné uzavřít "Topic Solved" dole pod vláknem.
Dlouhé výpisy prosím dávat při psaní příspěvku do bloku funkcí Vložit kód.
Děkujeme.

miro_

  • Aktivní člen
  • *
  • Příspěvků: 238
Re:UDP komunikace ....
« Odpověď #3 kdy: 14 Června 2023, 18:27:30 »
Diky za reakce !

Pred shlednutim Vasich prispevku jsem znovu prochazel na webu nejake informace o MQTT,
a hledal moznosti jak vyresit 'broukera'.
Nasledne jsem zjistil ze synaptic obsahuje baliky k 'Mosquitto'.
Budu zkouset resit klienta s WizFi. Doufam, ze podobnost s 'ESP..'
a jeho obsahlejsi dokumentace mi vyzname pomohou. 

Na podobnost 'WizFi' s 'ESC..' jsem prisel az po neuspesnych pokusech,
komunikovat mezi WizFi360 a PC. O 'ESP..' jsem se drive nezajimal.
V dokumentaci WizFi ani v prikladech se nevyskytuje o nem zadna zminka.
Az pri hledani problemu co s '+IPD' (v dokumentaci WizFi uvedeno mezi 'AT povely'
s 'prikladem uziti !', ktery na mme pusobil zmatecne.)
Zrejme jsem nebyl sam. Podobna situace se asi vyskytla i u uzivatelu 'ESP..'.
Nalezeni '+IPD' v dokumentaci 'ESP..' me privedlo k prikladum,
ktere byly pochopitelne. Vypada to, ze ovladani WizFi z hlediska programovani
bude podobne nebo stejne.

Ten link k 'ESC..' bude urcite pro muj dalsi postup velmi vyzivny. Diky !

ramael

  • Stálý člen
  • **
  • Příspěvků: 644
Re:UDP komunikace ....
« Odpověď #4 kdy: 15 Června 2023, 22:03:09 »
Jsem na to znova mrkl. Asi jsem to špatně pochopil. WizFi je jen wifi modul. Kdežto mnou uvedený ESP32 je kompletní mikročip se zabudovanými moduly. Zajímavé jsou velikosti. Můžeš je mít velikosti krabičky zápalek. Nebo jako tu mám dva kousky mám za to o velikosti 5x5mm. A je to komplet. AVR procesor s tím nejde srovnávat. To je jako by se srovnávala parní lokomotiva s osobní kosmickou lodí. AVR je oproti ESP jen pazourkové počitadlo. Ne že by svou práci neudělalo, ale ESP je zkrátka ESP.
Lenovo: ThinkPad X380 Yoga
Joutůůůůb

miro_

  • Aktivní člen
  • *
  • Příspěvků: 238
Re:UDP komunikace ....
« Odpověď #5 kdy: 21 Června 2023, 21:56:08 »
- Pro moje ucely by mi wizfi360 interface k AVR systemu mela stacit.
Predstavuji si, ze bych mohl byt schopen nejak vyresit
'terminalovou komunikaci' z mobilu, pro nektere 'admin-povely'
moji domaci 485 site. Tato sbernice zajistuje spojeni a ovladani pro 6 ruznych
'systemu-stanic' v moji nemovitosti. Koncepce tohoto 485 systemu byla postupne
budovana asi roku 2006. 

- Na uziti 'Sonoff' mi vadi nutnost pristupu ke cloud. Existuji i varianty
ktere nejsou reseny na bazi ESC. Na webu jsem zahledl pro 'Sonoff'
s ESC sw, nepouzivajici cloud.
- Moje zasuvka Shelly umi WiFi ovladani i pri odpojeni od pripojeni k internetu.

- Napadlo mne vyhledat na tomto serveru neco k 'mosquitto'.
K memu prekvapeni, zde krome meho tematu nikdo nic neresil.

- Po instalaci, testovani 'mosquitto' v U20-mate v terminalech s localhost
komunikace vypada OK.

- Zatim jsem zkusil resit jen prijem vysilani z kliena 'Wizfi' na 'Mosquitto' server
s povely ktere jsou k pouziti v jeho firmware.
Moje WizFi360 ma default verzi firmware v1.1.1.7. (May  4 2021 15:14:59).
Dle prikladu z 'wizfi360_an_mqtt_e.pdf' by pro zaklad pripojeni
k serveru 'Mosquitto' a testovani komunikace melo stacit,
myslim ze upgrade na v1.1.1.8. zatim neni treba.

- Bohuzel se komunikace WizFi s 'mosquitto' serverem se chova nejak divne.
Nekdy se nejde pripojit na poprve, Po uspesne inicializaci,
se WizFi k serveru pripoji OK viz. nasledujici vypisy echa z Wizfi:

# Connect to broker as client:
# ----------------------------
AT+MQTTSET="MyServer","MyServ_pass","wizfi-1",60
AT+CWDHCP_CUR=1,1

OK
AT+MQTTTOPIC="PUB_TOPIC","SUB_TOPIC"
AT+CWLAP
+CWLAP:(4,"My_archer",-61,"28:ee:52:3f:a7:3b",2,1)
+CWLAP:(3,"",-65,"d2:ee:52:3f:a7:3d",2,0)

OK
AT+MQTTCON=1,1,"192.168.0.140","MyServ_pass",1883
AT+CWJAP_CUR="My_archer","Wifi_pass"
WIFI DISCONNECT
WIFI CONNECTED
WIFI GOT IP

OK
AT+MQTTPUB=! start public to wizfi360 !
AT+MQTTSET="MyServer","MyServ_pass","wizfi-1",60

OK

- jak je videt tak prvni vyslani 'mosquitto_pub' by melo byt OK.
nasledne vyslani 'mosquitto_pub' je take jeste OK

# Public to MQTT RTC :
# --------------------
AT+MQTTPUB= LocTime:0-0:46.45;
AT+MQTTTOPIC="PUB_TOPIC","SUB_TOPIC"

OK
   
-   dalsi vyslani 'mosquitto_pub'  vsak skonci v chybe

# Public to MQTT RTC :
# --------------------
AT+MQTTPUB= LocTime:0-0:47.21;
AT+MQTTCON=1,1,"192.168.0.140","MyServ_pass",1883
REMOTE PORT ERROR2

ERROR

(Radky zacinajici '#' v tomto vypisu mi generuje volani povelu AVR testovaciho terminalu.
Ostatni radky jsou prijmuta echa z WizFi. Texty vysilanych povelu
jsou pro prehlednost do vypisu potlaceny, vetsinou se opakuji v echu.)

[/i].

'mosuquito' uziva TCP protokol. Nemam v tomto smeru zkusenost a tak tomuto chovani nerozumim.

V logu 'mosquitto' neni nic videt krome zaznamu aktivace a ukonceni aktivace.
eventuelni pripojovani by tu melo byt videt.

1687185770: Saving in-memory database to /var/lib/mosquitto/mosquitto.db.
1687192288: Client mosq-hwqCLdATLnKsU9t6I7 disconnected.
1687192974: Saving in-memory database to /var/lib/mosquitto/mosquitto.db.
1687194319: mosquitto version 1.6.9 terminating
1687194319: Saving in-memory database to /var/lib/mosquitto/mosquitto.db.
1687194329: mosquitto version 1.6.9 starting

Presto, ze jsem do konfigurace generoval i uzity klient "wizfi-1"
nejde zavest  'mosuquito_sub'. Bude zrejme nejaky problem v mosuquito konfiguraci.
(Zkusil jsem neuspesne instalovat 'mqtt-spy'. Dle webu asi nejsem sam.
V 'mtt-explorer' jsou videt pouze komunikace mezi terminaly mezi 'localhost'. )

sudo mosuquito_sub -h "192.168.0.223" -t "wizfi-1" u- "MyServer" -P "MyServ_pass"
  Error: Connection refused

to je asi zrejme z:

~$ netstat -tunlp:
Proto Přích-F Odch-F Místní Adresa          Vzdálená Adresa         Stav       PID/Program name   
tcp        0      0 0.0.0.0:1883            0.0.0.0:*               NASLOUCHÁ  -
.....                 

statut mosquitto vypada nasledovne:

xx:~$ sudo service mosquitto status
[sudo] heslo: ......
● mosquitto.service - Mosquitto MQTT v3.1/v3.1.1 Broker
     Loaded: loaded (/lib/systemd/system/mosquitto.service; enabled; vendor pre>
     Active: active (running) since Sat 2023-06-17 15:34:27 CEST; 39min ago
       Docs: man:mosquitto.conf(5)
             man:mosquitto(8)
   Main PID: 4178 (mosquitto)
      Tasks: 3 (limit: 9291)
     Memory: 1.3M
     CGroup: /system.slice/mosquitto.service
             └─4178 /usr/sbin/mosquitto -c /etc/mosquitto/mosquitto.conf

čen 17 15:34:27 xx-MS-7758 systemd[1]: Starting Mosquitto MQTT v3.1/v3.1.1 Brok>
čen 17 15:34:27 xx-MS-7758 mosquitto[4178]: [ 1994.222006]~DLT~ 4178~INFO     ~>
čen 17 15:34:27 xx-MS-7758 systemd[1]: Started Mosquitto MQTT v3.1/v3.1.1 Broke>
lines 1-14/14 (END)

Poradi nekdo co dale zkusit.

Opraveno 24.6.2023: ""MyServ_pass"" -> "MyServ_pass" ,
 textu, ktery vznikl nedopatrenim pri nahrazovani  skutecne uziteho hesla v logu ilustracnim stringem !
« Poslední změna: 24 Června 2023, 15:22:40 od miro_ »

ramael

  • Stálý člen
  • **
  • Příspěvků: 644
Re:UDP komunikace ....
« Odpověď #6 kdy: 23 Června 2023, 22:49:28 »
Sorry jako, ale OK to není. Tím myslím připojení.
V poho:
Kód: [Vybrat]
AT+MQTTSET="MyServer",""MyServ_pass"","wizfi-1",60
AT+CWDHCP_CUR=1,1
Chyba:
Kód: [Vybrat]
AT+MQTTCON=1,1,"192.168.0.140",""MyServ_pass"",1883A další chyba:
Kód: [Vybrat]
AT+MQTTPUB=! start public to wizfi360 !Anebo jsi to špatně okopíroval.
Nevidím jak řešíš WPA asociaci se sítí. To by měli být také AT příkazy od AVR k WizFi ještě před samotným MQTT.
Teď pak ještě otázka, jen ze zvědavosti. Jak chceš řešit ovládání třeba z mobilu?
A malý dodatek k Předmětu, UDP komunikace tady na 100% fungovat nebude už jen z podstaty věci.
Lenovo: ThinkPad X380 Yoga
Joutůůůůb

miro_

  • Aktivní člen
  • *
  • Příspěvků: 238
Re:UDP komunikace ....
« Odpověď #7 kdy: 24 Června 2023, 16:24:41 »
- Uvodni pripojovaci sekvence k WiFi modemu vypada nasledovne:
# Connect WizFi to SSID Archer !
# ------------------------------
AT+RST
OK
AT
ø
ready
WIFI CONNECTED
WIFI GOT IP

OK
AT+CIPMUX=1
AT+RST

OK
AT+CWMODE_CUR=1
AT

busy p...

OK
AT+CWDHCP_CUR=1,1
ø
ready
WIFI CONNECTED
WIFI GOT IP

OK
AT+CWLAP
AT+CIPMUX=1

OK
AT+CWJAP_CUR="My_archer","WiFi_pass"
AT+CWMODE_CUR=1

OK

- Moje 485 sit uziva specielni protokol, ktery umoznuje precist si z libovolneho pripojeneho zarizeni
konfiguraci, ktera  obsahuje dostupne povely pro  modifilaci nebo jen zjisteni nekterych stavu.
Data a povely v protokolech jsou v textove forme. Pres 'stanici-interface' (zatim nerealizovany  interface ' WizFitoMy485'),
dekodujici komunikacni protokoly by bylo mozne zjistovat, pripadne modifikovat nektere stavy vsech,
zarizeni podobne jako uzivam PC. (Soucasti 485 systemu je interface prevadejici  485 protokoly pro pristup
z beznych 232 terminalu.)

Proto mne napadlo, ze bych nejprve mohl podobne vyuzivat napr. aplikaci NetPal v mobilu. Zacinal jsem uvahou o moznosti uziti UDP.

 

miro_

  • Aktivní člen
  • *
  • Příspěvků: 238
Re:UDP komunikace ....
« Odpověď #8 kdy: 06 Července 2023, 19:42:06 »
Pri hledani problemu v komunikaci byla pro mne zajimava zkusenost s uzitim 'Wireshark'.

Studiem 'Mosquitto' dokumentaci a ruznych diskuzi o teto problematice,
jsem prisel na chyby, ktere jsem v konfiguraci Mosquitto delal.
Pri tom jsem nasel spoustu zajimavych poznatku o problematice MQTT serveru.

Nyni jsem jiz dosahl toho, co jsem si od komunikace s 'WizFi360' predstavoval.
Umim pres server 'Mosquitto' v 'U20' komunikovat mezi sytemem s WizFi360 MQTT interface
a aplikaci 'MyMQTT' v Android v lokalni WiFi siti.
Problematika komunikace v UDP prestava byt pro mne zatim dale zajimava.

 

Provoz zaštiťuje spolek OpenAlt.