Excellent incursion into OTA updates. I remember years ago I was trying to do this over bluetooth with an atmega and it was a real pain to get everything working. Today with such ecosystems things like OTA updates are much easier to implement. I also liked the way you implemented the version checking on the webserver, well done!
Thanks for your comment. OTA seems tow work ok now for the ESP. The server side implied some discussions here. I got some ideas out of that and maybe add a second version which does not need the MAC address.
Hi Andreas, I really like your video's. I was searching for info on ESP8266 and got to your channel. Since i've found your channel I am watching all your posts and enjoy each and every one of them. Please keep on sharing and ignore any negative comments! (there are always people who like to share criticism, for various reasons including the need for attention :-)) I am setting up your webserver on my pi and will use this to update my esp's. It works like a charm. I also saw your update with an improved version using MD5 which i will implement as well. Thanks again for sharing your knowledge to the public. I think you are motivating lots of people like me in their (new) hobby.
apologies what software are you referring to . I checked github.com/esp8266/Arduino/releases/tag/2.3.0 and 2.3.0 is latest. But i assume you are talking about something else ?
Hi - can you pls explain where you get v2.4 of ESP s/w are you talking about the ESP8266 updated from Arduino IDE (as I can only see v2.3.0) here. And specifically what does V2.4 do that V2.3 does not ?
Really exciting and In agreement with others, this is the start of something... ! Also about SPIFFS to hold SSID + PWD. A simple regular Arduino IDE sketch could then be used to upload to a new ESP + SPIFFS code. Person can then check Serial output for their MAC address and away it goes. Maybe login to your server to download sketches to their MAC's on file, with whatever the store has from yourself and contributors :)
This is already done in the WiFi Lib. Just use WiFi.begin("", ""); and the already stored SSID and Password is used again. For entering SSID and PWD for the first time you can use WPS. This is how I do it. After reboot, WiFi.begin("", ""); is checked to connect. If not WPS will be started. Works great with my WeMos.
Awesome stuff! I've been playing around with AWS Lambda to create some server-less APIs with a node backend. That approach seems like a good candidate to set up this kind of infrastructure. Thanks for creating such thought provoking content.
You are welcome! I am not a "server guy" yet. So, I had to use this simple php script. I was already proud that I got this one running... The next step is probably to connect it with github instead of store the bin files on the webserver. And I would also like to avoid the MAC addresses in the process.
To circumvent the SSID and PASSWORD singularity in each IoT owner, you can put a file in SPIFFS with all the variables specific to each user. And then the main sketch need to load it in every boot and parse each variable, like SSID or other. The bin update don't need that individual specific info :)
My proposal has only information for one SSID/PW combination. All my ESPs connect to the same Wi-Fi. For me, this is sufficient, because it can easily be adapted during initial preparation of the ESP. I used EEPROM because I never used SPIFF. So, I do not know how to do it. And the EEPROM seems to be perfect for two variables. But I am sure, t could be done.
that's perfect . so many good things can be done easily now. you can possibly use the php to track what esp's have checked in and what ones have not . for a human viewed management page .
You are right. But I was already proud when I was able to implement and debug the current version (I had no idea about PHP and how to debug it on a webserver). I think, it will not be the last one...
the cool thing about this for the house , i could setup a small / local PHP server . as i have used some localhost style servers for testing my other web apps , and the supporting PHP on my local rig before i would upload them to my public servers . I find PHP coding feels much like LUA , but thats just me . I prefer flavors of C . LOL
I love the basic idea. I can think of extending this where the ESP's are subscribing to an "update" channel of a firmware (eg. a led blynk channel or a thermometer channel) and the server publishes an "update" on that channel whenever an update is available for download.
Holy Crap Andreas! This is perfect and just in time for me! Thanks again for such an informative tutorial. Your design and architecture probably need more securing but as proof of concept, it is excellent. My home automation set up is likely to have 10+ esps and I was designing the thing as your design same for me. I will will be setting up a raspberry PI as the automation hub, and it will talk to all the devices, and it will securely access out to the web on their behalf (in both directions). Your videos are very very informative - thanks you!
I am not a security expert, but I do not see big problems here. It needs some criminal energy and a lot of know-how to fake your ESP communication, especially if you do not leave your own WLAN.
+Andreas, yes and no. I don't believe that the home devices are at risk at present. I was more commenting on the fact that there are people out there that like breaking sites for whatever reason, and your public facing site may be attacked and more likely be nuisance than dangerous. What I would say is that when connecting/designing devices that get data/code from a shared external source, one should consider security. As as demonstration however, as I said, your example is fantastic and I commend you on such a great explanation in such a concise way.
With an open platform, I completely agree with you. I am sure, this problem has to be solved for such platforms, but, maybe I will not be the right person, because I have no clue about these matters .-(
that would be awesome, I want to as im sure others setup my own that can be accessed by an esp8266 from anywhere in the world and im just not familiar with the web specifics and what all needs to be done
Thank you for this. I had wanted to understand and implement a http download. And your information is going to make that so much easier. I now know what I will be doing this weekend. :)
Brilliant, Brilliant, Brilliant and so clearly explained as usual. Can't wait to try this out - unfortunately I'm busy tomorrow so I'll have to wait until the weekend:-( Many thanks for bringing this concept to my attention. Best wishes Arthur
Hi Andreas I am getting an odd error message "HTTP_UPDATE_FAILD Error (-102): File not Found (404)" and I'm not sure how to debug it. I can make a direct connection to my .php file and also the .bin file. Another odd thing is my ESP's MAC it shows as "18:FE:34:E2:F:F5" ie it has a single F as the 5th character, I thought all MAC numbers were two digits. Can you suggest an approach to debugging? Best wishes Arthur
1. Debugging is not easy. I used Wireshark, which is a network monitoring tool, to display the message coming back from the server. But for the moment, this is not necessary, because the server does not know your MAC address and does not return a file. I have added your MAC address now. 2. This is not important. It has to do with the formatting of the print command. Just add a leading zero, which is not printed. You can try it again. Maybe it works
Many thanks for getting back to me. I get the following on the Serial Monitor but no blinking LED! Should it have installed the fast flash? Start 35 ...... connected MAC: 18:FE:34:E2:F:F5 start flashing...... iotappstore.org /iotappstorev10.php iotupdater_001 ets Jan 8 2013,rst cause:2, boot mode:(1,6) ets Jan 8 2013,rst cause:4, boot mode:(1,6) wdt reset Best wishes Arthur
This is already very good. I think, you forgot to reset your ESP right after the flashing of the initial loader. Here, you have to be quick. Just after the "upload done". This is only necessary once. I might have described it a little fast in my video.
Hallo Andreas, wieder mal ein sehr interessantes Video, vielen Dank dafür. Ich hoffe es folgen noch einige ;-) Könnte man nicht einfach dem ESP verschiedene Pfade angeben, wo er das jeweilige Update suchen soll? Und im jeweiligen Verzeichnis einfach immer die neuste Version ablegen? Damit könnte man sich doch die PHP abfrage ersparen?
Die entscheidende Frage ist: Wer weiss der ESP, dass er die neueste Version hat? Ich habe ebenfalls die vorhandene ESP Firmware verwendet. Aber ein anderer Viewer hat einen Vorschlag gemacht, den ich mir genauer anschauen will. Vielleicht erscheint ja dann ein Update...
Andreas, I have succeeded in updating the blink file from my web server. However, when I attempt the automatic update (using the php file) I get a "HTTP_UPDATE_FAILD Error (-1): HTTP error: connection refused" statement in the serial monitor window (after display of the countdown procedure and MAC address). I believe I have properly edited the php file. I'd be grateful if you could give me some advice on where I'm going wrong.
It is not easy to debug this one. This is, why we implemented some help in IOTappstory.com. You have to simulate the call of the ESP with your browser to find out, if you reach the right file. Then, you have to insert some "echo" into the php file to understand, what is lacking or wrong... Did you try with IOTappstory.com? There, you get a log file and you do not need to insert these echo commands.
Hi Philip Norman, today I tried Andreas Spiess tutorial above and encountered the same error as you. What I noticed is when I used the address "homeserver/folder/blink.bin" surely the error above appears but when I used "192.168.xxx.xxx/folder/blink.bin" it works! without any error
Hey Swiss guy, have you tried Terbinafine? It worked for me in two courses. Just a thought. I brought something back from indonesian ghettos walking barefoot.
Good video Andreas i was thinking why do we have to use a signle esp to make the process wireless.So my idea is that we can deticate an esp to be the update manager having thus a signle sketch with the remote update code and be connected(Software Serial) to another esp witch will do all the work i get that this might be a lot more expensive but it would make the update and the hole process mutch more seemless and it would allow not only the remote update of esp but other iot devices sutch as arduinos etc.
Thanks for the example. Something I've been looking to add is a mechanism to sign the firmware blobs so that the esp will verify that it's a trusted binary before flashing. I've not had a chance to dig into this very much though. This would require baking a key into the firmware and finding an encryption library able to run within the limited resources an esp provides. I think it's quite doable, but I've yet to make the time to try.
Hello Andreas, I have tried this like a million times but it never seems to want to work. Initially, it kept give me the error "Server Not Report Size" when I was using an http server. This was while using the php script that you use in this video. Then I tried using a different http server with the same php script. Then it kept saying "http connection refused." I checked the server logs and the I could see the chip requesting for the .bin file. Any idea why this keeps happening? For your server, did you use any special settings?
Is his only http or can https also be used. Additionally I would "sign" my bin files to ensure nothing strange get deployed. I need to check the OTA upload. I'm able to get a signature from MQTT first and then check the download against it. I think there are some additional open topics to solve...
I never used https, because I do not understand these protocols enough. Concerning security: Of couse, you can make it secure. For me, this is for the moment a minor problem, because I have still many others open. So, I am glad if somebody else works on that topic.
Hello Andreas, this link is not working: Files for webserver and ESP8266: github.com/SensorsIot/IOT-App... Are you still able to provide those files? Thanks!
Maybe you wait for about 2 weeks. Then I will introduce a new library for IOTappstory. It is already available in the Arduino IDE if you search for IOTappstory.
Thanks for your repply! I am trying to develop OTA Web Server for ESP 32 IDF, not using Arduino. Meanwhile, I am connected to your channel to see your latest publications. Grüße aus Köln! Bin eigentlich aus Brasilien... :D
We use the Arduino IDE because it is well known. Concerning OTA, maybe you are also interested in our IOTappstory.com. There are a few videos and I will make a new one in the near future.
This is a quit old video. Maybe you watch the videos about IOTappstory.com. There is now even a library available in the Arduino IDE (search for iotappstory).
+Burak Karaduman In this version, it compares the version. In version 2 it compares the MD5 hash sum and if it changed, it updates. Watch the update video of the iotappstore
Bad Luck for me watching this video now. I am getting an error while updating my firmware. I have uploaded the bin file on Firebase and GitHub too. Giving the link to ESPhttpUpdate.update(client, "Link") but get an error saying "HTTP_UPDATE_FAILD Error (-5): HTTP error: connection lost". Can you please help. I am using NodeMCU Amica
@@AndreasSpiess Already saw these videos, but there its more about the appstore, if I'm right. I need this for my own projekts in smarthome and want to make my own server for it.
Nice project and a good approach, keep it up! Some notes / hints: Finding / Exporting the *.bin is actually a lot easier than the process you showed: Simply click on "Sketch > Export compiled binary", it is then placed in your project folder. Another thing that you might want to look into: There is a great Bootstrapping / OTA implementation, that is done by the Blynk team (www.blynk.cc/) - example sketch is called "BlynkProvisioning". I adapted it to my appliances and did not have a single problem until now!
I looked now at your proposal. But, being a novice in Blynk, did not understand the mechanism. Is there any description on how this works? Where the files are stored and how the decision for an update is made etc?
Andreas Spiess Are you referring to the "Blynk Provisioning" sketch or the ESP8266 in general? Let me know, happy to try then to shed some light on this approach.
I am referring to the Blynkprovisioning. I did not find an example with exactly this name, but it was somehow included in the blynk_ESP8266 file. But I have no clue how this works.
Andreas Spiess This is the one I am using: github.com/blynkkk/blynk-library/tree/master/examples/Export_Demo/Blynk_ESP8266 Basically it makes use of the SPIFFS filesystem: github.com/esp8266/Arduino/tree/master/libraries/EEPROM I formatted the 32Mbit flash chip of my ESP-12E to the 1MB/3MB layout. This section is then used to store the configuration in a non volatile way and as temporary storage for a new firmware on a remotely triggered update. With the default settings, it then listens to the virtual port 100, where you then can push an URL for the update to. This then triggers ESP8266httpUpdate, which downloads the file, check if it is ment for the current running version. If so, it then flashes the downloaded *.bin to the first partition holding the program and reboots. As the config is also stored in the non volatile SPIFFS, it sees that after the reboot and continues it normal operation. Not sure how well I described it, hope it is not too confusing after all... But feel free to ask and I will try to share my limited knowledge. :P
hello sir i tried the file provided in your video but the response is always connection refused another question can i just use any free file hosting and use it's direct download link of my uploaded file thank you sir
Maybe you use the library provided in the Arduino IDE. It also has example files. You also have to activate your devices now to make sure your device is really yours.
Hi Andreas, Thank you for share your ideas and spend time helping other people, i like your videos Did you have a ideia to write the spiffs ? because may i change the firmware or only change a logo/bitmap saved on spiffs thanks in advance
Hello Sir, i really like your videos and i achieved so much thanks to you, but i stuck with something. İ really don't know how to call OTA function every 12 hours. Which library and approximation should i use? Thanks.
I have my blink .bin in "E:\change\ARDUINO\esp8266\blink\Blink". 1)I am confusing where to attach these file to make sure OTA updatation. I fully understand the above concept but still unable to manage the file attachment in the process path. 2) I instlalled the Apache server with PHP and as per the "esp8266.github.io/Arduino/versions/2.1.0/doc/ota_updates/ota_updates.html " I copid the PHP script part in i.php . . .C:\Server\data\htdocs\i.php" what shoud i do after these .cause i tride to put the 3) what is "initial loder ? for initial loader which part is pertaining to up-lode main code .
iotappstory.com is what the above link should be. The other URL tries to get you to install a chrome extension. Also, the source code appears to be missing now.
Grüezi Herr Spiess, erstal vielen Dank für die super Videos. Alles sehr strukturiert wie es man es von eimem Schweizer erwartet ;) Habe das ESPhttpupdate beispiel mal versucht zu starten. Leider bekomme ich eine -1 Connection refused Fehlmeldung. Haben Sie da eine .bin Datei wo ich probieren kann, vieleicht habe ich ein Problem mit meinem Webserver?
Das ist ein sehr alte video und ich verwende dieses Verfahren nicht mehr. Sie sollten ein Beispielsketch in der Arduino IDE finden. Ich verwende jetzt die IOTappstory.com Infrastruktur. Sie basiert auf diesem Verfahren, aber wir haben sie weiter entwickelt (es gibt einige Videos dazu)
Hi Andreas. I was think about, what if we store our wifi SSID and Password in the ESP8266 spiffs. Then your program will then call the variable and use it, without knowing it. Then we don't have to check for a magic byte. We just have to agree on the Variable to use :) Best regards Thanks for all your fantastic videos :)
This is an old video and we changed many things. Maybe you watch the newer videos about iotAppstory.com. And there is even a library in the Arduino IDE (just search for iotappstory). I will also do a video about the new stuff in the next weeks.
Thank you, so there is a possibility to automatically reboot the ESP after the successful update! I want to do a project where the ESP will be enclosed in a frame, so it will be unpractical to ask user reset the module after OTA update. At most, I can instruct to disconnect the device from the power supply and connect again (a kind of reboot maybe!?)
My remark was only the first time, when you flash the initial code with Serial. If you do the OTA, the ESP reboots automatically (as you see in the video)
As usual a very nice way of explaining the things. Thanks for sharing Andreas. However I am facing following problem. HTTP_UPDATE_FAILD Error (-106): Verify bin header failed can you tell me the reason.?
here is the main lines of software.. #define firmware "iotupdater" #define firmware_version firmware"_001" #define update_server "iotappstore.org" #define update_uri "/iotappstorev10.php" t_httpUpdate_return ret = ESPhttpUpdate.update(update_server, 80, update_uri, firmware_version);
FYI, "App Store" is an Apple trademark, I doubt it will be long before they complain if this actually becomes popular. I would change it to something else before it gets too popular. I really like the idea, just would hate to see it get destroyed after a lot of work gets put into it.
Thanks for the comment. I did not think about that. So, I have to keep it in mind! For the moment, it was more a gag. And iotappstore.com and .net are both not owned by Apple... (also not by me)
Dear Andreas, Thanks for the nice video tutorial. At this moment I am engaged in developing the ESP8266 module which measures temperature and humidity. Concerning Over The Air (OTA) update , I need to do it using HTTP Server and is based on continuous automated deployment of firmware on ESP8266. But I cannot be able to find much resources in detailed on the internet. Could you help me regarding this?
Thank you very much I came to know how to setup and how to run the client(ESP8266) side. But I cannot be able to find the resources related to the setup of webserver and run php script and to establish the wireless interface. Could you please help me?
Ok. Thank you. Moreover, what is the purpose of "credentials" here? when we change the location of esp8266 device, do we need to enter the new credentials? If so we need to do it manually. Then its a drawback and not autonomous.
Hi Andreas, great job! very interesting. I'd like to build up my own repositories for my ESP devices to update automatically, but github.com/SensorsIot/IOT-Appstore is no longer available. Where can I find the server side php script, compatible with your latest framework? Or It could be your simpler md5 implementation as I use only Wemos d1 mini lineup. Thank you very much
The library is now part of the Arduino IDE. I think I did a later video about that. For the moment it does not work with ESP32. There you have to wait for a few weeks...
I'm just catching up with this and it's a great idea. I have a web site (some form of Apache) which comes free with my domain account. However, I have no idea how to implement the server bit. I'm a Brit living in Germany with a 1und1.de account and this level of tech German is still, unfortunately, outside my skill set. If there was a source of scripts I could upload to make it work that would be great..........no offer refused :-)
No, that is not the plan. For this, you still can use your Webserver... I just thought, you wanted to store your sketches (because of where the comment appeared).
Andreas, I've already signed up for IOT Appstore, because its a brilliant idea with a sound implementation. But this takes me back to my original question, which I will re-phrase - where can I find information, tutorials and/or helpful scripts that will help me enhance my basic website to store some simple data as it relates to Arduino and ESP8266? Thank you for your patience :-)
Hi Andreas, Thanks for your videos , they are amazing , and congrats for the 10k. I have my own web server , and i'm trying to update using the iotupdater , but I get the following error: start flashing...... 192.168.1.139 /iotappstorev10.php HTTP_UPDATE_FAILD Error (-104): Wrong HTTP code Any idea what could be the problem? I uploaded without modyfing anything the files from Github to the webserver , and in my ino file this is the data I have: #define update_server "192.168.1.139" #define update_uri "/iotappstorev10.php" #define firmware "MetaAPP_IOT" #define firmware_version firmware"_002" Any help would be great! Thanks!
It just contains the two definitions of mySSID and myPASSWORD. 3 possibilities exist: 1. Create such a file with the two defines 2. Add the definitions in your main sketch and delete the include credentials.h 3. Replace the two constants mySSID and myPASSWORD with your real credentials (and delete the include)
You should find it somewhere on the internet. This project developed since then. Maybe you also watch the newer videos. And at the end of this month, we will release version 2.0 which also works with the ESP32.
Andreas Spiess i aim on update my esp-12 by raspi local network. Raspi is php server and esp asks for updates but each time it says " http error refused"
Can you start a get request from a browser? GET /iotappstore/iotappstorev20.php HTTP/1.0Host: 192.168.0.200User-Agent: ESP8266-http-UpdateConnection: closex-ESP8266-STA-MAC: 18:FE:34:D6:03:F7x-ESP8266-AP-MAC: 1A:FE:34:D6:03:F7x-ESP8266-free-space: 2859008x-ESP8266-sketch-size: 284000x-ESP8266-chip-size: 4194304 x-ESP8266-sdk-version: 1.5.3(aec24ac9) x-ESP8266-mode: sketchx-ESP8266-version: xyz Then you should get the anwer of your php file for debugging.
Excelent. is it possible to do this with hard wired ethernet. my ideal would be, connect to hard wire, press a button whilst powering up the device and then it will check for updates. more of en end user bug fix update for friends i have given equipment to un order to make the update easy without sending back to me.
I do not know what you mean with "hard wired". But if you use an ESP8266, this is exactly the scenario. If you schedule an automatic check every day (as suggested at the end of the video), no end user interaction is needed at all.
HTTP_UPDATE_FAILD Error (-104): Wrong HTTP Code I am getting this error on serial monitor. What I have to do (when I used mine) ? HTTP_UPDATE_FAILD Error (-1): HTTP error: connection refused When I used : iotappstore.org/Blink.bin
Vielen Dank für das super Video ! Hier noch eine Idee für den nächsten Entwicklungsschritt. Kann man nicht einen MD5 summe über das BIN file machen und speichern ? Damit spart man sich einen call zum Webserver. Der wiederum könnte (und sollte) im Header the Response einfach einen eTag = MD5 summe des aktuellen sketch schicken. Wenn sich seid der letzten Version nichts geändert hat ist die quersumme des BIN files immer noch gleich. ... Liebe Grüße aus San Francisco !
Zwei Dinge sind dazu zu sagen: 1. habe ich meine Arbeit auf dem Example der ESP8266 Entwickler basiert. Das hat mich mal wenigstens soweit gebracht. Bei Interesse kann man da sicher noch viel optimieren. Meine PHP Kenntnisse beschränken sich allerdings auf genau diesen Script. Und das auch erst seit ungefähr einer Woche... 2. Das mit dem MD5 ist sicher machbar, aber nicht grundsätzlich unterschiedlich zum im Moment verwendeten Verfahren (ausser der ESP könnte den MD5 selbst berechnen. Das ist aber nicht trivial, da das Binary vermutlich noch Metadaten enthält. Sonst müsste der MD5 manuell erfasst werden (wobei der sich vermutlich nochmals ändert, wenn man ihn ins Binary kopiert...). Oder habe ich etwas noch nicht verstanden? Ich habe in den Kommentaren zwei Vorschläge bekommen, die ich nächste Woche mal analysieren werde. Vielleicht gibt's ja dann ein Update. Grüsse nach San Francisco. Geniess es!
Du kannst das neue Video anschauen (wenn es online ist). Das läuft jetzt mit MD5. Ich konnte diese Funktion vorab installieren. Sie kommt offiziell mit Release 2.4. Läuft super!
Hi there, I have tried to put this on my Rasp Pi server, pointing all right but getting this: HTTP_UPDATE_FAILD Error (-102): File not Found (404) The structure is @ root: bin/filename_001.bin iotappstorev10.php Put the MAC inside the php file, pointing to filename, tried both same and different version number. No change :(
File not found points to the fact, that the ESP does not find the PHP file. Try the same string with your browser and you should bet an answer. Do not put the HTTP inside the call in the ESP, only in the browser call.
This error points to the fact, that the ESP does not find the php file. Try the string with your browser and you should get an answer. Make sure, you include the only in your browser, not in the ESP call.
Ahh, ok. I have pointed it to server mypi.net and "filename" is same v10.php file. Only subfolder is bin. Containing The new build. Will try to access via bromsar when my work ends at 21:30 😊
Strange. Can you change the name of the file in the call that it is deliberately wrong and check, if the error message changes? If it changes, it is obvious, that the ESP finds the php file. If the message is the same, then we know, that it does not find the file, even if it is written correctly. Then, we can go on.
Great Tutorial I have done this with my Own PHP Server and it works well for Blink Sketch and i don't need to restart manually it automatically gets Restart . But when i uploaded the Firmware WiFi scan throught OTA server update wifiscan.bin file loaded sucessfully but it wouldnt runing in esp even if i Rest manually it gives below error for me. load 0x4010f000, len 1384, room 16 tail 8 chksum 0x2d csum 0x2d v614f7c32 @cp:0 ld e: ets Jan 8 2013,rst cause:3, boot mode:(3,6) ets_main.c
Andreas Spiess I solved it just . This error came due to bin file of program i did not saved bin file correctly. Now it working fine i don't need to press reset button after new firmware install. Great tutorial Thanks
Hello Andreas, as always great video. Please have a look on following repository github.com/erkobg/esp8266-dht22-ci-ota It is the same idea but with simpler approach, also you can find PHP file to serve the file. Also you will find trick how ESP knowns which versions is currently installed on the device
.. And having own web server is not expensive nowadays.. From www.time4vps.eu/pricing/ you can have 20GB backuped web (or what ever you want) server from 0,99Eur/month.. And all servers are in Europe.. (At least I want to keep my data here and not at USA)
Thanks. Maybe you try the library we created in the meantime. You find it in the Arduino IDE when you search for "iotappstory". It should be much easier...
hello sir i tried the file provided in your video but the response is always connection refused another question can i just use any free file hosting and use it's direct download link of my uploaded file thank you sir
1. There is a new library available directly in the Arduino IDE (I think, I made also an update video) 2. Search for ESO8266 OTA and you will find a PHP file
Please watch the new video about IOTappstory.com: ua-cam.com/video/ehPl4Nwjvaw/v-deo.html
Excellent incursion into OTA updates. I remember years ago I was trying to do this over bluetooth with an atmega and it was a real pain to get everything working. Today with such ecosystems things like OTA updates are much easier to implement. I also liked the way you implemented the version checking on the webserver, well done!
Thanks for your comment. OTA seems tow work ok now for the ESP. The server side implied some discussions here. I got some ideas out of that and maybe add a second version which does not need the MAC address.
Superbly usefull stuff. Perfectly explained. Thanks again master Speiss.
Thanks for your nice comment!
Great!!!!! You are the best!!!!!! Thanks for sharing your knowledge.
You are welcome. There is also a later video about that topic.
Nicely laid out and described, well done!
Thanks!
Hi Andreas,
I really like your video's. I was searching for info on ESP8266 and got to your channel. Since i've found your channel I am watching all your posts and enjoy each and every one of them. Please keep on sharing and ignore any negative comments! (there are always people who like to share criticism, for various reasons including the need for attention :-))
I am setting up your webserver on my pi and will use this to update my esp's. It works like a charm. I also saw your update with an improved version using MD5 which i will implement as well.
Thanks again for sharing your knowledge to the public. I think you are motivating lots of people like me in their (new) hobby.
Thank you for your nice words. Be aware, that you need the 2.4 version of the ESP software or you patch your 2.3 version...
apologies what software are you referring to . I checked github.com/esp8266/Arduino/releases/tag/2.3.0 and 2.3.0 is latest. But i assume you are talking about something else ?
Hi - can you pls explain where you get v2.4 of ESP s/w are you talking about the ESP8266 updated from Arduino IDE (as I can only see v2.3.0) here. And specifically what does V2.4 do that V2.3 does not ?
absolutely fantastic thank you so much for your series.
:-)
Really exciting and In agreement with others, this is the start of something... !
Also about SPIFFS to hold SSID + PWD. A simple regular Arduino IDE sketch could then be used to upload to a new ESP + SPIFFS code. Person can then check Serial output for their MAC address and away it goes.
Maybe login to your server to download sketches to their MAC's on file, with whatever the store has from yourself and contributors :)
This is exactly my intention!
And best wishes for the implementation !
This is already done in the WiFi Lib.
Just use WiFi.begin("", ""); and the already stored SSID and Password is used again.
For entering SSID and PWD for the first time you can use WPS.
This is how I do it. After reboot, WiFi.begin("", ""); is checked to connect. If not WPS will be started. Works great with my WeMos.
Awesome stuff! I've been playing around with AWS Lambda to create some server-less APIs with a node backend. That approach seems like a good candidate to set up this kind of infrastructure. Thanks for creating such thought provoking content.
You are welcome! I am not a "server guy" yet. So, I had to use this simple php script. I was already proud that I got this one running...
The next step is probably to connect it with github instead of store the bin files on the webserver. And I would also like to avoid the MAC addresses in the process.
Love your videos, Andreas, and your style is really spot on. You do a great job for the Arduino and ESP8266 communities, thank you.
You are welcome!
I have a ESP8266 Wemo Pro Mini D1 card arriving Thursday. Need to update drivers and I am off...
Maybe you watch the later videos about iotappstory.com
I certainly will, sir! Thanks again.
To circumvent the SSID and PASSWORD singularity in each IoT owner, you can put a file in SPIFFS with all the variables specific to each user. And then the main sketch need to load it in every boot and parse each variable, like SSID or other. The bin update don't need that individual specific info :)
My proposal has only information for one SSID/PW combination. All my ESPs connect to the same Wi-Fi. For me, this is sufficient, because it can easily be adapted during initial preparation of the ESP. I used EEPROM because I never used SPIFF. So, I do not know how to do it. And the EEPROM seems to be perfect for two variables. But I am sure, t could be done.
that's perfect . so many good things can be done easily now. you can possibly use the php to track what esp's have checked in and what ones have not . for a human viewed management page .
You are right. But I was already proud when I was able to implement and debug the current version (I had no idea about PHP and how to debug it on a webserver). I think, it will not be the last one...
the cool thing about this for the house , i could setup a small / local PHP server . as i have used some localhost style servers for testing my other web apps , and the supporting PHP on my local rig before i would upload them to my public servers . I find PHP coding feels much like LUA , but thats just me . I prefer flavors of C . LOL
I love the basic idea. I can think of extending this where the ESP's are subscribing to an "update" channel of a firmware (eg. a led blynk channel or a thermometer channel) and the server publishes an "update" on that channel whenever an update is available for download.
Thanks. I investigate in this direction where the server does not need the MAC address
Holy Crap Andreas! This is perfect and just in time for me! Thanks again for such an informative tutorial. Your design and architecture probably need more securing but as proof of concept, it is excellent. My home automation set up is likely to have 10+ esps and I was designing the thing as your design same for me. I will will be setting up a raspberry PI as the automation hub, and it will talk to all the devices, and it will securely access out to the web on their behalf (in both directions). Your videos are very very informative - thanks you!
I am not a security expert, but I do not see big problems here. It needs some criminal energy and a lot of know-how to fake your ESP communication, especially if you do not leave your own WLAN.
+Andreas, yes and no. I don't believe that the home devices are at risk at present. I was more commenting on the fact that there are people out there that like breaking sites for whatever reason, and your public facing site may be attacked and more likely be nuisance than dangerous. What I would say is that when connecting/designing devices that get data/code from a shared external source, one should consider security. As as demonstration however, as I said, your example is fantastic and I commend you on such a great explanation in such a concise way.
With an open platform, I completely agree with you. I am sure, this problem has to be solved for such platforms, but, maybe I will not be the right person, because I have no clue about these matters .-(
Wow, it's great.
thank you for knowledge sharing.
You are welcome!
Lovely idea. Will probably implement following your example. Thank you for sharing!
You are welcome. Just follow the instructions and it should work...
you have deleted source files, how we can make our own server? can you respond?
amazing videos! Do you plan on making videos on how to set up the server side?
Well possible. I plan also to offer a server script without MAC address.
that would be awesome, I want to as im sure others setup my own that can be accessed by an esp8266 from anywhere in the world and im just not familiar with the web specifics and what all needs to be done
Your own can be accessed from anywhere if you host it in the cloud. If you host it on your "home" server it might be a little more complicated.
thats what im wondering how to do, set up a cloud based server. Im sure its not free but a couple bucks a month for this feature would be worth it!
Thank you for this. I had wanted to understand and implement a http download. And your information is going to make that so much easier. I now know what I will be doing this weekend. :)
Enjoy!
there are not enough "Thumb up" icon to thank you for this nice Work...wonderfull!
:-)
Very methodic!! I like your approach
Thanks alot!
This is very handy - nicely done, even with the broken accent.
Thanks!
Brilliant, Brilliant, Brilliant and so clearly explained as usual. Can't wait to try this out - unfortunately I'm busy tomorrow so I'll have to wait until the weekend:-(
Many thanks for bringing this concept to my attention.
Best wishes
Arthur
Thank you for your nice comment. I hope, it will work for you. Otherwise, just come back...
Hi Andreas
I am getting an odd error message "HTTP_UPDATE_FAILD Error (-102): File not Found (404)" and I'm not sure how to debug it. I can make a direct connection to my .php file and also the .bin file. Another odd thing is my ESP's MAC it shows as "18:FE:34:E2:F:F5" ie it has a single F as the 5th character, I thought all MAC numbers were two digits.
Can you suggest an approach to debugging?
Best wishes
Arthur
1. Debugging is not easy. I used Wireshark, which is a network monitoring tool, to display the message coming back from the server. But for the moment, this is not necessary, because the server does not know your MAC address and does not return a file. I have added your MAC address now.
2. This is not important. It has to do with the formatting of the print command. Just add a leading zero, which is not printed.
You can try it again. Maybe it works
Many thanks for getting back to me. I get the following on the Serial Monitor but no blinking LED! Should it have installed the fast flash?
Start
35
......
connected
MAC: 18:FE:34:E2:F:F5
start flashing......
iotappstore.org
/iotappstorev10.php
iotupdater_001
ets Jan 8 2013,rst cause:2, boot mode:(1,6)
ets Jan 8 2013,rst cause:4, boot mode:(1,6)
wdt reset
Best wishes
Arthur
This is already very good. I think, you forgot to reset your ESP right after the flashing of the initial loader. Here, you have to be quick. Just after the "upload done". This is only necessary once. I might have described it a little fast in my video.
Beautifully explained thanks
You're welcome!
GREAT JOB!! Thank you very much for the info.
You're welcome!
Hallo Andreas, wieder mal ein sehr interessantes Video, vielen Dank dafür. Ich hoffe es folgen noch einige ;-)
Könnte man nicht einfach dem ESP verschiedene Pfade angeben, wo er das jeweilige Update suchen soll? Und im jeweiligen Verzeichnis einfach immer die neuste Version ablegen? Damit könnte man sich doch die PHP abfrage ersparen?
Die entscheidende Frage ist: Wer weiss der ESP, dass er die neueste Version hat? Ich habe ebenfalls die vorhandene ESP Firmware verwendet. Aber ein anderer Viewer hat einen Vorschlag gemacht, den ich mir genauer anschauen will. Vielleicht erscheint ja dann ein Update...
Very good as always. Thanks.
+Thorben Nielsen You are welcome!
FInd it interesting? Andreas, this is fantastic!
Do you ever sleep?
Just returned from a trip with my Harley through tree countries. No worry ;-)
Andreas, I have succeeded in updating the blink file from my web server. However, when I attempt the automatic update (using the php file) I get a "HTTP_UPDATE_FAILD Error (-1): HTTP error: connection refused" statement in the serial monitor window (after display of the countdown procedure and MAC address). I believe I have properly edited the php file. I'd be grateful if you could give me some advice on where I'm going wrong.
It is not easy to debug this one. This is, why we implemented some help in IOTappstory.com. You have to simulate the call of the ESP with your browser to find out, if you reach the right file. Then, you have to insert some "echo" into the php file to understand, what is lacking or wrong...
Did you try with IOTappstory.com? There, you get a log file and you do not need to insert these echo commands.
Hi Philip Norman, today I tried Andreas Spiess tutorial above and encountered the same error as you. What I noticed is when I used the address "homeserver/folder/blink.bin" surely the error above appears but when I used "192.168.xxx.xxx/folder/blink.bin" it works! without any error
:-)
Hey Swiss guy, have you tried Terbinafine? It worked for me in two courses. Just a thought. I brought something back from indonesian ghettos walking barefoot.
Nice video again! Does the webserver only need http with php or are other services needed to?
It only needed PHP (not the newest version, if I remember right.) I just used an available web-server and registered the name.
Good video Andreas i was thinking why do we have to use a signle esp to make the process wireless.So my idea is that we can deticate an esp to be the update manager having thus a signle sketch with the remote update code and be connected(Software Serial) to another esp witch will do all the work i get that this might be a lot more expensive but it would make the update and the hole process mutch more seemless and it would allow not only the remote update of esp but other iot devices sutch as arduinos etc.
Thanks for the example. Something I've been looking to add is a mechanism to sign the firmware blobs so that the esp will verify that it's a trusted binary before flashing. I've not had a chance to dig into this very much though. This would require baking a key into the firmware and finding an encryption library able to run within the limited resources an esp provides. I think it's quite doable, but I've yet to make the time to try.
I am not so much in security, because I do not see the criminal energy which would try to hurt me...
Hi andreas the link to your github page for the php script isn't active can you please make the script available again?
This is an old video and we have now IOTappstory.com. So it will not be maintained.
Hello Andreas,
I have tried this like a million times but it never seems to want to work.
Initially, it kept give me the error "Server Not Report Size" when I was using an http server. This was while using the php script that you use in this video.
Then I tried using a different http server with the same php script. Then it kept saying "http connection refused." I checked the server logs and the I could see the chip requesting for the .bin file.
Any idea why this keeps happening?
For your server, did you use any special settings?
Maybe you watch the newer videos about IOTappstory.com. There is even a library available now.
Is his only http or can https also be used. Additionally I would "sign" my bin files to ensure nothing strange get deployed. I need to check the OTA upload. I'm able to get a signature from MQTT first and then check the download against it. I think there are some additional open topics to solve...
I never used https, because I do not understand these protocols enough. Concerning security: Of couse, you can make it secure. For me, this is for the moment a minor problem, because I have still many others open. So, I am glad if somebody else works on that topic.
muy buen video!, excelente descripcion
Thank you!
Hello Andreas, this link is not working: Files for webserver and ESP8266: github.com/SensorsIot/IOT-App...
Are you still able to provide those files?
Thanks!
Maybe you wait for about 2 weeks. Then I will introduce a new library for IOTappstory. It is already available in the Arduino IDE if you search for IOTappstory.
Thanks for your repply! I am trying to develop OTA Web Server for ESP 32 IDF, not using Arduino. Meanwhile, I am connected to your channel to see your latest publications. Grüße aus Köln! Bin eigentlich aus Brasilien... :D
We use the Arduino IDE because it is well known. Concerning OTA, maybe you are also interested in our IOTappstory.com. There are a few videos and I will make a new one in the near future.
This is great. Thanks.
You're welcome!
Sir, Github link is not working -> (Files for webserver and ESP8266)
This is an old video. Maybe you watch the new one?
Hi, i could not find the files for the webserver using the link you provided. There is another link where I can find?
This is a quit old video. Maybe you watch the videos about IOTappstory.com. There is now even a library available in the Arduino IDE (search for iotappstory).
very interesting. is it planned to add the ESP32 to the IOT appstore?
Yes. But for the moment we finalize the new version with https and other new features.
Thank you So much !!! :)
You're welcome!
Andreas Spiess do you speak french as Well ? Im french 😮
I can order a beer or two in french... But no technical discussions, For your comfort: English is also a foreign language for me. So we are two...
Hi Andreas, wo findet man denn das Initial Update File (Open Point 1)?
Das Projekt hat sich weiter entwickelt. Vielleicht schaust du dir das neuere Video an oder wartest bis Ende Main wenn die Version 2 released wird.
you deleted the project files?
Shouldn't it be easier to make .bin file with sketch->export compiled binary?
It depends on what you want to do. But this is an old video which was rewplaced whith videos about IOTappstory.com.
Sir i get it working. But i don't understand how the system understands it needs an update? When i change the .bin file size or date ?
+Burak Karaduman In this version, it compares the version. In version 2 it compares the MD5 hash sum and if it changed, it updates. Watch the update video of the iotappstore
Great idea
Thanks!
Bad Luck for me watching this video now. I am getting an error while updating my firmware. I have uploaded the bin file on Firebase and GitHub too. Giving the link to ESPhttpUpdate.update(client, "Link") but get an error saying "HTTP_UPDATE_FAILD Error (-5): HTTP error: connection lost". Can you please help. I am using NodeMCU Amica
This is an old video. Maybe you watch the newer one about iotappstory?
Nice project.
Unluckly the github page can't be found.
How could I get the files?
Wanna build myown server for it.
Thanks. Richard
There are newer videos about the topic. Search for "IOTAppstory"
@@AndreasSpiess Already saw these videos, but there its more about the appstore, if I'm right.
I need this for my own projekts in smarthome and want to make my own server for it.
Then you can use the example files in the Arduino IDE
Thx.
I'll try.
Sketches missing from github!
There is a newer video about IOTappstory
Nice project and a good approach, keep it up!
Some notes / hints:
Finding / Exporting the *.bin is actually a lot easier than the process you showed: Simply click on "Sketch > Export compiled binary", it is then placed in your project folder.
Another thing that you might want to look into: There is a great Bootstrapping / OTA implementation, that is done by the Blynk team (www.blynk.cc/) - example sketch is called "BlynkProvisioning".
I adapted it to my appliances and did not have a single problem until now!
Thanks for your info. I anyway plan to use blynk for one of my projects. So, there is one reason more to look into it...
I looked now at your proposal. But, being a novice in Blynk, did not understand the mechanism. Is there any description on how this works? Where the files are stored and how the decision for an update is made etc?
Andreas Spiess Are you referring to the "Blynk Provisioning" sketch or the ESP8266 in general? Let me know, happy to try then to shed some light on this approach.
I am referring to the Blynkprovisioning. I did not find an example with exactly this name, but it was somehow included in the blynk_ESP8266 file. But I have no clue how this works.
Andreas Spiess This is the one I am using: github.com/blynkkk/blynk-library/tree/master/examples/Export_Demo/Blynk_ESP8266
Basically it makes use of the SPIFFS filesystem: github.com/esp8266/Arduino/tree/master/libraries/EEPROM
I formatted the 32Mbit flash chip of my ESP-12E to the 1MB/3MB layout. This section is then used to store the configuration in a non volatile way and as temporary storage for a new firmware on a remotely triggered update.
With the default settings, it then listens to the virtual port 100, where you then can push an URL for the update to.
This then triggers ESP8266httpUpdate, which downloads the file, check if it is ment for the current running version. If so, it then flashes the downloaded *.bin to the first partition holding the program and reboots.
As the config is also stored in the non volatile SPIFFS, it sees that after the reboot and continues it normal operation.
Not sure how well I described it, hope it is not too confusing after all...
But feel free to ask and I will try to share my limited knowledge. :P
hello sir i tried the file provided in your video but the response is always connection refused
another question can i just use any free file hosting and use it's direct download link of my uploaded file
thank you sir
Maybe you use the library provided in the Arduino IDE. It also has example files. You also have to activate your devices now to make sure your device is really yours.
I cannot find the .bin file! in the new 1.6.10 it uses elf.
to get the .bin I need to use sketch->expoert compiled binary
Or ctrl-alt-S
Hi Andreas,
Thank you for share your ideas and spend time helping other people, i like your videos
Did you have a ideia to write the spiffs ? because may i change the firmware or only change a logo/bitmap saved on spiffs
thanks in advance
ps: i'm getting:
HTTP_UPDATE_FAILED Error(-101): Server not Report Size
do you know why ?
1. I never used SPIFFS
2. Did you include the MAC address of your device in the PHP file?
yes. i did
Then it is strange behavior. Is the .bin file in the bin directory? and is the filename in the PHP file without the extension?
yes
Hello Sir, i really like your videos and i achieved so much thanks to you, but i stuck with something. İ really don't know how to call OTA function every 12 hours. Which library and approximation should i use? Thanks.
Look at my video # 71. There, I show you, how you can call a function every day.
I have my blink .bin in "E:\change\ARDUINO\esp8266\blink\Blink".
1)I am confusing where to attach these file to make sure OTA updatation.
I fully understand the above concept but still unable to manage the file attachment in the process path.
2) I instlalled the Apache server with PHP and as per the "esp8266.github.io/Arduino/versions/2.1.0/doc/ota_updates/ota_updates.html " I copid the PHP script part in i.php . . .C:\Server\data\htdocs\i.php" what shoud i do after these .cause i tride to put the
3) what is "initial loder ? for initial loader which part is pertaining to up-lode main code .
This is an old video. Maybe you watch the new one about IOTappstory.com?
unfortunately, the link to the appstore is not working!
iotappstore.org should work
Sorry for that. I corrected it now. But legogo29 was right. Just three letters missing and I was on a road trip in the alps.
iotappstory.com is what the above link should be. The other URL tries to get you to install a chrome extension. Also, the source code appears to be missing now.
Danke für dieses, wie für Ihre anderen Spitzenvideos. Auto-hacking klar erklärt. Aber wie wird man Trojaner wieder los?
Habe ich Trojaner erwähnt?
Grüezi Herr Spiess,
erstal vielen Dank für die super Videos. Alles sehr strukturiert wie es man es von eimem Schweizer erwartet ;)
Habe das ESPhttpupdate beispiel mal versucht zu starten. Leider bekomme ich eine -1 Connection refused Fehlmeldung. Haben Sie da eine .bin Datei wo ich probieren kann, vieleicht habe ich ein Problem mit meinem Webserver?
Das ist ein sehr alte video und ich verwende dieses Verfahren nicht mehr. Sie sollten ein Beispielsketch in der Arduino IDE finden. Ich verwende jetzt die IOTappstory.com Infrastruktur. Sie basiert auf diesem Verfahren, aber wir haben sie weiter entwickelt (es gibt einige Videos dazu)
Hi Andreas.
I was think about, what if we store our wifi SSID and Password in the ESP8266 spiffs.
Then your program will then call the variable and use it, without knowing it.
Then we don't have to check for a magic byte.
We just have to agree on the Variable to use :)
Best regards
Thanks for all your fantastic videos :)
I made a video concerning storing variables in SPIFFS. But I do not like it particularly for small amount of data.
Hi, thanks for the video. Where can I download the ESP and server files?
This is an old video and we changed many things. Maybe you watch the newer videos about iotAppstory.com. And there is even a library in the Arduino IDE (just search for iotappstory). I will also do a video about the new stuff in the next weeks.
Thanks, I will take a look and a new video would be very helpful!
Nice video. There is any way to automatically reboot the ESP without button press?
Yes. ESP.reboot(). And if you use the time() function, you can do that periodically
Thank you, so there is a possibility to automatically reboot the ESP after the successful update! I want to do a project where the ESP will be enclosed in a frame, so it will be unpractical to ask user reset the module after OTA update. At most, I can instruct to disconnect the device from the power supply and connect again (a kind of reboot maybe!?)
My remark was only the first time, when you flash the initial code with Serial. If you do the OTA, the ESP reboots automatically (as you see in the video)
Andreas Spiess Thank you again
ESPhttpUpdate.update("iotappstore.org/blink.bin"); i got HTTP error: connection refused, any APIKEY etc.?
Maybe you watch my newer videos concerning IOTappstory.com?
HTTP_UPDATE_FAILD Error (-106) error pls tell me what can i do?
This is a very old video. In the next weeks I will do an update.
As usual a very nice way of explaining the things. Thanks for sharing Andreas. However I am facing following problem.
HTTP_UPDATE_FAILD Error (-106): Verify bin header failed
can you tell me the reason.?
What do you want to do? if you try the iotappstore.org, then I first have to enter the MAC address of your device.
5C:CF:7F:0:15:BC I will now try with your server, pl. do the needful
You can try it. Call iotappstoreV10.php and your device should be known.
I am getting this error
HTTP_UPDATE_FAILD Error (-101): Server not Report Size
here is the main lines of software..
#define firmware "iotupdater"
#define firmware_version firmware"_001"
#define update_server "iotappstore.org"
#define update_uri "/iotappstorev10.php"
t_httpUpdate_return ret = ESPhttpUpdate.update(update_server, 80, update_uri, firmware_version);
FYI, "App Store" is an Apple trademark, I doubt it will be long before they complain if this actually becomes popular. I would change it to something else before it gets too popular. I really like the idea, just would hate to see it get destroyed after a lot of work gets put into it.
Thanks for the comment. I did not think about that. So, I have to keep it in mind! For the moment, it was more a gag. And iotappstore.com and .net are both not owned by Apple... (also not by me)
Is it possible to self host this?
I really like to have as much control as possible so i know its secure
You can do a very simple OTA from a website. Goggle knows it
okay thanks :)
Dear Andreas,
Thanks for the nice video tutorial.
At this moment I am engaged in developing the ESP8266 module which measures temperature and humidity.
Concerning Over The Air (OTA) update , I need to do it using HTTP Server and is based on continuous automated deployment of firmware on ESP8266.
But I cannot be able to find much resources in detailed on the internet.
Could you help me regarding this?
If you watch this video and video #82 you know everything you need.
Thank you very much
I came to know how to setup and how to run the client(ESP8266) side.
But I cannot be able to find the resources related to the setup of webserver and run php script and to establish the wireless interface.
Could you please help me?
I am not a webserver guy and also was able to set it up. I just googled. Every web hoster is different.
The php scripts are in my github repository.
Ok.
Thank you.
Moreover, what is the purpose of "credentials" here?
when we change the location of esp8266 device, do we need to enter the new credentials?
If so we need to do it manually. Then its a drawback and not autonomous.
They are needed to access your access point. If you leve your Wlans unprotected, you do not need them
Hi Andreas, great job! very interesting. I'd like to build up my own repositories for my ESP devices to update automatically, but github.com/SensorsIot/IOT-Appstore is no longer available. Where can I find the server side php script, compatible with your latest framework? Or It could be your simpler md5 implementation as I use only Wemos d1 mini lineup. Thank you very much
The library is now part of the Arduino IDE. I think I did a later video about that. For the moment it does not work with ESP32. There you have to wait for a few weeks...
Andreas Spiess I’m using ESP8266. Is it possible to have access to server side php script, /ota/esp8266_v1 I think?
The server side of IOTappstory is not open. if you just want to do OTA from your webserver you find example PHP files in the net
Hallo Andreas, gibt es die library mittlerweile für den ESP32? Falls nein, gibt es für den ESP32 die gleiche Möglichkeit für ein OTA Update via http?
The github link does not exist!!
Maybe you watch the newer video about IOTappstory. Com?
your link for IOTappstore is wrong
Corrected
hey friend.. please share a video about controlling gpio pins of esp8266 with own (any) website. please share codes of it.
You can find some examples in the internet (e.g. blynk.com)
I'm just catching up with this and it's a great idea. I have a web site (some form of Apache) which comes free with my domain account. However, I have no idea how to implement the server bit. I'm a Brit living in Germany with a 1und1.de account and this level of tech German is still, unfortunately, outside my skill set. If there was a source of scripts I could upload to make it work that would be great..........no offer refused :-)
Watch my video #105. There is no need anymore...
Yes - just seen it, great. However, will it allow me to store simple data, such as from a data logger?
No, that is not the plan. For this, you still can use your Webserver... I just thought, you wanted to store your sketches (because of where the comment appeared).
Andreas, I've already signed up for IOT Appstore, because its a brilliant idea with a sound implementation. But this takes me back to my original question, which I will re-phrase - where can I find information, tutorials and/or helpful scripts that will help me enhance my basic website to store some simple data as it relates to Arduino and ESP8266? Thank you for your patience :-)
I plan to cover this topic in the future. So far, I always used publicly available services. You see, I do not know much more htan you...
Hi Andreas,
Thanks for your videos , they are amazing , and congrats for the 10k.
I have my own web server , and i'm trying to update using the iotupdater , but I get the following error:
start flashing......
192.168.1.139
/iotappstorev10.php
HTTP_UPDATE_FAILD Error (-104): Wrong HTTP code
Any idea what could be the problem? I uploaded without modyfing anything the files from Github to the webserver , and in my ino file this is the data I have:
#define update_server "192.168.1.139"
#define update_uri "/iotappstorev10.php"
#define firmware "MetaAPP_IOT"
#define firmware_version firmware"_002"
Any help would be great! Thanks!
You're welcome!
Concerning the error: did you adapt the PHP file with the MAC address and the file name?
aaa that must be, i will give it a try tomorrow! Thank you for your answer!!
hey Andreas great video and project!
when i try to compile the project i get this error
"fatal error: credentials.h: No such file or directory"
It just contains the two definitions of mySSID and myPASSWORD. 3 possibilities exist:
1. Create such a file with the two defines
2. Add the definitions in your main sketch and delete the include credentials.h
3. Replace the two constants mySSID and myPASSWORD with your real credentials (and delete the include)
sounds like your using this one then github.com/thisandagain/arduino-wifly-thingspeak/blob/master/Credentials.h.
thanks for the response!
Simpler: github.com/SensorsIot/ESPDailyTaskNTP/tree/master/credentials
I think it's too late ? i can't find php example file
You should find it somewhere on the internet. This project developed since then. Maybe you also watch the newer videos. And at the end of this month, we will release version 2.0 which also works with the ESP32.
Sir do you know why " HTTP_UPDATE_FAILD Error (-1): HTTP error: connection refused" occurs? I have seen this error in your videos too.
What do you want to achieve? What is your setup?
Andreas Spiess i aim on update my esp-12 by raspi local network. Raspi is php server and esp asks for updates but each time it says " http error refused"
Did you add the MAC address into the PHP script?
Yes
Can you start a get request from a browser?
GET
/iotappstore/iotappstorev20.php HTTP/1.0Host:
192.168.0.200User-Agent: ESP8266-http-UpdateConnection: closex-ESP8266-STA-MAC: 18:FE:34:D6:03:F7x-ESP8266-AP-MAC: 1A:FE:34:D6:03:F7x-ESP8266-free-space: 2859008x-ESP8266-sketch-size: 284000x-ESP8266-chip-size: 4194304 x-ESP8266-sdk-version: 1.5.3(aec24ac9)
x-ESP8266-mode: sketchx-ESP8266-version: xyz
Then you should get the anwer of your php file for debugging.
Excelent. is it possible to do this with hard wired ethernet. my ideal would be, connect to hard wire, press a button whilst powering up the device and then it will check for updates. more of en end user bug fix update for friends i have given equipment to un order to make the update easy without sending back to me.
I do not know what you mean with "hard wired". But if you use an ESP8266, this is exactly the scenario. If you schedule an automatic check every day (as suggested at the end of the video), no end user interaction is needed at all.
is the server still up and running? im afraid not...
+cmcravo www.iotappstory.com. Just tested
i tried whit my own web server and it worked, i will try again whit your but its tested and its great thanks!
Is the iotappstory.com/blink.bin server still running?
The server should run. I just tried it ( www.iotappstory.com)
CC:50:E3:E0:3D:FF
,normal blink
HTTP_UPDATE_FAILD Error (-104): Wrong HTTP Code
I am getting this error on serial monitor. What I have to do (when I used mine) ?
HTTP_UPDATE_FAILD Error (-1): HTTP error: connection refused
When I used : iotappstore.org/Blink.bin
This is an old video. Maybe you watch the new one?
@@AndreasSpiess can share link here for new one ?
Thank you.
The Github repository does not exist anymore :(
Maybe you watch the newer videos about IOTappstory.com?
@@AndreasSpiess Already at it.. Currently bingewatching all your videos. You are awesome!
Vielen Dank für das super Video ! Hier noch eine Idee für den nächsten Entwicklungsschritt. Kann man nicht einen MD5 summe über das BIN file machen und speichern ? Damit spart man sich einen call zum Webserver. Der wiederum könnte (und sollte) im Header the Response einfach einen eTag = MD5 summe des aktuellen sketch schicken. Wenn sich seid der letzten Version nichts geändert hat ist die quersumme des BIN files immer noch gleich. ... Liebe Grüße aus San Francisco !
Zwei Dinge sind dazu zu sagen: 1. habe ich meine Arbeit auf dem Example der ESP8266 Entwickler basiert. Das hat mich mal wenigstens soweit gebracht. Bei Interesse kann man da sicher noch viel optimieren. Meine PHP Kenntnisse beschränken sich allerdings auf genau diesen Script. Und das auch erst seit ungefähr einer Woche...
2. Das mit dem MD5 ist sicher machbar, aber nicht grundsätzlich unterschiedlich zum im Moment verwendeten Verfahren (ausser der ESP könnte den MD5 selbst berechnen. Das ist aber nicht trivial, da das Binary vermutlich noch Metadaten enthält. Sonst müsste der MD5 manuell erfasst werden (wobei der sich vermutlich nochmals ändert, wenn man ihn ins Binary kopiert...). Oder habe ich etwas noch nicht verstanden?
Ich habe in den Kommentaren zwei Vorschläge bekommen, die ich nächste Woche mal analysieren werde. Vielleicht gibt's ja dann ein Update.
Grüsse nach San Francisco. Geniess es!
Du kannst das neue Video anschauen (wenn es online ist). Das läuft jetzt mit MD5. Ich konnte diese Funktion vorab installieren. Sie kommt offiziell mit Release 2.4. Läuft super!
Freut' mich das ich auf diesem Wege "etwas" zurück geben konnte ! Ich bin gespannt auf das neue Video !
please provide me php script for testing purpose
This is an old video. Maybe you watch the newer ones about IOTstory.com
Hi there, I have tried to put this on my Rasp Pi server, pointing all right but getting this:
HTTP_UPDATE_FAILD Error (-102): File not Found (404)
The structure is
@ root:
bin/filename_001.bin
iotappstorev10.php
Put the MAC inside the php file, pointing to filename, tried both same and different version number. No change :(
File not found points to the fact, that the ESP does not find the PHP file.
Try the same string with your browser and you should bet an answer. Do not put the HTTP inside the call in the ESP, only in the browser call.
This error points to the fact, that the ESP does not find the php file. Try the string with your browser and you should get an answer. Make sure, you include the only in your browser, not in the ESP call.
Ahh, ok. I have pointed it to server mypi.net and "filename" is same v10.php file. Only subfolder is bin. Containing The new build.
Will try to access via bromsar when my work ends at 21:30 😊
mypi.net/iotappstorev10.php in webbrowser => only for ESP8266 updater!
In sketch:
#define update_server "192.168.1.100"
#define update_uri "/iotappstorev10.php"
Serial debugging:
Start
35
..
connected
MAC: 18:FE:34:CE:13:D3
start flashing......
Update server: 192.168.1.100
Update page: /iotappstorev10.php
Update version: iotupdater_001
HTTP_UPDATE_FAILD Error (-104): Wrong HTTP code
Strange. Can you change the name of the file in the call that it is deliberately wrong and check, if the error message changes? If it changes, it is obvious, that the ESP finds the php file. If the message is the same, then we know, that it does not find the file, even if it is written correctly. Then, we can go on.
Great Tutorial I have done this with my Own PHP Server and it works well for Blink Sketch and i don't need to restart manually it automatically gets Restart . But when i uploaded the Firmware WiFi scan throught OTA server update wifiscan.bin file loaded sucessfully but it wouldnt runing in esp even if i Rest manually it gives below error for me.
load 0x4010f000, len 1384, room 16
tail 8
chksum 0x2d
csum 0x2d
v614f7c32
@cp:0
ld
e:
ets Jan 8 2013,rst cause:3, boot mode:(3,6)
ets_main.c
Remote debugging of such problems is not possible
Andreas Spiess I solved it just . This error came due to bin file of program i did not saved bin file correctly. Now it working fine i don't need to press reset button after new firmware install. Great tutorial Thanks
I think its time to hook up an esp and try it out
Yes, we can!
Hello Andreas,
as always great video. Please have a look on following repository github.com/erkobg/esp8266-dht22-ci-ota
It is the same idea but with simpler approach, also you can find PHP file to serve the file.
Also you will find trick how ESP knowns which versions is currently installed on the device
Thanks for the link. I got a few suggestions and will look into them. Maybe I will do an update. This was only version 1...
.. And having own web server is not expensive nowadays.. From www.time4vps.eu/pricing/ you can have 20GB backuped web (or what ever you want) server from 0,99Eur/month.. And all servers are in Europe.. (At least I want to keep my data here and not at USA)
Thanks for the link. This is really incredibly cheap!
Files for webserver and ESP8266: github.com/SensorsIot/IOT-App...
link down error 404
Thanks. Maybe you try the library we created in the meantime. You find it in the Arduino IDE when you search for "iotappstory". It should be much easier...
github.com/SensorsIot/IOTappStory.com pls chk if this link is correct for Files for webserver and ESP8266
As I wrote. These are old files.
hello sir i tried the file provided in your video but the response is always connection refused
another question can i just use any free file hosting and use it's direct download link of my uploaded file
thank you sir
1. There is a new library available directly in the Arduino IDE (I think, I made also an update video)
2. Search for ESO8266 OTA and you will find a PHP file
thank you sir i've already fixed my problem
:-)