Closed TD-er closed 2 years ago
My applications are:
all supported by generic: LCD/OLED display, Touch,IR,RCWL detection, Dummy Devices, Analog, NTP and System measurement
reporting to: 2# Domoticz controllers via HTTP, P2P, Rules
My plugins in use:
DS18B20 / BME280 SSD1306 /w. and wo. framed 7Segment Dummy Device Switch
P2P Controller Generic HTTP controller
Rules
maybe add just some kind of stats and send it periodically to server, so we will know minimal needed features, then extra stuff will be available for own/self build or with configurator for patreons
I don't use espeasy personally but help for my friends to use it :) some improvements was dedicated for them
stats: nettemp controller mqtt controller dallas gpio bme/bmx pcf lcd
My 2 cents... A much more detailed tutorial on setting up the necessary components to self-compile the firmware with just the plugins needed for your specific use case, If it were a bit easier to understand the process to build your own versions that would reduce the need for 20 to 30 plus bin files every release. I don't think you will ever make a set of pre-built bins that will please everyone. While this would not completely solve the issue methinks it would help immensely. This way you could have some very generic builds for most setups and build a few device specific bins for stuff like Sonoffs etc.
I am using or would like to start using in future these devices/features:
Analog input - internal Display - LCD2004 Display - OLED SSD1306 Energy (AC) - Eastron SDM120C/220T/230/630 Environment - DHT11/12/22 SONOFF 2301/7021 Environment - DS18b20 Environment - BMx280 GAS - SGP30 Generic - Dummy Device Generic - MQTT Import Generic - Pulse Counter Input - iButton Keypad - TTP229 Touch Light/Lux - BH1750 Output - DomoticzMQTT Helper Position - HC-SR04 RFID-PN532 Regulator - Level Control Switch Input - Rotary Encoder Switch Input - Switch
Infrared Receive Infrared Transmit
Controllers: Generic HTTP ThingSpeak Domoticz MQTT
Notifications: Email (SMTP)
BTW. on my primary node I am still running this (a bit older but great) ESP Easy release: GIT version: mega-20180311 Uptime: 99 days 0 hours 43 minutes Load: 29% (LC=11244) Free Mem: 14696 (3176 - parseTemplate3) Wifi RSSI: -87 dB :-)
I use the following
Devices: Sonoff Basic (running 1M OTA) Sonoff S20 (running 1M OTA) Sonoff POW (running hard SONOFF POW)
Wemos + Sensors, having temp/hum/presure/light often combined with PIR and sometimes with Pulsecount (running 4M normal)
Wemos + dedicated for Itho (own 4M normal build and added itho from plugin playground [adapted to fit new web interface])
Wemos + display + 3 gpio's (running 4M normal)
All Sensors use : system info
Controlers: FHEM
Using: Syslog, NTP
Running on all systems Release mega-20190827
I am using the following combinations:
DS18B20
DS18B20
Dummy device
HTU21D
HTU21D
OLED SSD1306
Switch
HTU21D
OLED SSD1306
APDS9950 (stripped version, derived from APDS9960)
Switch
SHT30
DHT22
Switch
P1 WiFi Gateway
Many of these combinations use Rules All are communicating with Domoticz HTTP and many are writing results to syslog
My devices are
I would submit a simple personal config file where I can select the controllers and the plugins.
For people who can not compile themselves, a "normal" version should be enough.
If you want more, you have to worry about how to compile a file. Of course, a simple tutorial is very useful.
@micropet This evening I've been fixing the good old memanalyzer.py file, also with this in mind. So now I know again how to generate a build from within Python having all setup from the command line.
The other way around is already possible, as can be seen in the config of the custom build. That one uses a Python script to define the plugins to use. Both could be used to read a file, but then you have to change the file again if you want to change the config. Another option is to read from a database, where a config is stored from someone clicking away :)
I think if we just allow to read from a file -if exists- with nothing else than a list of plugins and controllers, then anyone can make its own preferred set. We also have the custom.h file, but that's a bit harder to work with if you ask me.
So you mean a website that lists all plugins and controllers. Then I just do a ckeckmark to the required componenets. That would be great, of course.
I never understood how it works with the Python script. custem.h is also mysterious
I've always fiddled with define_plugin_sets.h.
Just as an initial test, could you checkout the latest from the mega branch and go to tools/vagrant. There is a (very short) readme about what to install and then go to that folder with a terminal/shell. In Windows it can be CMD or Windows PowerShell and in Linux it can be any terminal.
Then type vagant up
Please let me know if anything fails.
If it is finished building something in the build
folder, then you can type vagrant halt
in the same window you typed vagrant up
.
It is just preliminary, so I will add some support for reading TXT files defining what needs to be built, but this is not bad for a morning work I think.
@TD-er oh, I like this idea of trying to build in a VM! Almost like a single command to get a standard build tool-chain.
Current implementation looks to be possible a little broken. There were some red screen stuff scroll by, so I don't know what was broken just yet, but I did do the process in a screen recording, so I can upload what happen from my OSX machine.
I do seem to have four bins files thou
vagrant@vagrant:~/GitHub/letscontrolit/ESPEasy/dist/bin$ ls -la
total 23832
drwxrwxr-x 2 vagrant vagrant 4096 Sep 2 09:37 .
drwxrwxr-x 3 vagrant vagrant 4096 Sep 2 09:37 ..
-rw-rw-r-- 1 vagrant vagrant 16777216 Sep 2 09:37 blank_16MB.bin
-rw-rw-r-- 1 vagrant vagrant 1048576 Sep 2 09:37 blank_1MB.bin
-rw-rw-r-- 1 vagrant vagrant 2097152 Sep 2 09:37 blank_2MB.bin
-rw-rw-r-- 1 vagrant vagrant 4194304 Sep 2 09:37 blank_4MB.bin
-rw-rw-r-- 1 vagrant vagrant 276848 Sep 2 09:37 ESPEasy_2step_UploaderMega_1024.bin
vagrant@vagrant:~/GitHub/letscontrolit/ESPEasy/dist/bin$ date
Mon Sep 2 09:40:48 UTC 2019
vagrant@vagrant:~/GitHub/letscontrolit/ESPEasy/dist/bin$
Might it be worth moving the discussion to an issue of it's own, instead of high-jacking your Feedback
request?
My feedback on what I use ESPEasy
for/with ... Every cheap sensor that I can find that ESPEasy supports now ... ;-) .
Can you not possible pull the web site stats on what sensors people search for or click throu?
Thanks for all the awesome tools!
Hmm, I think it may be interesting to see what went wrong here. I just tested it on Windows here, so that's why I did add the sed command in the provisioning to remove the CRLF and replace then by the Unix line endings.
I guess you're right in moving it to a separate issue about Vagrant.
@TD-er I don't know if anything went wrong, just saw some red
messages, as I seem to have a build. Maybe it's just warnings.
Included me in the new issue, if you interest in any feedback I could give. I have text screen recording to upload some place, if that helps?
Please continue in #2594 and I would like to see the screen recording.
The red messages could be build errors, but it is best if you check the ZIP file in the (new created) build dir: tools/vagrant/build
There should be one extra bin file like this:
I think that will not work for me. I have Hyper-V installed on all computers. That seems to be incompatible with VirtualBox. I'll keep looking.
Maybe Vagrant can also work together with other virtualization environments?
I chose Vagrant since it is the defacto product for running deployment tests during development. Can you run "Ubuntu on Windows" with Hyper-V active? (See Windows store for "Ubuntu") If so, then we can split the scripts so you can also run the same tools only start them with another command.
@micropet vagrant supports hyper-v - https://www.vagrantup.com/docs/hyperv/
Am I missing something?
@LeeNX There is a warning about HyperV on the Vagrant site
I think the warning is about VirtualBox's vs Hyper-V Hypervisors
, but from the link I provided, I would believe that vagrant natively supports M$ Hyper-V Hypervisor. Could be something else too. There are warnings about Hyper-V and VMWare too.
I have not tried Vagrant on Windows, so I am very much just an arm chair suggestor ... ;-)
Not all builds of the bento/ubuntu-18.04
support HyperV, but this build does.
Maybe if you just change the relevant parts of the Vagrantfile
into this:
Vagrant.configure("2") do |config|
config.vm.box = "bento/ubuntu-18.04"
config.vm.box_version = "201812.27.0"
end
So add the box_version
line right after this one:
config.vm.box = "bento/ubuntu-18.04"
I have not explicitly set the provider, so I guess it could detect HyperV then.
I get the following error:
d:\Soft\ESPEasy-mega\tools\vagrant>vagrant up Vagrant failed to initialize at a very early stage:
There was an error while executing VBoxManage
, a CLI used by Vagrant
for controlling VirtualBox. The command and stderr is shown below.
Command: ["--version"]
Stderr: Der Befehl ""c:\Program Files\Oracle\VirtualBox\VBoxManage.exe"" ist entweder falsch geschrieben oder
konnte nicht gefunden werden.
Stupid question: Does Virtualbox additionally need to be installed, or is Hyper-V sufficient?
And what should the Vagrant do? I thought we were talking about a website with boxes to tick the required plugins.
I am guessing, as I don't use Windows nor M$ Hyper-V, but I think you are not meant to have VirtualBox installed on a Windows Computer that has Hyper-V setup. At least, that is how I read - https://www.vagrantup.com/docs/hyperv/
@micropet - I think the vagrant discussion is better moved to #2594
Vagrant build system will let you build custom firmware and plugins, without having to do more than git clone and vagrant up in the correct folder. Later some basic config files will let you build custom firmware for your ESP device with only the plugin and controllers you need ... I think ... ;-)
Thank you.
Just a quick reply, to let you know I will reply to this in the Vagrant issue :)
To begin with, I need the test version for as long as some devices are not set to Normal. I noticed that of the mega-20190903, the 252 test core of 4M is gone.
So far, my devices are: Mostly a Wemos with:
I would like to get MQTT working, but it cuases severe crashes on all devices.
To begin with, I need the test version for as long as some devices are not set to Normal. I noticed that of the mega-20190903, the 252 test core of 4M is gone.
If a build is not included in the ZIP file, it could very well be the binary size exceeded the limit for a sketch size. (if you flash one that's too large, it will corrupt the existing partitioning or just continue to crash) In the latest builds, the file name of the "_4M" builds has also changed to "_4M1M" to make it clear it is using 1 MB SPIFFS on 4 MB flash. This to differentiate the "_4M2M" builds which have 2 MB SPIFFS. Currently there is only one _4M2M build, but better make it consistent throughout all builds
About the MQTT crashes. Do you have any special demands? Have you tried lowering the timeout to 100 msec? What MQTT controller do you use?
I have MQTT running on all my nodes without issues, but that's all Domoticz MQTT connecting to Mosquito on a Pi.
About the MQTT crashes. Do you have any special demands? Have you tried lowering the timeout to 100 msec?
No special demands at all. I have set time out to 100 msec now.
What` MQTT controller do you use? I have MQTT running on all my nodes without issues, but that's all Domoticz MQTT connecting to Mosquito on a Pi.
I have the same setup. Domoticz MQTT and Mosquito on a Pi.
In the latest builds, the file name of the "_4M" builds has also changed to "_4M1M" to make it clear it is using 1 MB SPIFFS on 4 MB flash. This to differentiate the "_4M2M" builds which have 2 MB SPIFFS. Currently there is only one _4M2M build, but better make it consistent throughout all builds
Which one should I use for Wemos 4MB?
Well, right now only the IR related build has the 4M2M layout. (and still the old 4M1M) All others have the 4M1M layout, so I guess there is yet not even a choice here. Just go for 4M1M. The 4M2M is meant to allow for more room on SPIFFS, but it has not yet been tested. If you change from one to the other you will loose all settings, because the filesystem is recreated and formatted.
back to the initial request:
I use these pluigins: SHT25 temp/ humidity (my code, in the playground) SMA inverter, modbus (my code, in the playground) MT681 SML power meter (my code, in the playground) ViessmanVitotronic optical interface (my code, in the playground) IRTX
all with mqtt except the viessmann, that one uses http.
Last night's build was somewhat of a disaster if you look at the bin files that made it into the zip. Only 1 "test" build and no "dev" build included. So I will split up these, but the question is: "how?"
sonoff pow2 (AC meter), BME 180/280, MQTT, Dummy.
May be linux-way? Small base core (for minimum size of flash 512kB), and overlays ( https://github.com/pvvx/esp8266web ) Overlays - added from web interface esp8266. One device (DS, MQTT, BME, etc) = one overlay.
Or server with own builder. And checkboxes. ( https://wifi-iot.com/p/main/ )
Or server with own builder.
I was thinking about how to split the build sets. On the forum, it was suggested to also have a look at how Tasmota is handling build sets
What about the controllers? Is anyone using a MQTT controller with something other than generic/advanced HTTP? I guess Domoticz HTTP/MQTT should be in the same build set, since they share a lot of code.
My suggestion:
And use that including the existing normal/test/dev builds? Maybe also have one set of "metering" plugins, like interfacing with Modbus devices. And one for "playful " plugins like
Those are not useful for most users. Doesn't mean a build with these should only have these, so we may also need some "standard set" of plugins included in all builds (except for "switch only" builds)
Just for some idea of plugin/controller sizes the output of the memory analyzer run. The rather big ones are marked bold.
module | cache IRAM | init RAM | r.o. RAM | uninit RAM | Flash ROM |
---|---|---|---|---|---|
CORE | 29268 | 1584 | 2960 | 37096 | 568404 |
MQTT_ONLY | 0 | 68 | 356 | 1192 | 35936 |
USE_SETTINGS_ARCHIVE | 0 | 0 | 140 | 0 | 9664 |
WEBSERVER_RULES_DEBUG=1 | 0 | -8 | 0 | 0 | 16 |
WEBSERVER_TIMINGSTATS | 0 | -8 | 4 | -8 | 5216 |
src/_C001.ino | 0 | -8 | 8 | 8 | 5344 |
src/_C002.ino | 0 | 68 | 40 | 1144 | 18592 |
src/_C003.ino | 0 | 0 | 4 | 24 | 2400 |
src/_C004.ino | 0 | -8 | 0 | 16 | 3008 |
src/_C005.ino | 0 | -4 | 8 | 1144 | 10320 |
src/_C006.ino | 0 | -4 | 8 | 1144 | 10400 |
src/_C007.ino | 0 | -8 | 0 | 32 | 3056 |
src/_C008.ino | 0 | -8 | 4 | 8 | 5184 |
src/_C009.ino | 0 | 64 | 36 | 8 | 7360 |
src/_C010.ino | 0 | -8 | 0 | 32 | 4112 |
src/_C011.ino | 0 | 0 | 4 | 24 | 7792 |
src/_C012.ino | 0 | 0 | 0 | 32 | 4512 |
src/_C013.ino | 0 | -8 | 0 | 16 | 1328 |
src/_C014.ino | 0 | -4 | 332 | 1152 | 19472 |
src/_C015.ino | 0 | 0 | 1144 | 120 | 7712 |
src/_C016.ino | 0 | -8 | 0 | 32 | 5216 |
src/_C017.ino | 0 | 72 | 40 | 24 | 4768 |
src/_C018.ino | 404 | -8 | 104 | 72 | 18928 |
src/_N001_Email.ino | 0 | -8 | 4 | -8 | 4000 |
src/_N002_Buzzer.ino | 0 | -8 | 0 | 0 | 688 |
src/_P001_Switch.ino | 0 | -8 | 40 | 8 | 13696 |
src/_P002_ADC.ino | 0 | 0 | 0 | 16 | 2496 |
src/_P003_Pulse.ino | 220 | -8 | 0 | 384 | 2512 |
src/_P004_Dallas.ino | 0 | -8 | 28 | 112 | 4352 |
src/_P005_DHT.ino | 24 | 0 | 16 | 0 | 2064 |
src/_P006_BMP085.ino | 0 | 0 | 0 | 16 | 2112 |
src/_P007_PCF8591.ino | 0 | 0 | 0 | 0 | 480 |
src/_P008_RFID.ino | 240 | 0 | 0 | 16 | 1472 |
src/_P009_MCP.ino | 0 | -8 | 16 | 0 | 10768 |
src/_P010_BH1750.ino | 0 | -8 | 0 | 0 | 2544 |
src/_P011_PME.ino | 0 | -8 | 0 | 0 | 4032 |
src/_P012_LCD.ino | 0 | 8 | 64 | 0 | 5568 |
src/_P013_HCSR04.ino | 0 | -8 | 0 | 48 | 5856 |
src/_P014_SI7021.ino | 0 | -8 | 0 | 0 | 1744 |
src/_P015_TSL2561.ino | 0 | -8 | 0 | 16 | 4112 |
src/_P016_IR.ino | 464 | 0 | 680 | 120 | 33648 |
src/_P017_PN532.ino | 0 | -8 | 0 | 64 | 2192 |
src/_P018_Dust.ino | 0 | -8 | 0 | 0 | 640 |
src/_P019_PCF8574.ino | 0 | 0 | 16 | 0 | 10704 |
src/_P020_Ser2Net.ino | 0 | -8 | 8 | 24 | 3184 |
src/_P021_Level.ino | 0 | -8 | 0 | 16 | 2176 |
src/_P022_PCA9685.ino | 0 | -8 | 4 | -8 | 8368 |
src/_P023_OLED.ino | 0 | -8 | 40 | -8 | 5808 |
src/_P024_MLX90614.ino | 0 | -8 | 0 | 0 | 960 |
src/_P025_ADS1115.ino | 0 | 0 | 16 | 0 | 3120 |
src/_P026_Sysinfo.ino | 0 | -8 | 0 | 0 | 3440 |
src/_P027_INA219.ino | 0 | 8 | 4 | 24 | 2816 |
src/_P028_BME280.ino | 128 | 8 | 28 | 32 | 7008 |
src/_P029_Output.ino | 0 | -8 | 0 | 0 | 512 |
src/_P030_BMP280.ino | 128 | 0 | 0 | 64 | 3072 |
src/_P031_SHT1X.ino | 0 | -8 | 0 | 0 | 2704 |
src/_P032_MS5611.ino | 0 | -8 | 0 | 48 | 2640 |
src/_P033_Dummy.ino | 0 | 0 | 0 | 0 | 2400 |
src/_P034_DHT12.ino | 0 | -8 | 0 | 0 | 736 |
src/_P035_IRTX.ino | 76 | -8 | 868 | -8 | 21888 |
src/_P036_FrameOLED.ino | 0 | 0 | 0 | 144 | 32672 |
src/_P037_MQTTImport.ino | 0 | -4 | 12 | 1200 | 12736 |
src/_P038_NeoPixel.ino | 128 | -8 | 20 | -8 | 5968 |
src/_P039_Thermocouple.ino | 0 | 0 | 12 | 16 | 1968 |
src/_P040_ID12.ino | 0 | -8 | 0 | 0 | 768 |
src/_P041_NeoClock.ino | 128 | -8 | 0 | 0 | 3360 |
src/_P042_Candle.ino | 128 | 0 | 12 | 32 | 8672 |
src/_P043_ClkOutput.ino | 0 | 0 | 0 | 0 | 1680 |
src/_P044_P1WifiGateway.ino | 0 | -8 | 28 | 64 | 4416 |
src/_P045_MPU6050.ino | 0 | -8 | 0 | 64 | 4464 |
src/_P046_VentusW266.ino | 0 | 0 | 0 | 0 | 0 |
src/_P047_i2c-soil-moisture-sensor.ino | 0 | -8 | 0 | 0 | 3104 |
src/_P048_Motorshield_v2.ino | 0 | 24 | 8 | -8 | 6944 |
src/_P049_MHZ19.ino | 404 | 0 | 44 | 16 | 9280 |
src/_P050_TCS34725.ino | 0 | -8 | 0 | 0 | 3344 |
src/_P051_AM2320.ino | 0 | -8 | 0 | 0 | 992 |
src/_P052_SenseAir.ino | 404 | -8 | 224 | 16 | 13312 |
src/_P053_PMSx003.ino | 404 | -8 | 12 | 16 | 7024 |
src/_P054_DMX512.ino | 0 | 0 | 0 | 0 | 1696 |
src/_P055_Chiming.ino | 0 | -8 | 4 | -8 | 3616 |
src/_P056_SDS011-Dust.ino | 404 | -8 | 12 | 16 | 7952 |
src/_P057_HT16K33_LED.ino | 0 | 0 | 48 | 0 | 4192 |
src/_P058_HT16K33_KeyPad.ino | 0 | 0 | 32 | 0 | 1376 |
src/_P059_Encoder.ino | 432 | 64 | 16 | 48 | 3888 |
src/_P060_MCP3221.ino | 0 | -8 | 32 | 0 | 2240 |
src/_P061_KeyPad.ino | 0 | -8 | 64 | 0 | 2352 |
src/_P062_MPR121_KeyPad.ino | 0 | -8 | 16 | 0 | 1840 |
src/_P063_TTP229_KeyPad.ino | 0 | -8 | 4 | -8 | 1808 |
src/_P064_APDS9960.ino | 0 | 0 | 0 | 0 | 4944 |
src/_P065_DRF0299_MP3.ino | 404 | -8 | 28 | 16 | 4144 |
src/_P066_VEML6040.ino | 0 | 0 | 16 | 0 | 2672 |
src/_P067_HX711_Load_Cell.ino | 0 | 0 | 4 | 88 | 8224 |
src/_P068_SHT3x.ino | 0 | 0 | 0 | 0 | 1776 |
src/_P069_LM75A.ino | 0 | -8 | 32 | 0 | 1104 |
src/_P070_NeoPixel_Clock.ino | 0 | -8 | 0 | 0 | 16 |
src/_P071_Kamstrup401.ino | 404 | 0 | 16 | 16 | 7040 |
src/_P072_HDC1080.ino | 0 | -8 | 0 | 0 | 800 |
src/_P073_7DGT.ino | 0 | -8 | 120 | -8 | 8704 |
src/_P074_TSL2591.ino | 0 | -8 | 28 | 0 | 4096 |
src/_P075_Nextion.ino | 404 | -8 | 76 | 16 | 10560 |
src/_P076_HLW8012.ino | 432 | 0 | 8 | 24 | 8304 |
src/_P077_CSE7766.ino | 0 | -8 | 0 | 0 | 3280 |
src/_P078_Eastron.ino | 404 | -8 | 52 | 8 | 9840 |
src/_P079_Wemos_Motorshield.ino | 0 | 0 | 0 | 0 | 2096 |
src/_P080_DallasIButton.ino | 0 | -8 | 0 | 16 | 2560 |
src/_P081_Cron.ino | 0 | 56 | 608 | 16 | 8624 |
src/_P082_GPS.ino | 432 | 0 | 136 | 24 | 17536 |
src/_P083_SGP30.ino | 0 | -8 | 0 | 0 | 1248 |
src/_P084_VEML6070.ino | 0 | -8 | 0 | 0 | 1472 |
src/_P085_AcuDC243.ino | 532 | 0 | 240 | 16 | 12336 |
src/_P086_Homie.ino | 0 | -8 | 4 | -8 | 3904 |
src/_P087_SerialProxy.ino | 404 | -8 | 12 | 16 | 8640 |
src/_P088_HeatpumpIR.ino | 0 | 8 | 624 | 320 | 20752 |
Just the log of last night's build.
Status | Reason | Env |
---|---|---|
SUCCESS | 829456 < 1044464 Bytes. | custom_ESP8266_4M1M |
SUCCESS | 1689376 < 1900544 Bytes. | esp-wrover-kit_test_1M8_partition |
SUCCESS | 1689392 < 1900544 Bytes. | esp32test_1M8_partition |
SUCCESS | 863296 < 892912 Bytes. | normal_ESP8266_1M |
SUCCESS | 863664 < 892912 Bytes. | normal_ESP8266_1M_VCC |
SUCCESS | 863248 < 892912 Bytes. | normal_ESP8285_1M |
SUCCESS | 818192 < 892912 Bytes. | normal_core_241_ESP8266_1M |
SUCCESS | 865088 < 1044464 Bytes. | normal_WROOM02_2M |
SUCCESS | 865088 < 1044464 Bytes. | normal_core_252_WROOM02_2M256 |
SUCCESS | 864992 < 1044464 Bytes. | normal_ESP8266_4M1M |
SUCCESS | 819344 < 1044464 Bytes. | normal_core_241_ESP8266_4M1M |
FAILED | No file created. | normal_core_252_ESP8266_16M |
SUCCESS | 871712 < 1044464 Bytes. | normal_core_260_sdk222_alpha_ESP8266_4M1M |
FAILED | No file created. | normal_core_260_sdk222_alpha_ESP8266_16M |
SUCCESS | 614016 < 616448 Bytes. | minimal_core_242_ESP8266_1M_OTA |
SUCCESS | 614016 < 616448 Bytes. | minimal_core_242_ESP8285_1M_OTA |
FAILED | too large 650064 > 616448 Bytes. | minimal_core_252_ESP8266_1M_OTA |
FAILED | too large 650048 > 616448 Bytes. | minimal_core_252_ESP8285_1M_OTA |
SUCCESS | 839584 < 892912 Bytes. | minimal_IRext_ESP8266_1M |
FAILED | No file created. | minimal_IRext_ESP8266_4M1M |
SUCCESS | 840944 < 1044464 Bytes. | minimal_IRext_ESP8266_4M2M |
SUCCESS | 956512 < 1044464 Bytes. | normal_IRext_no_rx_ESP8266_4M2M |
SUCCESS | 1012000 < 1044464 Bytes. | test_core_260_sdk222_alpha_ESP8266_4M1M |
SUCCESS | 1012704 < 1044464 Bytes. | test_core_260_sdk3_alpha_ESP8266_4M1M |
FAILED | No file created. | test_core_260_sdk222_alpha_ESP8266_16M |
SUCCESS | 1013904 < 1044464 Bytes. | test_ESP8266_4M_VCC |
SUCCESS | 1004544 < 1044464 Bytes. | dev_ESP8266_4M1M |
SUCCESS | 710672 < 1044464 Bytes. | hard_SONOFF_POW_4M1M |
FAILED | No file created. | hard_other_POW_ESP8285_1M |
FAILED | No file created. | hard_Shelly_1_2M256 |
FAILED | No file created. | hard_Ventus_W266 |
The "No file created." is reported when at build the file size already exceeds the set value in platformio.ini. (or another build error)
minimal_IRext_ESP8266_4M1M minimal_IRext_ESP8266_4M2M Those are practicaly the same build but the one compiled and the other not.. Also in my pc the latest code builds fine.
I've noticed the same. It could be the full path in which the build is made may just be the tipping point. We can switch those to core 2.6.0, since that one has the brand new feature of flash string de-duplication. That may save a few kByte in binary size. Perhaps a lot more on the IR lib.
Edit: The "minimal" 4M1M build may be checking against 1M minimal size.
I pinned the issue, since it is really important to have a proper definition of builds.
Almost all test
and dev
builds no longer fit the sketch size.
As I anyway use my own set of plugins, I can't really comment here, but one thing I noticed is that even when only using the one controller plugin I need (C009 FHEM) and one Plugin (P001 Switch) compiling it with Core 2.6.0 I already get over the maximum size for 1M untis for using the two-step OTA.
So therefore my vote would be to add some more stringent BUILD_MINIMAL_OTA
or additional definitions which strip out everything not needed (eg. icons, infos, debugs, etc.) and so it fits again in small (1M) builds.
The new GUI engine (which is not yet available for beta) will allow for external hosting* of the GUI so that would be ideal for the 1M units.
*Meaning you can surf to a big brother (4M) unit and from that one control the 1M unit(s).
I have been ding some static code analysis and the C009 controller does appear quite high on the resources used list.
The do_process_c009_delay_queue
call alone uses 7.6 kByte.
It also uses JSON, which needs an external library.
Plugin_001 does use 11.2 kB
Should the minimal build also have the web-log present?
Should the minimal build also have the web-log present?
No I'd say that's not in the scope of those small units.
Should the minimal build also have the web-log present?
No I'd say that's not in the scope of those small units.
Agree, especially if it saves significantly. It's still possible to use syslog for logging/debugging though
Since I am probably the oldest here (almost 60 years) and I started my computer education in 1980, I see that the whole ESP project has reached the border with which I have encountered many times in IT history. Please, do not treat this as rude, but I think the question is not right. The problem is not which device/sensor to choose for a particular distribution. The problem is how to get FW containing all the drivers needed in a particular application, ignoring all the others, even the most popular ones. Here comes a comparison with the history of the Novell NetWare system. Version 1.XX (based on the XNS protocol - probably no one remembers that it is the first Ethernet protocol) only supported specific types of hardware. Of course, with time new types of new equipment arrived. Therefore, version 2.XX introduced a system build/compilation at the installation stage. During this compilation, it was possible to add (from diskette) device drivers supplied by various manufacturers. This process required some knowledge and was not universal. Any hardware change required a new build/compilation. And adding too many drivers resulted in exceeding the computer resources, for example, memory. I think the ESP easy project is at this stage. To have your own set of sensors, we basically need to compile our own version of FW. At the end of the last century, Novell introduced version 3.xx. It was probably the first system with dynamically loaded kernel and driver modules. Something that is common today was a revolution at the time. So I think the future is a similar solution in the case of ESP. At the flash stage, we select from the future version of esptool, using checkboxes, a list of necessary sensors. And the ESPeasy "kernel" contains only what is directly on the PCB, for example, nodeMCU. If the number of drivers exceeds the device resources, esptool will inform us. And besides, the story of Arduino does not end today. Device resources will increase, not decrease. The number and types of sensors will also increase. Therefore, the use of a system of dynamically loaded modules seems even more necessary. These are my - maybe a little too long - comments on the choice of sensors.
@mackowiakp I think you're 100% correct in your analysis of the problem we're facing. That is why we plan on making a "compile-as-you-go" (online) service. But until we have time for that we want to create a set of commonly used sets of firmware releases. And we will most likely still provide pre-compiled versions for development and Swiss-army-knife units.
I totally agree with your post, but sadly there is no possibility for our setup (using C++ in the way we use it) to load components at run time. For that we should move to another language like MicroPython. (see upyEasy project)
As you may have seen, I was working on a Vagrant setup to ease the process of self-compiling and I do think there's the future. Let the node decide what it needs. But we're not there yet. So until then we should make a solid set of application driven plugins. Maybe it is already sufficient to split at controller level, like MQTT and non-MQTT, since those are the biggest controllers. Also LoRaWAN and network related controllers will hardly ever be used together.
@ Grovkillen .But remember. Swiss-army-knife has 23854 units, or more. Except the one You just need. Murphy is alive!
As you may have seen, I was working on a Vagrant setup to ease the process of self-compiling and I do think there's the future.
I this that this will be THE biggest feature yet🎉 User picks the board (device) he has (ideally a list of devices like Wemos D1, Shelly 1, etc), he selects the features he needs and he clicks the "COMPILE" button. This is the feature that should be available only for active supporters (patreon users only?). The goals would be completed in no time! :)
I think that there should be a list of devices that the user can select from because it isn't very intuitive what bin we should select now. Take a look at espurna releases page I think it's easier to select bin file named shelly2.bin
than to know what chip the device has inside.
The configurator should allow selecting the device and based on that it would select the correct chip. What do You think?
The last few weeks we're running out of the space available for the sketch. The test and dev builds now approach their max size so something has to change.
I think the sets of
normal
,test
anddev
does not really make sense anymore.We already have some builds specific for some use case, like specific hardware or just a single purpose. For example the Sonoff POW as a specific build for off the shelf hardware and the IR builds for the IR RX/TX and AC control.
Maybe we can make more logical build sets.
For this we need some user input to get an idea of sensors often used together or so often they must be included in any build.
Other options are to disable some of the webserver parts if they are not needed.
So please let's get some proper lists of used plugins to redefine the build scripts.