def read_sensors(all_curr_readings, location, ADS1115):
    """
    Generic version to work with any number of locations
    Read data from all sensors
    :param all_curr_readings: dictionary to hold all readings
    :param location: supports any number of unique hydro tanks
    :param ADS1115: AdaFruit ads1115 16 bit. Supports any number of sensors
    """
    # Get the readings from any 1-Wire temperature sensors. This sensor is submerged in the tank

    for key, value in sensors.items():
        if value["is_connected"] is True:
            if value["sensor_type"] == "1_wire_temp":
                try:
                    sensor_reading = (round(float(read_1_wire_temp(key)),
                                            value["accuracy"]))
                except (sensor_reading == 0):
                    sensor_reading = 0
                    ref_temp = 25

                all_curr_readings.append(
                    [value["name"], sensor_reading, location])

                if value["is_ref"] is True:
                    ref_temp = sensor_reading

            # Get the readings from any Gravity pH sensors
            # ADS channel P0

            if value["sensor_type"] == "gravity_ph":
                # Create single-ended input on channel 0
                try:
                    # chan = AnalogIn(ads, ADS.P0)
                    # set the gain value and then read the sensor voltage
                    ads1115_r.setGain(ADS1115_REG_CONFIG_PGA_6_144V)
                    adc0 = ads1115_r.readVoltage(0)
                    # Create differential input between channel 0 and 1
                    # chan = AnalogIn(ads, ADS.P0, ADS.P1)
                    # debug
                    #                print("{:>5}\t{:>5.3f}".format(chan.value, chan.voltage))
                    # get ph compensated value based on submerged temperature value
                    ph_comp = ph.readPH(adc0['r'], ref_temp)
                    all_curr_readings.append(
                        [value["name"], ph_comp, location])

                except (ph_comp == 0):
                    sensor_reading = 0.0

            # Get the readings from any Gravity Electrical Conductivity sensors
            # ADS channel P1

            if value["sensor_type"] == "gravity_ec":
                # Create single-ended input on channel 0
                try:
                    # chan = AnalogIn(ads, ADS.P1)
                    ads1115_r.setGain(ADS1115_REG_CONFIG_PGA_6_144V)
                    adc1 = ads1115_r.readVoltage(1)
                    ec_comp = ec.readEC(adc1['r'], ref_temp)
                    all_curr_readings.append(
                        [value["name"], ec_comp, location])

                except (ec_comp == 0):
                    sensor_reading = 0.0

            # Get the readings from any Gravity ORP sensors
            # ADS channel P2. Measured in milli-volts

            if value["sensor_type"] == "gravity_orp":
                # Create single-ended input on channel 0
                try:
                    chan = AnalogIn(ads_r, ADS.P2)
                    # debug
                    #                print("{:>5}\t{:>5.3f}".format(chan.value, chan.voltage))
                    all_curr_readings.append(
                        [value["name"], chan.value, location])

                except (chan == []):
                    sensor_reading = 0.0

            # Get the readings from Optomax water level sensor

            if value["sensor_type"] == "optomax_digital_liquid_sensor":
                try:
                    if GPIO.input(gpio_pin) == 0:
                        # debug
                        #   print("GPIO pin 12 is: ", GPIO.input(gpio_pin))

                        all_curr_readings.append([value["name"], 0, location])
                    if GPIO.input(gpio_pin) == 1:
                        all_curr_readings.append([value["name"], 1, location])

                except (GPIO.UNKNOWN()):
                    log.error("GPIO.UNKNOWN this should never happen")