Package: quakesrthorcam-tspspi
QUAK/ESR ThorCam interfaceNote:Work in progressThis is a small Python service that runs on a Windows machine to which the
ThorCam is attached to provide a bridge into the control system that has
been realized on an OpenSource platform - it exposes an MQTT interface for
configuration of camera settings and queue configuration as well as event signalling
and allows to transfer images taken using SFTP.Since the required .NET library to interface with the not so simple to handle
closed source ThorCam library this application only runs on Windows.Installationpip install quakesrthorcam-tspspiConfiguration fileMQTT sectionThe MQTT section configures thebroker,port,userandpasswordof the MQTT broker. Thebasetopicis a topic string
that gets prepended to every message and to every subscription.Currently this module subscribes to the following topics:triggerwill allow software triggering of the camera (currently not implemented)setrunsets the current run parameters. Those are a currentrunprefixwhich
is a single string that gets prepended in front of every filename and an optional
list of strings calledrunsuffixthat are used instead of numbering the frames
in consecutive order on each hardware trigger.exposure/setallows one to pass a message containing anexposure_msfield to
update the exposure. The camera interrupts streaming and triggering operation during
changes.The camera publishes:raw/storedwhenever a new raw frame has been stored and uploaded to
the configured servers. It contains alocalfilenameand aimagefilename.
The local filename also includes the path on the camera server while the
image filename is just the filename without any path by itself.Camera sectionthorcamserialis able to specify the serial number of the camera that the service
should bind to. In case no serial is specified the first available camera is usedtriggeris an dictionary that is able to configure the default trigger
settings:hardwarecan betrueorfalsecountspecifies the number of frames to capture after the trigger has
triggered the camera. This has to be either 0 for continuous capture or
an positive integer.exposurecan be used to set the default exposure (in milliseconds)Local file storageimagedirspecifies the directory where images should be stored locallyUpload configuration (SFTP)rawframesftpis a list of hosts to which the camera server should upload
captured raw frames. Each entry is a dictionary that contains:hostspecifies the host to which the upload should be madeuserspecifies the SSH userdestpathis the path on the remote machine where the images should be storedkeyfilepoints to the SSH private key file that should be used for authenticationExample configuration file{
	"mqtt" : {
		"broker" : "10.0.0.5",
		"port" : "1883",
		"user" : "YourMqttUser",

		"password" : "NONDISCLOSEDSECRETLONGSTRING",

		"basetopic" : "quakesr/experiment/camera/ebeam"


	},
	"thorcam" : {
		"trigger" : {
			"hardware" : true,
			"count" : 1
		},
		"exposure" : 80
	},
	"imagedir" : "c:\\temp\\",
	"rawframesftp" : [
		{
			"host" : "10.0.0.15",
			"user" : "camserv",
			"keyfile" : "c:\\users\\quak\\id_winselwolf",
			"destpath" : "/home/pi/measurements/data/images/"
		}
    ]
}Dependenciespaho-mqttis the Eclipse Paho MQTT Python client
that provides the interface to the MQTT broker (currently running on anRabbitMQinstance)thorcamis a wrapper around the .NET libraries
supplied for the ThorCam service.paramikois a pure Python SSHv2 implementation mainly
used for file transfer in this application.Pillowis a python image library (PIL) clone
that's used to encode the images.