-
Notifications
You must be signed in to change notification settings - Fork 624
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
Compatibility with Arduino and ESP8266 #7
Comments
Hi @geovanisouza92 , Can you share which Arduino platform you are looking to port this SDK ? In this post, there are discussions of porting to ESP8266. Please let us know more about your use case. It will help us answer specific questions. Thanks |
@bhadrip thank you for reply. I have Arduino Uno and ESP8266 in mind, standalone or working together. I have made this with MQTT (without client certificate, that seems to be the chalenge) and Node-RED on Bluemix, but I would like to use the AWS IoT, Rules, Lambda, and so on. |
Hi @geovanisouza92 , Can you check the post here, Also, We have support only for Arduino Yun which has a 2 processor architecture. python code is running on the OpenWRT side of yun. Unfortunately we don't have a reference design with Arduino UNO. Thanks |
Not having support for Arduino Uno or ESP8266 Arduino is a serious oversight. The atmega328-based arduino is arguably the most popular/successful microcontroller platform on the planet, and is a perfect fit for 80% of IoT projects out there. ESP8266 costs $2.50 each in sample quantities and does wifi! This board is driven by an ESP8266: https://dl.dropboxusercontent.com/u/1578778/Pictures/AirNode%20ESP/File%20Oct%2010%2C%202%2059%2016%20PM.jpeg It has altimeter, barometer, temp and humidity and indoor air quality sensor (I2C), drives an SPI TFT screen and sends data to the internet via wifi (io.adafruit.com currently). But, I can't do anything with Amazon IoT!!! A REST API for low power devices would be great. |
Apologies for the inconvenience. As far as the REST API goes, AWS IoT platform already has a REST API that you could use to publish.
Thanks |
Thanks for the response. I've seen that. The reliance on a certificate is the problem. We cannot use any of your APIs with 8-bit microcontrollers. Support for a simpler data channel using HTTP/S with a key exchanged in the headers would be a lot better for smaller devices. It would be good to have support for HTTP with all of the necessary disclaimers. HTTPS hasn't been fully sorted out across the various wifi adapters yet. BTW, the ESP8266 is running Arduino software. The most popular Arduino board (Arduino Uno) is based on an ATMega 328, which costs around $3.50 in single quantities. The IoT is going to be based on cheap microcontrollers - why would I want to pay $9-15 (+$2.50-30 for wifi) for a CPU that is just checking temperature/humidity? Here are more examples: https://www.arduino.cc/en/Main/Products https://lowpowerlab.com/shop/Moteino https://www.adafruit.com/?q=Adafruit%20feather& https://www.sparkfun.com/categories/103 Thanks for your consideration! AWS IoT is a REALLY exciting prospect, if it becomes usable for microcontrollers, and I'm excited to get started on development. |
+1 , a solution for a low memory device like ESP8266 would be amazing. |
Need solution for esp8266 |
The ESP8266 can be programmed either in C with the Arduino IDE or in nodeMCU-LUA, although at least in our case use of C via the Arduino IDE would be preferable. |
+1 - we need it! |
+1, came here looking for AWS IOT + ESP2866 |
+1, came here looking for AWS IOT + ESP2866 [2] |
+1, came here looking for AWS IOT + ESP2866 |
+1 I think that there is consensus that with the current design (SSL certificates), due to memory requirements, it is virtually impossible to have an application for 8bit MCUs.(e.g. Arduino / ATmega MCUs). However, using ESP8266 as a stand-alone Arduino target should work as soon as SSL support is added - esp8266/Arduino#43 Am I missing something here ? |
+1, came here looking for AWS IOT + ESP2866 |
@vgheo There is already a SSL support for both, SDK and Arduino version! |
@comino then what is the point of this issue ? Additionally, my understanding of this SDK's architecture is that it provides an interface for timers and SSL functions, which must be implemented by users for specific platforms. It is not meant to include platform-specific implementations of these interfaces. Has anyone attempted such a port ? Can s/he share the code to seed a community project? Reading the esp8266/arduino issue, mbedtls requires 2 * 16kb rx/tx buffers, and that is deemed as insufficient in the referenced issue. Still, it might be enough for really simple sensing applications - and would be a decent starting point... |
@bhadrip regarding your comment referencing #5.
I think that the current issue refers to arduino/esp8266, which is different to esp-open-rtos /esp8266. Now it seems that the arduino one currently uses an older library, which cannot satisfy the current requirement of aws-iot of TLS1.2. Would it be possible to support TLS1.1 ? (At least to make sure this is a no-go) I'd also like to subscribe the opinions expressed above in that assuming as a minimal aws iot 'thing' the raspberry pi b 2 (1GB, 4cores @900Mhz) is a really big miss. |
My understanding is that the TLS1.2 mandate is a security decision by Amazon (one I begrudgingly support). I believe it should be possible to utilize AWS IoT building upon the esp-open-rtos project (something I'm currently working on). Ultimately 100% agree with you...the AWS IoT concept is awesome, the AWS IoT "embedded" SDK really misses the mark in terms of being targeted at actual embedded hardware. It seems like the originators came from a mobile or embedded linux background rather than a "bare metal" background. |
As far as I know there is no fundamental limitation to support TLS 1.2, its just that noone took the time to do it. @arsinio : Arduino is NOT using the ESp implementation. Arduino is using a custom version of axtls !! https://github.com/igrr/axtls-8266 <-- igrr did the port to esp8266 forked from http://axtls.sourceforge.net/ |
@comino |
There are 2 problems that prevent the use of AWS IoT for ESP8266 Arduino and pretty much every other 8-bit microcontroller-based device. One is the requirement to either support certificates or use a crypto library to create "signatures" (http://docs.aws.amazon.com/general/latest/gr/sigv4_signing.html). The other is TLS 1.2 or higher. If they allowed TLS 1.1 and added a "pre-shared key" authentication system, similar to the rest of the IoT providers' de-facto standard for devices like these, we could put another billion devices on the net. AWS IoT supports websockets with MQTT now, which would be really exciting if we could take advantage of it... https://aws.amazon.com/about-aws/whats-new/2016/01/aws-iot-now-supports-websockets-custom-keepalive-intervals-and-enhanced-console/ |
+1 for @Daemach |
1 similar comment
+1 for @Daemach |
@comino , @arsinio
The Espressif SDK is ALSO using a fork of axTLS: But according to the axtls-8266 fork :
It looks like esp8266/arduino uses indeed a different fork of axTLS than the espressif one, due to the mentioned reasons.. |
Hi everyone, Thanks for your input, we are always interested to know which devices people are working with. As vgheo pointed out, this SDK is architecture-independent; any port of this software to a particular architecture will be in a separate project. As an example, this SDK has been successfully ported to a number of similar low-cost/high-volume 802.11 microcontroller designs such as the Marvell MW302, Broadcom BCM4343W, and TI CC3200. These ports are all maintained by their owners in separate repositories; for example, the repository for the Marvell MW302 port is here. We're also always interested to hear your feature requests, and a change to the service's requirements would be a feature request which couldn't be implemented on the SDK side alone; the best place to let us know about these is the AWS Forums. Thanks again for all your comments and for using AWS IoT. |
+1 on wishing for esp8266 support using mqtt with aws |
came here looking for AWS IOT + ESP2866 [3] |
+1, came here looking for AWS IOT + ESP2866 |
2 similar comments
+1, came here looking for AWS IOT + ESP2866 |
+1, came here looking for AWS IOT + ESP2866 |
+1 for AWS IOT + ESP2866 support FYI, Atmel seems to be working on adding TLS1.2 to ESP2866 (Firmware update release is planned for July and postponed to September), but only supporting SHA-384 encryption (not SHA-512). |
Good news: with axTLS update to v2.0.0, the ESP8266 (with arduino IDE) can get support to TLS1.2 and work with AWS iot https://twitter.com/i_grr/status/766982749865422848 |
ESP8266 is working with TLS1.2 with git version of esp8266/arduino IDE !!! |
Has anybody got this working with these latest developments? |
I don't think the update to axtls-2.0.0 has been merged to master?!? |
@thiriet it was merged here: esp8266/Arduino@c2414a2 |
Does anyone know if there is an effort to provide SSL on the server side? I have a need to connect to a SSL web server running on the ESP8266 |
axtls-2.0.0 has been merged into ESP8266-Arduino master. I am able to run SSL server (check my ESPAsyncTCP library) though you should limit clients to one or the heap will overflow. Also using SSL server for small packets might be OK, but if you attempt to send a larger file... heap will end. |
@me-no-dev are you sure axtls-2.0.0 has been merged? Seems its still reporting version 1.4.9, see https://github.com/igrr/axtls-8266/blob/master/ssl/version.h |
header was not updated, but yes :) axtls2 is in there |
I have made an implementation of AWS iot using x.509 certificates in ESP8266. The big problem is in TLS v1.2 handshake when the ESP run out of heap =( If someone is interested, here is the tutorial: https://github.com/copercini/esp8266-aws_iot |
Amazon has a option to use the MQTT broker over websockets. I made a library to use it with ESP8266 and it is stable. It uses TLS 1.1 to connect to the websocket layer and it is not heavy as the TLS 1.2 (esp8266 can handle bigger messages). https://github.com/odelot/aws-mqtt-websockets |
+1 |
@copercini so does that mean that esp can't handle tls 1.2? If so, there's nothing aws can do. |
@wordyallen ESP is working with TLS 1.2 but it runs out of ram during AWS authentication. I think it's possible optimize AXTLS to works fine, because https://github.com/SuperHouse/esp-open-rtos/tree/master/examples/aws_iot is working on same board. Anyway, ESP32 is working fine with IDF ide |
Am here to follow latest development and best approach to developing with the Arduino esp8266 |
+1 Am wanting to do a Webcam using Arduino Pro Mini + ESP8266 + ArduCAM OV7670 |
In trying to make odelot's example work, I am having a problem with the dependent lib https://github.com/svdgraaf/aws-sdk-arduino. Two of the files only contain paths. ESP8266AWSImplentations.cpp and ESP8266AWSImplentations.h in odelot's referenced zip are not actually cpp files. The files only contain a path to "/Users/svdgraaf/Documents/Arduino/Libraries/aws-sdk-arduino/src/esp8266/". I found possible replacements and am forging ahead. Thanks |
Working example for ESP32 using Arduino IDE (finally): https://github.com/copercini/esp32-iot-examples/blob/master/ESP32_aws_iot/ESP32_aws_iot.ino |
Hi @joeinaustin you can try this set of libraries https://drive.google.com/open?id=0Bz4aQEzOwPp_a05yRVB2bHZWcVk |
Finally, here it is: https://github.com/copercini/esp8266-aws_iot |
I have successfully published and subscribe data from aws IoT cloud with esp32 by following this |
A successful port of mbedTLS 12 for esp8266 is in Mongoose OS (Cesanta). This is a free tool and it allows a MQTT connection for AWS IoT and also creates credentials for you through your AWS CLI. Alternately, as mentioned before, you could host the certificates in Node-Red free trial and connect through any WiFi enabled device on any Arduino (i.e. ESP8266) that can HTTP to Node-Red hosted on the Bluemix cloud or your own webserver with a static IP. Node-Red can then forward that data via port 8883 to AWS IoT core. Zerynth has a successful TLS1.2 port to AWS IoT Core for the ESP32, but not the ESP8266. For Greengrass you can any AWS certified device including the ESP32 and also Zerynths Greengrass constrained Python program for the ESP32. |
There is a way to turn this lib compatible with Arduino or ESP8266?
The text was updated successfully, but these errors were encountered: