Read the statement by Michael Teeuw here.
MMM-xiaomi - Temperature and Humidity from your smarthome
-
Hi Mirko! Thanks for your reply!
Before and after I uncommented the line 51 and restartet MM.
Still with the old Tokenpi@MagicMirror:~ $ miio --discover --sync INFO Discovering devices. Press Ctrl+C to stop. Device ID: 52238776 Model info: Unknown Address: 192.168.2.107 Token: 6eea5ac1eb475bfedbfff98aab7c2bc7 via stored token Support: Unknown (node:25652) UnhandledPromiseRejectionWarning: Unhandled promise rejection (rejection id: 1): Error: Call to device timed outBut right now after uncommenting the line the error log is different. In the log i can already see the Temperature and humidity (_properties: { temperature: 19.51, humidity: 62.44 },)!! The next step!
> magicmirror@2.1.3 start /home/pi/MagicMirror > sh run-start.sh Starting MagicMirror: v2.1.3 Loading config ... Loading module helpers ... No helper found for module: alert. No helper found for module: clock. Initializing new module helper ... Module helper loaded: calendar No helper found for module: currentweather. No helper found for module: weatherforecast. Initializing new module helper ... Module helper loaded: MMM-DWD-WarnWeather Initializing new module helper ... Module helper loaded: MMM-PNews Initializing new module helper ... Module helper loaded: newsfeed Initializing new module helper ... Module helper loaded: MMM-Remote-Control No helper found for module: MMM-Remote-Control-Repository. Initializing new module helper ... Module helper loaded: internet-monitor Initializing new module helper ... Module helper loaded: MMM-MovieListings Initializing new module helper ... Module helper loaded: MMM-Fuel Initializing new module helper ... Module helper loaded: MMM-NetworkScanner Initializing new module helper ... Module helper loaded: MMM-nasaastropic Initializing new module helper ... Module helper loaded: MMM-SystemStats Initializing new module helper ... Module helper loaded: MMM-Departures No helper found for module: MMM-Carousel. Initializing new module helper ... Module helper loaded: MMM-Events Initializing new module helper ... Module helper loaded: MMM-xiaomi All module helpers loaded. Starting server on port 8080 ... You're using a full whitelist configuration to allow for all IPs Server started ... Connecting socket for: calendar Starting node helper for: calendar Connecting socket for: MMM-DWD-WarnWeather MMM-DWD-WarnWeather helper started... Connecting socket for: MMM-PNews Starting module: MMM-PNews Connecting socket for: newsfeed Starting module: newsfeed Connecting socket for: MMM-Remote-Control Starting node helper for: MMM-Remote-Control Connecting socket for: internet-monitor internet-monitor helper started ... Connecting socket for: MMM-MovieListings MMM-MovieListing helper started... Connecting socket for: MMM-Fuel Starting module helper: MMM-Fuel Connecting socket for: MMM-NetworkScanner Starting module: MMM-NetworkScanner Connecting socket for: MMM-nasaastropic Starting node helper: MMM-nasaastropic Connecting socket for: MMM-SystemStats Connecting socket for: MMM-Departures Connecting socket for: MMM-Events Starting node_helper for: MMM-Events Connecting socket for: MMM-xiaomi Starting xiaomi helper Sockets connected & modules started ... Launching application. Create new calendar fetcher for url: https://calendar.google.com/calendar/ical/htc.one.m2304%40gmail.com/private-;-)/basic.ics - Interval: 300000 Create new news fetcher for url: http://www.haz.de/rss/feed/haz_schlagzeilen - Interval: 300000 Create new news fetcher for url: http://www.spiegel.de/schlagzeilen/index.rss - Interval: 300000 starting internet monitor node helper MMM-NetworkScanner received CONFIG astro helper: config received retrieveAndUpdate() Triggering Xiaomi Gateway upate MMM-Departures error: Error: getaddrinfo ENOTFOUND transportrest-sbiermann.rhcloud.com transportrest-sbiermann.rhcloud.com:80 NASA Astro Pic of the Day URL: https://apod.nasa.gov/apod/image/1711/m5_hubblesmessier1024c.jpg Magnet { domain: null, _events: {}, _eventsCount: 0, _maxListeners: undefined, model: 'lumi.magnet', id: '158d000119fcb2', type: 'magnet', capabilities: [], _properties: {}, _propertiesToMonitor: [], _propertyDefinitions: {}, _parent: Gateway { domain: null, _events: {}, _eventsCount: 0, _maxListeners: undefined, id: undefined, type: 'gateway', model: 'lumi.gateway.v3', capabilities: [ 'color:rgb', 'brightness', 'sensor', 'illuminance' ], address: '192.168.2.107', port: 54321, writeOnly: false, packet: Packet { header: , _serverStampTime: 1509842296639, _token: , _tokenKey: , _tokenIV: , data: , _serverStamp: 48587 }, socket: Socket { domain: null, _events: [Object], _eventsCount: 1, _maxListeners: undefined, _handle: [Object], _receiving: true, _bindState: 2, type: 'udp4', fd: -42, _reuseAddr: undefined, _queue: undefined }, _id: 4, _promises: {}, _hasFailedToken: false, _properties: { illuminance: 307, rgb: [Object], brightness: 0 }, _propertiesToMonitor: [ 'illumination', 'rgb' ], _propertyDefinitions: { illumination: [Object], rgb: [Object] }, _reversePropertyDefinitions: { illuminance: 'illumination' }, _loadProperties: [Function: bound _loadProperties], management: DeviceManagement { device: [Circular] }, debug: { [Function: debug] namespace: 'miio.device.[192.168.2.107]', enabled: false, useColors: false, color: 1, inspectOpts: {} }, _devices: { '158d000119fcb2': [Object], '158d00013e28ee': [Object], '158d00015aa973': [Object], '158d00015736a8': [Object] }, _monitorInterval: 60000, _propertyMonitor: Timeout { _called: false, _idleTimeout: 60000, _idlePrev: [Object], _idleNext: [Object], _idleStart: 69767, _onTimeout: [Function: bound _loadProperties], _timerArgs: undefined, _repeat: 60000 }, _lastToken: 1509842294044, _developerKey: 'xqbs1fvtsq6x4oby', devApi: DeveloperApi { domain: null, _events: [Object], _eventsCount: 2, _maxListeners: undefined, address: '192.168.2.107', debug: [Object], socket: [Object], devices: [], ready: false }, setRGB: [Function], setBrightness: [Function], _deviceListTimer: Timeout { _called: false, _idleTimeout: 1800000, _idlePrev: [Object], _idleNext: [Object], _idleStart: 72417, _onTimeout: [Function: bound _updateDeviceList], _timerArgs: undefined, _repeat: 1800000 } }, management: SubDeviceManagement { _device: [Circular] }, debug: { [Function: debug] namespace: 'miio.device.[192.168.2.107].158d000119fcb2', enabled: false, useColors: false, color: 1, inspectOpts: {} } } Switch { domain: null, _events: {}, _eventsCount: 0, _maxListeners: undefined, model: 'lumi.switch', id: '158d00015aa973', type: 'controller', capabilities: [], _properties: {}, _propertiesToMonitor: [], _propertyDefinitions: {}, _parent: Gateway { domain: null, _events: {}, _eventsCount: 0, _maxListeners: undefined, id: undefined, type: 'gateway', model: 'lumi.gateway.v3', capabilities: [ 'color:rgb', 'brightness', 'sensor', 'illuminance' ], address: '192.168.2.107', port: 54321, writeOnly: false, packet: Packet { header: , _serverStampTime: 1509842296639, _token: , _tokenKey: , _tokenIV: , data: , _serverStamp: 48587 }, socket: Socket { domain: null, _events: [Object], _eventsCount: 1, _maxListeners: undefined, _handle: [Object], _receiving: true, _bindState: 2, type: 'udp4', fd: -42, _reuseAddr: undefined, _queue: undefined }, _id: 4, _promises: {}, _hasFailedToken: false, _properties: { illuminance: 307, rgb: [Object], brightness: 0 }, _propertiesToMonitor: [ 'illumination', 'rgb' ], _propertyDefinitions: { illumination: [Object], rgb: [Object] }, _reversePropertyDefinitions: { illuminance: 'illumination' }, _loadProperties: [Function: bound _loadProperties], management: DeviceManagement { device: [Circular] }, debug: { [Function: debug] namespace: 'miio.device.[192.168.2.107]', enabled: false, useColors: false, color: 1, inspectOpts: {} }, _devices: { '158d000119fcb2': [Object], '158d00013e28ee': [Object], '158d00015aa973': [Object], '158d00015736a8': [Object] }, _monitorInterval: 60000, _propertyMonitor: Timeout { _called: false, _idleTimeout: 60000, _idlePrev: [Object], _idleNext: [Object], _idleStart: 69767, _onTimeout: [Function: bound _loadProperties], _timerArgs: undefined, _repeat: 60000 }, _lastToken: 1509842294044, _developerKey: 'xqbs1fvtsq6x4oby', devApi: DeveloperApi { domain: null, _events: [Object], _eventsCount: 2, _maxListeners: undefined, address: '192.168.2.107', debug: [Object], socket: [Object], devices: [], ready: false }, setRGB: [Function], setBrightness: [Function], _deviceListTimer: Timeout { _called: false, _idleTimeout: 1800000, _idlePrev: [Object], _idleNext: [Object], _idleStart: 72417, _onTimeout: [Function: bound _updateDeviceList], _timerArgs: undefined, _repeat: 1800000 } }, management: SubDeviceManagement { _device: [Circular] }, debug: { [Function: debug] namespace: 'miio.device.[192.168.2.107].158d00015aa973', enabled: false, useColors: false, color: 3, inspectOpts: {} } } SensorHT { domain: null, _events: {}, _eventsCount: 0, _maxListeners: undefined, model: 'lumi.sensor_ht', id: '158d00015736a8', type: 'sensor', capabilities: [ 'sensor', 'temperature', 'humidity' ], _properties: { temperature: 19.51, humidity: 62.44 }, _propertiesToMonitor: [ 'temperature', 'humidity' ], _propertyDefinitions: { temperature: { mapper: [Function] }, humidity: { mapper: [Function] } }, _parent: Gateway { domain: null, _events: {}, _eventsCount: 0, _maxListeners: undefined, id: undefined, type: 'gateway', model: 'lumi.gateway.v3', capabilities: [ 'color:rgb', 'brightness', 'sensor', 'illuminance' ], address: '192.168.2.107', port: 54321, writeOnly: false, packet: Packet { header: , _serverStampTime: 1509842296639, _token: , _tokenKey: , _tokenIV: , data: , _serverStamp: 48587 }, socket: Socket { domain: null, _events: [Object], _eventsCount: 1, _maxListeners: undefined, _handle: [Object], _receiving: true, _bindState: 2, type: 'udp4', fd: -42, _reuseAddr: undefined, _queue: undefined }, _id: 4, _promises: {}, _hasFailedToken: false, _properties: { illuminance: 307, rgb: [Object], brightness: 0 }, _propertiesToMonitor: [ 'illumination', 'rgb' ], _propertyDefinitions: { illumination: [Object], rgb: [Object] }, _reversePropertyDefinitions: { illuminance: 'illumination' }, _loadProperties: [Function: bound _loadProperties], management: DeviceManagement { device: [Circular] }, debug: { [Function: debug] namespace: 'miio.device.[192.168.2.107]', enabled: false, useColors: false, color: 1, inspectOpts: {} }, _devices: { '158d000119fcb2': [Object], '158d00013e28ee': [Object], '158d00015aa973': [Object], '158d00015736a8': [Object] }, _monitorInterval: 60000, _propertyMonitor: Timeout { _called: false, _idleTimeout: 60000, _idlePrev: [Object], _idleNext: [Object], _idleStart: 69767, _onTimeout: [Function: bound _loadProperties], _timerArgs: undefined, _repeat: 60000 }, _lastToken: 1509842294044, _developerKey: 'xqbs1fvtsq6x4oby', devApi: DeveloperApi { domain: null, _events: [Object], _eventsCount: 2, _maxListeners: undefined, address: '192.168.2.107', debug: [Object], socket: [Object], devices: [], ready: false }, setRGB: [Function], setBrightness: [Function], _deviceListTimer: Timeout { _called: false, _idleTimeout: 1800000, _idlePrev: [Object], _idleNext: [Object], _idleStart: 72417, _onTimeout: [Function: bound _updateDeviceList], _timerArgs: undefined, _repeat: 1800000 } }, management: SubDeviceManagement { _device: [Circular] }, debug: { [Function: debug] namespace: 'miio.device.[192.168.2.107].158d00015736a8', enabled: false, useColors: false, color: 6, inspectOpts: {} } } -
One more. When I run the MM as standalone server (node serveronly) I get this in the Browser console:
MMM-xiaomi.js:28 received XIAOMI_DATA MMM-xiaomi.js:212 Uncaught TypeError: Cannot read property 'id' of null at Class. (MMM-xiaomi.js:212) at Function.each (jquery-2.2.3.min.js:2) at Class.renderText (MMM-xiaomi.js:210) at Class.render (MMM-xiaomi.js:100) at Class.socketNotificationReceived (MMM-xiaomi.js:29) at module.js:183 at r. (socketclient.js:25) at r.emit (index.js:133) at r.onevent (socket.js:270) at r.MMSocket.self.socket.onevent (socketclient.js:19) (anonymous) @ MMM-xiaomi.js:212 each @ jquery-2.2.3.min.js:2 renderText @ MMM-xiaomi.js:210 render @ MMM-xiaomi.js:100 socketNotificationReceived @ MMM-xiaomi.js:29 (anonymous) @ module.js:183 (anonymous) @ socketclient.js:25 r.emit @ index.js:133 r.onevent @ socket.js:270 MMSocket.self.socket.onevent @ socketclient.js:19 r.onpacket @ socket.js:228 (anonymous) @ index.js:21 r.emit @ index.js:133 r.ondecoded @ manager.js:345 (anonymous) @ index.js:21 r.emit @ index.js:133 s.add @ index.js:241 r.ondata @ manager.js:335 (anonymous) @ index.js:21 r.emit @ index.js:133 r.onPacket @ socket.js:457 (anonymous) @ socket.js:274 r.emit @ index.js:133 r.onPacket @ transport.js:145 r.onData @ transport.js:137 ws.onmessage @ websocket.js:147 -
Try the latest update (git pull), I just checked for null items - even i that should not happen.
-
I did so. Restarted MM.
No errors in the logs.mm out:
Triggering Xiaomi Gateway upate Found device with ID 158d000119fcb2 of type magnet Found device with ID 158d00015aa973 of type controller Found device with ID 158d00015736a8 of type sensorThis I got from the Browser Debug:
main.js:404 Initializing MagicMirror. translator.js:197 Loading core translation file: translations/de.json translator.js:219 Loading core translation fallback file: translations/en.json loader.js:182 Load script: modules/MMM-xiaomi//MMM-xiaomi.js module.js:406 Check MagicMirror version for module 'MMM-xiaomi' - Minimum version: 2.0.0 - Current version: 2.1.3 module.js:408 Version is ok! module.js:414 Module registered: MMM-xiaomi loader.js:152 Bootstrapping module: MMM-xiaomi loader.js:182 Load script: modules/MMM-xiaomi/String.format.js String.format.js Failed to load resource: the server responded with a status of 404 (Not Found) loader.js:190 Error on loading script: modules/MMM-xiaomi/String.format.js script.onerror @ loader.js:190 loader.js:182 Load script: https://code.jquery.com/jquery-2.2.3.min.js loader.js:157 Scripts loaded for: MMM-xiaomi loader.js:197 Load stylesheet: modules/MMM-xiaomi/MMM-xiaomi.css loader.js:159 Styles loaded for: MMM-xiaomi loader.js:161 Translations loaded for: MMM-xiaomi loader.js:197 Load stylesheet: css/custom.css MMM-xiaomi.js:35 Starting module: MMM-xiaomi main.js:422 All modules started! module.js:117 MMM-xiaomi received a system notification: ALL_MODULES_STARTED module.js:117 MMM-xiaomi received a system notification: DOM_OBJECTS_CREATED MMM-xiaomi.js:28 received XIAOMI_DATA MMM-xiaomi.js:242 Uncaught TypeError: this.html.col.format is not a function at Class. (MMM-xiaomi.js:242) at Function.each (jquery-2.2.3.min.js:2) at Class.renderText (MMM-xiaomi.js:210) at Class.render (MMM-xiaomi.js:100) at Class.socketNotificationReceived (MMM-xiaomi.js:29) at module.js:183 at r. (socketclient.js:25) at r.emit (index.js:133) at r.onevent (socket.js:270) at r.MMSocket.self.socket.onevent (socketclient.js:19) -
Ok, now another try :) Forgot to add utility class which was already present from other modules on my instance. Please update from GIT.
-
Sometimes a pictures tells you more than words…

You did it! Great job! Thank you! :-)
Next step are to integrate te Yeelights ;-)
-
Good to hear! :)
Suggestions welcome, I have just added ventilation recommendation(see latest update), will also add window sensors - but still unsure how to visualize all that information. Suggestions welcome!
-
Looking forward to see the window sensors! I would like to see the current state & the last change of it. Are you planing something like this?
Name State Last change Kitchen closed 1.Nov. 18:01What I would like to see on my mirror as well are the sate of the Yeelights ( on / off)
-
So, sadly the german customs took my whole order from China.
:(
No CE sign, no german manual, wirless connection needs to be tested…
i could puke.Can someone recommend a company i can order from germany, without getting to the customs (EU-Warenlager) ?
-
@barnosch
So sad. I want to know also, is there good IoT set for home in EU(Germany).
I’ve tested some “Jinvoo” (another Chinese product?), it works somehow, but API is not opened. -
Most of my Chinese stuff I get from gearbest.com If you choose „Standard Shipping > Germany Express“ you won’t get any problems. Watch out for mi smart home bundles on there website.
-
The order was from gearbest .
Usually you have to choose “priority line” to get it without problems.
It wasn’t available at this time for the ordered stuff.
So i made the mistake.
But anycase, my problem. Don’t want to highjack the thread with some customs problems.Found now a dealer to order the gateway from EU-warehouse and another dealer to get the sensors via Belgium.
Hopeing for the best ;) -
I just recieved my order of another 6 window sensors yesterday :) But I really think they will shut this down soon, guess they (gearbest) are not paying any taxes at all…
Working on the new version, this is what I have in mind:

-
This looks great! As far as I understand there is for every room a thermometer & humidity with trent, light indicator (Yeelight?) and Windows sensors? Pretty nice!
Are you going to release this as a new module, or as a change of the old one? I would prefer a new module, because this one takes a lot of space and is hardly to integrate in a single screen. I
But I really think they will shut this down soon, guess they (gearbest) are not paying any taxes at all…I think the same. It already took more time to receive and it’s getting less products you can order with „Standard Shipping > Germany Express“
-
I’m in the US and I ordered from Gearbest and did not will not again… I put in my order and it I never got what I ordered so I put a claim in against them … they told me ‘well we now have the items in stock so if you drop your claim…’
According to their site the stuff I ordered was already in stock… when I ordered them.
I said uhhhhhh no. So they refunded me…and I ordered them from another company and hopefully they’ll be here next week :) They shipped them right out and gave me a tracking number… Gearbest… I don’t trust them.
-
@mirko3000 said in MMM-xiaomi - Temperature and Humidity from your smarthome:
window sensors
What is the module your door/window sensors? I find two but not sure which ones to use here.
-
I have the Xiaomi. I don’t think there is a difference apart from the design:
Xiaomi vs Aqara door/window sensors -
So.
At least 4 Temperature sensors arrived today. Waiting for the gateway which comes another way.looks great @mirko3000
Really looking forward for it.I hate waiting for stuff…
-
Ok, get ready to test the latest version! I kept the current table view for now, still planning to also support a grid view soon.
New features:- Listens to update events of the sensors instead of refreshing the whole list all x seconds
- Reorganized your smart home structure, introducing rooms with sensors
- Shows ventilation recommendation, window open state and light on state per rooms
Looking forward to get some feedback. As I do not have any lights at the moment this is untested.
Not for the update: you will need to execute “npm install” again as I had to fork the miio library to support the events (maybe even delete the node_modules folder in your modules directory). Also you need to update your module configuration!
-
WOW this is really awesome! Thank you for your hard work. Looking forward to getting my sensors… should be here next week I hope

Hello! It looks like you're interested in this conversation, but you don't have an account yet.
Getting fed up of having to scroll through the same posts each visit? When you register for an account, you'll always come back to exactly where you were before, and choose to be notified of new replies (either via email, or push notification). You'll also be able to save bookmarks and upvote posts to show your appreciation to other community members.
With your input, this post could be even better 💗
Register Login