New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Discover OTA-able esp8266/Arduino modules using dns-sd / mDNS #463

Closed
probonopd opened this Issue Jan 17, 2016 · 6 comments

Comments

Projects
None yet
6 participants
@probonopd

probonopd commented Jan 17, 2016

To use OTA on the esp8266, we currently have to put something like upload_port=esp8266-c1ab73.local into platformio.ini.

More options:
http://docs.platformio.org/en/latest/platforms/espressif.html#platform-espressif-ota

This seems overly static to me. Wouldn't it be great if platformio would detect OTA-able devices just as seamless as it does auto-detect the serial port?

Turns out this would be pretty easy to implement using avahi (there are python bindings!)

# Look for suitable devices to upload to
avahi-browse -t -r  "_arduino._tcp"

# If there is only one device in the network you can just do:
IP=$(avahi-browse -t -v -r  "_arduino._tcp" 2>/dev/null | grep address | head -n 1 | cut -d "[" -f 2 | cut -d "]" -f 1)
echo $IP
echo "upload_port=$IP" >> platformio.ini

We could also check the TXT record to make sure it is the correct device model; and we could ask the user to select one from all available update-able devices on the network.

@jbbr

This comment has been minimized.

jbbr commented Apr 11, 2016

In general I like the idea - but I think its important to handle this different from the current serial implementation: Usually one or a few development devices are connected via serial and it's easy to make sure that the only the device(s) you want to flash is(are) connected.
But for OTA: There might be many different devices connected to the network with OTA enabled. How could PlatformIO decide automatically which one to use?

I would suggest to let the user decide by giving a prompt in the terminal.
Additional a commandline parameter to set the upload port/OTA device would be nice (Probably there is already one, haven't checked).

@ivankravets ivankravets modified the milestone: 3.0.0 Jul 16, 2016

@ivankravets ivankravets referenced this issue Jul 16, 2016

Closed

PlatformIO 3.0 Roadmap #423

28 of 37 tasks complete

@ivankravets ivankravets self-assigned this Aug 26, 2016

@ivankravets ivankravets modified the milestones: 3.0.0, 3.0 Aug 30, 2016

@ivankravets ivankravets changed the title from Discover OTA-able esp8266/Arduino modules using dns-sd to Discover OTA-able esp8266/Arduino modules using dns-sd / mDNS Oct 17, 2016

@Testato

This comment has been minimized.

Testato commented Dec 17, 2016

On arduino ide whit esp core installed, the mDNS discovery is already present.
All OTAble esp is automatically listed under Ide upload port, but is always the user that must set manually the port, because if you have 10 esp in your house the system cannot auto-decide witch esp you want upload.
So i think that Platformio need only do the same arduino behaviour, by create an autodiscovery upload port presence, but not an auto-setting upload port.

This is thrue also for standard serial port, because you can have many esp connected to the same pc, so in the arduino ide you auto-found all available serial port, but after you must manually choose whitch ones you need use

@ivankravets

This comment has been minimized.

Member

ivankravets commented Dec 17, 2016

@Testato PlatformIO also allows to manually specify upload port as a serial device, media disk or IP/mDNS record. See

@Testato

This comment has been minimized.

Testato commented Dec 17, 2016

Yes, i know,
but there is no automatic Discovery like in the Official arduino Ide.
On Arduino IDE the port menu is automatic populated, so you do not must remember all your mcu name.

For example in your home you have 10 ESP with the OTA, every ESP have a unique mDNS name, so on arduino you receive automatically all 10 names in the list, and you will choose to witch upload.

Instead on Platformio you need remember exactly the name of all ESP that you have in your Home

@BrandonLWhite

This comment has been minimized.

BrandonLWhite commented Oct 16, 2017

Seeing as how platformio.ini should be revision controlled, I want to avoid putting a line in there that pertains only to my own personal development environment.

@ivankravets ivankravets modified the milestones: 3.x.x, 3.5.0 Dec 18, 2017

@ivankravets

This comment has been minimized.

Member

ivankravets commented Dec 18, 2017

Will be reflected in PIO Home -> Devices soon.

ivankravets added a commit that referenced this issue Dec 28, 2017

Bump version to 3.5.0 (issue #1260, issue #781, issue #778, issue #463,…
… issue #1236, issue #1235, issue #953, issue #1118, issue #1107, issue #1196, issue #1179, issue #1161, issue #1126, issue #104, issue #1033, issue #1034, issue #1175, issue #1173, issue #1155, issue #1188, issue #1111, issue #1153, issue #1150, issue #1145, issue #1139, issue #1137, issue #1170, issue #1157, issue #1102, issue #1105, issue #1140, issue #1154, issue #1066, issue #1038, issue #1054, issue #1055, issue #1061, issue #1017)

ivankravets added a commit to ivankravets/homebrew-core that referenced this issue Dec 28, 2017

platformio 3.5.0
PlatformIO Core 3.5.0 introduces many new features and performance improvements. The notable changes are as follows:

* [PlatformIO Home](http://docs.platformio.org/page/home/index.html) - interact with PlatformIO ecosystem using modern and cross-platform GUI:
  - Library Manager:
    * Search for new libraries in PlatformIO Registry
    * "1-click" library installation, per-project libraries, extra storages
    * List installed libraries in multiple storages
    * List built-in libraries (by frameworks)
    * Updates for installed libraries
    * Multiple examples, trending libraries, and more.
  - PlatformIO Projects
  - PIO Account
  - Development platforms, frameworks and board explorer
  - Device Manager: serial, logical, and multicast DNS services
* Integration with [Jenkins CI](http://docs.platformio.org/page/ci/jenkins.html)
* New [include](http://docs.platformio.org/page/projectconf/section_platformio.html#include-dir) folder for project's header files ([issue Homebrew#1107](platformio/platformio-core#1107))
* Depend on development platform using VSC URL (Git, Mercurial and Subversion) instead of a name in [Project Configuration File "platformio.ini"](http://docs.platformio.org/page/projectconf/section_env_general.html#platform). Drop support for ``*_stage`` dev/platform names (use VCS URL instead).
* Reinstall/redownload package with a new ``-f, --force`` option for [platformio lib install](http://docs.platformio.org/page/userguide/lib/cmd_install.html) and [platformio platform install](http://docs.platformio.org/page/userguide/platforms/cmd_install.html) commands ([issue Homebrew#778](platformio/platformio-core#778))
* Handle missed dependencies and provide a solution based on PlatformIO Library Registry ([issue Homebrew#781](platformio/platformio-core#781))
* New setting [projects_dir](http://docs.platformio.org/page/userguide/cmd_settings.html#projects-dir) that allows to override a default PIO Home Projects location ([issue Homebrew#1161](platformio/platformio-core#1161))
* [Library Dependency Finder (LDF)](http://docs.platformio.org/page/librarymanager/ldf.html):
  - Search for dependencies used in [PIO Unit Testing](http://docs.platformio.org/page/plus/unit-testing.html) ([issue Homebrew#953](platformio/platformio-core#953))
  - Parse library source file in pair with a header when they have the same name ([issue Homebrew#1175](platformio/platformio-core#1175))
  - Handle library dependencies defined as VCS or SemVer in [Project Configuration File "platformio.ini"](http://docs.platformio.org/page/projectconf/section_env_general.html#platform) ([issue Homebrew#1155](platformio/platformio-core#1155))
  - Added option to configure library [Compatible Mode](http://docs.platformio.org/page/librarymanager/ldf.html#compatibility-mode) using [library.json](http://docs.platformio.org/page/librarymanager/config.html)
* New options for [platformio device list](http://docs.platformio.org/page/userguide/cmd_device.html#platformio-device-list)  command:
  - ``--serial`` list available serial ports (default)
  - ``--logical`` list logical devices
  - ``--mdns`` discover multicast DNS services ([issue Homebrew#463](platformio/platformio-core#463))
* Other bug fixes and performance improvements.

See [PlatformIO 3.5 Release Notes](http://docs.platformio.org/page/history.html) for details.

BrewTestBot added a commit to BrewTestBot/homebrew-core that referenced this issue Dec 28, 2017

platformio 3.5.0
PlatformIO Core 3.5.0 introduces many new features and performance improvements. The notable changes are as follows:

* [PlatformIO Home](http://docs.platformio.org/page/home/index.html) - interact with PlatformIO ecosystem using modern and cross-platform GUI:
  - Library Manager:
    * Search for new libraries in PlatformIO Registry
    * "1-click" library installation, per-project libraries, extra storages
    * List installed libraries in multiple storages
    * List built-in libraries (by frameworks)
    * Updates for installed libraries
    * Multiple examples, trending libraries, and more.
  - PlatformIO Projects
  - PIO Account
  - Development platforms, frameworks and board explorer
  - Device Manager: serial, logical, and multicast DNS services
* Integration with [Jenkins CI](http://docs.platformio.org/page/ci/jenkins.html)
* New [include](http://docs.platformio.org/page/projectconf/section_platformio.html#include-dir) folder for project's header files ([issue Homebrew#1107](platformio/platformio-core#1107))
* Depend on development platform using VSC URL (Git, Mercurial and Subversion) instead of a name in [Project Configuration File "platformio.ini"](http://docs.platformio.org/page/projectconf/section_env_general.html#platform). Drop support for ``*_stage`` dev/platform names (use VCS URL instead).
* Reinstall/redownload package with a new ``-f, --force`` option for [platformio lib install](http://docs.platformio.org/page/userguide/lib/cmd_install.html) and [platformio platform install](http://docs.platformio.org/page/userguide/platforms/cmd_install.html) commands ([issue Homebrew#778](platformio/platformio-core#778))
* Handle missed dependencies and provide a solution based on PlatformIO Library Registry ([issue Homebrew#781](platformio/platformio-core#781))
* New setting [projects_dir](http://docs.platformio.org/page/userguide/cmd_settings.html#projects-dir) that allows to override a default PIO Home Projects location ([issue Homebrew#1161](platformio/platformio-core#1161))
* [Library Dependency Finder (LDF)](http://docs.platformio.org/page/librarymanager/ldf.html):
  - Search for dependencies used in [PIO Unit Testing](http://docs.platformio.org/page/plus/unit-testing.html) ([issue Homebrew#953](platformio/platformio-core#953))
  - Parse library source file in pair with a header when they have the same name ([issue Homebrew#1175](platformio/platformio-core#1175))
  - Handle library dependencies defined as VCS or SemVer in [Project Configuration File "platformio.ini"](http://docs.platformio.org/page/projectconf/section_env_general.html#platform) ([issue Homebrew#1155](platformio/platformio-core#1155))
  - Added option to configure library [Compatible Mode](http://docs.platformio.org/page/librarymanager/ldf.html#compatibility-mode) using [library.json](http://docs.platformio.org/page/librarymanager/config.html)
* New options for [platformio device list](http://docs.platformio.org/page/userguide/cmd_device.html#platformio-device-list)  command:
  - ``--serial`` list available serial ports (default)
  - ``--logical`` list logical devices
  - ``--mdns`` discover multicast DNS services ([issue Homebrew#463](platformio/platformio-core#463))
* Other bug fixes and performance improvements.

See [PlatformIO 3.5 Release Notes](http://docs.platformio.org/page/history.html) for details.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment