async executeSegmentAction(segments, options) {
        const FanSpeedStateAttribute = this.robot.state.getFirstMatchingAttribute({
            attributeClass: entities.state.attributes.PresetSelectionStateAttribute.name,
            attributeType: entities.state.attributes.PresetSelectionStateAttribute.TYPE.FAN_SPEED
        });
        const WaterGradeAttribute = this.robot.state.getFirstMatchingAttribute({
            attributeClass: entities.state.attributes.PresetSelectionStateAttribute.name,
            attributeType: entities.state.attributes.PresetSelectionStateAttribute.TYPE.WATER_GRADE
        });

        let fanSpeed = FanSpeedStateAttribute?.metaData?.rawValue ?? 1;
        let waterGrade = WaterGradeAttribute?.metaData?.rawValue ?? 1;


        const mappedSegments = segments.map((segment, i) => {
            return [
                parseInt(segment.id),
                typeof options?.iterations === "number" ? options.iterations : 1,
                fanSpeed,
                waterGrade,
                this.newOrder ? 1 : i + 1 // on older robots, this determines the order in which the segments should be cleaned
            ];
        });

        await this.helper.executeAction(
            this.miot_actions.start.siid,
            this.miot_actions.start.aiid,
            [
                {
                    piid: this.miot_properties.mode.piid,
                    value: this.segmentCleaningModeId
                },
                {
                    piid: this.miot_properties.additionalCleanupParameters.piid,
                    value: JSON.stringify({"selects": mappedSegments})
                }
            ]
        );
    }
@param {Array<import("../../../entities/core/ValetudoMapSegment")>} segments
@param {object} [options]
@param {number} [options.iterations]
@param {boolean} [options.customOrder]
@returns {Promise<void>}