ZAP_HEIGHT = Qualify.integer(PKG, 'zap_height') ZAP_SPEED = Qualify.integer(PKG, 'zap_speed') ZAP_TIMEOUT = Qualify.integer(PKG, 'zap_timeout') Z_TRANSLATE = Qualify.integer(PKG, 'z_translate') X_MOVE = Qualify.integer(PKG, 'x_move') Y_MOVE = Qualify.integer(PKG, 'y_move') AREA_SIZE = Qualify.integer(PKG, 'area_size') LASER_OFFSET_X = Qualify.integer(PKG, 'offset_x') LASER_OFFSET_Y = Qualify.integer(PKG, 'offset_y') WEED_TYPE = get_config_value(PKG, 'weed_type', str).lower() if WEED_TYPE not in ['weed', 'safe-remove', 'both']: device.log('Weed type invalid. Must be WEED, SAFE-REMOVE or BOTH', 'error') sys.exit() weeder_tool_retrieve_sequence_id = Qualify.sequence(PKG, 'tool_weed_retrieve') weeder_tool_return_sequence_id = Qualify.sequence(PKG, 'tool_weed_return') if len(input_errors): for err in input_errors: device.log(err, 'error', ['toast']) sys.exit() else: device.log('No config errors detected') device.write_pin(PIN_LIGHTS, 1, 0) points = app.get_points() if len(points): device.log('Deleting existing points...') del_all_points()
' A plant watering Farmware ''' import os, sys, json, Qualify from random import randint from farmware_tools import device, app, get_config_value from Coordinate import Coordinate PIN_LIGHTS = 7 PKG = 'Water Plants' PLANT_TYPES = Qualify.get_csv(PKG, 'plant_types') TRANSLATE_HMEIGHT = Qualify.integer(PKG, 'translate_height') WATER_HEIGHT = Qualify.integer(PKG, 'water_height') tool_water_retrieve_sequence_id = Qualify.sequence(PKG, 'tool_water_retrieve') tool_water_return_sequence_id = Qualify.sequence(PKG, 'tool_water_return') if len(Qualify.errors): for err in Qualify.errors: device.log(err, 'error', ['toast']) sys.exit() else: device.log('No config errors detected') device.log('PLANT TYPES: {}'.format(json.dumps(PLANT_TYPES))) all_plants = app.get_plants() target_plants = [] for plant in all_plants: plant_name = ''.join(plant['name'].split()).lower() if plant_name in PLANT_TYPES:
device.log('INIT: {}'.format(PKG)) Debug.log('BEGIN FARMWARE: {}'.format(PKG)) input_errors = [] PLANT_TYPES = Qualify.get_csv(PKG, 'plant_types') Debug.log('PLANT TYPES: {}'.format(PLANT_TYPES)) SENSOR_Z_DEPTH = Qualify.integer(PKG, 'sensor_z_depth') Z_TRANSLATE = Qualify.integer(PKG, 'z_translate') OFFSET_X = Qualify.integer(PKG, 'offset_x') OFFSET_Y = Qualify.integer(PKG, 'offset_y') THRESHOLD = Qualify.integer(PKG, 'threshold') NUM_SITES = Qualify.integer(PKG, 'num_sites') NUM_SAMPLES = Qualify.integer(PKG, 'num_samples') moisture_tool_retrieve_sequence_id = Qualify.sequence( PKG, 'tool_moisture_retrieve') moisture_tool_return_sequence_id = Qualify.sequence(PKG, 'tool_moisture_return') water_tool_retrieve_sequence_id = Qualify.sequence(PKG, 'tool_water_retrieve') water_tool_return_sequence_id = Qualify.sequence(PKG, 'tool_water_return') water_sequence_id = Qualify.sequence(PKG, 'water_sequence') moisture_readings = [] if len(input_errors): for err in input_errors: device.log(err, 'warn') device.log('Fatal config errors occured, farmware exiting.', 'warn') sys.exit() else: device.log('No config errors were detected.', 'success')