[erledigt] Lightctrl per Script anpassen

[erledigt] Lightctrl per Script anpassen

Postby klausbs » 29.08.2017, 21:52

Blink2.jpg
Hallo zusammen,
bisher habe ich noch wenig Erfahrung mit XML-Script. Deshalb frage ich hier die Kenner.

Mit der Lichtsteuerung arbeite ich, läuft auch und soll nun per Script angesprochen werden. Ich möchte das Attribut "enable" (in der Tabellen-View als "Freigeben" dargestellt) verändern.
Als Ansatz habe ich dazu gewählt
Code: Select all
<set vr="var1" table="lightctrl" id="%oid%" set="enable" setint="false"/>

Entweder mache ich das falsch oder das Setzen der Attribute aus "lightctrl" ist gar nicht erlaubt? Es tut sich zumindest in der Tabelle nichts.
Kann mir da jemand helfen?

Beim Testen ist mir noch ein Problem aufgefallen, wenn ich mir "lightctrl" im Plan-Baum ansehe.
In "lightctrl" have ich folgendes eingerichtet:
Image
"Blinklicht" hat zwei unterschiedliche Definitionen.
Im Plan-Baum werden auch zwei Einträge angezeigt, aber beide haben identische Attribut-Werte:

Image
Hier hätte ich die Werte des 1. Eintrags aus "lightctrl" erwartet.

Image
Dargestellt sind in beiden Fällen die Attribut-Werte des 2. Eintrags aus der Tabelle "lightctrl".
Verstehe ich da irgendetwas falsch?
Eine Erklärung könnte mir helfen.
Danke und Gruß
Klaus
You do not have the required permissions to view the files attached to this post.
Last edited by klausbs on 31.08.2017, 22:10, edited 1 time in total.
ESU ECoS 50200, Spur G (LGB), Mac OS X, GCA101/GCA500/GCA173, Artnet - DMX, Qdecoder
klausbs
 

Re: Lightctrl per Script anpassen

Postby rjversluis » 30.08.2017, 06:48

Moin Klaus,

diese Tabelle ist Problematisch weil die Einträge keine eigene Kennung haben sonder der Kennung von ein Ausgang welche mehrmals auf geführt werden können so wie in dein Beispiel.
Also der id im XMLScript ist hier nicht eindeutig und deswegen wird nur der erstgefundenen passende Eintrag genommen.
Ich muss diese Tabelle erweitern mit ein Eindeutige Kennung.

BTW: var1 muss der String Wert "true" haben.
Best Regards, Rob.
:!: PS: Do not forget to attach the usual files.
:!: PS: Nicht vergessen die übliche Dateien an zu hängen.
[ macOS - Linux] - [ N: CBus - CAN-GCA ] - [ 0: RocNetNode - GCA-Pi ]
rjversluis
Site Admin
 

Re: Lightctrl per Script anpassen

Postby rjversluis » 30.08.2017, 08:12

Hallo Klaus,

ab jetzt gibt es auch bei LightControl Einträge eine Eindeutige ID:
http://wiki.rocrail.net/doku.php?id=lightctrl-en#setup
Diese ID wird einmalig in der Rocrail Server generiert, und kann danach nach belieben angepasst werden.
Diese ID sollte eindeutig sein und kann dann in XMLScript verwendet werden.
Best Regards, Rob.
:!: PS: Do not forget to attach the usual files.
:!: PS: Nicht vergessen die übliche Dateien an zu hängen.
[ macOS - Linux] - [ N: CBus - CAN-GCA ] - [ 0: RocNetNode - GCA-Pi ]
rjversluis
Site Admin
 

Re: Lightctrl per Script anpassen

Postby klausbs » 30.08.2017, 09:12

Hallo Rob,
einfach genial wie schnell du auf solche Dinge reagierst. Vielen Dank.
Bin gerade unterwegs und werde aber heute Abend gleich testen.
Danke und beste Grüße
Klaus
ESU ECoS 50200, Spur G (LGB), Mac OS X, GCA101/GCA500/GCA173, Artnet - DMX, Qdecoder
klausbs
 

Re: Lightctrl per Script anpassen

Postby klausbs » 30.08.2017, 20:25

Hallo Rob,
habe jetzt getestet, Tabelle "lightctrl" ist nun passend mit eindeutigen Id's und der Plan-Baum ist jetzt auch korrekt!

Ich kann auch mit der query-clause alle Attributwerte (z.B. fromhour, tohour, enable, deactivate, etc.) lesen.
Aber ich kann kein Attribut mit der set-clause verändern. Sind dort Veränderungen durch Scripte verboten oder muss ich noch etwas beachten?

Da ich noch beim Anlagenbau und -test bin, würde ich gern mit einem Script die einzelnen Lichter zwischenzeitlich enablen und disablen wollen.
Bei ca. 60 Lichtern ist das Testen sonst immer sehr mühsam, da ich dann alle Lichter untersuchen muss , obwohl z.B. schon 40 Lichter ok sind und die will ich dann per Taster disablen. Sonst muss ich jedesmal in die Tabelle gehen und manuell die 40 Einträge bearbeiten.
Ich hoffe, ich konnte es verständlich beschreiben.
Danke und Gruß
Klaus
ESU ECoS 50200, Spur G (LGB), Mac OS X, GCA101/GCA500/GCA173, Artnet - DMX, Qdecoder
klausbs
 

Re: Lightctrl per Script anpassen

Postby rjversluis » 31.08.2017, 07:08

Moin Klaus,
klausbs wrote:Aber ich kann kein Attribut mit der set-clause verändern. Sind dort Veränderungen durch Scripte verboten oder muss ich noch etwas beachten?

da gibt es eigentlich keine Restriktionen...
Best Regards, Rob.
:!: PS: Do not forget to attach the usual files.
:!: PS: Nicht vergessen die übliche Dateien an zu hängen.
[ macOS - Linux] - [ N: CBus - CAN-GCA ] - [ 0: RocNetNode - GCA-Pi ]
rjversluis
Site Admin
 

Re: Lightctrl per Script anpassen

Postby rjversluis » 31.08.2017, 09:27

Hallo Klaus,

der Weg war nur bis zur Hälfte vorhanden. ;)
Ab jetzt sollte es funktionieren.
12.639+
Best Regards, Rob.
:!: PS: Do not forget to attach the usual files.
:!: PS: Nicht vergessen die übliche Dateien an zu hängen.
[ macOS - Linux] - [ N: CBus - CAN-GCA ] - [ 0: RocNetNode - GCA-Pi ]
rjversluis
Site Admin
 

Re: Lightctrl per Script anpassen

Postby klausbs » 31.08.2017, 12:19

Hallo Rob,
ich war schon am Verzweifeln, weil ich es nicht hin bekam und wollte gerade noch ein Beispiel senden.
Doch du warst wieder mal schneller :coding: und hast erkannt, was noch gefehlt hat.

Erneut getestet: alles läuft perfekt! :thumb_up:
Jetzt kann ich fleißig an meiner Anlage weiter entwickeln.

Wirklich vielen Dank und beste Grüße
Klaus
ESU ECoS 50200, Spur G (LGB), Mac OS X, GCA101/GCA500/GCA173, Artnet - DMX, Qdecoder
klausbs
 

Re: [erledigt] Lightctrl per Script anpassen

Postby klausbs » 02.09.2017, 19:09

Hallo zusammen,
hier noch ein kleiner Nachtrag, falls sich jemand fragt: wozu braucht er das?

Aktuell bin ich am Aufbau meiner Innenanlage (Spur G) und teste ständig noch hin und her.
Für die Lichtsteuerung habe ich einen Qdecoder ZA3-Base mit dem Ergänzungsmodul für 96 Ausgänge im Einsatz.
Da wird es schnell unübersichtlich, wenn beim Testen so ca. 30-40 Ausgänge schon ok sind und ich dann z.B. die gerade neuen Ausgänge prüfen will. Entweder werden die 30-40 ständig mit aktiviert und deaktiviert oder ich muss sonst manuell in der Lichtsteuerung ständig umkonfigurieren.
Bei der Anzahl ist das extrem lästig.
Deshalb habe ich jetzt zwei Schalter mit "Licht an" und "Licht aus" eingerichtet, die mir alle Einträge in der Lichtsteuerung aktivieren oder deaktivieren. Die Schalter steuern je eine Aktion in der mittels Script die Aktivitäten ausgeführt werden. Damit wird das Testen deutlich einfacher, weil ich in der Lichtsteuerung dann nur die aktuell zu prüfenden Einträge manuell bearbeiten muss.
Wen es interessiert, hier die beiden Scripte.
"Licht an" setzt die "Freigabe" in der Lichtsteuerung, das Einschalten der Ausgänge übernimmt anschließend die Lichtsteuerung selbst.
Code: Select all
<?xml version="1.0" encoding="UTF-8"?>
<xmlscript>
<!-- Licht an durch Setzen Freigabe in Lichtsteuerung -->
<!-- einschalten erfolgt automatisch durch Lichtsteuerung -->

<vr id="var1" value="1" text="true"/>
<foreach table="lightctrl">
   <set vr="var1" table="lightctrl" id="%oid%" set="enable" setint="false"/>
   <sleep time="50"/>
</foreach>
<co id="Lichtan" cmd="off"/>

</xmlscript>


"Licht aus" setzt die "Freigabe" in der Lichtsteuerung zurück. Da aber die Lichtsteuerung selbst anschließend die Ausgänge nicht abschaltet (würde sonst erst bei Neustart erfolgen), wird das explizit durchgeführt.
Code: Select all
<?xml version="1.0" encoding="UTF-8"?>
<xmlscript>
<!-- Licht aus durch Entzug Freigabe in Lichtsteuerung -->
<!-- und anschliessend ausschalten der jeweiligen Ausgaenge -->

<vr id="var1" value="1" text="true"/>
<foreach table="lightctrl">
   <set vr="var1" table="lightctrl" id="%oid%" set="enable" setint="true"/>
   <sleep time="50"/>
   <query vr="var2" table="lightctrl" id="%oid%" get="coid"/>
   <co id="@var2" cmd="off"/>
   <sleep time="50"/>
</foreach>
<co id="Lichtaus" cmd="off"/>

</xmlscript>


Ok, das soll nur als evtl. hilfreiche Anregung dienen.
Viele Grüße
Klaus
ESU ECoS 50200, Spur G (LGB), Mac OS X, GCA101/GCA500/GCA173, Artnet - DMX, Qdecoder
klausbs
 


Return to XMLScripting (DE)