SelectPath zur Auswahl eines Verzeichnisses

Es gibt ja SelectFile, damit öffnet sich ein Auswahl Dialog mit dem ich eine Datei auswählen kann, die dann in IP-Symcon importiert wird.

Ich würde gerne aus IP-Symcon eine Datei auf einer Festplatte beschreiben. Dazu kann ich als Dateipfad eine ValidationTextBox nutzten und dort den Pfad eingeben lassen. Bei der Eingabe passieren aber oft Flüchtigkeitsfehler, die nicht passieren würden, wenn man hier einen Auswahldialog zur Verfügung hätte wie bei SelectFile.

Daher würde ich mir gerne ein neues Element in einem Konfigurationsformular wünschen SelectPath. Der Unterschied zu SelectFile wäre, dass hier nicht die Datei selber in IP-Symcon eingelesen wird, sondern einfach nur der Pfad zu der Datei in einer Property abgespeichert wird, auf die man dann später wieder zugreifen kann um dann mit PHP Daten in die Datei an diesem Pfad abspeichern zu können.

1 „Gefällt mir“

+1 mit der zusätzlichen Option auch einen Ordner anzugeben.

Ich sehe dies sehr skeptisch. Allgemein sollten Schreibzugriffe nur im IP-Symcon Pfad gemacht werden (aus Sicherheitsgründen) und außerdem sind diese Einstellungen nicht Plattform-übergreifend. D.h. wenn jemand sowas nutzt und dann das Backup von Windows nach Linux umzieht, dann fährt diese Einstellung voll gegen die Wand.

Was für Use-Cases gibt es für Dateien, welche definitiv nicht durch Attribute abdeckt werden können?

Zusätzlich sind Schreibzugriffe auf die Festplatte nicht gern gesehen. Beim Raspberry Pi, welcher meistens mit einer SD Karte betrieben wird, kann so ein Modul, welches ständig auf die Festplatte etwas schreibt, die SD Karte einfach kaputt machen, ohne dass sich der Laie dessen bewusst ist.
Für Medien (=Bilder) haben wir deswegen auch das Konzept es Media-Cache, welcher die Dateien im RAM hält und nur beim Beenden auf die Festplatte schreibt.

Es mag Ausnahmen geben, aber in den meisten Fällen wollt ihr und solltet ihr nicht auf das Dateisystem schreiben.

paresy

Konkret geht es eben um den Export von Daten aus IP-Symcon für externe Systeme, so wie man eben mit SelectFile Daten nach IP-Symcon von extern importieren kann. Es wird also weder kontinuierlich etwas auf Festplatte geschrieben noch kontinuierlich verarbeitet. Wenn man so was machen wollte in IP-Symcon, dann kann man das in der Tat durch Attribute lösen bzw. ein Media Element.
Das ersetzt aber nicht den einmaligen Export von Daten für ein externes System. Wenn ich Daten zum Beispiel in einem Word Dokument speichern will, dann mache ich das auf einer externen Festplatte die für IP-Symcon erreichbar ist und öffne dann das Word Dokument auf dem Rechner wo ich es weiter bearbeiten oder ausdrucken will. Ich würde selber nicht auf die Idee kommen das Word Dokument selber in IP-Symcon abspeichern zu wollen um das dann von externen Systeme aus IP-Symcon öffnen zu müssen.
Das gleiche gilt doch für Excel Dateien usw. so was speichere ich auf einer externen Festplatte ab und nicht in IP-Symcon selber und ich bearbeite so was auch nicht in IP-Symcon selber.

Wenn ich (und ja ich habe so etwas gerade in Arbeit) wirklich etwas auf dem Dateisystem mache, dann hat mein Modul die Hoheit darüber.
Nicht der User. Der Pfad und auch die Dateien sind komplett in der Hoheit des Moduls.
Sollte es nötig sein Daten in diese Datei extern hochzuladen, so geht das über SelectFile und das Modul kann sowohl hochgeladene Daten prüfen als auch weiterhin die Hoheit über die Datei/Dateisystem wahren.

Somit sehe ich auch den Use-Case nicht, sondern eher die ganzen technischen und sicherheitskritischen Probleme. Und der User muss auch das Verständnis dabei haben, dass hier ja nur ein Serverseitiger Pfad gewählt werden kann.
Michael

Download eines Export sehe ich ebenfalls viel besser in einem /hook/modul/export Endpunkt, den du dann auch Herunterladen kannst. (Ein Button kann im Formular ja direkt den Download öffnen) Dein Vorschlag bedeutet, dass derjenige sich die Datei vom Dateisystem fischen muss, was insbesondere beim Pi oder auf der SymBox mit einem zusätzlichen Tools einher geht.

paresy

Öh… das sollte jetzt schon funktionieren; wollte ich auch noch umsetzen. Bisher aber keine Zeit gehabt :stuck_out_tongue:

Konzept war alles zu zippen und über einen Button in der Form einen download starten.

Alle anderen Vergleiche von dir werde ich ignorieren. Symcon ist ein Server/Client System und keine Textverarbeitung.
Michael

Ok, das wäre auch eine Möglichkeit. Dann formuliere ich den Wunsch halt um. Ich wünsche mir also ein Feature mit dem ich aus einem Modul in einen von IP-Symcon vorgesehen Pfad Dateien ablegen kann. Gleichzeitig sollte dann IP-Symcon aber auch in der Lage sein eine gesicherte Oberfläche für einen User zur Verfügung zu stellen, um solche Dateien dann von einem IP-Symcon System herunter laden zu können.
Das würde auch das Problem lösen, dass IP-Symcon Zugriff auf die externe Festplatte braucht. In dem Fall dreht man das ja um, dann könnte man mit einem Browser der Wahl von einem Rechner der Wahl, Daten aus IP-Symcon herunter laden. Damit da nicht jeder selber was bauen muss, würde ich mir da eine einheitliche Adresse wünschen unter der IP-Symcon solche Dateien zur Verfügung stellt.

Habe ich ja persönlich ja auch nicht behauptet. Da man aber z.B. Daten aus dem Archiv auch in Excel weiter analysieren und anschauen kann, würde es durchaus auch Sinn machen z.B. mit einem Modul oder einer Funktion die IP-Symcon selber zur Verfügung stellt, bei Bedarf eine Excel Datei zu erstellen, vielleicht sogar schon mit einer Pivot Tabelle. Dann muss man so was nur noch von einem externen System herunter laden, wenn man so eine Excel Datei nutzten will.

Dafür gibt es das SDK für Excel.
Das Vorgehen es in Symcon bereitzustellen ist unnötig. Der Client (Excel) kann die Daten per Json-RPC laden.
https://www.symcon.de/service/dokumentation/entwicklerbereich/sdk-tools/sdk-excel/
Wenn du also mehr willst, kannst du das entsprechend in Excel umsetzen.
Michael

Ok da hast Du in dem Fall ja recht, ich wollte das ja nur als ein Beispiel anführen von einem Programm was vielleicht häufig genutzt wird. Ich persönlich hätte andere Anwendungsbereiche mit anderen Programmen. Jetzt kann sich jeder für ein Modul die Arbeit machen umständlich ein Webhook zu bauen mit einem Download Formular. Oder IP-Symcon bietet halt selber eine Download Seite an, die über eine einheitliche Adresse erreichbar ist, das kann dann so auch generell dokumentiert werden. Es muss dann also nur noch ein definierten Weg geben bzw. eine Beschreibung wo PHP Module solche Dateien abzulegen bzw. zu speichern haben, damit so eine Datei automatisch in so einem Download Bereich auch aufgelistet wird.

So was für jedes Modul separat zu bauen halte ich wiederum nicht für zielführend, wenn es einfach darum geht, das es generell einen einfachen und auch sicheren Weg geben sollte, von einem IP-Symcon Daten / Files herunter laden zu können, ohne externe Tools wie einen FTP Client, sondern eben einfach mit einem Formular in einem Browser.