Register Variable per Skript die Übergeordnete Instanz setzen

Hallo zusammen,

ich arbeite zur Zeit an einem Symcon Modul für Plex.
Dazu möchte ich die ‚Übergeordnete Instanz‘ einer Register Variablen per Skript setzen.
Hat das schon jemand mal gemacht, und kann mir sagen wie ?

Die IPS_SetProperty Doku gibt mir leider nur die Property für das ‚Ziel‘.

Danke!

Gruß,
Daniel

In Modulen werden keine Registervariablen verwendet siehe Datenaustausch
Datenfluss — IP-Symcon :: Automatisierungssoftware

Zum Parent schickst Du mit
SendDataToParent — IP-Symcon :: Automatisierungssoftware

Vom Parent bekommst Du die Daten mit
ReceiveData — IP-Symcon :: Automatisierungssoftware

Beispiel wie dies in einem Modul aussieht findest Du im SymconTest Modul

Ich danke dir, dass war mir noch nicht klar. Ich denke ich habe das Prinzip verstanden. Werde ich ausprobieren!

Ich stelle fest, so ganz kapiert habe ich das wohl noch nicht :frowning:

Mein Bindeglied zwischen Client Socket und verarbeitendem Skript ist bisher immer die Register Variable gewesen.
Nun überlege ich die ganze Zeit wie ich das nach dem Datenflussmodell realisieren kann.

Das Modell selbst denke ich habe ich verstanden.

Müsste ich mir ein eigenes IOModul schreiben und den Client Socket dort nachprogrammieren ?

Danke für einen Gedankenanstoß!

Daniel

Du kannst wie im Datenfluss-Modell angegeben die GUID des integrierten virtuellen IO Modules als Parent Requirement angeben. Die Verknüpfung erfolgt über die RequireParent bzw. ForceParent-Funktionen im Constructor. In Deinem Modul implementierst Du die Funktionen SendToParent und ReceiveData. Für das evtl. notwendige Zwischenspeichern von ankommenden Daten musst Du selbst sorgen.

HTH
Tommi

Danke tommi!

Die generelle Funktionsweise habe ich verstanden, es ist eine Message Chain und jeder hört nur auf sein „Abo“. Kenne ich so ähnlich schon aus anderen Programmiersprachen.

Was ich nicht verstehe ist die Reihenfolge der Objektinstanzen für meinen konkreten Fall und die konkrete Abbildung.

Verstehe ich das richtig: Mein Modul hat das Virtual IO als Parent und Virtual IO hat den Client Socket als Parent ?
Falls dem so ist, muss ich eine eigene Virtual IO Klasse erstellen, nur dann kann ich ihm sagen wen er als Parent hat.

Was passiert wenn ich mehrere Objekte basierend auf meinem Modul laufen habe ? Jedes Objekt müsste ja in dem Fall sein eigenes Virtual IO und Client Socket Objekt (benötigte es vorher auch) bekommen.

Was macht das Virtual IO eigentlich genau ? Bei manueller Erstellung kann ich damit nichts anfangen.

Ok habs kapiert.

Danke an euch für die Hilfe!

Na dann viel Erfolg beim zusammenbasteln. Was soll das Plex Modul denn letztendlich alles machen?

Verstehe ich das richtig: Mein Modul hat das Virtual IO als Parent und Virtual IO hat den Client Socket als Parent ?

Nein, das Virtual-IO-Modul ist nur ein Interface, eine Abstraktionsschicht

Was macht das Virtual IO eigentlich genau ?

Da es selber nichts tut ist seine Interface Implementierung ein kompatibles IO-Modul wie Socket, SerialPort usw., mit dem man sich verbinden kann. So braucht man seine Module nur mit einer kompatiblen Parent GUID zu definieren und kann trotzdem mit all diesen IO-Modulen arbeiten

Was passiert wenn ich mehrere Objekte basierend auf meinem Modul laufen habe

Das kommt auf die Objekte (Splitter oder Device-Module) an. Entweder sie können sich einen ein IO-Modul teilen und bekommen alle die gleichen Daten oder man macht noch einen Splitter dazwischen, der als einziger mit dem IO-Modul spricht, aber mehrere Device-Module versorgt. Da IO-Module sich meistens keine physische Hardware teilen können, ist der Splitter oft notwendig.

Tommi

Danke sehr!
Du kannst damit einen Plex Home Theater (PHT) Client auf Windows, OSX, Linux Basis ansteuern, er reagiert dank des JSON RPC Sockets sofort auf Eingaben und man bekommt sofort Rückmeldung wenn am Gerät selbst gesteuert wird. Cover, Titelinformationen können angezeigt werden. Ich werde noch Methoden implementieren um PHT aus anderen Skripten heraus steuern zu können.

Plex auf geschlossenen Systemen (z.B. Fernseher, SetTop Boxen) anzusteuern dürfte nicht funktionieren, weil man den JSON RPC Port erst öffnen muss in einer Konfigurationsdatei vom PHT.

Es funktioniert auch schon soweit ganz gut, ich muss nur noch ein paar kleine Details ändern und dann würde ich den Link auf das Repository im entsprechenden Bereich hier im Forum teilen.

Klingt gut geht das dann auch mit Rasplex?

Hättest mal eher was gesagt. Ich habe das gleiche für Kodi ‚fertig‘ auch mit JSON-RPC over TCP.
Dann hättest du zumindest schon mal einen Splitter der die RPCs als JSON verpackt und siehst wie der Datenaustausch funktioniert :wink:
Michael

Ja, das geht. Wurde schon getestet.

Würde es mir trotzdem gerne mal ansehen.
Hab das Modul zwar soweit fertig, aber wer weiß eventuell kann ich bei mir noch etwas verbessern bevor ich es freigebe.

Na das ist ja prima dann habe ich schon einen Anwendungszweck wenn Du das Modul mal zur Verfügung stellen solltest ;).

Mache ich nächste oder übernächste Woche.

Wie versprochen habe ich das Modul hier veröffentlicht:

Plex Home Theater Modul