💬 NodeManager
-
@user2684 Thanks for the spreadsheet with your memory footprints. Are these the sketch size and the free memory that the compiler reports? Or do you measure them when running the sketch (i.e. including all dynamically allocated variables in SRAM)?
Also, one problem you don't seem to have covered is heap fragmentation. Particularly your new List class seems to be prone to heap fragmentation with a large number of sensors: each time a sensor is added, the list needs to re-allocate the memory for its pointers. The old memory will be released, but it will remain as a hole in the memory, where new variables might be allocated. However, the next time you add an element to the list, the new pointer array can probably not re-use some of those freed holes.
I'll provide a PR (https://github.com/mysensors/NodeManager/pull/247) that adds an allocateBlocks(count) method to the List, which can be used in the sketch and in the sensor's onSetup methods to pre-allocate the required sized. In turn, the _preAllocBlocks member does currently not serve any purpose, and I don't think it's really required functionality. In my eyes, it's more important to ensure that at a certain moment the required memory is allocated. It is not neccessary to keep a minimum nuber of blocks allocated at all times.
For a node with 10 physical sensors (and maybe one or more built-in sensors), this will save at least 22 bytes (1,1% of total SRAM!) and probably reduce heap fragmentation by quite a bit.Another are where >22 bytes can be saved is the power manager. None of my nodes makes use of the power manager, yet each sensor needs to keep a (null) pointer to a power manager. Providing a compiler #define NO_MODULE_POWER_MANAGER can exclude everything PowerManager-related from compilation and save one pointer per sensor and node, i.e. with 10 sensors you'll save another 22 bytes (1,1% of total SRAM!) I'll provide a PR for this, too: https://github.com/mysensors/NodeManager/pull/248
Apart from that, I simply stripped down the SensorMQ class and removed all configurability for my own use (don't worry, I won't submit this as a pull request... it is simply meant to squeeze the sketch onto the pro mini with the boards that I have already built).
BTW, the SensorConfiguration is no problem as far as SRAM is concerned (it just adds the normal SRAM footprint of a Sensor instance): It has no class members of its own. Only the flash size is considerable, but for me this is not the issue, I'm running out of SRAM. -
@user2684 Thanks for the spreadsheet with your memory footprints. Are these the sketch size and the free memory that the compiler reports? Or do you measure them when running the sketch (i.e. including all dynamically allocated variables in SRAM)?
Also, one problem you don't seem to have covered is heap fragmentation. Particularly your new List class seems to be prone to heap fragmentation with a large number of sensors: each time a sensor is added, the list needs to re-allocate the memory for its pointers. The old memory will be released, but it will remain as a hole in the memory, where new variables might be allocated. However, the next time you add an element to the list, the new pointer array can probably not re-use some of those freed holes.
I'll provide a PR (https://github.com/mysensors/NodeManager/pull/247) that adds an allocateBlocks(count) method to the List, which can be used in the sketch and in the sensor's onSetup methods to pre-allocate the required sized. In turn, the _preAllocBlocks member does currently not serve any purpose, and I don't think it's really required functionality. In my eyes, it's more important to ensure that at a certain moment the required memory is allocated. It is not neccessary to keep a minimum nuber of blocks allocated at all times.
For a node with 10 physical sensors (and maybe one or more built-in sensors), this will save at least 22 bytes (1,1% of total SRAM!) and probably reduce heap fragmentation by quite a bit.Another are where >22 bytes can be saved is the power manager. None of my nodes makes use of the power manager, yet each sensor needs to keep a (null) pointer to a power manager. Providing a compiler #define NO_MODULE_POWER_MANAGER can exclude everything PowerManager-related from compilation and save one pointer per sensor and node, i.e. with 10 sensors you'll save another 22 bytes (1,1% of total SRAM!) I'll provide a PR for this, too: https://github.com/mysensors/NodeManager/pull/248
Apart from that, I simply stripped down the SensorMQ class and removed all configurability for my own use (don't worry, I won't submit this as a pull request... it is simply meant to squeeze the sketch onto the pro mini with the boards that I have already built).
BTW, the SensorConfiguration is no problem as far as SRAM is concerned (it just adds the normal SRAM footprint of a Sensor instance): It has no class members of its own. Only the flash size is considerable, but for me this is not the issue, I'm running out of SRAM.@reinhold I measured only what the compiler reported. Main focus was to reduce the flash size, I honestly ignored any potential SRAM issues which is bad :) Thanks for the hit and for the great contributions and PRs so far. You're right about the List class and especially when the number of items is known, there is not reason why not allocating the blocks beforehand. I will merge your changes as they are and then take it back and adjust something (e.g. make the number of block you are passing to "node" optional, moving child creation into the constructor, always allocating the blocks for children in each sensor, generalizing a bit more the NO_MODULE thing etc.). Thanks again!
-
Hi, for those looking for making NodeManager time aware (with and without an attached RTC), this capability has been added to the development branch through https://github.com/mysensors/NodeManager/pull/259 and it is of course transparent to the end user. When this feature is enabled, also, the node resumes the remainder sleep time when woken up by an interrupt and allows SensorPulseMeter and subclasses to support sleep mode. Thanks
-
Hi, for those looking for making NodeManager time aware (with and without an attached RTC), this capability has been added to the development branch through https://github.com/mysensors/NodeManager/pull/259 and it is of course transparent to the end user. When this feature is enabled, also, the node resumes the remainder sleep time when woken up by an interrupt and allows SensorPulseMeter and subclasses to support sleep mode. Thanks
-
The SensorSwitch/Door/Motion all work on interrupt pins only ? Sorry if I've misunderstood the code, thats possible.
Anyway I've made a few changes so that busywait, if thats what they are called buttons can be also used. I'll see if I can use git somehow to share the changes, or show them at least
Great library, looking to convert other things to use this.
-
Great code, another question.
For the SensorDimmer, each sensor has only one type set so a dimmer can't receive v_status & v_percentage messages.
I've worked around this by registering two sensors at the same Analog out pin. But they don't then have access in a nice way to the status of each other as values are changed. So if I turn the led on/off via the v_status message I can't preserve the previous percentage, set by the other v_percentage sensor.
Is this normal ? I'm new to all this but at least mycontroller lets you specify for a single sensor both v_status,v_percentage so both types of messages can be sent and processed in onRecieve()...
Perhaps some enhancement on the SensorDimmer class could do this ? in ModeManager.cpp (if (message.type != _type) return;) inside Sensor::recieve.... isn't that too restrictive ?
-
The SensorSwitch/Door/Motion all work on interrupt pins only ? Sorry if I've misunderstood the code, thats possible.
Anyway I've made a few changes so that busywait, if thats what they are called buttons can be also used. I'll see if I can use git somehow to share the changes, or show them at least
Great library, looking to convert other things to use this.
@rfm69 yes, they are all interrupt-based. Reason is they would need to be functional either when sleeping or not so I went for this approach. If you need an example of such a sensor not interrupt-based, have a look at the SensorSonoff, it is using a different approach for handling the button. Thanks
-
Great code, another question.
For the SensorDimmer, each sensor has only one type set so a dimmer can't receive v_status & v_percentage messages.
I've worked around this by registering two sensors at the same Analog out pin. But they don't then have access in a nice way to the status of each other as values are changed. So if I turn the led on/off via the v_status message I can't preserve the previous percentage, set by the other v_percentage sensor.
Is this normal ? I'm new to all this but at least mycontroller lets you specify for a single sensor both v_status,v_percentage so both types of messages can be sent and processed in onRecieve()...
Perhaps some enhancement on the SensorDimmer class could do this ? in ModeManager.cpp (if (message.type != _type) return;) inside Sensor::recieve.... isn't that too restrictive ?
@rfm69 you're right, this also came out a while ago. I was sure we had an associated issue on github for this but it doesn't look like. Here's the new issue for your reference https://github.com/mysensors/NodeManager/issues/296. Implementing this in v1.6 is really challenging but with the new v1.7 architecture of the development branch should be way easier since all the children share the same variables. Thanks!
-
@rfm69 yes, they are all interrupt-based. Reason is they would need to be functional either when sleeping or not so I went for this approach. If you need an example of such a sensor not interrupt-based, have a look at the SensorSonoff, it is using a different approach for handling the button. Thanks
@user2684 Thanks, I've implemented something myself with changes to the library, just playing around to understand it better. But will look at the SensorSonoff you mention.
Thanks again, its a great library.
Had a quick look at 1.7 dev branch :) is this ready for using already, testing or trying, or have you got more to do before its refactored etc ? I was interested in looking what the changes in architecture were.
-
@user2684 Thanks, I've implemented something myself with changes to the library, just playing around to understand it better. But will look at the SensorSonoff you mention.
Thanks again, its a great library.
Had a quick look at 1.7 dev branch :) is this ready for using already, testing or trying, or have you got more to do before its refactored etc ? I was interested in looking what the changes in architecture were.
@rfm69 v1.7 is still not completed but theoretically fully functional and with most of the architectural changes already done (https://github.com/mysensors/NodeManager/milestone/9 for the full list of things still to be completed and those already implemented). For sure safe to be tested out! Thanks
-
Great code, another question.
For the SensorDimmer, each sensor has only one type set so a dimmer can't receive v_status & v_percentage messages.
I've worked around this by registering two sensors at the same Analog out pin. But they don't then have access in a nice way to the status of each other as values are changed. So if I turn the led on/off via the v_status message I can't preserve the previous percentage, set by the other v_percentage sensor.
Is this normal ? I'm new to all this but at least mycontroller lets you specify for a single sensor both v_status,v_percentage so both types of messages can be sent and processed in onRecieve()...
Perhaps some enhancement on the SensorDimmer class could do this ? in ModeManager.cpp (if (message.type != _type) return;) inside Sensor::recieve.... isn't that too restrictive ?
@rfm69 for your SensorDimmer request, feel free to give v1.7-dev a try from here https://github.com/mysensors/NodeManager/tree/development. Details on the implementation of your request can be found at https://github.com/mysensors/NodeManager/pull/302. Thanks
-
Hi, for anybody interested in giving the upcoming NodeManager v1.7 a try or share a feedback, please have a look at https://forum.mysensors.org/topic/9085/nodemanager-v1-7-beta-feedback-needed. Thanks!
-
Hi, the new version of NodeManager (v1.7) is now available! For those interested in having a look at the new features, supported sensors and capabilities, I've opened a dedicated thread on the forum here https://forum.mysensors.org/topic/9165/nodemanager-v1-7-now-available
Thanks -
Hi, the new version of NodeManager (v1.7) is now available! For those interested in having a look at the new features, supported sensors and capabilities, I've opened a dedicated thread on the forum here https://forum.mysensors.org/topic/9165/nodemanager-v1-7-now-available
Thanks@user2684 in the sensebender sketch we turn on digital pin 7 to provide power to the LDR to read it.
i have many sensors in my house and would rather not re-wire all of them.
how can i add this cleanly in nodemgr to make it work as before?
pinMode(7, OUTPUT); // “power pin” for Light Sensor
digitalWrite(7, LOW); // switch power offThanks!
-
@user2684 in the sensebender sketch we turn on digital pin 7 to provide power to the LDR to read it.
i have many sensors in my house and would rather not re-wire all of them.
how can i add this cleanly in nodemgr to make it work as before?
pinMode(7, OUTPUT); // “power pin” for Light Sensor
digitalWrite(7, LOW); // switch power offThanks!
@mvader thanks for the feedback, I've added this issue on Github so to fix this in the next dev release https://github.com/mysensors/NodeManager/issues/344
-
@mvader thanks for the feedback, I've added this issue on Github so to fix this in the next dev release https://github.com/mysensors/NodeManager/issues/344
@user2684 said in 💬 NodeManager:
@mvader thanks for the feedback, I've added this issue on Github so to fix this in the next dev release https://github.com/mysensors/NodeManager/issues/344
Thanks!! here is the setup and loop part from the sketch
setup pinMode(7, OUTPUT); // “power pin” for Light Sensor digitalWrite(7, LOW); // switch power off loop digitalWrite(7, HIGH); // switch power on to LDR sendLight(forceTransmit); digitalWrite(7, LOW); // switch power off to LDR and the function /* * Sends Ambient Light Sensor information * * Parameters * - force : Forces transmission of a value */ void sendLight(bool force) // Get light level { if (force) lastLightLevel = -1; int rlightLevel = analogRead(LIGHT_PIN); int lightLevel = (analogRead(LIGHT_PIN) / 10.23) ; if (lightLevel != lastLightLevel) { gw.send(msgLight.set(lightLevel)); lastLightLevel = lightLevel; } -
Hi, I am starting with MySensors and I read about the NodeManager. But I have a problem with starting with the nodemanager. I tried to make a node with a BMP280 sensor and a NRF24. Every time I tried I got the following error message
when compiling (nodemanager actual version, arduino IDE1.8.5). Even no other sensor works.What is the reason, can anyone help me?
Arduino: 1.8.5 (Windows 10), Board: "Arduino Nano, ATmega328P" .... .... "C:\Users\Radfedfdf\AppData\Local\Arduino15\packages\arduino\tools\avr-gcc\4.9.2-atmel3.5.4-arduino2/bin/avr-gcc-ar" rcs "C:\Users\RADFE~1\AppData\Local\Temp\arduino_build_123539\core\core.a" "C:\Users\RADFE~1\AppData\Local\Temp\arduino_build_123539\core\main.cpp.o" "C:\Users\Radfedfdf\AppData\Local\Arduino15\packages\arduino\tools\avr-gcc\4.9.2-atmel3.5.4-arduino2/bin/avr-gcc-ar" rcs "C:\Users\RADFE~1\AppData\Local\Temp\arduino_build_123539\core\core.a" "C:\Users\RADFE~1\AppData\Local\Temp\arduino_build_123539\core\new.cpp.o" Archiving built core (caching) in: C:\Users\RADFE~1\AppData\Local\Temp\arduino_cache_196944\core\core_arduino_avr_nano_cpu_atmega328_2c22347d3c992515700a8fa0ae8526cf.a Linking everything together... "C:\Users\Radfedfdf\AppData\Local\Arduino15\packages\arduino\tools\avr-gcc\4.9.2-atmel3.5.4-arduino2/bin/avr-gcc" -w -Os -g -flto -fuse-linker-plugin -Wl,--gc-sections -mmcu=atmega328p -o "C:\Users\RADFE~1\AppData\Local\Temp\arduino_build_123539/NodeManager.ino.elf" "C:\Users\RADFE~1\AppData\Local\Temp\arduino_build_123539\sketch\NodeManager.ino.cpp.o" "C:\Users\RADFE~1\AppData\Local\Temp\arduino_build_123539\libraries\SPI\SPI.cpp.o" "C:\Users\RADFE~1\AppData\Local\Temp\arduino_build_123539\libraries\Wire\Wire.cpp.o" "C:\Users\RADFE~1\AppData\Local\Temp\arduino_build_123539\libraries\Wire\utility\twi.c.o" "C:\Users\RADFE~1\AppData\Local\Temp\arduino_build_123539\libraries\Adafruit_BMP280_Library-master\Adafruit_BMP280.cpp.o" "C:\Users\RADFE~1\AppData\Local\Temp\arduino_build_123539/core\core.a" "-LC:\Users\RADFE~1\AppData\Local\Temp\arduino_build_123539" -lm C:\Users\RADFE~1\AppData\Local\Temp\cc796L4N.ltrans1.ltrans.o: In function `receive(MyMessage const&)': C:\Users\RADFE~1\AppData\Local\Temp\arduino_modified_sketch_106015/NodeManager.ino:433: undefined reference to `NodeManager::receive(MyMessage const&)' C:\Users\RADFE~1\AppData\Local\Temp\cc796L4N.ltrans1.ltrans.o: In function `loop': C:\Users\RADFE~1\AppData\Local\Temp\arduino_modified_sketch_106015/NodeManager.ino:426: undefined reference to `NodeManager::loop()' C:\Users\RADFE~1\AppData\Local\Temp\cc796L4N.ltrans1.ltrans.o: In function `setup': C:\Users\RADFE~1\AppData\Local\Temp\arduino_modified_sketch_106015/NodeManager.ino:420: undefined reference to `NodeManager::setup()' C:\Users\RADFE~1\AppData\Local\Temp\cc796L4N.ltrans1.ltrans.o: In function `presentation()': C:\Users\RADFE~1\AppData\Local\Temp\arduino_modified_sketch_106015/NodeManager.ino:414: undefined reference to `NodeManager::presentation()' C:\Users\RADFE~1\AppData\Local\Temp\cc796L4N.ltrans1.ltrans.o: In function `before()': C:\Users\RADFE~1\AppData\Local\Temp\arduino_modified_sketch_106015/NodeManager.ino:408: undefined reference to `NodeManager::before()' C:\Users\RADFE~1\AppData\Local\Temp\cc796L4N.ltrans1.ltrans.o: In function `__static_initialization_and_destruction_0': C:\Users\RADFE~1\AppData\Local\Temp\arduino_modified_sketch_106015/NodeManager.ino:313: undefined reference to `NodeManager::NodeManager(int)' C:\Users\RADFE~1\AppData\Local\Temp\arduino_modified_sketch_106015/NodeManager.ino:351: undefined reference to `SensorBMP280::SensorBMP280(NodeManager&, int)' C:\Users\RADFE~1\AppData\Local\Temp\cc796L4N.ltrans1.ltrans.o: In function `_GLOBAL__sub_D__Z6hwInitv': C:\Users\Radfedfdf\Documents\Arduino\libraries\NodeManager_Library/NodeManagerLibrary.h:564: undefined reference to `vtable for Sensor' C:\Users\Radfedfdf\Documents\Arduino\libraries\NodeManager_Library/NodeManagerLibrary.h:564: undefined reference to `vtable for Sensor' collect2.exe: error: ld returned 1 exit status Mehrere Bibliotheken wurden für "Adafruit_BMP280.h" gefunden Benutzt: C:\Users\Radfedfdf\Documents\Arduino\libraries\Adafruit_BMP280_Library-master Nicht benutzt: C:\Users\Radfedfdf\Documents\Arduino\libraries\Adafruit_BMP280_Library Bibliothek NodeManager_Library im Ordner: C:\Users\Radfedfdf\Documents\Arduino\libraries\NodeManager_Library (legacy) wird verwendet Bibliothek MySensors in Version 2.2.0 im Ordner: C:\Users\Radfedfdf\Documents\Arduino\libraries\MySensors wird verwendet Bibliothek SPI in Version 1.0 im Ordner: C:\Users\Radfedfdf\AppData\Local\Arduino15\packages\arduino\hardware\avr\1.6.21\libraries\SPI wird verwendet Bibliothek Wire in Version 1.0 im Ordner: C:\Users\Radfedfdf\AppData\Local\Arduino15\packages\arduino\hardware\avr\1.6.21\libraries\Wire wird verwendet Bibliothek Adafruit_Unified_Sensor in Version 1.0.2 im Ordner: C:\Users\Radfedfdf\Documents\Arduino\libraries\Adafruit_Unified_Sensor wird verwendet Bibliothek Adafruit_BMP280_Library-master in Version 1.0.2 im Ordner: C:\Users\Radfedfdf\Documents\Arduino\libraries\Adafruit_BMP280_Library-master wird verwendet Ungültige Bibliothek C:\Users\Radfedfdf\Documents\Arduino\libraries\NodeManager_mod in C:\Users\Radfedfdf\Documents\Arduino\libraries\NodeManager_mod gefunden exit status 1 Fehler beim Kompilieren für das Board Arduino Nano. -
Hi, I am starting with MySensors and I read about the NodeManager. But I have a problem with starting with the nodemanager. I tried to make a node with a BMP280 sensor and a NRF24. Every time I tried I got the following error message
when compiling (nodemanager actual version, arduino IDE1.8.5). Even no other sensor works.What is the reason, can anyone help me?
Arduino: 1.8.5 (Windows 10), Board: "Arduino Nano, ATmega328P" .... .... "C:\Users\Radfedfdf\AppData\Local\Arduino15\packages\arduino\tools\avr-gcc\4.9.2-atmel3.5.4-arduino2/bin/avr-gcc-ar" rcs "C:\Users\RADFE~1\AppData\Local\Temp\arduino_build_123539\core\core.a" "C:\Users\RADFE~1\AppData\Local\Temp\arduino_build_123539\core\main.cpp.o" "C:\Users\Radfedfdf\AppData\Local\Arduino15\packages\arduino\tools\avr-gcc\4.9.2-atmel3.5.4-arduino2/bin/avr-gcc-ar" rcs "C:\Users\RADFE~1\AppData\Local\Temp\arduino_build_123539\core\core.a" "C:\Users\RADFE~1\AppData\Local\Temp\arduino_build_123539\core\new.cpp.o" Archiving built core (caching) in: C:\Users\RADFE~1\AppData\Local\Temp\arduino_cache_196944\core\core_arduino_avr_nano_cpu_atmega328_2c22347d3c992515700a8fa0ae8526cf.a Linking everything together... "C:\Users\Radfedfdf\AppData\Local\Arduino15\packages\arduino\tools\avr-gcc\4.9.2-atmel3.5.4-arduino2/bin/avr-gcc" -w -Os -g -flto -fuse-linker-plugin -Wl,--gc-sections -mmcu=atmega328p -o "C:\Users\RADFE~1\AppData\Local\Temp\arduino_build_123539/NodeManager.ino.elf" "C:\Users\RADFE~1\AppData\Local\Temp\arduino_build_123539\sketch\NodeManager.ino.cpp.o" "C:\Users\RADFE~1\AppData\Local\Temp\arduino_build_123539\libraries\SPI\SPI.cpp.o" "C:\Users\RADFE~1\AppData\Local\Temp\arduino_build_123539\libraries\Wire\Wire.cpp.o" "C:\Users\RADFE~1\AppData\Local\Temp\arduino_build_123539\libraries\Wire\utility\twi.c.o" "C:\Users\RADFE~1\AppData\Local\Temp\arduino_build_123539\libraries\Adafruit_BMP280_Library-master\Adafruit_BMP280.cpp.o" "C:\Users\RADFE~1\AppData\Local\Temp\arduino_build_123539/core\core.a" "-LC:\Users\RADFE~1\AppData\Local\Temp\arduino_build_123539" -lm C:\Users\RADFE~1\AppData\Local\Temp\cc796L4N.ltrans1.ltrans.o: In function `receive(MyMessage const&)': C:\Users\RADFE~1\AppData\Local\Temp\arduino_modified_sketch_106015/NodeManager.ino:433: undefined reference to `NodeManager::receive(MyMessage const&)' C:\Users\RADFE~1\AppData\Local\Temp\cc796L4N.ltrans1.ltrans.o: In function `loop': C:\Users\RADFE~1\AppData\Local\Temp\arduino_modified_sketch_106015/NodeManager.ino:426: undefined reference to `NodeManager::loop()' C:\Users\RADFE~1\AppData\Local\Temp\cc796L4N.ltrans1.ltrans.o: In function `setup': C:\Users\RADFE~1\AppData\Local\Temp\arduino_modified_sketch_106015/NodeManager.ino:420: undefined reference to `NodeManager::setup()' C:\Users\RADFE~1\AppData\Local\Temp\cc796L4N.ltrans1.ltrans.o: In function `presentation()': C:\Users\RADFE~1\AppData\Local\Temp\arduino_modified_sketch_106015/NodeManager.ino:414: undefined reference to `NodeManager::presentation()' C:\Users\RADFE~1\AppData\Local\Temp\cc796L4N.ltrans1.ltrans.o: In function `before()': C:\Users\RADFE~1\AppData\Local\Temp\arduino_modified_sketch_106015/NodeManager.ino:408: undefined reference to `NodeManager::before()' C:\Users\RADFE~1\AppData\Local\Temp\cc796L4N.ltrans1.ltrans.o: In function `__static_initialization_and_destruction_0': C:\Users\RADFE~1\AppData\Local\Temp\arduino_modified_sketch_106015/NodeManager.ino:313: undefined reference to `NodeManager::NodeManager(int)' C:\Users\RADFE~1\AppData\Local\Temp\arduino_modified_sketch_106015/NodeManager.ino:351: undefined reference to `SensorBMP280::SensorBMP280(NodeManager&, int)' C:\Users\RADFE~1\AppData\Local\Temp\cc796L4N.ltrans1.ltrans.o: In function `_GLOBAL__sub_D__Z6hwInitv': C:\Users\Radfedfdf\Documents\Arduino\libraries\NodeManager_Library/NodeManagerLibrary.h:564: undefined reference to `vtable for Sensor' C:\Users\Radfedfdf\Documents\Arduino\libraries\NodeManager_Library/NodeManagerLibrary.h:564: undefined reference to `vtable for Sensor' collect2.exe: error: ld returned 1 exit status Mehrere Bibliotheken wurden für "Adafruit_BMP280.h" gefunden Benutzt: C:\Users\Radfedfdf\Documents\Arduino\libraries\Adafruit_BMP280_Library-master Nicht benutzt: C:\Users\Radfedfdf\Documents\Arduino\libraries\Adafruit_BMP280_Library Bibliothek NodeManager_Library im Ordner: C:\Users\Radfedfdf\Documents\Arduino\libraries\NodeManager_Library (legacy) wird verwendet Bibliothek MySensors in Version 2.2.0 im Ordner: C:\Users\Radfedfdf\Documents\Arduino\libraries\MySensors wird verwendet Bibliothek SPI in Version 1.0 im Ordner: C:\Users\Radfedfdf\AppData\Local\Arduino15\packages\arduino\hardware\avr\1.6.21\libraries\SPI wird verwendet Bibliothek Wire in Version 1.0 im Ordner: C:\Users\Radfedfdf\AppData\Local\Arduino15\packages\arduino\hardware\avr\1.6.21\libraries\Wire wird verwendet Bibliothek Adafruit_Unified_Sensor in Version 1.0.2 im Ordner: C:\Users\Radfedfdf\Documents\Arduino\libraries\Adafruit_Unified_Sensor wird verwendet Bibliothek Adafruit_BMP280_Library-master in Version 1.0.2 im Ordner: C:\Users\Radfedfdf\Documents\Arduino\libraries\Adafruit_BMP280_Library-master wird verwendet Ungültige Bibliothek C:\Users\Radfedfdf\Documents\Arduino\libraries\NodeManager_mod in C:\Users\Radfedfdf\Documents\Arduino\libraries\NodeManager_mod gefunden exit status 1 Fehler beim Kompilieren für das Board Arduino Nano.@cpl_ir super weird, looks like the linker cannot find NodeManager's object file. Are you sure all NodeManager's files are within the same directory? NodeManager cannot be installed as a standard Arduino's library but all the files need to be in the same directory of your main sketch. Thanks!
-
Hello, I have been experimenting with the door sensor example and have configured to wake up every hour to send a battery voltage (V_VOLTAGE)
It will also wake whenever the interrupt state on the switch pin changes. I noticed that when the node wakes up with an interrupt it seems to send three events:
I_POST_SLEEP_NOTIFICATION
V_TRIPPED (this is the important one)
I_PRE_SLEEP_NOTIFICATION
this is all good, however for my application it would be useful if it were to also send a V_VOLTAGE battery measurement along with the V_TRIPPED event.
I'm not yet completely familiar with how the nodemanager sketch links together, but is it possible for the sensor readings for all sensors to be sent on an interrupt from any other sensor so I can make use of the radio as much as possible? -
Hello, I have been experimenting with the door sensor example and have configured to wake up every hour to send a battery voltage (V_VOLTAGE)
It will also wake whenever the interrupt state on the switch pin changes. I noticed that when the node wakes up with an interrupt it seems to send three events:
I_POST_SLEEP_NOTIFICATION
V_TRIPPED (this is the important one)
I_PRE_SLEEP_NOTIFICATION
this is all good, however for my application it would be useful if it were to also send a V_VOLTAGE battery measurement along with the V_TRIPPED event.
I'm not yet completely familiar with how the nodemanager sketch links together, but is it possible for the sensor readings for all sensors to be sent on an interrupt from any other sensor so I can make use of the radio as much as possible?@arthurdented the I_POST_SLEEP_NOTIFICATION and I_PRE_SLEEP_NOTIFICATION are due to smart sleep which is on by default. Regarding the V_VOLTAGE I think what it comes closer to your need would be a SensorBattery configured with a very short reporting interval but regardless, when an interrupt occurs, no sensors other than the one associated with the interrupt would execute their main function. For your specific use case you can try changing or tweaking the condition at this line to make it working in the way you need: https://github.com/mysensors/NodeManager/blob/master/NodeManagerLibrary.ino#L4700