V některém z dřívějších článků jsem se zmiňoval o pokusu rozhýbání mDNS klienta v Arduino prostředí pro ESP8266. Zpočátku jsem nebyl příliš úspěšný – neuvědomil jsem si totiž, že mDNS služba primárně vychází z Apple světa a jeho služby Bonjour/zeroconf. Přišel jsem na to vyloženě náhodou – zatímco na některých pc selhalo vyhledání zařízení s mDNS jménem ESP.local, tak na jednom z PC u mě doma vyhledání proběhlo a mDNS klient fungoval tak, jak bylo očekáváno. Experimentováním jsem zjistil, že na onom inkriminovaném PC bylo nainstalované iTunes, protože jsem na něm nahrával hudbu do iPhonu mé přítelkyně. Protože jsem ale odchovaný na platformě Windows, tak jsem cítil určitou diskriminaci – protokol NetBIOS Naming Services, který řeší jména zařízení na platformách Windows a v protokolech SMB/CIFS přece nemůže chybět…Rozhodl jsem se proto vytvořit knihovnu pro Arduino, která by klienta NBNS realizovala. Archiv, který naleznete ke stažení pod článkem realizuje jak funkci vyhledání zařízení dle jména.
Tak i funkci reverzní, která ze známé ip adresy dokáže zjistit netbios jméno zařízení.
V každém případě se jedná o první veřejnou Betaverzi, která může obsahovat nějaké chyby, o kterých bych se rád dozvěděl v komentářích pod článkem, abych je mohl odstranit a knihovnu vylepšit…
Juchú – vypadá to, že se knihovna zalíbila i vývojářům Arduina pro ESP8266 a bude zařazena do oficiálního sestavení Async verze knihoven – viz. https://github.com/esp8266/Arduino/commit/1f7989b31d26d7df9776a08f36d685eae7ac8f99 😀
Stáhl jsem z Githubu a výborně funguje. Díky za skvělou práci a sdílení.
Přeji mnoho dalších úspěchů
ZCH
Super – sám jsem ještě github verzi netestoval, takže díky za otestování a díky 🙂 …
Takže jestli to dobře chápu, tak tohle řešení je pouze pro Windows, takže na telefonech a tabletech s androidem nebo iOS to fungovat nebude?
Ano. Pokud je v Linuxu nainstalovaná podpora SMB (Samba), tak to funguje i pod Linuxem, ale Android (zatím) bohužel. Pokud vím, tak na ESP8266 zatím není řešení toho, aby se na něj Android telefony mohly připojit přes symbolické jméno…
Ahoj,
zkousel jsem knihovnu ale vyskakuje mi chyba při kompilaci. Muzete mi nekdo poradit co je stapně? diky…
C:\libraries\espnbns\espnbns.cpp: In member function ‘void NBNS::poll()’:
C:\libraries\espnbns\espnbns.cpp:176:54: error: ‘LWIP_PLATFORM_HTONS’ was not declared in this scope
nbnsa.NBNSA_QUESTIONCOUNT = LWIP_PLATFORM_HTONS(0);
^
C:\ibraries\espnbns\espnbns.cpp:184:58: error: ‘LWIP_PLATFORM_HTONL’ was not declared in this scope
nbnsa.NBNSA_TIMETOLIVE = LWIP_PLATFORM_HTONL(300000UL);// Time to live (30000 sekund)
^
C:\libraries\espnbns\espnbns.cpp:200:56: error: ‘LWIP_PLATFORM_HTONS’ was not declared in this scope
nbnsan.NBNSAN_QUESTIONCOUNT = LWIP_PLATFORM_HTONS(0);
^
C:\libraries\espnbns\espnbns.cpp:208:53: error: ‘LWIP_PLATFORM_HTONL’ was not declared in this scope
nbnsan.NBNSAN_TIMETOLIVE = LWIP_PLATFORM_HTONL(0);
^
exit status 1
Nastala chyba při kompilaci u desky WeMos D1 R1.
Ahoj,
jakou verzí jádra jsi to překládal? Bude potřeba upravit definici makra HTONL, HTONS…
Ahoj, mam Arduino 1.8.5
Ahoj,
to je ale verze IDE, ne verze jadra (core) pro ESP. Mohla by byt uvedena ve spravci desek…
Pardon tak oprava – ESP8266 je verze 2.4.0 – doufam ze to už je to prave…
Ano, to je asi ono. V tom pripade pouzij interni komponentu nbns-v tehle verzi jadra uz je muj netbios zaintegrovany 🙂 Zkus se kouknout do prikladu, nejaky by tam mel byt…
U posledniho přispěvku neni odkaz “Odpovědět tak to pisu o uroven výš – Diky za pomoc 🙂
On ma tusim wp limit na 3 urovne 🙂 … Neni zac.
would you give you permission for you code to be included into lwIP’s netbios routines ?
I have modified your code to work on lwIP V2.0.2 source base, but you have a different licence that lwIP is not compatible with. So the lwIP maintainers cannot use your code without your permission
I can send you my code if you like to look over before you decide
Thanks
Ray
Hi Ray,
lwip is great library and I’m glad that I can be helpful even with this small piece of code so you have my permission to use my code.
Sincerely
Pavel
thanks… I will let the lwIP maintainers know
a kniznica ESP8266NetBIOS?
Nechápu poznámku – knihovna ESP8266NetBIOS je právě tahle moje knihovna, zapracovaná do jádra pro ESP8266. Ještě teď jsou ve zdrojovém kódu moje česky psané komentáře…