def logOne(address): global SENSOR_PORT sensor = SoilMoistureSensor(address = address, serialport = SENSOR_PORT) try: moisture = sensor.getMoisture() temperature = sensor.getTemperature() postToDb(formatForDb(address, moisture, temperature, "OK")) except(IOError, ValueError): postToDb(formatForDb(address, "ERROR")) # gpio.output(27, gpio.LOW) print("#could not read sensor " + str(address))
from chirp_modbus import SoilMoistureSensor import serial import minimalmodbus import argparse parser = argparse.ArgumentParser() parser.add_argument('serialport', metavar='SERIAL', type=str, help='Serial port') parser.add_argument('--baudrate', metavar='BAUD', type=int, default=4, choices=range(0, 7), help='Current baudrate index - [1200, 2400, 4800, 9600, 19200, 38400, 57600, 115200]') args = parser.parse_args() SERIAL_PORT = args.serialport baudrates=[19200, 9600, 1200, 2400, 4800, 38400, 57600, 115200] print("Scanning bus on port " + SERIAL_PORT) for baudrate in baudrates: print("Trying baudrate " + str(baudrate)) found = SoilMoistureSensor.scanBus(serialport=SERIAL_PORT, endAddress = 247, findOne=True, verbose=False, serialbaudrate=baudrate) if found: print("Found " + str(len(found)) + " sensors: " + str(found)) break # while True: # for a in found: # s= SoilMoistureSensor(address = a, serialport = SERIAL_PORT) # print (str(a) + ": " + str(s.getMoisture()) + " " + str(s.getTemperature()))
from time import sleep parser = argparse.ArgumentParser() parser.add_argument('serialport', metavar='SERIAL', type=str, help='Serial port') parser.add_argument('newaddress', metavar='NEWADDR', type=int, choices=range(1, 248), help='An address to set') parser.add_argument('--baudrate', metavar='BAUD', type=int, default=4, choices=range(0, 7), help='Current baudrate index - [1200, 2400, 4800, 9600, 19200, 38400, 57600, 115200]') args = parser.parse_args() baudrates=[1200, 2400, 4800, 9600, 19200, 38400, 57600, 115200] SERIAL_PORT=args.serialport BAUDRATE = baudrates[args.baudrate] ADDRESS2 = args.newaddress found = SoilMoistureSensor.scanBus(serialport=args.serialport, endAddress = 247, findOne=True, verbose=False, serialbaudrate=BAUDRATE, serialstopbits=2) if found: print('Found sensor at address: ' + str(found[0])) try: sensor = SoilMoistureSensor(address = found[0], serialport=SERIAL_PORT, serialbaudrate=BAUDRATE) print("writing new address: " + str(ADDRESS2)) sensor.setAddress(ADDRESS2) sleep(0.2) sensor = SoilMoistureSensor(address = ADDRESS2, serialport=SERIAL_PORT, serialbaudrate=BAUDRATE) print("reading address from holding register: ") print(sensor.getAddress()) except Exception as e: print (e) print ("Could not change the address. Check your connections")
'Current baudrate index - [1200, 2400, 4800, 9600, 19200, 38400, 57600, 115200]' ) args = parser.parse_args() baudrates = [1200, 2400, 4800, 9600, 19200, 38400, 57600, 115200] ADDRESS = args.address SERIAL_PORT = args.serialport BAUDRATE = baudrates[args.baudrate] print("Reading from sensor address " + str(ADDRESS) + " via port " + SERIAL_PORT + " at baud rate " + str(BAUDRATE)) while True: try: sensor = SoilMoistureSensor(address=ADDRESS, serialport=SERIAL_PORT, serialbaudrate=BAUDRATE) # sensor.sensor.debug=True sensor.sensor.precalculate_read_size = False sensor.sensor.close_port_after_each_call = True #sensor.sensor.serial.timeout = 0.5 print(" Moisture=" + str(sensor.getMoisture()) + " Temperature=" + str(sensor.getTemperature()) + " Baudrate=" + str(sensor.getBaudrate()) + " Parity=" + str(sensor.getParity()) + " Interval=" + str(sensor.getMeasurementInterval()) + " FW=" + str(hex(sensor.getFwVersion()))) # sleep(0.3) except ValueError as e:
#!/usr/bin/python """Waits for the sensor to appear on /dev/ttyUSB5, then reads moisture and temperature from it continuously""" import sys from time import sleep from chirp_modbus import SoilMoistureSensor SERIAL_PORT = '/dev/ttyUSB5' print("Looking for sensors... this might take a while") found = SoilMoistureSensor.scanBus(serialport=SERIAL_PORT, verbose=True, findOne=True) if not found: print("No sensors on the bus") sys.exit() sensor = SoilMoistureSensor(found[0], SERIAL_PORT) while True: try: # sensor.debug=True # sensor.precalculate_read_size=False print("FW version= " + str(hex(sensor.getFwVersion())) + " Moisture=" + str(sensor.getMoisture()) + " Temperature=" + str(sensor.getTemperature())) print("setting address to 2") sensor.setAddress(2) sleep(0.1) print("new address is set: " + str(sensor.getAddress()))
from chirp_modbus import SoilMoistureSensor s = SoilMoistureSensor(0, '/dev/ttyUSB0') print(s.getTemperature()) print(s.getMoisture())
#!/usr/bin/python """Waits for the sensor to appear on /dev/ttyUSB5, then reads moisture and temperature from it continuously""" from time import sleep from chirp_modbus import SoilMoistureSensor print("Looking for sensors... this might take a while") found = SoilMoistureSensor.scanBus(verbose=True, findOne=True) if not found: print("No sensors on the bus") sys.exit() sensor = SoilMoistureSensor(found[0], '/dev/ttyUSB5') while True: try: # sensor.debug=True # sensor.precalculate_read_size=False print("FW version= " + str(hex(sensor.getFwVersion())) + " Moisture=" + str(sensor.getMoisture()) + " Temperature=" + str(sensor.getTemperature())) print("setting address to 2") sensor.setAddress(2) sleep(0.1) print("new address is set: " + str(sensor.getAddress())) print("setting address to 1") sensor.setAddress(1)
'--baudrate', metavar='BAUD', type=int, default=4, choices=range(0, 7), help= 'Current baudrate index - [1200, 2400, 4800, 9600, 19200, 38400, 57600, 115200]' ) args = parser.parse_args() baudrates = [1200, 2400, 4800, 9600, 19200, 38400, 57600, 115200] SERIAL_PORT = args.serialport BAUDRATE = baudrates[args.baudrate] print("Scanning bus on port " + SERIAL_PORT + " at baud rate " + str(BAUDRATE)) while True: found = SoilMoistureSensor.scanBus(serialport=SERIAL_PORT, endAddress=80, findOne=False, verbose=False, serialbaudrate=BAUDRATE) if found: print("Found " + str(len(found)) + " sensors: " + str(found)) # while True: # for a in found: # s= SoilMoistureSensor(address = a, serialport = SERIAL_PORT) # print (str(a) + ": " + str(s.getMoisture()) + " " + str(s.getTemperature()))
#!/usr/bin/python -u """Address setting utility for when you want to set up a lot of sensors""" from time import sleep from chirp_modbus import SoilMoistureSensor import sys SERIAL_PORT = '/dev/ttyUSB5' found = False while not found: print("Scanning bus...") found = SoilMoistureSensor.scanBus(serialport=SERIAL_PORT, findOne=True) if not found: print("No sensors found on bus.") print("Found sensor at address " + str(found[0])) program_address = 1 while True: print("Set address to %d? [Y]es / [n]o / [r]escan bus)" % program_address) c = raw_input() if c == 'y' or c == '' or 'r' == c: found = False while not found: print("Scanning bus...") found = SoilMoistureSensor.scanBus(serialport=SERIAL_PORT, findOne=True) if not found:
'newbaudrate', metavar='NEWBAUD', type=int, choices=range(0, 7), help= 'Baudrate index to set - [1200, 2400, 4800, 9600, 19200, 38400, 57600, 115200]' ) args = parser.parse_args() ADDRESS1 = 1 BAUDRATE1 = baudrates[args.baudrate] BAUDRATE2 = args.newbaudrate found = SoilMoistureSensor.scanBus(serialport=args.serialport, endAddress=247, findOne=True, verbose=False, serialbaudrate=BAUDRATE1, serialstopbits=2) if found: print('Found sensor at address: ' + str(found[0])) try: sensor = SoilMoistureSensor(address=found[0], serialport=args.serialport, serialbaudrate=BAUDRATE1) print("Setting new baudrate: " + str(baudrates[BAUDRATE2])) sensor.setBaudrate(BAUDRATE2) sleep(0.2) sensor = SoilMoistureSensor(address=found[0], serialport=args.serialport, serialbaudrate=baudrates[BAUDRATE2])