ESP8266 – Klient služby NBNS (beta)

ESPNBNSV 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.

pingesp

Tak i funkci reverzní, která ze známé ip adresy dokáže zjistit netbios jméno zařízení.

ping-a

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…

 

Espnbns
Espnbns
espnbns.zip
4.3 KiB
619 Downloads
Details

16 thoughts on “ESP8266 – Klient služby NBNS (beta)”

  1. 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?

    1. 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…

  2. 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.

          1. 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…

          2. U posledniho přispěvku neni odkaz „Odpovědět tak to pisu o uroven výš – Diky za pomoc 🙂

  3. 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

Napsat komentář

Vaše emailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *