====== Multimaus-Aktionen ====== Rocrail bietet mindestens 2 Möglichkeiten um die Weichen-Befehle der Multimaus auszuwerten und andere Aktionen wie z.B. den Aufruf von Accessories auf BiDiB-Knoten zu steuern. * Befehls-Zuordnung * mittels Skript ===== Befehls-Zuordnung ===== Die einfachste Möglichkeit des Schalten ist über Befehlszuordnung: Quelle: [[https://wiki.rocrail.net/doku.php?id=rocrailini-cmdmapping-de|Rocrail Wiki]] {{:rocrail:xpressnet-befehls-zuordnung.png}} Nach dem Erstellen der Befehls-Zuordnung muss Rocrail neu gestartet werden. ===== Schalten über XML-Skript ===== Dazu muss für jede Weiche die über die Multimaus gesteuert werden soll eine Weiche in Rocrail angelegt werden. Im Beispiel wird eine Weiche mit der Adresse 24 angelegt. Sie erhält die Kennung ''sw24''. {{:rocrail:00_xpressnet-accessorymanual-weiche24_allgemein.png}} Auf dem Schnittstellen-Tab muss (anders als normalerweise bei den BiDiB-Knoten) die Adresse ''24'' und nicht der Port ''24'' eingerichtet werden. {{:rocrail:01_xpressnet-accessorymanual-weiche24.png}} Das Skript welches den Multimaus-Befehle auswertet muss über den ''Aktionen...''-Button auf dem Allgemein Tab(siehe oben) definiert werden: {{:rocrail:02_xpressnet-accessorymanual-weiche24_aktionssteuerung.png}} Die Skript-Aktionen müssen zuvor über ''Tabellen > Aktionen ...'' eingerichtet werden. {{:rocrail:03_xpressnet-accessorymanual-aktionen.png}} Als Type muss ''Ext. Programm starten'' ausgewählt werden. Anschliessend kann unter ''Befehl'' der Scriptname vergeben werden. Durch Klick auf den ''Edit''-Button öffnet sich der Script-Editor. {{:rocrail:04_xpressnet-accessorymanual-aktion-test1.png}} Im Skript-Editor wird Rocrail-Script verwendet: {{:rocrail:05_xpressnet-accessorymanual-aktion-test1-script.png}} Das gezeigte Beispiel-Script schreibt alle Anweisungen mit '''' mit grünem Text in das Server-Trace-Fenster von Rocview. ===== Accessory schalten ===== Um ein Accessory zu schalten, muss eine Weiche (z.B. **sw1**) ganz normal konfiguriert werden. Für das nachfolgende Skript ist die Weiche sw1 im Plan als Weiche an einer OneControl definiert und das Accessory schaltet die Weiche hin und her. Im Skript kann diese Weiche dann angesteuert werden durch die Zeilen: Mit diesem Befehl wird die Weiche mit der Kennung **sw1** auf abzweigend geschalten. Diese Zeile kann durch Zusammenstellung im unteren Bereich des XmlSkript-Editor von Rocrail erstellt werden. {{:rocrail:06_script_ansteuerung_weiche_mit_accessory.png}} Es ist auch möglich ganze Fahrstrassen zu schalten. Dazu muss eine Anweisung für eine Route erstellt werden. ===== Trace Level einstellen ===== Um zu sehen ob Rocrail die Weiche korrekt findet, muss der Trace Level Automat aktiviert werden. Im nachfolgenden Trace sieht man, dass die Weiche (switch) nicht gefunden wurde, weil die Adressierung falsch war: 20180915.181406.371 r9999I bidibrea OBiDiB 3985 MSG_CS_ACCESSORY_MANUAL path=0.0.0.0 addr=23 event=0x20 ON 20180915.181406.371 r9999a 000041DC OModel 5158 trying to match switch event: 1744830518:24:0:0 type=0 uidname=[ ] 20180915.181406.371 r9999a 000041DC OModel 3651 no more switches found by address [24,0] 20180915.181406.371 r9999a 000041DC OModel 5183 trying to match signal event: 1744830518:24:0 type=0 uidname=[ ] 20180915.181406.371 r9999a 000041DC OModel 3733 no signal found by address [1744830518,24,0] type=0 uidname=[ ] 20180915.181406.371 r9999a 000041DC OModel 4421 no tt found by address 1744830518:0 20180915.181406.371 r9999a 000041DC OModel 5235 trying to match output event: 1744830518:24:0 type=0 value=0 uidname=[ ] 20180915.181406.371 r9999a 000041DC OModel 3763 no output found by address [1744830518,24,0] type=0 uidname=[ ] 20180915.181406.371 r9999a 000041DC OModel 5252 trying to match signal event: 1744830518:24:0 type=0 uidname=[ ] 20180915.181406.371 r9999a 000041DC OModel 3733 no signal found by address [1744830518,24,0] type=0 uidname=[ ] 20180915.181406.561 r9999I bidibrea OBiDiB 3985 MSG_CS_ACCESSORY_MANUAL path=0.0.0.0 addr=23 event=0x00 OFF 20180915.181408.883 r9999I bidibrea OBiDiB 3985 MSG_CS_ACCESSORY_MANUAL path=0.0.0.0 addr=23 event=0x21 ON 20180915.181408.883 r9999a 000041DC OModel 5158 trying to match switch event: 1744830518:24:0:0 type=0 uidname=[ ] 20180915.181408.883 r9999a 000041DC OModel 3651 no more switches found by address [24,0] 20180915.181408.883 r9999a 000041DC OModel 5183 trying to match signal event: 1744830518:24:0 type=0 uidname=[ ] 20180915.181408.883 r9999a 000041DC OModel 3733 no signal found by address [1744830518,24,0] type=0 uidname=[ ] 20180915.181408.883 r9999a 000041DC OModel 4421 no tt found by address 1744830518:0 20180915.181408.883 r9999a 000041DC OModel 5235 trying to match output event: 1744830518:24:0 type=0 value=0 uidname=[ ] 20180915.181408.883 r9999a 000041DC OModel 3763 no output found by address [1744830518,24,0] type=0 uidname=[ ] 20180915.181408.883 r9999a 000041DC OModel 5252 trying to match signal event: 1744830518:24:0 type=0 uidname=[ ] 20180915.181408.883 r9999a 000041DC OModel 3733 no signal found by address [1744830518,24,0] type=0 uidname=[ ] 20180915.181409.123 r9999I bidibrea OBiDiB 3985 MSG_CS_ACCESSORY_MANUAL path=0.0.0.0 addr=23 event=0x01 OFF Wenn die Weiche korrekt konfiguiert ist, wird sie gefunden und das Skript ausgeführt: 20180915.182214.399 r9999I bidibrea OBiDiB 3985 MSG_CS_ACCESSORY_MANUAL path=0.0.0.0 addr=23 event=0x21 ON 20180915.182214.399 r9999a 000041DC OModel 5158 trying to match switch event: 1744830518:24:0:0 type=0 uidname=[ ] 20180915.182214.399 r9999I 000041DC OSwitch 1986 switch [sw24] field event: state=straight(field:straight) gatevalue=2 inv=0 fieldstate=straight 20180915.182214.399 r9999a 000041DC OSwitch 0353 sw24 action state does not match: [turnout-straight] 20180915.182214.399 r9999I 000041DC OSwitch 0327 switch action: test1 20180915.182214.399 r9999I 000041DC OSwitch 0348 switch execute action: test1 20180915.182214.399 r9999I 000041DC OAction 1096 run xmlscript file [.\testscript.xml], size=276 called by [sw24] 20180915.182214.399 r9999I 000041DC OXmlScri 2083 script: [xmlscript] 20180915.182214.399 r9999I 000041DC OXmlScri 2001 run script [-] function [-] 20180915.182214.399 r9999I 000041DC OXmlScri 0688 execute [ ] id[] cmd[-] oid[] callerid[sw24] 20180915.182214.399 r9999x 000041DC OXmlScri 1412 Script is called :) 20180915.182214.399 r9999I 000041DC OXmlScri 1736 if state [sw sw24 = straight] 20180915.182214.399 r9999I 000041DC OXmlScri 0493 state [sw sw24 = straight] is true 20180915.182214.399 r9999I 000041DC OXmlScri 0688 execute [ ] id[] cmd[-] oid[] callerid[sw24] 20180915.182214.399 r9999x 000041DC OXmlScri 1412 SW24 is straight 20180915.182214.399 r9999I 000041DC OSwitch 0541 switch[sw24] isSet=true wanted state [straight], reported state [straight] isfbset=false 20180915.182214.399 r9999I 000041DC OSwitch 2010 polarise Frog [sw24] state=straight(straight) 20180915.182214.399 r9999a 000041DC OModel 3651 no more switches found by address [24,0]