Announcement

Collapse
No announcement yet.

HS3 Build 3.0.0.128 Beta with JSON

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • HS3 Build 3.0.0.128 Beta with JSON

    This build is being put out to solicit feedback on our JSON support. It does not contain any other changes from build 3.0.0.125

    We have added a JSON API to HomeSeer so it can be controlled using simple JSON syntax. It supports getting device status, event information, control of devices, and control of events.

    If you are a JSON "expert" we would value your feedback on this API. Does it have all that you need in order to control HomeSeer and is the format ok?

    Changes from .126 to .128:

    * Added more JSON commands, see doc linked below

    The API is in this doc, see the JSON section at the top:

    ftp://ftp.homeseer.com/updates/Beta/hs3sdk.pdf

    Build .128 for Windows is here:

    ftp://ftp.homeseer.com/updates/Beta/..._3_0_0_128.exe

    Build .128 for Linux is here:

    ftp://ftp.homeseer.com/updates/Beta/...0_0_128.tar.gz

    If you want to try this on a Zee, ssh to your box and update to build 128.
    website | buy now | support | youtube

  • #2
    Will the Zee support this as well? This would be a low-overhead way of interacting with the Zee.

    Also, I looked at the example program - how are you controlling devices without CAPI??
    HS3Pro Running on a Raspberry Pi3
    64 Z-Wave Nodes, 168 Events, 280 Devices
    UPB modules via OMNI plugin/panel
    Plugins: Z-Wave, BLRF, OMNI, HSTouch, weatherXML, EasyTrigger
    HSTouch Clients: 3 Android, 1 Joggler

    Comment


    • #3
      Rich,

      I am just a beginning JSON player here. But I am curious on the event control of the events. Not direct now - want to finish the JowiHue part first , but I sure will play with that part a bit.

      Wim
      -- Wim

      Plugins:RFXCOM, HSTouch Server, Squeezebox, BLGData, Restart, Jon00's Perfmon and Network monitor, WeatherXML, BLBackup, TenScripting, BC4, Pushover, PHLocation, JowiHue, Zwave, Sonos
      650 devices ---- 336 events ----- 40 scripts

      Comment


      • #4
        #finally Now I get to go write a whole bunch of third party API integration.

        I will provide feedback next week.

        Comment


        • #5
          Yes, and I uploaded the 126 build so you can ssh to your Zee and update if you want to try it.

          Originally posted by rmasonjr View Post
          Will the Zee support this as well? This would be a low-overhead way of interacting with the Zee.

          Also, I looked at the example program - how are you controlling devices without CAPI??
          website | buy now | support | youtube

          Comment


          • #6
            Post documentation feedback.

            Proposed structure looks great, Request for additional data.
            Under Device Status:
            Value of "Hide device from view"
            Device Type
            Last Change time

            New Commands: - Pretty anything you can do via script
            HSTouch - Several
            IE Mostly change Screen - Camera motion goes off, trigger json command to change all hstouch screens to security.

            HSSpeak - Issue voice notifications
            HSwritelog

            Comment


            • #7
              A few suggestions
              • add a request to get the control for a specific ref (similar to getcontrolall but for a specific ref)?
              • for devices, add the url to the device icon
              • for devices, would it of interest to include the type/subtype and parent/child relationship if someone wants to use it to render a UI?
              • HSPhone support via two APIs one for the callerID list and the other for the list of messages
              • Media library query API (not the whole media library but as a tree of node objects, returning one node object per query)

              For security reasons, is the access to the json API controlled by the users/password?

              Comment


              • #8
                Well guys, this is very nice. I now use the REST api plugin, but this could be even better!

                my requests:

                /JSON?request-getevents
                • Add addition parameter to retrieve events in a specific group --> /JSON?request-getevents&group=GROUPNAME


                /JSON?request=getstatus&ref=####
                • add Device Type
                • add Last Change time
                • add the possibility of using more &ref=#### f.e. &ref=####;####;####
                • add filter by room (location1) /JSON?request=getstatus&location1=LOCATION
                • add filter by floor (location2) /JSON?request=getstatus&location2=LOCATION
                • add filter by type /JSON?request=getstatus&type=TYPE


                be able to view the value of a counter?
                • /JSON?request=getcounter&counter=COUNTERSPECIFIC
                • /JSON?request=getcounter&counter=ALL


                Tnx for this great addition, I starting be more happy with HS3 than I ever was with HS2.
                Last edited by Phaeton; September 6th, 2014, 03:45 AM.

                Comment


                • #9
                  Rich,

                  I have not come across JSON output that has a variable element name. I am not saying it is wrong, just that I have never seen it before. Would it make more sense to have the devices listed as an array (similar to the output for ControlPairs)?

                  Change From:
                  Code:
                  }
                      "Devices": {
                          "3018": {
                              "ref": 3018,
                              "name": "Bedroom",
                              "location": "UltraTivo3 Plugin",
                              "location2": "Tivo Control",
                              "value": 0,
                              "status": "Remote"
                          },
                          "3019": {
                              "ref": 3019,
                              "name": "Bedroom",
                              "location": "UltraTivo3 Plugin",
                              "location2": "Tivo Control2",
                              "value": 0,
                              "status": "Remote2"
                          }
                  }
                  To:
                  Code:
                  {
                      "Devices": [
                          {
                              "ref": 3018,
                              "name": "Bedroom",
                              "location": "UltraTivo3 Plugin",
                              "location2": "Tivo Control",
                              "value": 0,
                              "status": "Remote"
                          },
                          {
                              "ref": 3019,
                              "name": "Bedroom",
                              "location": "UltraTivo3 Plugin",
                              "location2": "Tivo Status",
                              "value": 0,
                              "status": "Status"
                          }
                      ]
                  }
                  Other requests:
                  For the JSON device output:

                  1) Add last_change in ticks
                  2) Add device icon URL
                  3) Add device string?
                  4) Display child devices as array list
                  5) Ability to filter status output for location, location2
                  6) Ability to filter for parent Root devices, then associated Child Devices

                  Regards,
                  Ultrajones
                  Last edited by Ultrajones; September 6th, 2014, 08:16 AM.
                  Plug-ins: UltraMon, UltraM1G, UltraCID, Ultra1Wire, UltraLog, UltraWeatherBug, UltraPioneerAVR, UltraGCIR

                  Comment


                  • #10
                    Just some positive feedback with .126 on the Zee - the performance on the Energy screens is great! Before, it was timing out and crashing mono. I actually extended the size of my Energy database and it's working great.
                    HS3Pro Running on a Raspberry Pi3
                    64 Z-Wave Nodes, 168 Events, 280 Devices
                    UPB modules via OMNI plugin/panel
                    Plugins: Z-Wave, BLRF, OMNI, HSTouch, weatherXML, EasyTrigger
                    HSTouch Clients: 3 Android, 1 Joggler

                    Comment


                    • #11
                      This is great and all, but I absolutely require a way to turn this off, and I would want an option that it can only be used after authentication. If both of these are already there then great. Otherwise, this is fantastic Rich.

                      In general I do a lot with locking things down that would be far easier with more security consciousness with the architecture. I see far too much of it missing, or somehow considered covered because there is simple overall support for a password somewhere. A bit more granularity would be appreciated greatly, and this comment is more for all of HS rather than just the JSON topic.

                      Comment


                      • #12
                        Over the weekend I have been playing with this and it works great and has lots of potential. Devices act quick and responsive when being controlled through JSON. A few things I was missing that maybe can be implemented are:

                        1. Have devices send an update as soon as they change. For example by sending an /JSON?request=getstatus&ref=####. This will eliminate the need to polling devices through "getstatusall".
                        2. Implement an EOM code. This way my control system can determine that the whole message has been received. Something like "\x0D\x0A" or a code that can be specified by the user.

                        I was thinking that the device address would be a good addition in the status feedback, but I guess the device reference works just as well.

                        Comment


                        • #13
                          We are using CAPI, but we find the correct CAPI Control pair by either the control value or control label. We search using those.

                          Originally posted by rmasonjr View Post
                          Will the Zee support this as well? This would be a low-overhead way of interacting with the Zee.

                          Also, I looked at the example program - how are you controlling devices without CAPI??
                          website | buy now | support | youtube

                          Comment


                          • #14
                            I added a setting to Setup so you can disable this. For requests, your user/pass are required just like any other page.

                            Originally posted by Automated View Post
                            This is great and all, but I absolutely require a way to turn this off, and I would want an option that it can only be used after authentication. If both of these are already there then great. Otherwise, this is fantastic Rich.

                            In general I do a lot with locking things down that would be far easier with more security consciousness with the architecture. I see far too much of it missing, or somehow considered covered because there is simple overall support for a password somewhere. A bit more granularity would be appreciated greatly, and this comment is more for all of HS rather than just the JSON topic.
                            website | buy now | support | youtube

                            Comment


                            • #15
                              Will there be a linux .126 beta soon(ish)?

                              Comment

                              Working...
                              X