Hello everybody! I have started integrating capabilities in indi-allsky to natively support reading sensors on SBC systems like Raspberry Pi. Currently, I have support for 14 different temperature and light sensors. The sensor data is made available for the Image Overlays and MQTT subsystem.

github.com/aaronwmorris/indi-allsky/wiki/Sensors


In addition, I have added support for natively controlling dew heaters. I am targeting standard dew heaters where the dew heater may be either on or off and PWM controlled dew heaters with variable settings. The dew heater may also be controlled with the sensor readings (above).

github.com/aaronwmorris/indi-allsky/wiki/Dew-Heater-Support


And finally, I also have native support for using a 28BYJ-48 stepper motor as a focuser for an all sky camera. When activated, an interface in the Focuser web view will allow you to move the stepper motor in different increments for focusing.

github.com/aaronwmorris/indi-allsky/wiki/Focuser-Device

Read More...

It is hard to say without seeing any details. Are you sure you are forwarding your traffic to port 443 on indi-allsky?

If you want to send me a PM with details to try remotely, I will see what I can find.

Read More...

Aaron Morris replied to the topic 'The state of Astroberry' in the forum. 4 months ago

Also, the Raspberry Pi download page needs to be removed or redirected to the source compile page:

www.indilib.org/get-indi/download-rpi.html

Read More...

I believe this maybe a reported issue.

github.com/indilib/indi-3rdparty/issues/919

Read More...

indi-allsky should be able to use the GPS device directly, but it will not be able to directly utilize the SQM device. It would be nice if there were a generic SQM type device and a simulator that could be used to test it, but I am unaware of that.

Read More...

Hopefully, the indi_gpsnmea device will work with indi-allsky, but I have not tested the NMEA specific device myself.

indi-allsky will not be able to do anything with the SQM data directly, but it is still possible to read that data externally and use it as part of the image overlay.

Read More...

You may try deleting the .xml files under your $HOME/.indi/ folder to reset them to defaults.

Read More...

The GPhoto server is the same server as the Canon, it is an alias.

One of the big reasons DSLRs will fail on captures with INDI is when the resolution and pixel sizes are not configured for the camera. These have to be manually set for DSLRs with INDI.

Read More...

If you are plugged into a USB3 port, you may consider adjusting the USB Speed setting for the camera.

Read More...

With remote viewing, I would consider disabling the compositor and enabling some of the older windowing options that do not show window contents when moving windows and resizing (only the outline will be shown during these operations) and any of the window animations.

Read More...

With INDI, just remember, you have to set all values in the property for it to properly configure, so you would have to set every value in CCD_CONTROLS, even if all of the values are not changing. The number of values in the property can actually change between INDI/driver releases and will be in different orders between vendors.

I borrowed some very nice methods that Marco Gulino he developed for indi-lite-tools where if you want to change a single value, it queries all of the existing values and sets each value to the existing value while only changing the properties you want to change. They also allow you set properties by name, instead of just by index.

You can find what I have in indi-allsky here: github.com/aaronwmorris/indi-allsky/blob...llsky/camera/indi.py

Here is some rough code

    def main(self):
        ccd_device = indiclient.getDevice("CCD NAME")

        indi_config = {
            "PROPERTIES" : {
                "CCD_CONTROLS" : {
                    "Gain" : 100,
                    "Offset" : 10
                }
            },
            "SWITCHES" : {
                "CCD_VIDEO_FORMAT" : {
                    "on"  : ["ASI_IMG_RAW16"],  # example of setting a switch
                    "off" : ["ASI_IMG_RAW8"]    # off settings are optional
                }
            }
        }

        # ccd_device needs to be connected
        configureDevice(ccd_device, indi_config)


    def configureDevice(self, device, indi_config):
        if isinstance(device, FakeIndiCcd):
            # ignore configuration
            return

        ### Configure Device Switches
        for k, v in indi_config.get('SWITCHES', {}).items():
            logger.info('Setting switch %s', k)
            self.set_switch(device, k, on_switches=v.get('on', []), off_switches=v.get('off', []))

        ### Configure Device Properties
        for k, v in indi_config.get('PROPERTIES', {}).items():
            logger.info('Setting property (number) %s', k)
            self.set_number(device, k, v)

        ### Configure Device Text
        for k, v in indi_config.get('TEXT', {}).items():
            logger.info('Setting property (text) %s', k)
            self.set_text(device, k, v)


    def set_number(self, device, name, values, sync=True, timeout=None):
        #logger.info('Name: %s, values: %s', name, str(values))
        c = self.get_control(device, name, 'number')

        if c.getPermission() == PyIndi.IP_RO:
            logger.error('Number control %s is read only', name)
            return c

        for control_name, index in self.__map_indexes(c, values.keys()).items():
            logger.info('Setting %s = %s', c[index].getLabel(), str(values[control_name]))
            c[index].setValue(values[control_name])

        self.sendNewNumber(c)

        if sync:
            self.__wait_for_ctl_statuses(c, timeout=timeout)

        return c

    def set_switch(self, device, name, on_switches=[], off_switches=[], sync=True, timeout=None):
        c = self.get_control(device, name, 'switch')

        if c.getPermission() == PyIndi.IP_RO:
            logger.error('Switch control %s is read only', name)
            return c

        is_exclusive = c.getRule() == PyIndi.ISR_ATMOST1 or c.getRule() == PyIndi.ISR_1OFMANY
        if is_exclusive :
            on_switches = on_switches[0:1]
            off_switches = [s.getName() for s in c if s.getName() not in on_switches]

        for index in range(0, len(c)):
            current_state = c[index].getState()
            new_state = current_state

            if c[index].getName() in on_switches:
                logger.info('Enabling %s (%s)', c[index].getLabel(), c[index].getName())
                new_state = PyIndi.ISS_ON
            elif is_exclusive or c[index].getName() in off_switches:
                new_state = PyIndi.ISS_OFF

            c[index].setState(new_state)

        self.sendNewSwitch(c)

        return c


    def set_text(self, device, name, values, sync=True, timeout=None):
        c = self.get_control(device, name, 'text')

        if c.getPermission() == PyIndi.IP_RO:
            logger.error('Text control %s is read only', name)
            return c

        for control_name, index in self.__map_indexes(c, values.keys()).items():
            logger.info('Setting %s = %s', c[index].getLabel(), str(values[control_name]))
            c[index].setText(values[control_name])

        self.sendNewText(c)

        if sync:
            self.__wait_for_ctl_statuses(c, timeout=timeout)

        return c


    def __map_indexes(self, ctl, values):
        result = {}
        for i, c in enumerate(ctl):
            #logger.info('Value name: %s', c.getName())  # useful to find value names
            if c.getName() in values:
                result[c.getName()] = i
        return result


   def __wait_for_ctl_statuses(self, ctl, statuses=[PyIndi.IPS_OK, PyIndi.IPS_IDLE], timeout=None):
        started = time.time()

        if timeout is None:
            timeout = 5

        while ctl.getState() not in statuses:
            if ctl.getState() == PyIndi.IPS_ALERT and 0.5 > time.time() - started:
                raise RuntimeError('Error while changing property {0}'.format(ctl.getName()))

            elapsed = time.time() - started

            if 0 < timeout < elapsed:
                raise Exception('Timeout error while changing property {0}'.format(ctl.getName()))

            time.sleep(0.15)


Read More...

  • Basic Information

  • Gender
    Male
  • Birthdate
    01. 01. 1922
  • About me
    About me