Read the statement by Michael Teeuw here.
Garage Door Detectors
-
@morozgrafix Ok I understand the principle. I will try to look at this but I do not have enough skills.
On the way to create a module “MMM-doors-sensor”
-
I have create a MMM-door-sensor ‘module’
https://github.com/istepgueu/MMM-door-sensorThe module receive SHOW_ALERT and HIDE_ALERT from MMM-Buttons but I do not know how to show such or such text (Toto/Tata) according to the received notification.
Any help is welcome.
Thank you very much ;) -
@istepgueu you need a getDom function where you render your images.
then in the notification received save the state in variables then call updateDom.
in getDom you render the images based on the state
-
@strawberry-3.141
Thank you for the help !
I understand the principle but not knowing javascript, I have a little trouble with the variables.This is my (not working) code :
/* global Module */ /* Magic Mirror * Module: MMM-door-sensor * * By iStepgueu http://www.twitter.com/istepgueu * MIT Licensed. */ Module.register("MMM-door-sensor",{ // Default module config. defaults: { text: "Hello World!" }, // Define start sequence. start: function() { Log.info("Starting module: " + this.name); }, notificationReceived: function(notification, payload, sender) { if (sender) { Log.log(this.name + " received a module notification: " + notification + " from sender: " + sender.name); if (notification === "REMOTE_ACTION") { this.sendSocketNotification(notification, payload); var door_state = "close.png"; this.updateDom(); } } else { if (notification === "DOM_OBJECTS_CREATED") { this.sendSocketNotification("REQUEST_DEFAULT_SETTINGS"); var door_state = "open.png"; this.updateDom(); } } }, getDom: function() { var wrapper = document.createElement("div"); return door_state; wrapper.innerHTML = '<img src=" + door_state + " />'; return wrapper; } });
-
Module.register("MMM-door-sensor",{ // Default module config. defaults: { text: "Hello World!" }, // Define start sequence. start: function() { Log.info("Starting module: " + this.name); }, notificationReceived: function(notification, payload, sender) { if (sender) { Log.log(this.name + " received a module notification: " + notification + " from sender: " + sender.name); if (notification === "DOOR_STATE") { this.door_state = payload; this.updateDom(); } } }, getDom: function() { var wrapper = document.createElement("div"); if(this.door_state){ wrapper.innerHTML = '<img src=" + this.door_state + " />'; } else { wrapper.innerHTML = 'No door state present.'; } return wrapper; } });
config mmm-button
{ pin: 24, name: "power", longPress: { title: "Power off", message: "Keep pressed for 3 seconds to shut down", imageFA: "power-off", notification: "DOOR_STATE", payload: "close.png" }, shortPress: undefined }
you would therefore need a button released to send open.png
-
@strawberry-3.141 Thank you !! It’s working :-)
-
I like the MMM-door-sensor module, and I see that it uses notificationReceived to change the icon, but how do you send a notification to the module? I have tried this.sendNotification but I cannot seem to get it to work…