User Tools

Site Tools


rocrail-server-scripting-de

Table of Contents

RCP Scripting

Content Rocrail Server


Die einzige Neuerung zum Thema 'Scripting' ist: Es ist jetzt dokumentiert. Rocrail scripting gibt es schon seit den Anfängen des Projektes.

HowTo

Es sind nur wenige Schritte nötig, um ein Script auszuführen. Der Artikel beschreibt die notwendigen Schritte.

  • Scripte werden aktiviert durch Aktionen vom Typ "External"
  • Das Protokoll ist das Gleiche, das alle Clients benutzen, um mit dem Server zu kommunizieren

Man kann ein Script auch per Kommandozeilen Parameter aus einem anderen Programm aktivieren.

Python

Beispiel

Ein Beispiel, wie mit einem externen Python Script ein 'Power on' realisiert wird, könnte so aussehen:

#!/usr/bin/python
# Rocrail XML script example: Power ON.
 
from socket import *
 
# Subroutine for adding the XML-Header and send it to the server
def sendMsg( s, xmlType, xmlMsg ):
  s.send("<xmlh><xml size=\"%d\" name=\"%s\"/></xmlh>%s" %(len(xmlMsg), xmlType, xmlMsg))
 
# Create the server connection
s = socket(AF_INET, SOCK_STREAM)
s.connect(('localhost', 8051))
 
# Compose the power on command and send it
rrMsg = "<sys cmd=\"go\"/>"
sendMsg( s, "sys", rrMsg )
 
# Close server connection
s.close()

Der Sourcecode wird einfach in einen beliebigen Texteditor per Copy/Paste eingefügt. Danach das File mit der Endung ".py" abspeichern. (Auf Linux Systemen muss das Script jetzt noch ausführbar gemacht werden. Der Befehl dazu lautet: "chmod +x <NameDesScript>.py")

Server trace

Die Fehlermeldungen beim Schließen der Verbindung sind normal und können unbeachtet bleiben.

20110515.150347.205 r9999I cconmngr OClntCon 0354 client connect count: 18
20110515.150347.206 r9999I cmdrB730 OClntCon 0209 cmdReader started for:127.0.0.1.
20110515.150347.206 r9999I infwB730 OClntCon 0104 infoWriter started for:127.0.0.1.
20110515.150348.206 r9999c cmdrB730 OVirtual 0324 Power ON
20110515.150348.207 r9999I cmdrB730 OControl 0826 State event from=vcs-1
20110515.150348.207 r9999I cmdrB730 OModel   1704 informing 1 listeners of a system event...

(Ignore the errors:)
20110515.150348.209 r8030E infwB730 OSocket  0626 send() failed [32] [Broken pipe]
20110515.150348.209 r9999E infwB730 OSocket  0630 Connection broken!
20110515.150348.217 r9999E cmdrB730 OSocket  0685 Socket 0x00000000 error 88

20110515.150348.217 r9999I cmdrB730 OClntCon 0322 Server ended.
20110515.150348.220 r9999I infwB730 OClntCon 0172 InfoService ended.
rocrail-server-scripting-de.txt · Last modified: 2022/12/01 14:45 by rjversluis