• 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.

SmartThings

Scheduled Pinned Locked Moved General Discussion
28 Posts 5 Posters 8.8k Views 6 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.
  • B Offline
    buzzkc
    last edited by Sep 28, 2019, 10:58 PM

    Thanks Sam, That does help explain things. The grandkids are visiting, so will be a day or so before I get back to this, unless I just can’t sleep tonight. ;-)

    Darren

    My Build: https://forum.magicmirror.builders/topic/11153/new-non-mirror

    S 1 Reply Last reply Sep 28, 2019, 11:35 PM Reply Quote 0
    • S Offline
      sdetweil @buzzkc
      last edited by sdetweil Sep 28, 2019, 11:39 PM Sep 28, 2019, 11:35 PM

      @buzzkc no problem… i’ll be around

      also, the function in the promise can also be arrow

      return new Promise(  (resolve,reject) =>{
                  if( all_good) {
                       resolve(data_item)
                   }
                  else {
                      reject(error_data) 
                  }
               })
      

      Sam

      How to add modules

      learning how to use browser developers window for css changes

      1 Reply Last reply Reply Quote 1
      • S Offline
        sdetweil
        last edited by sdetweil Sep 29, 2019, 12:49 PM Sep 29, 2019, 12:48 PM

        and you can nest calls to functions that return Promises.

           call_function_a(parm1, parm2).then( resolve_function(resolve_parm){ 
                         ... processing
                          call function_b(resolve_parm).then(resolve_function(some_otherdata){
                          ....     processing
                          })
           })
        
        

        the 1st call_function_a routine will return a Promise object immediately
        and when the function inside the promise resolves, then ‘.then (resolve’ function will be called.

        the ‘.then’ waits

        you can also split it up and wait later

          var p =   call_function_a(parm1, parm2)
             processing
             processing
          Promise(p).then (... etc)
        

        i have a piece of code that loads a list of images from multiple difference sources, and knowing these take a ‘long time’ I wrapped them in promises… and start multiple at the same time…

        now I have a list (array) of promises… but need to wait for all of them to complete (to have the complete list of images)

        Promise.all(list).then(() => { sort full list of images, note that resolve() can't send back the list as its not complete }
        

        you can also wait for one

        Promise.race(list).then( ... etc)
        

        Sam

        How to add modules

        learning how to use browser developers window for css changes

        1 Reply Last reply Reply Quote 0
        • B Offline
          buzzkc
          last edited by Oct 1, 2019, 5:25 PM

          Still working on getting things to refresh, but here is a teaser…
          alt text

          Let me know if the pic isn’t showing or disappears, using google photos

          Darren

          My Build: https://forum.magicmirror.builders/topic/11153/new-non-mirror

          S 1 Reply Last reply Oct 1, 2019, 5:33 PM Reply Quote 1
          • S Offline
            sdetweil @buzzkc
            last edited by Oct 1, 2019, 5:33 PM

            @buzzkc looks good

            Sam

            How to add modules

            learning how to use browser developers window for css changes

            1 Reply Last reply Reply Quote 0
            • B Offline
              buzzkc
              last edited by buzzkc Oct 1, 2019, 8:22 PM Oct 1, 2019, 8:21 PM

              I’ll start a new thread for this, but if anyone wants to try it out or PR it, keep in mind, it’s my first module. ;-)
              https://github.com/buzzkc/MMM-Smartthings

              Currently I’m only supporting a subset of device capabilities. I can only run one instance of the module also since everything is returned to a global array. More than one instance all the devices from each module instances get put into the array and the full list of devices displays on all instances rather than what was specified for that instance.

              For multiple capabilities in the list, the display is sorted by device name, then by capability alphabetically.

              It also displays devices for all locations, I’ll see if I can make this selective in the future, but fits my needs as it is.

              Darren

              My Build: https://forum.magicmirror.builders/topic/11153/new-non-mirror

              1 Reply Last reply Reply Quote 0
              • C Offline
                cowboysdude Module Developer
                last edited by Oct 2, 2019, 12:56 AM

                Just stopping in and I wanted to say Thank you guys for working on this! I am still hammered as all get out with work and crawl home most nights… I’m running 3 months behind right now. But I wanted to check in and wow… this is amazing!! Thank you guys so much!

                1 Reply Last reply Reply Quote 0
                • B Offline
                  buzzkc
                  last edited by buzzkc Oct 2, 2019, 12:22 PM Oct 2, 2019, 1:55 AM

                  Well, looks like it’s duplicating some of the items in the array. I’ll get a patch uploaded for it soon.

                  Edit: Found this was due to having more than one browser open, each instance was updating the global array. Working on a fix.

                  Darren

                  My Build: https://forum.magicmirror.builders/topic/11153/new-non-mirror

                  1 Reply Last reply Reply Quote 0
                  • B Offline
                    buzzkc
                    last edited by Oct 2, 2019, 10:03 PM

                    I’ve fixed the duplication, added an excluded device name list, fixed some timing issues, and cleaned it up.

                    I’m not entirely happy with the way I’m getting all the data, but I haven’t quite figured out a good way to wait for all the promises returned from the smartthings-node library. I have to loop the capabilities, make a request to get devices by capability, wait for that promise, then loop devices to get the statuses for each, once those promises return I need to pair up the status with its device.

                    So the ugly of it is that I’m just pushing all the data via sockets for each status request into an array that gets updated, then it gets fed to the getDom(). Not pretty, but it’s working.

                    Darren

                    My Build: https://forum.magicmirror.builders/topic/11153/new-non-mirror

                    1 Reply Last reply Reply Quote 1
                    • B Offline
                      buzzkc
                      last edited by Oct 3, 2019, 2:49 AM

                      Ok, I think I’ve gotten things to where it’s ready to share, I posted it up on the modules forum…Thanks again for all the feedback.

                      https://forum.magicmirror.builders/topic/11270/mmm-smartthings

                      Darren

                      My Build: https://forum.magicmirror.builders/topic/11153/new-non-mirror

                      1 Reply Last reply Reply Quote 1
                      • 1
                      • 2
                      • 3
                      • 3 / 3
                      3 / 3
                      • First post
                        22/28
                        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