Read the statement by Michael Teeuw here.
MMM-Energy-Saver - an easy way to suspend/resume modules based on a PIR sensor.
-
In my MMM-SleepWake module I do module.hide(). Not suspend
I do this cause I cannot turn off/on my TV monitor, and no HDMI signal generates the ugly no input screen
I use a camera for motion detection
-
@agp42 said in MMM-Energy-Saver - an easy way to suspend/resume modules based on a PIR sensor.:
Hello,
interesting module, I worked myself too a lot about this topic for my Mirror, but the main problem was that most of the module don’t define the suspend/resume functions, and consequently even when they are hidden they continue to run in background and request to update their datas…
So my solution was to update most of the module I am using to add suspend/resume function to stop the update according to the module.hidden and the notification “USER_PRESENCE” (sent by the PIR sensor module).Did you find a smarter way ?
What is your module really doing to save the energy ?Thank you for your clues !
So … the
mmm-energy-saver
module really does 2 things:-
It allows you to create a simple daily schedule where all modules are
hidden
and where your monitor is turned off. For instance, on my own mirror, this is set to take place between midnight and 7 am. During this time, any notifications from your motion sensor is ignored. -
Outside of this schedule (
deepsleep
), it continually listens for theUSER_PRESENCE
notification from themmm-pir-sensor
module. When this notification is received it shows all modules (if they were previously hidden) and runs a timer in the background. If the timer runs out before any newUSER_PRESENCE
notifications are received, this module then hides all other modules on the mirror.
But this doesn’t solve the issue that you also mention - even though a module is hidden, most modules continue to load data in the background - which is a huge waste.
So I did the same thing as you - I updated all my own modules to extend the standard
suspend
andresume
functionality that already exists in the magic mirror framework.You can see example code here:
https://github.com/michael5r/mmm-nest-status/blob/fcbf291a26374e32901e993f9e109465819f59bf/mmm-nest-status.js#L613Basically, when the
suspend
command is received, I set a module state calledsleeping
which also stops the module from getting new data.When the
resume
command is received, thesleeping
state is set to false and it immediately polls for fresh module data.Would be nice if more modules supported this behavior!
-
-
@sdetweil It’s the same thing, though - when do you
module.hide()
, you trigger thesuspend
method for that particular module. -
@michael5r also note that modules can be hidden on purpose. So wakeup should not show all modules.
My MMM-SleepWake saves a list of modules already hidden on sleep.
This also works across sleep/wake voice commands by MMM-voice/lucy
-
@michael5r understand and agree
-
@sdetweil said in MMM-Energy-Saver - an easy way to suspend/resume modules based on a PIR sensor.:
@michael5r also note that modules can be hidden on purpose. So wakeup should not show all modules.
My MMM-SleepWake saves a list of modules already hidden on sleep.
This also works across sleep/wake voice commands by MMM-voice/lucy
Sure - and in that case, the
mmm-energy-saver
module probably isn’t a good fit. But it works great when you only need to do what I describe above :) -
how should the MMM-Pir-Sensor be set up for this module to work?
This is my code:{ module: 'MMM-PIR-Sensor', config: { sensorPin: "23", // See 'Configuration options' for more information. } }, { module: "mmm-energy-saver", config: { triggerMonitor: "true", timeoutInSeconds: "3", // ... whatever configuration options you want to use } },
-
@jordes said in MMM-Energy-Saver - an easy way to suspend/resume modules based on a PIR sensor.:
how should the MMM-Pir-Sensor be set up for this module to work?
This is my code:{ module: 'MMM-PIR-Sensor', config: { sensorPin: "23", // See 'Configuration options' for more information. } }, { module: "mmm-energy-saver", config: { triggerMonitor: "true", timeoutInSeconds: "3", // ... whatever configuration options you want to use } },
This is how I have mine set up:
{ module: 'MMM-PIR-Sensor', config: { sensorPin: 17, powerSavingDelay: 0, powerSavingNotification: false, powerSaving: false // Should the monitor be turned off if no user is present? (via HDMI or relay) } },