• Recent
  • Tags
  • Unsolved
  • Solved
  • MagicMirror² Repository
  • Documentation
  • 3rd-Party-Modules
  • Donate
  • Discord
  • Register
  • Login
MagicMirror Forum
  • Recent
  • Tags
  • Unsolved
  • Solved
  • MagicMirror² Repository
  • Documentation
  • 3rd-Party-Modules
  • Donate
  • Discord
  • Register
  • Login
A New Chapter for MagicMirror: The Community Takes the Lead
Read the statement by Michael Teeuw here.

MMM-xiaomi - Temperature and Humidity from your smarthome

Scheduled Pinned Locked Moved Utilities
141 Posts 27 Posters 186.0k Views 27 Watching
Loading More Posts
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • A Offline
    Albert2002
    last edited by Albert2002 Nov 4, 2017, 11:50 AM Nov 4, 2017, 11:44 AM

    I did the steps again to get the (new) Token. Now, I have a new Token and the Gateway again in my Mi Home app. I didn’t updated the Token on the different machine this time.

    I’ve tried out your new config. I still don’t see more than before on the MM, but I don’t have an error log as well, which make it a bit more harder.

    I have checked the IP address of the Gateway, its still the same. Dev is still enabled.

    My config with the new Token.

    		{
    		module: 'MMM-xiaomi',
    		position: 'bottom_left',
    		header: 'Temperatur / Feuchtigkeit',  // This is optional
    		config: {
    			interval: 30,
    			gatewayIP: '192.168.2.107',
    			gatewayToken: '050591e66a82f7adc92bfa6b03058cdb',
    			devices: [{ id: '158d00015736a8', name: 'Wohnzimmer' }]
    			// See 'Configuration options' for more information.
    				}
    		},
    

    Edit:

    I get a error when I try to discover with miio:

    pi@MagicMirror:~/MagicMirror/modules/MMM-xiaomi/node_modules/miio $ miio --discover
     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:3626) UnhandledPromiseRejectionWarning: Unhandled promise rejection (rejection id: 1): Error: Call to device timed out
    
    
    1 Reply Last reply Reply Quote 0
    • A Offline
      Albert2002
      last edited by Nov 4, 2017, 11:55 AM

      Where did miio stored the Token?
      The Token Miio used “Token: 6eea5ac1eb475bfedbfff98aab7c2bc7 via stored token”
      is the old one! the new one is 050591e66a82f7adc92bfa6b03058cdb

      1 Reply Last reply Reply Quote 0
      • M Offline
        mirko3000
        last edited by Nov 4, 2017, 4:32 PM

        Hmm not sure about miio details, I just know that you can sync the tokens via

        miio --discover --sync
        

        Else I would try manually setting to the correct (new) token.
        For the MM: try to uncomment line 51 in node_helper.js, this logs all found devices. You could also add some more logs here to see where the program fails.

        1 Reply Last reply Reply Quote 0
        • A Offline
          Albert2002
          last edited by Nov 5, 2017, 12:49 AM

          Hi Mirko! Thanks for your reply!

          Before and after I uncommented the line 51 and restartet MM.
          Still with the old Token

          pi@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 out
          
          

          But 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: {} } }
          
          
          1 Reply Last reply Reply Quote 0
          • A Offline
            Albert2002
            last edited by Nov 5, 2017, 1:17 AM

            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
            
            1 Reply Last reply Reply Quote 0
            • M Offline
              mirko3000
              last edited by Nov 5, 2017, 7:57 AM

              Try the latest update (git pull), I just checked for null items - even i that should not happen.

              1 Reply Last reply Reply Quote 0
              • A Offline
                Albert2002
                last edited by Nov 5, 2017, 9:54 AM

                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 sensor
                

                This 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)
                
                1 Reply Last reply Reply Quote 0
                • M Offline
                  mirko3000
                  last edited by Nov 5, 2017, 12:43 PM

                  Ok, now another try :) Forgot to add utility class which was already present from other modules on my instance. Please update from GIT.

                  1 Reply Last reply Reply Quote 1
                  • A Offline
                    Albert2002
                    last edited by Nov 5, 2017, 2:14 PM

                    Sometimes a pictures tells you more than words…

                    You did it!

                    You did it! Great job! Thank you! :-)

                    Next step are to integrate te Yeelights ;-)

                    1 Reply Last reply Reply Quote 1
                    • M Offline
                      mirko3000
                      last edited by Nov 5, 2017, 2:27 PM

                      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!

                      1 Reply Last reply Reply Quote 1
                      • 1
                      • 2
                      • 3
                      • 4
                      • 5
                      • 14
                      • 15
                      • 3 / 15
                      3 / 15
                      • First post
                        27/141
                        Last post
                      Enjoying MagicMirror? Please consider a donation!
                      MagicMirror created by Michael Teeuw.
                      Forum managed by Sam, technical setup by Karsten.
                      This forum is using NodeBB as its core | Contributors
                      Contact | Privacy Policy