コード例 #1
0
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))
コード例 #2
0
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()))

コード例 #3
0
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")
コード例 #4
0
    '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:
コード例 #5
0
#!/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()))
コード例 #6
0
from chirp_modbus import SoilMoistureSensor
s = SoilMoistureSensor(0, '/dev/ttyUSB0')
print(s.getTemperature())
print(s.getMoisture())
コード例 #7
0
ファイル: libtest.py プロジェクト: wedvjin/rs485-moist-sensor
#!/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)
コード例 #8
0
    '--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()))
コード例 #9
0
#!/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:
コード例 #10
0
    '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])