Q&A IPS RS Project Exporter

Hi Marty,

die Warnungen sind vermutlich ein Bug irgendwo (IPS, PHP -> ich kann es nicht genau eingrenzen), witzigerweise kann man diese Warnmeldungen abstellen, wenn man im Exporterscript irgendwo ein Leerzeichen, Tab oder sonstwas eingibt. Ich hab paresy schon angepingt, aber noch kein Feedback.

Grundsätzlich kannst du die aber ignorieren, das hat keinen Einfluss auf das Ergebnis.

Zum 2. Punkt:
hast du evtl. noch ein Install-Log als Child unter dem Export-Script hängen? kannst du mal einen Screenshot vom Objektbaum (Export-Script, Original und Zielprojekt wenn vorhanden) einstellen?

Es gibt keine childs unter dem Exportscript.
Hier ein auf die Schnelle zusammengestöpselter Screenshot:

cu…

ok, danke, ich habs auch schon gefunden, ist ein für V1.0 entwickelter Bug :o Update kommt gleich

bereinigte Version ist online, so richtig perfekt ist die Lösung noch nicht, aber man kann mit arbeiten :wink:

2012-10-30 V1.1
Bugfixes

  • Prüfung auf bereits installierte Scripte fehlerhaft u. korrigiert

Danke,

nun siehts gut aus.

cu…

ich hab inzwischen meine ersten Projekte nach dem Erscheinen des Project Exporters erstellt und hab somit ein paar praktische Erfahrungen sammeln können. Und zwar als Projekt-Autor und als Anwender in Personal-Union :D. Auch habe ich als reiner Anwender beim Testen von Ferengi-Master’s Projekten fungiert (als quasi im Blindflug). Das Exportieren und anschließende Importieren im Zielsystem geht in jeweils einer Minute, egal wie komplex das Projekt ist.

Dei ersten Erfahrungen zeigen, dass das Arbeiten mit dem Exporter wirklich erstaunlich easy ist. Für den Projektautor hat es einen riesen Vorteil, wenn man sich in der Projektentwicklung nur noch auf die eigentlichen Projekt-Funtionen konzentrieren muss: für die Infrastruktur (Objekte, Variablen, Instanzen, Webfront-elemente) und deren Verlinkung sorgt ja der Project Exporter.
Ich hab zwar im Hinterkopf immer wieder leichte Bedenken (nach dem Motto: na, funktioniert das auch wirklich, was Du da zusammen gehäkelt hast? ) - bisher lief aber aus Exporter-Sicht alles fehlerfrei. Und es waren schon ziemlich komplexe Projektstrukturen und Scripte dabei. Und ich (ich denke, das gilt gleichermaßen für die Forenkollegen, die bisher damit gearbeitet haben) bin hier ziemlich kritisch.

Auch das Übertragen von Projekten ist extrem schlank und schnell zu realisieren. Dabei schälen sich mittlerweile einige Standard-Prozeduren heraus, die das Leben noch mehr erleichtern.
Damit nicht jeder diese Erfahrungen erst selbst erarbeiten muss, bin ich dabei, diese als Tipps und Tricks in die Projekthomepage einzubringen. Und zwar getrennt nach Projekt-Autor und Anwender.

hier der aktuelle Stand (Updates dann auf der projekt-Homepage):

Tipps & Tricks für Projekt-Autoren

[ul]
[li]keine Verwendung von Sonderzeichen in IPS-Objektnamen (sowohl im Quell- als auch im Zielsystem) -> dies kann zu unerwünschen Effekten/Fehlern im Export-Script führen (besonders tödlich: ‘ [Hochkomma])[/li][li]bei Option “$existsScriptsoverwrite = 1; ” vor Scriptausführung genau überlegen, was man tut! Hier werden nämlich bestehende und mit eigenen Namen versehene Scripts (Beispiel: “PHPSonos.inc.php“) auf File-Ebene gelöscht und neu angelegt. Gewöhnlich sind das Scripte, die Funktionen für das gesamte System zur Verfügung stellen – nicht nur für das aktuelle, zu importierende Projekt (falls dennoch ein Malheur passiert ist: das gelöschte Script ist nicht ganz weg sondern “nur” aus dem Objektbaum entfernt und in den File-Ordner “/IP-Symcon/scripts/deleted” verschoben[/li][li]Module für Aktoren (z.B. Homematic- oder Enocean-Instanzen) werden zwar kopiert, können aber vom Install-Script nicht verlinkt werden (da diese Module ihre eigenen Status-Variablen anlegen. Hier sollte innerhalb des Projektes eine eigene Zuordnungs-Logik eingebaut werden, falls auf diese variablen zugegriffen werden muss.[/li][li]im Script-Meldefenster (Export-Script) werden alle Aktivitäten angezeigt, d.h. dort wird auch angezeigt, welche Objekte nicht vollständig konfiguriert werden konnten[/li][li]Link-Objekte für WFE-Darstellung: empfohlen wird die Anlage eines separaten Link-Ordners (Kategorie) innerhalb des Projektordners. Hier können beliebige Linkstrukturen aufgebaut werden, die im Zielsystem ebenfalls automatisch korrekt angelegt und konfiguriert werden.[/li][li]für anwenderspezifische Konfigurationen sollte im Projekt immer eine Kategoorie “Config” vorgesehen werden. Alle Objekte innerhalb dieser Kategorie werden vom Install-Script im Update-Modus niemals überschrieben.[/li][li]Dem Anwender sollten die unmittelbar folgenden Tipps und Tricks für Anwender mitgegeben werden (so dass dieser z.B. die Updatefähigkeit seines Projektes sicherstellt), da dieser u.U. den Projekt-Exporter und dessen Arbeitsweise nicht kennt[/li][/ul]

Tipps und Tricks für Anwender

[ul]
[li]will man sein installiertes Projekt updatefähig halten, muss zwingend das letzte Installationsprotokoll (welches nach der Instalation unter deem Install-Script zu finden ist, Name endet auf “InstallProtokoll”) vorhanden sein. Ich löse das bei mir so, dass ich das Installscript und das dazugehörige Protokoll in den Ordner “Config” im installierten Projekt verschiebe (wenn der Ordner “Config” nicht vorhanbden ist, kann man diesen nachträglich anlegen, er wird vom Install-Script niemals überschrieben). So finde ich das zu Projekt gehörende Script und Install-Protokoll immer wieder.[/li][/ul]

Hi @ll,

ich hab in der letzten Zeit heftig viele Projekte zwischen meinen Systemen hin- und her kopiert. Dabei handelt es sich nicht mehr um Tests des Exporters an sich, sondern um völlig eigenständige Projekte (aktuelles Beispiel: [b]Pingdom Analysis[/b]).

In der Praxis realisiert man erst so richtig, wie hilfreich das Ding ist. Ich schätze mal, dass der Exporter meinen Entwicklungsaufwand um ca 30-50% reduziert (hin- und her kopieren zwischen Test- und Produktivsystem, Reduktion und der Copy&-Paste-Fehler auf 0, Wegfall der Entwicklung von Installations-Routinen, etc. etc.).

Der Exporter funktioniert -selbst für mich- überraschend gut: Bedenken, die ich zu Beginn der produktiven Nutzung hatte (kommt auch alles im Zielsystem an? hoffentlich verbiegt er mir nicht mein Produktiv-System, werden alle Objekte korrekt verlinkt?, sind die Scripte wirklich 1:1 kopiert? usw usw.), sind völlig verschwunden. Es funktioniert einfach.

Aber: ich hab doch glatt noch ein paar Kleinigkeiten gefunden, die einem das Arbeiten noch einfacher machen.
Also V 1.2 bestellt. Heute geliefert (Download wie immer via Projekt-Homepage), hier das Change-Log:

2012-11-09 V1.2
Bugfixes

[b]Feature

[/b] * in jedes Projektscript wird (beim Export) in die 2. Zeile ein Kommentar mit Timestamp eingefügt:
‚##### Project Exporter Comment: Script Version Stand 08.11.2012 10:53 #####‘
* Install-Script und Install-Protokolle werden automatisch in Config-Ordner des Zielprojektes verschoben,
wenn vorhanden
* bei Updates bleibt die Position des Zielprojekt WFC-Teilbaums erhalten (bei Updates wurde der
Teilprojektbaum bisher immer auf WFC Root-Ebene gesetzt)
* Search-Pattern für Objekt-ID-Tausch in Scripts optimiert

Nachtrag: hab noch eine kleine Änderung in die aktuelle Version aufgenommen, siehe letzter Changelog-Eintrag

Ich wollte hier mal das Thema „Medien kopieren“ als Exportfunktion zur Diskussion stellen. Was meint Ihr, wie sollte soetwas aussehen?

Stichworte:

  • File kopieren
  • Icon WF kopieren
  • Medien anlegen => Objektbaum
  • Profilzuweisung etc.

Hi Thomas,

das ist ein interessanter Punkt. Media-Daten habe ich bisher bewusst vom Exporter ferngehalten. Denkbar und machbar wäre es aber schon.

Mir gehen grad solche Fragen durch die Grübel-Instanz (im Moment würde ich das ausschl. auf .png, gif, jpeg-Grafiken bezogen sehen => die MP3-Sammlung würde ich nicht via Script exportieren :D):

[ul]
[li]begrenzt man das auf Variablen-Icons (Stichwort Datenmenge)?[/li][li]und bei den Variablen-Icons wiederum nur auf den Ordner „webfront\user\icons\fixed“?[/li][li]wenn nein: welche Ordner müssten noch berücksichtigt werden?[/li][li]wie geht man mit exportieren Icons im Zielsystem um? -> bestehende stumpf überschreiben? abbrechen?[/li][li]wenn nicht nur Variablen-Icons: welche Media-Dateien sollten noch berücksichtigt werden?[/li][li]ich hab keine Ahnung, ob und wann man hier in ein Ressourcen-Problem läuft, faöös ja: ab welcher Größe sollte man den Export begrenzen/limitieren?[/li][/ul]

So richtig entscheiden kann ich mich hier nicht, gerade bei Variablen-Icos sehe ich aber gute Chancen, das umzusetzen. Wobei meine Prämisse hier ist: möglichst keine weiteren Konfigurations-Parameter für Projektautor und/oder User einführen, um das Handling weiterhin möglichst einfach zu halten.

mal unabhängig von den obigen Postings habe ich eine neue Version online gestellt.

Download via http://www.ip-symcon.de/forum/f53/ip-symcon-rs-project-exporter-19529/

News diesmal (Changelog):

2012-11-13
Bugfixes

Feature* Kopieren von externen Files (Files, die nicht mit Objekten im IPS-Objektbaum verknüpft sind)
    aus dem IP-Symcon-Ordners ab sofort möglich. Kopierbare Files sind:
    
        [b]Text/Script-Typen:

[/b] php, js, txt, csv, html, htm, css, png, jpg, jpeg, gif
Picture-Typen:
png, jpg, jpeg, gif

Ich denke, ich habe dafür einen einfachen Workflow gefunden (optional, nur wenn man externe Files exportieren will):

[ul]
[li]man kopiert das Script RS PE Export-Files (dieses Script generiert der Project-Exporter automatisch) in den Config-Ordner des Quell-Projekts und gibt dort die Pfade zu den zu kopierenden Dateien oder Ordnern an[/li][li]anschließend Project Exporter starten[/li][li]fertig: es wird wie üblich ein Install-Script generiert, welches nun auch die externen Dateien beinhaltet[/li][/ul]

Das Script RS PE Export-Files sollte im Quellprojekt(Config-Ordner liegen bleiben (sonst muss man ja jedesmal die Pfade wieder neu angeben), es wird nicht ins Zielprojekt exportiert.

Werden Ordner angegeben, so werden diese rekursiv eingesaugt. Im Zielsystem werden evtl. bestehende Dateien überschrieben. Ich habe Lasttests bei mir gemacht, lief überraschen gut: ich habe einen Ordner mit ca. 20 csv-Dateien und .js-Scripts eingescannt, der Ordner war 14MB groß und die Scripte beinhalteten 239.000 Zeilen (in Summe).
Alles wurde ohne Probleme im Quellsystem als Installfile erstellt und konnte auch problemlos in einem Testsystem installiert werden. Voll funktionsfähig.
Das Gleiche bei Grafik-Dateien: funktioniert alles problemlos, die Grafiken finden sich 1:1 im Zielprojekt wieder.

Nur das Öffnen des Install-Scripts in der Konsole hat etwa 2 Minuten gedauert :smiley:
Ich denke, das Limit des Exporters wird beim in IPS eingestellten Limit für die PHP-Threads liegen - welches ich in diesem Fall längst noch nicht ausgeschöpft hatte

ich hab für morgen mal ein kleines Update vorbereitet:

Auszug Changelog:

2012-11-19 V1.4Bugfixes
* Fehlerbehebung Inventory-Export (Fehlermeldung Im Zusammenhang mit nicht gefundenem Profile-Inventory bei
Installationsversuch im Quellsystem, Ursache: fehlerhafter Zeilenumbruch)
-> betrifft auf Script „RS PE Export-Files“, muss ausgetauscht werden!

[b]Feature

[/b] * Versionsprüfung für Script „RS PE Export-Files“ eingebaut
* Workaround für kosmetischen IPS-Editor Fehler: ein ’ (Slash + Hochkomma) am Zeilenanfang wird vom Highlighter falsch interpretiert
(statt ’ wird nun §’ eingefügt)

Wichtig: wer bisher schon das Script „RS PE Export Files“ genutzt hat muss dies erneuern. Das macht man, in dem man das bereits bestehende Child-Script vom Project Exporter löscht und den Project Exporter einmal durchlaufen lässt. Er legt dann ein neues „RS PE Export Files“ als Child an. Dieses kann dann in das Quellprojekt verschoben werden (natürlich nur bei Bedarf)

Download wie immer über die Projekt-HP http://www.raketenschnecke.net/2012/09/25/ips-rs-project-exporter/

Bin endlich dazu gekommen ein Paar Sachen über den Exporter einzubauen - dauerte jeweils gefühlte 3 Sekunden. Wahnsinn! Habe bereits DB Analyzer, VP Terminator und Pingdom. Damit hat sich dann auch meine zitierte Frage als unbedarft herausgestellt :wink: Sehr coole Sache Raketenschnecke :cool:

watt??? wieso so lange?

:D:D

Unsere neue Katze läuft über die Tastatur - dauert halt, bis die mit der linken Hinterpfote STRG und der Vorderen das E trifft. Ist ja erst 10 Wchen alt…

Hallo zusammen,

Ich habe den Projekt Exporter schon mehrmals problemlos eingesetzt. Echt eine tolle Geschichte das Teil. Respekt Raketenschnecke!
Allerdings ist das schon ein Weilchen her. Habe gestern wieder einen Anwendungsfall gehabt, doch leider hat es diesmal nicht funktioniert. Folgende Meldung bekomme ich wenn ich das Skript „IPS RS Project Exporter“ ausführe:

RS Install Generator Testlauf: Mode 1: Export-Script und Ausgabe im Meldungsfenster

Warning:  Objekt Config wurde nicht gefunden in C:\IP-Symcon\scripts\44444.ips.php on line 65

Notice:  Undefined variable: RSPE_ExpScrID in C:\IP-Symcon\scripts\44444.ips.php on line 68
WFC-ID 0 ist keine gültige ID oder WFC_ProjectRootItem leer, WFC-Inventory nicht erstellt
Export-Script "Multiroom (Quell-ID: 56431) 2013_09_12-10_58" ID #23269 angelegt[

Skript 44444.ips.php ist das IPS RS Project Exporter - Skript. Hier meine Konfig:

																															'Version 1.3a, 14.11.2012';
/*********************************************************************************************************************
*  Nutzungsrechte:                                                                                                   *
*	das Script darf für private, nicht kommerzielle Zwecke frei verwendet werden                                      *
*	eine Weitergabe oder Änderung sowie auszugsweise Verwendung des Codes nur nach schriftl. Genehmigung des Autors   *
*	für evtl. entstehende Schäden durch die Verwendung dieses Scripts wird keinerlei Haftung übernommen               *
*  © by Raketenschnecke 2012, mail: raketenschnecke@gmx.de                                                           *
*  // Projekt-HomePage: http://www.raketenschnecke.net/2012/09/25/ips-rs-project-exporter/                           *
*********************************************************************************************************************/

########################### Konfig ##################################################################################

// Angaben für Quell-Projekt
	// hier die IDs des Quell-Projektes (Objektbaum) angeben
	$Root_ID              		= 56431 /*[Multiroom]*/ ;

	// hier die IDs des Quell-Projektes (WFC) angeben
	$WFC_ID     					= 0 /*[WebFront]*/;    	// gültige WFC-ID aus Quellsystem angeben (bei 0 -> keine WFE-Installation)
	$WFC_ProjectRootItem  		= '';     // Quell-Item aus WFC eintragen (Beispiel: 'item1794')


// Copy-Parameter (1: Objekte werden im Zielsystem installiert; 0: Objekte werden nicht installiert)
	'Note:  diese Einstellungen werden als Vorgabe 1:1 in das Exportscript übertragen und können dort vom Anwender
	ebenfalls angepasst werden                                                                                 ';
	$VarProfile                = 1;     // true: überschreibt vorhandene Profile im Zielsystem, false: installiert nur neue Profile
	# !!! die folgende Option mit äußerster Vorsicht nutzen  (Default-Wert 0) !!! #
	$existsScriptsoverwrite    = 0; 		// 1: im Zielsystem existierende Scripte (=benamste Scriptfiles) werden überschrieben

// Projektordner für Export-Scripte (im IPS-Objektbaum)
	$ProjectDirName            = "Z00 Projekte";                     	// Name für Projekt-Rootordner (wird unterhalb der Root-kategorie angelegt)
	$ExportDirName             = "RS Project Exporter: Export Dir";   // Name für Export-Ordner (innerhalb des Projekt-Rootordners)

// max Scriptlaufzeit (hier kann die Laufzeitbegrenzung von PHP für dieses Script individuell hoch gesetzt werden
	$maxRunTime                = 30; // Default: 30 sec

// Script-Testlauf
	$Testlauf                  = 1;  // 0 = nur Exportfile schreiben, 1 = Export-File + Meldungsfenster, 2 = nur Meldungsfenster

Bin mittlerweile auf IPS 3.0 #2932. Keine Ahnung ob das damit eventuell etwas zu tun haben kann :confused:

Da mußt Du ihn besser selbst auf seiner Seite anschreiben.

Hi Boui,

Danke für den Tipp. Hab mal auf seiner Seite nachgesehen. Mittlerweile gibts ne V1.8. Mit dieser hats wieder auf anhieb geklappt. :slight_smile:

Moin,

hat jemand den Exporter schon mal auf einem Linux/Symbox System ausprobiert?

Am besten auf seiner Website nachschauen.
Das Original vor IPS 4.0 funktioniert auf jeden Fall nicht.
Michael

Hm leider gibt es da keine Infos.

gibts es noch eine andere Möglichkeit zwei IPS Projekte in eins zu migrieren?