×

INDI Library v2.0.6 is Released (02 Feb 2024)

Bi-monthly release with minor bug fixes and improvements

Bisque Paramount - INDI driver for TSX TCP API?

  • Posts: 152
  • Thank you received: 20
I've been searching around for this but haven't found much.

The Bisque Paramounts are controlled by The Sky X, which has a scriptable API that is exposed through a TCP server. The mount can be controlled almost completely via this API by feeding javascript commands to this TCP server. Reference here:

www.bisque.com/scriptTheSkyX/

Others are already doing this by direct interaction. I'm curious as to whether there is an ability to write an INDI "driver" that abstracts this API and would allow mount control INDI clients to control the Paramounts just as they would any other mount. This is especially interesting with TSX about to be released as a Raspberry Pi appliance, such that the Pi basically becomes a smart replacement for a hand controller with brains.
7 years 10 months ago #8308

Please Log in or Create an account to join the conversation.

  • Posts: 314
  • Thank you received: 95
I found some information on page rts2.org/wiki/hw:start
You can try my open project Astronomy Linux
Last edit: 7 years 10 months ago by Oleg.
7 years 10 months ago #8309

Please Log in or Create an account to join the conversation.

  • Posts: 152
  • Thank you received: 20
This appears to be a direct implementation of the Bisque protocol, intended to bypass The Sky X. I'm more looking for a way to control a Paramount via the scripting interface of TSX such that the mount can be controlled by INDI clients. For example, I'd love for it to be able to ask TSX to perform a closed-loop slew to an object, and let TSX reply with success or fail.
7 years 10 months ago #8314

Please Log in or Create an account to join the conversation.


This is interesting. If you need help developing an INDI Mount driver, let me know. So you just open a socket to the TCP server and start sending and receiving javascript? Have you tried this yourself? What are the commands necessary for a basic mount control?
7 years 10 months ago #8330

Please Log in or Create an account to join the conversation.

  • Posts: 152
  • Thank you received: 20
Yes, it's that simple. I have tried it - it works. In fact, you can even run the camera, filter wheel, and focuser this way, start up guiding, etc. I have seen some others automate the mount this way using bash scripts. I started framing something out in Python, but the INDI approach is much more interesting to me.

I'll get you some example snippets ASAP. Yes, I can use some help. I don't know C/C++ at all, not sure I'm up for diving in with those. Thanks!
7 years 10 months ago #8344

Please Log in or Create an account to join the conversation.

Sure, let's see the example stuff first and then proceed from there.
7 years 10 months ago #8346

Please Log in or Create an account to join the conversation.

  • Posts: 152
  • Thank you received: 20
OK... Here's a very quick and dirty example. Opening a TCP connection to TSX on port 3040 and sending the following will cause TSX to slew the mount to the specified RA and Dec.

/* Java Script */
/* Socket Start Packet */
 
var MyRA = 3.0;
var MyDec = 7.125;
 
var Out;
// slew to RaDec, 
Out = sky6RASCOMTele.SlewToRaDec(MyRA, MyDec, "MyObject")
 
/* Socket End Packet */

So you'd want to pass the RA and Dec into this script as variables, open the socket (if not already open) and send the above. If possible, it would be good to have these commands broken out into config snippets that can be adjusted without changing the underlying driver. This would allow for customizations of the script to accommodate for error checking, requesting feedback during the slew and such.

Closed loop slew is next.
7 years 10 months ago #8347

Please Log in or Create an account to join the conversation.

  • Posts: 152
  • Thank you received: 20
Now that I think about this, it would be awesome if INDI had a "scriptable" driver that can be instantiated such that when provided certain commands and/or information a configured script is executed by the driver. This would abstract scriptable items and present them as a standard INDI hardware driver I think.

Example:

Scriptable INDI driver set up to control a mount. Client passes a slew command to an RA/Dec to the driver, which then has a configuration to take that info and pass it to a configureable script, wait for a response, and so on.
7 years 10 months ago #8348

Please Log in or Create an account to join the conversation.

What actually gets sent over the wire? What does sky6RASCOMTele.SlewToRaDec(MyRA, MyDec, "MyObject") do?

INDI has scripting for over 13 years now. You can do it via Python, DBUS, or via INDI scripting tools.
7 years 10 months ago #8349

Please Log in or Create an account to join the conversation.

  • Posts: 152
  • Thank you received: 20

That snippet is exactly what gets sent over the wire in clear text. Simply open a TCP socket to port 3040 of the system running TSX and dump the snippet on the wire. sky6RASCOMTele.SlewToRaDec(MyRA, MyDec, "My Object") will slew the Paramount (or other) mount to the MyRA and MyDec as set in the variables. "My Object" is a text string the function requires. I think it just lets you name the object so it appears in the TSX GUI, but I haven't seen it show. Here is what the docs say about it:
void sky6RASCOMTele::SlewToRaDec	(	double 	dRa,
double 	dDec,
QString 	lpszObjectName 
)		
slot
Slews the telescope to the specified right ascension and declination coordinates.
 
Note - Coordinates used to slew the telescope are normally for the current epoch.
 
Parameters
dRa	A double that specifies the right ascension to slew the telescope.
dDec	A double that specifies the declination to slew the telescope.
lpszObjectName	A string that specifies the object's name.


Understood. I assumed this to be client-side scripting. You can place a script under a driver to interact with something? In other words, the driver can act as an abstraction for the script?
7 years 10 months ago #8352

Please Log in or Create an account to join the conversation.

  • Posts: 456
  • Thank you received: 76
So I wonder if something like this would work from bash as an example to hack around with.
echo "/* Java Script */
/* Socket Start Packet */
 
var MyRA = 3.0;
var MyDec = 7.125;
 
var Out;
// slew to RaDec, 
Out = sky6RASCOMTele.SlewToRaDec(MyRA, MyDec, "MyObject")
 
/* Socket End Packet */" | nc tsx-hostname 3040

replace 'tsx-hostname' above with the actual host or ip-address
If anyone wants to send me a paramount mount to test with I'd be delighted :P
Last edit: 7 years 10 months ago by Derek.
7 years 10 months ago #8360

Please Log in or Create an account to join the conversation.

  • Posts: 69
  • Thank you received: 12
I attach C programs that I use to communicate with TSX to control a Paramount MYT. Those are basic commands to
Sync
Slew
Abort
Get RA and DEC
Home
The following user(s) said Thank You: Jasem Mutlaq
7 years 10 months ago #8366
Attachments:

Please Log in or Create an account to join the conversation.

Time to create page: 1.013 seconds