Hot answers tagged

14

What you describe is actually a quite common (the most common?) way to solve the problem of integrating WiFi IoT devices into your local LAN. For example, from my experience Amazon Echo Devices are setup this way or a variety of smart switches/smart plugs (e.g. Shelly devices). Depending on your requirements, you could also get away without the LED and the ...


12

The current tools of the ESP32 have no explicit option for that. However, the existing tools can be easily combined to do this. The partition table is located at 0x8000 (32768) on older, and on 0x9000 (36384) on newer systems. Anyways, its location can be found (and be set) at the CONFIG_PARTITION_TABLE_OFFSET setting in the menuconfig. Its length is always ...


11

The simplest solution is to add an external ethernet interface driven over SPI, as used in this example. It's also possible to bit-bang the ethernet interface directly, as decsribed in this article, Ethernet Controller Discovered in the ESP8266. Performance might not be as good as with a dedicated interface though. Neither of these include Power over ...


10

Technically speaking, yes, an ESP8266 could act as an MQTT broker. In fact, someone has already tried it! By the end of their project, they claimed to have a broker that can bridge to a cloud MQTT broker, with a web interface and a decent amount of uptime. In the comments, they say that their code is proprietary, so you won't be able to use their code ...


9

The ESP8266 was not designed with an Ethernet MAC, but this should not stop you. However, as Sean has said, it imposes a set of pretty severe restrictions on you. You say that you wish to stay with the ESP8266 platform, but if your project cannot deal with the measly data rates provided by using an ENC28J60-style chip, or bit-banging Ethernet, then there ...


8

My suggestion would be a mosquitto MQTT broker on a Raspberry Pi. There is an article here https://tech.scargill.net/a-christmas-script/ where Peter Scargill have made a script that installs all necessary components and dependencies. Take a look at Node-red. With it you can create logic to complement your project. Updates: I just found a ESP8266 MQTT ...


8

Typically, files are uploaded using a HTTP POST from a web form (I assume that's what you're thinking of when you say file upload). The exact format of the request tends to look a bit like this, as defined in RFC 1867. The ESP8266 has an Arduino library, which contains a module called ESP8266HTTPClient. There's a basic example available here, to help get ...


8

Yes, you can send data to an ESP8266 without using a web server, but you might want use one, or use something functionally related to one. An ESP8266 is a fairly general purpose computing device with a WiFi radio and a network stack, hence, you can implement just about any reasonable protocol you care to describe in code. However, it has become quite ...


8

No, you can't do that using Sonoff since it is an on-off switch with relay. You need an Triac to do that. Normally the brightness control applications for AC will be done through Triac by changing the firing angle.


7

I think you might struggle to get a microsecond delay that is both accurate and non-blocking with the ESP8266. According to the NodeMCU documentation: If you look at the app/modules/tmr.c code for this function, then you will see that it executes a low level ets_delay_us(delay). This function isn't part of the NodeMCU code or the SDK; it's actually part of ...


7

About IoT protocols, most commonly HTTP, CoAP and MQTT are used on communication. HTTP and CoAP are suitable for REST type of client(s) to server communication and MQTT supports publishing and subscribing based multi user communication, where the origin can easily be from server to client, client to server and even client to client. Answering the question:...


7

My recommendation is MQTT. Versatile, lightweight and modular, it can even run on a ESP8266 (Hub and client). The MQTT protocol is available for many platforms from embedded, mobile devices and up to big fat OS's like MAC, Windows and Linux. The protocol have a Publisher, Subscriber model for the communication. And a QoS so a Hub can remember if a ...


7

You have to provide an endpoint of some sort to allow control over a given device. Port forwarding is not the only option, the device could connect out to a publicly accessable server on the internet, once this connection is created then commands can be sent via this to the device. This is how many IoT devices work. Example protocols used for this include ...


7

A broker like mosquitto will run happily on the Pi and bridge to a remote broker. How much resources it will consume entirely depends on how much traffic you send through it and if you end up queuing large amounts of retained messages. Under most circumstances it's pretty low (unless you are planning on streaming video via MQTT). But this solution has the ...


7

You can see this document https://www.losant.com/blog/making-the-esp8266-low-powered-with-deep-sleep In summary, ESP8266 supports 3 sleep modes: Modem-sleep Light-sleep Deep-sleep Modem-sleep Mode Modem-sleep mode is enabled only when ESP8266 connects to a router in station mode, via DTIM beacom mechanism. Within this mode, ESP8266 would wake up ...


6

Another option to easy mesh is to use painlessMesh by BlackEdder and introduce there a bridge for commuting the data to outer world. There is an issue on connecting to other network from a mesh in painlessMesh gitlab that explains four different solutions. Solutions maybe work also in easyMesh, because the issue was raised initially there, but for sure in ...


6

Perhaps the software featureset has changed but I've found that the following works. This is from my DIY code for nodemcu/D1 mini ESP8266 module using esp8266 webserver listening for local UDP broadcasts. I noticed in the Alexa calls to /upnp.control/basicevent1 that the requests were changing subtly. It all boils down to the same event, but the xml of ...


6

Okay found the solution. Firstly I think the detected info block tells the flash size. In Snap it could be seen as 8MBit. The 1.54 version of the firmware has two files, one for 8Mbit and the other for 32Mbit. I went for 8Mbit and checked both SpiAutoSet and DoNotChgBin, and volla. It was succesful this time. I set the baudrate to maximum (1500000) not sure ...


6

In addition to the answers and comments that recommend using a Raspberry Pi because of the ESP8266’s limited resources, it would generally make sense to use the ESP32’s, the unofficial successor to the ESP8266. Due to being dual-core + 3x more RAM, it fixes WiFi connection issues that increased when user programs increased in size. On the price range it is ...


6

Here is everything you need to know: ESP8266 Boot Mode Selection. The following ESP8266 pins must be pulled high/low for either normal or serial bootloader operation. Most development boards or modules make these connections already, internally: GPIO | Must Be Pulled -----+--------------------------------------- 15 | Low/GND (directly, or with a ...


6

I'm not aware of any generic local discovery capability built in to a browser. In fact I would consider any capability to be a security venerability as it would allow attackers to profile the your network remotely unless it had a manual interaction step to start it, which would really slow down the workflow I think you are aiming for. I can think of 2 ...


6

SPIFFS (Serial Peripheral Interface Flash File System) is a method for creating a file system in NOR-type flash memory. EEPROM (Electrically Erasable Programmable Read-Only Memory) is a type of non-volatile memory, floating-gate transistors. You can use either.


6

MQTT is probably the right answer. Each ESP can publish to the broker with a topic structure something like: client1/sensor1 client1/sensor2 You can then use MQTT over Websockets to subscribe to all the topics (either each topic separately or with the # wildcard). Since each message from the sensor arrives on it's own topic you can then use the topic to ...


5

IP ranges on networks have reserved places for certain addresses. Lets take the first step when splitting network in two as an example: network # ip for devices broadcast 0 1-126 127 128 129-254 255 this is mask /25. For other masks there are also exact boundaries, which limit the allowed ...


5

I have managed to recompile the NodeMCU firmware with us timer enabled: Install docker build environment of Marcel Stör: https://hub.docker.com/r/marcelstoer/nodemcu-build/ change firmware files in your firmware directory (e.g. ./user/nodemcu-firmware) ./app/user/user_main.c void user_init(void) { add right here the line: system_timer_reinit(); ./sdk-...


5

I finally found a tutorial by Sony Arouje. As it turns out I had to completely abandon manual sending of esp commands and had to use the library (WiFiEsp.h). Hint...It's better! Though initially it didn't work with my esp8266 because it had an older firmware and reported error "firmware not supported". I had to flash a newer Firmware (works with version 1....


5

The architecture which you propose seems OK. You can build more functionality on top of this, such as authentication and request sanitisation (for example time of day controls, rate limiting, etc) so it's a great example to investigate. There are probably some important details in the implementation which you've not looked into yet. For example, the ...


5

You should avoid lenghtly connection resets on your getPage( ) method by using Connection: Keep-Alive instead of Connection: Close That may save quite a lot.


5

I would modify a bit the existing implementation of EasyMesh, as currently it does not seem to implement node roles. Each node is equal and they can build connections only with each other. As I see there is no way to add a server to their routing tables nor to mark a specific connection record in the tables that has connectivity to a server. The nodes use a ...


5

So I found a solution to the problem. I was originally going to connect the Fire TV stick Alexa to the esp. I bit the bullet and bought an Echo dot. Problem solved. Fauxmo in its current state doesn't seem to work with Fire TV.


Only top voted, non community-wiki answers of a minimum length are eligible