LinuxMCE Forums
June 19, 2013, 05:09:50 am GMT-1 *
Welcome, Guest. Please login or register.
Did you miss your activation email?

Login with username, password and session length
News: Rule #1 - Be Patient - Rule #2 - Don't ask when, if you don't contribute - Rule #3 - You have coding skills - LinuxMCE's small brother is available: http://www.agocontrol.com
 
   Home   Help Search Chat Login Register  
Pages: [1]
  Print  
Author Topic: Question about GSD...  (Read 479 times)
mkbrown69
Veteran
***
Posts: 103


View Profile
« on: March 19, 2013, 03:25:45 am »

Good day folks!

I'm working on a device template using GSD for an IP enabled device, and I was wondering if it's possible to obtain the IP address of the device from device data?  I'm building various URL's for device control, and it would be cleaner to be able to retrieve the IP address from the device's data...

Thanks for your time!

/Mike
Logged
tschak909
LinuxMCE God
****
Posts: 5116

DOES work for LinuxMCE.


View Profile
« Reply #1 on: March 19, 2013, 04:12:02 pm »

why? If your TCP port device data is set correctly in your Device Template, and the IP address is properly set in the device instance, then GSD will open up a socket to it, and give you the conn_ object to communicate with it.

-Thom
Logged
mkbrown69
Veteran
***
Posts: 103


View Profile
« Reply #2 on: March 20, 2013, 02:52:45 am »

Hi Thom!

Why?  To be different, of course!  Wink

Seriously, though, the device in question has a SOAP interface used to subscribe to events emitted by the device, and a REST interface to control it.  I have a basic set of commands working to control it via REST, using a hard-coded variable for the IP.  Before I go writing code to query the device table directly, I'm asking for a less ugly, more Thom-approved method.   Grin

I plan on getting to the subscription stuff next using the conn_object.  It's slow-going teaching myself SOAP, XML parsing, and ruby all at once, plus figuring out the relevant LMCE infrastructure.

Thanks for your time!

/Mike
Logged
tschak909
LinuxMCE God
****
Posts: 5116

DOES work for LinuxMCE.


View Profile
« Reply #3 on: March 20, 2013, 03:38:52 am »

DUDE... if you're needing to get the IP address, you're doing it wrong.

Again, is your IP address specified in your device instance (Advanced > configuration > devices) ?
Do you have a TCP Port device data defined?

-Thom
Logged
tschak909
LinuxMCE God
****
Posts: 5116

DOES work for LinuxMCE.


View Profile
« Reply #4 on: March 20, 2013, 03:40:55 am »

Why don't you stop by the IRC channel (#linuxmce-devel, on irc.freenode.net), we can help you there.

-Thom
Logged
mkbrown69
Veteran
***
Posts: 103


View Profile
« Reply #5 on: March 20, 2013, 04:16:52 am »

Hi Thom,

I'm not that IRC saavy/equipped; I should probably add that to my list of things to learn.  I'm also not sure how well it'd work via my iPad since I bounce between Safari, Textastic, and iSSH.  Long story...

Anyway, based on my understanding of the devices' SDK, it needs a channel for the subscription for the SOAP events with a periodic heartbeat response, and commands are sent via the REST interface (so, two connections).  Based on my understanding of the conn_object, it's a single channel implementation, but bi-directional.  This all is with the caveat/disclaimer that I don't play a programmer on TV or the Internet;  I'm a sysadmin who's managed to learn enough about programming to be able to glue various bits and pieces together.

So, I have this little private method which works beautifully, and I can control manually-defined children lights of the device quite nicely.

Code:
def sendISYcommand(command)
#$username=device_.devdata_[114].to_s
#$password=device_.devdata_[115].to_s
#$host=device_.devdata_[?].to_s

$host = "192.168.80.148"
$port = device_.devdata_[69].to_s
res = Net::HTTP.start($host) {|http|
req = Net::HTTP::Get.new(command)
req.basic_auth device_.devdata_[114].to_s, device_.devdata_[115].to_s
response = http.request(req)
xml_data = (response.body)
log("====== / sendISYcommand response body ======")
log(xml_data)
log("====== sendISYcommand response body / ======")
doc = REXML::Document.new(xml_data)
log(doc)
s = REXML::XPath.first(doc, "RestResponse/status")
log(s)
return s.text
}
end
I'll worry about http/https via the port data later when the driver is close to completion.  Pulling device data like username & password works well.  I'm just looking to find a means to obtain the IP cleanly for sending these REST commands.  My next project is the conn_object for the subscription, and figure out all the other xml parsing that'll go along with it.

Thanks again for your time and guidance.

/Mike
« Last Edit: March 20, 2013, 04:31:06 am by mkbrown69 » Logged
tschak909
LinuxMCE God
****
Posts: 5116

DOES work for LinuxMCE.


View Profile
« Reply #6 on: March 24, 2013, 07:57:51 am »

You can stop by the channel using one of a few methods:

* Windows: mIRC http://www.mirc.com/
* Mac: Colloquy http://www.colloquy.info/
* Linux: install x-chat using your favorite distro method.

set the network to FreeNode, and once connected, connect to #linuxmce-devel

or use the web interface @ http://webirc.freenode.net/

again, you can go to the #linuxmce-devel and meet us there.

-Thom
Logged
Pages: [1]
  Print  
 
Jump to:  

Powered by MySQL Powered by PHP Powered by SMF 1.1.18 | SMF © 2013, Simple Machines Valid XHTML 1.0! Valid CSS!