Wie erhalte ich die PI-Tag-Namen vom PI-Webserver?Liebe JMP-Anwendergemeinde,
Mein Kollege und ich arbeiten derzeit an einem JMP-Add-In, das es unseren internen Benutzern ermöglichen würde, PI-Tags nach Wunsch abzufragen und sie alle in einer Tabelle mit einigen angehängten Skripten und einigen vorab durchgeführten Schritten zur Datenmanipulation zu haben.
Im Wesentlichen möchten wir die Funktion „Vom OSIsoft PI-Server importieren“ in JMP reproduzieren und nutzen, jedoch mit einigen Anpassungen an unsere Anforderungen.
Derzeit müssen wir die gewünschten PI-Tagnamen dynamisch vom PI-Webserver abrufen, um sie dann in einer Liste zu speichern und den PI-Client darauf auszuführen. Derzeit haben wir eine fest codierte Liste einiger PI-Tags, aber da sich die Benennung ändern oder neue Pi-Tags hinzugefügt werden können, ist dies keine ideale Lösung.
Die Verwendung eines Platzhalters wie % würde uns dabei helfen, feinere Kategorien von Pitags zu erstellen. Diese Kategorien hängen von der vorherigen Benutzerauswahl ab, z. B. von Prozessschritt oder Produktionslinie. Wir hatten jedoch kein Glück, ein Gegenstück in JSL für Listen zu finden.
Außerdem können wir SQL nicht verwenden, um den PI-Webserver abzufragen.
Dies ist unser AF-Pfad:

Asset_DB und Stat_DB sind Listen, deren Inhalt auf der Benutzerauswahl basiert. Pitags ist derzeit eine fest codierte Liste einiger Pi-Tags, aber wir möchten, dass sie auch auf der Benutzerauswahl basiert.
Meine Frage: Wie haben Sie (JMP-Entwickler) die Pi-Tag-Namen basierend auf der Benutzerauswahl vom Webserver abgerufen?
Vielen Dank im Voraus!
Da ist ein
Automatisierung und SkriptingDatenzugriffBetreff: Wie erhalte ich die PI-Tag-Namen vom PI-Webserver?Da ist ein,
Um die untergeordneten Elemente auf einer bestimmten Ebene der AF-Hierarchie abzurufen, verwendet JMP die Web-API-Methode „Element – Elemente abrufen“, die hier dokumentiert ist: https://docs.aveva.com/bundle/pi-web-api-reference/page/help/controllers/element/actions/getelements.html
JMP stellt eine Anfrage, die ungefähr so aussieht:
GET-Elemente/{webId}/Elemente?webidtype=idonly&selectedfields=items.webid;items.name;items.description;items.path;items.haschildren;items.templatename
Die {webId} wird durch die webId der Pfadhierarchie ersetzt, für die Sie die untergeordneten Elemente wünschen. Dies gibt eine JSON-Beschreibung der untergeordneten Elemente zurück, einschließlich ihrer Namen, Beschreibungen, webIds, ob sie untergeordnete Elemente haben und zu welcher Vorlage sie gehören, falls vorhanden. Möglicherweise benötigen Sie nicht alle diese Attribute, daher können Sie den Abfrageparameter „selectedfields“ auf das reduzieren, was Sie benötigen. Sie sollten in der Lage sein, eine solche Anfrage mit den „HTTP-Anfrage“-Methoden von JSL zu senden. Sie können das Ergebnis dann mit der „JSON analysieren“-Funktion von JSL analysieren.
Hoffe das hilft!
--Michael
Betreff: Wie erhalte ich die PI-Tag-Namen vom PI-Webserver?Ich habe das schon lange nicht mehr gemacht ... Ich erinnere mich, dass es eine Möglichkeit gab, eine Excel-Tabelle mit allen Pi-Tags zu erhalten. Sobald Sie diese haben, öffnen Sie sie in JMP und transponieren Sie sie so, dass die Tag-Namen in der ersten Spalte stehen. Von dort aus können Sie die Namen analysieren und filtern, um Listen zu erstellen, die Sie in Ihren Skripten verwenden können.
… entschuldigen Sie, dass ich nicht genauer sein konnte.
Betreff: Wie erhalte ich die PI-Tag-Namen vom PI-Webserver?Hallo Byron,
vielen Dank für Ihre Antwort!
Ich hatte diese Option auch im Hinterkopf, aber ich hoffte, dass es einen einfacheren Weg gibt.
Am besten,
Da ist ein
Betreff: Wie erhalte ich die PI-Tag-Namen vom PI-Webserver?Hallo Michael,
vielen Dank für diese tolle Lösung!
Wir werden versuchen, diese Methode zu implementieren.:)
Beste Wünsche,
Da ist ein
Betreff: Wie erhalte ich die PI-Tag-Namen vom PI-Webserver?Hallo Michael,
Wir haben die Funktion „Neue HTTP-Anforderung“ ausprobiert, um die Pi-Tags aus der AF-Hierarchie abzurufen.
So was:

Das Skript wird ausgeführt, aber wir erhalten folgende Fehlermeldung. Kennen Sie diesen Fehler?

Da wir mit der Funktion „Neuer PI-Client“ PI-Tags abfragen können, scheint fehlende Autorisierung nicht das Problem zu sein. Unser PI-Systemmanager hat unsere Zugriffsrechte bestätigt und konnte kein Problem mit fehlenden Zugriffsrechten feststellen.
Vielen Dank im Voraus!
Da ist ein
Betreff: Wie erhalte ich die PI-Tag-Namen vom PI-Webserver?Benötigt Ihr Pi-Server beispielsweise eine Basisautorisierung? Wenn ja, sollten Sie Folgendes verwenden:
PI_web = New HTTP Request(
URL([your url]),
Method("GET"),
Secure(0),<BR />Username([your username]),<BR />Password([your password]),<BR />Authentication Method("BASIC"),
QueryString(qrry)
) << Send
Betreff: Wie erhalte ich die PI-Tag-Namen vom PI-Webserver?Vielen Dank, Bryan, wir haben Ihre Lösung mit Kerberos implementiert.
Betreff: Wie erhalte ich die PI-Tag-Namen vom PI-Webserver?War es etwas wie:
PI_web = New HTTP Request(
URL([your url]),
Method("GET"),
Secure(0),Authentication Method("KERBEROS"),
QueryString(qrry)
) << Send