Wsdl/soap/xml

I was hoping someone could point me in the right direction for some topics that discuss how to use this in Ignition. I have hopefully found a solution for a lighting controls problem and it involves the purchase of a SOAP/XML interface from Eaton/Cutler-Hammer. i am hoping this is the avenue for getting their data into Ignition. Any Information would be helpful on how to start using the WSDL.
SOAP manual.pdf (367 KB)

As of 7.4, the SUDS Python library is accessible through scripting: fedorahosted.org/suds/ :thumb_right:

Read up :thumb_right:

Can anybody suggest good documentation/examples of using the system.net.httpPost,
Example 2 from the manual is not quite cutting it.

“Code that sends an XML message to hypothetical url”
OR
actual examples of using Ignition with wsdl type service?

Attached is a file with message/response transaction that I need to be in alignment with.

None of the syntax I have tried, has worked.
I have tried import suds and xml.dom.minidom.

I really need to get to calif. for that advanced training…
ANY HELP appreciated
SOAP XML INFO.txt (4 KB)

some recent test screen shots and error logs.
test 1 error text.txt (2 KB)


also attached wsdl file/ change from txt to wsdl extension
HISService TEXT.txt (9.5 KB)

OK, I have done a small test 2 different ways.
I have been trying to pass the data to the wsdl’s method through a tag. I have changed the data type of the tag to multiple variants. I also tried the formatted text field. I need some help finding the true data that is being sent to the wsdl service through Ignition. Attached are two screenshots. Both have test results in a label. 1) trying to pass data to wsdl through script. 2) passing data to wsdl ‘hard coded’. I am not sure how to satisfy the requirement of the wsdl nor what ‘data type’ it actually requires. I could be missing a fundamental concept, I am not sure. The drop-down list/formatted text box are all testing optional, I was trying various methods to ‘see’ my 5 digits
Anyones help or advice appreciated.




I did a small breakdown of the wsdl file using xml spy. Document attached.
HISService.doc (228 KB)

I have been able to communicate with a web service using suds by “hard coding” the script in the event handler. I still cannot seem to pass a method argument to the wsdl via an ignition tag. But I can write the response to a tag… Seems I am missing something…I have this working just not the way that it could. Is there anybody out there at all that has used the suds implementation?
Any help advice appreciated…


You look really close to getting the first piece of the info you want back. Try this:

import suds
url = "http://www.webservicemart.com/uszip.asmx?WSDL"
client = suds.client.Client(url)
zip_to_validate = system.tag.getTagValue("tag to wsdl")
result = client.service.ValidateZip(zip_to_validate)
system.tag.writeToTag("tag from wsdl",result)

The only part you seemed to be missing was the system.tag.getTagValue() call. If you’re using 7.5 you can use system.tag.read() instead. It does the same thing but looks nicer and is easier to type :slight_smile:

Just to avoid frustration, remember that system.tag.read returns a qualified value object, not a value. If you want to change you code to use system.tag.read you’ll have to typezip_to_validate = system.tag.read("tag to wsdl").value

:thumb_left: thank you, if it wasnt for this forum and w3schools, and stackoverflow , frustrations
would be monumental. I know how much I would benefit from the advanced training, I just cant make
it back to cali right now.

The WSDL through suds does work. Thanks guys for improving my syntax!!!
Thought I would post a link to my next course of action:
docs.python.org/release/2.6.8/li … -xmlrpclib

The soap/xml server that I am working with uses ‘RPC’ styel where each operation acts like a function with in and out parameters.

import xmlrpclib
import pprint
import suds
from pprint import pprint
import httplib
host = ‘http://10.213.135.22:80
h = httplib.HTTP(host)
h.putrequest(‘POST’, ‘/soap HTTP/1.1’)
h.putheader(‘Content-Type’, ‘text/xml’)
h.putheader(‘Accept’, ‘text/*’)
h.putheader(‘User-agent’, ‘HTTP HIS’)
h.putheader(‘Host’, host)
h.putheader(‘Content-Length’, ‘300’)
h.putheader(‘Cache-Control’, ‘no-cache’)
h.putheader(’<?xml version="1.0" encoding="utf-8"?>’)
h.putheader(’<soap:Envelope xmlns:xsi=“http://www.w3.org/2001/XMLSchema-instance” xmlns:xsd=“http://www.w3.org/2001/XMLSchema” xmlns:soap=“http://schemas.xmlsoap.org/soap/envelope/”>’)
h.putheader(‘soap:Body’)
h.putheader(’<n:siireq xmlns:n=“urn:HISolutions”>’)
h.putheader(’</n:siireq>’)
h.putheader(’</soap:Body>’)
h.putheader(’</soap:Envelope>’)

h.endheaders()
returncode, returnmsg, headers = h.getreply()
if returncode == 200:
f = h.getfile()
print f.read()

Traceback (most recent call last):
File “”, line 24, in
File “C:\Documents and Settings\tjtwitty\Local Settings\Application Data\Sun\Java\Deployment\cache\FPMI\script_lib2\Lib\httplib.py”, line 860, in endheaders
self._send_output()
File “C:\Documents and Settings\tjtwitty\Local Settings\Application Data\Sun\Java\Deployment\cache\FPMI\script_lib2\Lib\httplib.py”, line 732, in _send_output
self.send(msg)
File “C:\Documents and Settings\tjtwitty\Local Settings\Application Data\Sun\Java\Deployment\cache\FPMI\script_lib2\Lib\httplib.py”, line 699, in send
self.connect()
File “C:\Documents and Settings\tjtwitty\Local Settings\Application Data\Sun\Java\Deployment\cache\FPMI\script_lib2\Lib\httplib.py”, line 666, in connect
for res in socket.getaddrinfo(self.host, self.port, 0,
File “C:\Documents and Settings\tjtwitty\Local Settings\Application Data\Sun\Java\Deployment\cache\FPMI\script_lib2\Lib\socket.py”, line 754, in getaddrinfo
raise _map_exception(jlx)
socket.gaierror: (20001, ‘getaddrinfo failed’)

I may be getting somewhere/no-where. At least my errors have changed.

update-- found out today that the little device i was trying to comm with doesnt really have a wsdl. it uses xml
messages. i started testing httppost

xml.com/pub/a/2003/03/10/python.html

xml.com/pub/a/2002/09/25/py.html?page=2

Still trying…