indilib / indi

INDI Core Library Repository
https://www.indilib.org
GNU Lesser General Public License v2.1
366 stars 388 forks source link

Primaluce Arco #1628

Closed ChristianHen closed 2 years ago

ChristianHen commented 2 years ago

Did you make sure there is no existing driver for your device? Please check [supported devices portal](https://indilib.org/devices]. Please confirm you verified no drivers exist for your device.

YES. The Arco is attached to the ESATTO. There is an existing Driver for the ESATTO, which probably can be modified to support the Arco as well (?)

Provide link to product page Provide URL to the product description and details.

https://eu.primalucelab.com/esatto-3/esatto-3-robotic-microfocuser.html

Describe device family All INDI devices fall under one or more of the following categories:

Provide device communication protocol All devices use some sort of communication language between them and the host system. This could be called Command Set or SDK. It is best to provide a link to a document or PDF with such details from the manufacutrer. It needs to include the following information:

{"req":{"cmd":{"MOT2":{"GOTO":{"DEG":20.0002}}}}}

which is very similar to the GOTO commands in the ESATTO driver

Hardware Sample Would it be possible to send the developer a sample hardware unit to develop the driver? If that's not possible, would it be possible to setup a remote environment with the devie attached?

A remote environment is possible.

ChristianHen commented 2 years ago

This is what I could find out so far about the communiaction with ARCO. The following requests and responses are being sent via the serial port in the respective situations:

DISABLE ARCO {"req":{"set": {"ARCO": 0}}} {"res":{"set":{"ARCO":"done"}}}

ENABLE ARCO {"req":{"set": {"ARCO": 1}}} {"res":{"set":{"ARCO":"done"}}}

REPEATED STANDARD STATUS COMMUNICATION {"req":{"get": {"ARCO":"","MOT1":""}}}}} //(2x --> Why?) {"res":{"get":{"ARCO":1,"MOT1":{"ABS_POS":0,"EL_POS":0,"MARK":0,"SPEED":0,"ACC":70,"DEC":70,"MAX_SPEED":65,"MIN_SPEED":0,"TVAL_HOLD":2,"TVAL_RUN":18,"TVAL_ACC":18,"TVAL_DEC":18,"T_FAST":25,"TON_MIN":41,"TOFF_MIN":41,"FS_SPD":39,"OCD_TH":2,"STEP_MODE":4,"CONFIG":11904,"ALARM":255,"STATUS":{"HIZ":1,"UVLO":0,"TH_SD":0,"TH_WRN":0,"OCD":0,"WCMD":0,"NOPCMD":0,"BUSY":0,"DIR":"In","MST":"stop"},"SUBMODEL":"ESATTO3","NTC_T":"30.28","BKLASH":0,"CAL_STATUS":"stop","CAL_MAXPOS":731000,"CAL_BKLASH":149,"CAL_MIN_LO":0,"CAL_MIN_HI":19364,"CAL_MAX_LO":685087,"CAL_MAX_HI":731000,"CAL_OFFMIN":19364,"HSENDET":1,"CAL_MINPOS":0,"CAL_HOMEP":1000,"CAL_NUMOF":2,"CAL_DIR":"normal","LASTDIR":0,"HOLDCURR_STATUS":0,"COMPENSATION_POS":0.00000,"POSITION":0.00000,"POSITION_MEC":0.00000}}}}

{"req":{"get": {"CALRESTART": ""}}} (2x --> why?) {"res":{"get":{"CALRESTART":{"MOT1":0,"MOT2":1}}}} //(="ARCO-MOTOR needs recalibration, ESATTO Motor is ok!" (Request was sent after Disable ARCO and reENABLE Arco!)

{"req":{"get": {"ARCO_LEDBLINKSTATUS":""}}} //(Only occurs when CALRESTART = 1 for MOT2, i.e. when ARCO needs recal)) {"res":{"get":{"ARCO_LEDBLINKSTATUS":"CalRestart_MaxPosEqualMinPos"}}}

{"req":{"get":{"EXT_T":""}}} {"res":{"get":{"EXT_T":"-127.00"}}}

{"req":{"get":{"VIN_12V":""}}} {"res":{"get":{"VIN_12V":"12.45"}}}

{"req":{"get":{"VIN_USB":""}}} {"res":{"get":{"VIN_USB":"5.16"}}}

{"req":{"get":{"MOT2":{"ABS_POS":"DEG","COMPENSATION_POS":"DEG","POSITION":"DEG"}}}} {"res":{"get":{"MOT2":{"ABS_POS":"0.000157220[deg]","COMPENSATION_POS":"-0.000157220[deg]","POSITION":"0.000000000[deg]","STATUS":{"HIZ":1,"UVLO":0,"TH_SD":0,"TH_WRN":0,"OCD":0,"WCMD":0,"NOPCMD":0,"BUSY":0,"DIR":"CCW","MST":"stop"},"HSENDET":1}}}}

GOTO ANGLE Go to an angle of 20 Degrees {"req":{"cmd":{"MOT2":{"GOTO":{"DEG":20.0002}}}}}

CALIBRATION Start calibration: {"req":{"set": {"MOT2":{"CAL_STATUS": "exec"}}}} Response: {"res":{"set":{"MOT2":{"CAL_STATUS":"done","STATUS":{"HIZ":1,"UV

Asc for motor-calibration status: (still calibrating??) {"req":{"get": {"MOT2" :{"CAL_STATUS":""}}}}...

Response: {"res":{"get":{"MOT2":{"CAL_STATUS":"stop","STATUS":{"HIZ":1,"UV... or {"res":{"get":{"MOT2":{"CAL_STATUS":"exec","STATUS":{"HIZ":1,"UV...

knro commented 2 years ago

This looks very similar to the existing driver? perhaps some simple changes are required to make it work with Arco?

ChristianHen commented 2 years ago

I had the same impression, but unfortunatelly, I don't even know where to begin? Can the rotator driver be integrated into the focuser driver? I suppose so, becouse for the Nightcrawler this seems to be possible, but I have no idea of how to realize that.

ChristianHen commented 2 years ago

Ok, I managed to realize a rudimentary driver for the Esatto that allows for absolute goto to a given angle. To do so, I have modified the existing sestosenso2 driver. I don't know, if it respects any convention, and I am sure, any experienced programmer could have done better. But it moves. If anybody is interested in it, I can share it.

ChristianHen commented 2 years ago

Could anybody please tell me, what would be the way to get the changes I made to the senstosenso2 driver (Arco-support) into the regular builds? What are the basic requirements for changes to be accepted? Is there any kind of quality control? What do I have to do?

knro commented 2 years ago

Can you please share your changes? Did you test other functionalities?

ChristianHen commented 2 years ago

See the modified files attached. I only implemeted goto for the Arco.

sestosenso2.h.txt sestosenso2.cpp.txt

ChristianHen commented 2 years ago

Added Abort and sync for the Arco Rotator.

sestosenso2 (Arco goto abort sync).cpp.txt sestosenso2 (Arco goto abort sync).h.txt

ChristianHen commented 2 years ago

Arco support includes now Goto Abort Sync Cal

see here: https://github.com/ChristianHen/indi/blob/Add-Esatto-Arco-support/drivers/focuser/sestosenso2.cpp https://github.com/ChristianHen/indi/blob/Add-Esatto-Arco-support/drivers/focuser/sestosenso2.h