Re: [mh] RoomMe
H Plato <[email protected]>
| Newsgroups | gmane.comp.misc.misterhouse.user |
|---|---|
| Message-ID | <[email protected]> |
Thank you for making my comment more useful! :) One other suggestion, wrap the decode_json in a eval loop. MH will hard crash if the json received is malformed. If you are creating a library, you need to give the sub the main context (ie sub main::my_new_sub), from what I recall the http_server.pl doesn’t see subroutines out of the main scope. > On Apr 15, 2020, at 9:19 AM, Timothy Spaulding <[email protected]> wrote: > > Howard, > > Thanks for the pointers. I initially didn’t understand what you were sharing, but after reading through the json_server.pl code (several times) I was able to get a handle on how to solve my issue. > > I hope the below can help others. > > In short, the way I am resolving my question is to create a new subroutine in my user code and call it via the http://<mh:port>/sub?<my <http://%3cmh:port%3e/sub?%3cmy> new sub>. There are no parameters being passed to the sub. However, inside the sub, I am creating a local hash of the body of the web request with the following: > > My $jsonHash = decode_json($HTTP_DATA); #$HTT_DATA is a global variable and contains the body of the web request > > And then I am grabbing the value of each key in to a local var like this: > > my $userID = $jsonHash->{"userId"}; > > Now I can proceed with using the data. > > Regards, > Tim > > From: H Plato <[email protected]> > Sent: Monday, April 13, 2020 2:49 PM > To: Timothy Spaulding <[email protected]> > Cc: [email protected] > Subject: Re: [mh] RoomMe > > Hi Tim, > > I do something similar with the razberry module. Razberry loads a custom module that provides a push event to MH when a state changes. Take a look at main::razberry_push in the razberry package, and I think I parse post data in the json_server.pl. (It’s been a while since I’ve looked at the json server code) > > > > > On Apr 13, 2020, at 10:57 AM, Timothy Spaulding <[email protected] <mailto:[email protected]>> wrote: > > Hi, > > I wanted to try again to see if anyone knows how I can read this JSON data from the body of a HTTP call from a sub? Or any preferred method/strategy to have MH act on the JSON data? > > Thanks, > Tim > > From: Timothy Spaulding <[email protected] <mailto:[email protected]>> > Sent: Friday, January 10, 2020 6:16 PM > To: [email protected] <mailto:[email protected]> > Subject: [mh] RoomMe > > Hi All, > > A friend shared this relatively new device called a RoomMe (http://www.IntelliThings.net <http://www.intellithings.net/> . > > Short story is that it is a device that can identify a person cell phone via Bluetooth in a room and can set scenes/settings based on that user’s preference. > > They also have a way to call an external link via POST with JSON in the body of the post that looks like the following: > > { > "userId":0, > "event": > { > "name":"RoomExit", > "lastInRoom":true > }, > "id":"<email address>", > "sensorId":"<BT MAC Address>", > "type":"Event", > "userName":"Tim", > "roomName":"Office Suite" > } > > There are different events. Attached is the complete API documentation. > > Can anyone share ideas on the best way for MH to make use of this data? RoomMe doesn’t support a lot of systems at present; and having MH do the logic based on parameters seems like a potentially good fit. > > Tim > ________________________________________________________ > To unsubscribe from this list, go to: https://lists.sourceforge.net/lists/listinfo/misterhouse-users <https://lists.sourceforge.net/lists/listinfo/misterhouse-users> ________________________________________________________ To unsubscribe from this list, go to: https://lists.sourceforge.net/lists/listinfo/misterhouse-users