habe ich die Frage, welches zur Zeit und auch in IPS 4.x der „Weg der Wahl“ ist, um remote Variablen in IPS zu setzen oder Skripte auszuführen, egal ob der Client ein Android, Windows oder Linux ist.
Eine wichtige Bedingung für mich ist es, dabei niemals über eine ID zu gehen, sondern immer über den logischen Namen bzw. Pfad der Variablen auf dem IPS Server.
Eine wichtige Bedingung für mich ist es, dabei niemals über eine ID zu gehen, sondern immer über den logischen Namen bzw. Pfad der Variablen auf dem IPS Server.
Das widerspricht dem Konzept von IP-Symcon. Je Lösung, die du über den Pfad machst, werde ich persönlich für „den falschen Weg“ titulieren
Für IDs würde ich per JSON-RPC gehen, oder gerne auch die neuen WebHooks.
Tankst du auch so dein Auto? Niemals schauen was auf der Säule steht immer im Notizbuch die Beschreibung „Dritte von Links“ merken oder per Pfad „An der Tanke in Hamburg, Wandsbeker Chaussee, Säule 3, 5. Zapfhahn von Links“. Irgendwann bauen sie eine zweite Tankstelle in der Straße… Kann man machen. Auch in IPS. Erkennst du das Fehlerpotential?
Ich lasse mich gerne korrigieren, aber diese Analogie ist für mich keine.
Ich möchte nicht an Tankstelle 23345 tanken, sondern an der Tankstelle mit dem Namen xy. Ich möchte auch nicht 32133 tanken, sondern Diesel. Also muss dort Diesel stehen. IDs sind für mich Schall und Rauch und können sich ändern, wenn ich IPS das nächste mal (neu)konfiguriere, während Namen (oder von mir aus auch Idents) die persistente Information sind. Wenn ich zwei Tankstellen mit dem gleichen Namen in die Wandsbeker Chaussee setze, habe ich tatsächlich eine Mehrdeutigkeit. Dann ist diese aber entweder gewollt (=es ist egal, wo ich tanke) oder aber ein logischer Fehler beim Erzeugen der Strukturen.
Eine gewisse Relevanz hat natürlich die sinnvolle und eindeutige Strukturierung, so dass „3. Zapfsäule von links“ ungünstiger ist als z.B. „Diesel“.
Wenn du meine Analogie nicht magst passe ich sie dir gerne an
Wie eindeutig ist der Pfad für die Variable /Tankstelle/Hamburg/Wandsbecker Straße/Diesel in diesem Beispiel?
Es geht noch weiter. Mit einem Klick (absicht, unbedacht oder versehen) verschiebe ich ganze Bäume und Strukturen. Die Pfade ändern sich die Variablen sind „verschwunden“. Die ID bleibt.
Wie gesagt. Kann man machen in IPS. Aber eine ID bleibt der eindeutige Identifizierer eines jeden Objekts.
so dass „3. Zapfsäule von links“ ungünstiger ist als z.B. „Diesel“.
Du meinst der eindeutige Bezeichner „Diesel“ ist aussagekräftiger für das Produkt in der 3. Säule am 4. Hahn? Genau!
ich glaube, unsere Diskussion ist eher philosophisch bzw. Einstellungssache und unsere Positionen widersprichen sich auch nicht direkt.
Für mich ist die „Struktur“ die Wahrheit, nicht die IDs. Wenn ich die Struktur verschiebe oder ändere, habe ich in der Tat ein Problem, wenn ich mit Pfaden arbeite. Dementprechend ist das von dir angesprochene Fehlerpotenzial vorhanden.
Wenn ich aber von außen auf ein System schaue und es erkunde (z.B. einen Verzeichnisbaum, ein Haus mit Geschossen, Räumen, Gewerken, …), sind die internen IDs für mich nicht relevant. Wie sonst würde ich mich in einem weiteren/neuen Haus zurecht finden?
Bevor ich loslaufe und an einer eigenen Lösung arbeite: Gibt es schon fertige Lösungen? Oder ist der Beitrag Tasker-Skripte-in-IP-Symcon-starten als Grundlage zu nehmen und daraus eine neue Lösung zu entwickeln?
Hinter dem vorgestellten Tasker-Mechanismus steckt ein http Post, das sollte also von allen OS möglich sein. Meine Frage ging eher in die Richtung, wie ich den Namen/Pfad mit in den Aufruf packe?
Da inzwischen bei mir neben dem Wirksystem auf Windows mit IPS 3.4 noch 4 andere Raspis mit IPS 4.0 und denselben Skripts zusammenarbeiten sollen, habe ich weitgehend auf Pfad-Identifizierung umgestellt. Thema war hier
Voraussetzung ist natürlich, daß die zusammengehörigen Objekte immer in gleicher Position zueinander stehen. Bei Homematik-Komponenten ist das ja auch zwangsläufig so.
Ein Remote-Aufruf von einem Raspi an das Wirksystem sieht dann bei mir in etwa so aus:
wobei im Beispiel ‚BLEvis/ACT‘ der Ident-Pfad eines Skriptes ist, zusammengesetzt aus
‚BLEvis‘ als im System eindeutiger Ident einer Kategorie und
‚ACT‘ als Ident eines darunterliegenden Skriptes (das aufgerufen wird) und eben in dieser ‚BLEvis‘-Objektgruppe verankert ist. Andere Objektgruppen können auch so ein Skript beinhalten.
(das ganze nur mal zur Anheizung der Diskussion, über Philosophien läßt sich ja trefflich streiten.
Ich hab mal einen Telnet Client gestrickt, der einem ermöglichte durch den Baum zu navigieren wie in der guten Alten DOS Zeit. War ein nettes Null-Nutzen-Projekt. Just for fun. Wollte davon immer noch mal ne neue Version von auflegen.
Für dich soll ja die Struktur die neue „Wahrheit“ werden, wie du schreibst. Wir waren uns ja schon einig, dass sie aber keinesfalls eindeutig ist. Um durch diese Struktur zu navigieren musst du sie zu allererst einmal auslesen. Du beginnst einfach damit dir aller Entities der Ebene 0 (das rootverzeichnis) zu erfragen. IPS wehrt sich mit einer Liste aller Objekte wenn du es mit IPS_GetObjectList beim idlen störst. Mit dem Aufruf von [b]IPS_GetObject[/b] bekommst du alle Details zu deinem Objekt. Dann kannst du, wie du es nanntest, von hier aus dein Haus „erkunden“ und dich tiefer in deinen Baum hineinhangeln.
Wenn du nur Interesse an einem Teilbereich des Baumes hast lässt sich diese Prozedur natürlich beliebig verkürzen.
Deinen Pfad bekommst du dann rückwärts mit [b]IPS_GetObjectIDByName[/b] wieder aufgelöst. Ist ein bisschen Fummelkram aber mit etwas Fleiß kannst du dir so die IPS-Console komplett nachbauen. Ich habs schon gemacht.