Hello Team, I have a query on, is there any possibility to get the perspective project list from the gateway, I need the list of Perspective projects alone. I searched the forum, I have found some information’s, but most of them were dead end. Does someone have any idea about this.
There’s a function you can call
If you just need possible Perspective projects, you can make an HTTP request against
http://$gatewayAddress/data/perspective/runnable-projects - the response is a simple JSON structure.
Oh, I missed that requirement. Oops. That’s useful to know!
Thank you very much, This is what I’m expecting, one more doubt how to extract the contents, I found some script w.r.t vision projects in this forum itself , I will provide the script below, something like that is possible for perspective to extract the contents.
from xml.etree import ElementTree as ET
projects_xml = urllib2.urlopen(‘http://10.1.1.81:8088/main/system/projectlist’).read()
projects = ET.fromstring( projects_xml ).findall(‘client’)
project_names = tuple( ( project.get(‘name’), project.find(‘title’).text )
for project in projects )
Please share your valuable thoughts.
Cool, this is what I’m searching for these days. Thank you. one more thing to @PGriffith @nminchin @Prahil_S_Kumar1 ,Do u have any document/manual
http://$gatewayAddress/data/perspective/runnable-projects for this, how we can get these info.
also do u have something similar like the json format for vision also.??
I don’t know, I found an xml for getting the details from the vision. If your requirement is full projectlist that can utilized by Projectnames.
For other queries may be @PGriffith and @nminchin can help you.
system.net.httpClient natively ‘understands’ JSON format, so the implementation is extremely simple:
def getPerspectiveProjects(): response = system.net.httpClient().get("http://localhost:8088/data/perspective/runnable-projects") return [project["name"] for project in response.json] print getPerspectiveProjects()
If you’re in the Vision client scope, you can use
system.util.getGatewayAddress to get the correct address to fill in for the request. If you’re in a Perspective session or other gateway context already, then you can probably just hardcode the port the gateway is using.
No. This is considered an “implementation detail” - it could change between Ignition versions. If you’re doing something outside of the first-party system functions, you are generally expected to be able to deal with problems on your own.
In this particular case, it’s fairly unlikely we change this route anytime soon, so it’s probably safe to rely upon. I would recommend implementing your own
getPerspectiveProjects function (as I did above) in the project library and always using that; that way, if the logic for retrieving these projects does change, you can make the change in only one place.
As for discovering this info yourself: You can just watch the network traffic (via the browser’s development tools) when you navigate to the ‘Perspective Session Launcher’ on the gateway homepage:
No. Vision’s internals mostly use XML, not JSON.
Thank you for this detailed explanation. Really appreciate you for taking the time and explaining this in detail…
Thank you for the explanation, I got it. @PGriffith