コード例 #1
0
def main():
    # -------------------------
    # main
    # -------------------------

    # lesen der Werte aus der HTML form
    cgitb.enable(display=0, logdir="/var/log/apache2")

    form = cgi.FieldStorage()

    cgi_number = form.getvalue('flasche-nr')
    cgi_leer = form.getvalue('gewicht-leer')
    cgi_voll = form.getvalue('gewicht-voll')
    cgi_pin_dout = form.getvalue('gpio-pin-dout')
    cgi_pin_sck = form.getvalue('gpio-pin-sck')
    cgi_channel = form.getvalue('hx711-channel')
    cgi_refUnit = form.getvalue('hx711-refUnit')

    # print(cgi_number, cgi_leer, cgi_voll, cgi_pin_dout, cgi_pin_sck, cgi_channel, cgi_refUnit)

    if (cgi_number != None):
        (emptyWeight, fullWeight, pin_dout, pin_sck, channel,
         refUnit) = CaravanPiFiles.readGasScale(float(cgi_number))

    if (cgi_number != None and cgi_leer != None and cgi_voll != None
            and cgi_pin_dout != None and cgi_pin_sck != None
            and cgi_channel != None and cgi_refUnit != None):
        emptyWeight = float(cgi_leer)
        fullWeight = float(cgi_voll)
        pin_dout = float(cgi_pin_dout)
        pin_sck = float(cgi_pin_sck)
        channel = cgi_channel
        refUnit = float(cgi_refUnit)

        CaravanPiFiles.writeGasScale(float(cgi_number), 0, 0, emptyWeight,
                                     fullWeight, pin_dout, pin_sck, channel,
                                     refUnit)

    # Ergebnis Website schreiben
    print("Content-Type: text/html; charset=utf-8\n\n")
    print("<html>")

    print("<head>")
    print("<title>CaravanPi Konfiguration</title>")
    print("<meta http-equiv='refresh' content='2; URL=gas-scale.php'>")
    print("<link rel='stylesheet' type='text/css' href='css/main.css'>")
    print("<link rel='stylesheet' type='text/css' href='css/custom.css'>")
    print("</head>")

    print("<body>")
    print(
        '<header class="header">CaravanPi Konfiguration - Gasflaschen-Gewichte</header>'
    )
    if (cgi_number != None and cgi_leer != None and cgi_voll != None
            and cgi_pin_dout != None and cgi_pin_sck != None
            and cgi_channel != None and cgi_refUnit != None):
        print("Die eingegebenen Werte wurden erfolgreich gespeichert")
    else:
        print(
            "ES KONNTEN KEINE bzw. NICHT ALLE WERTE AUS DEM FORMULAR GELESEN WERDEN!"
        )
    print("<br/><br/>Sie werden zur Eingabeseite weitergeleitet")
    print("</body>")
    print("</html>")
コード例 #2
0
def main():
	# -------------------------
	# main 
	# -------------------------

	# -------------------------
	# process call parameters
	# -------------------------
	opts = []
	args = []
	writeTestFile = 0
	displayScreen = 0
	displayCode = 0
	calibrationWait = 0 # seconds
	gasCylinderNumber = 1
	testgewicht = 1
	
	try:
		opts, args = getopt.getopt(sys.argv[1:], shortOptions, longOptions)
	except getopt.GetoptError:
		print("ERROR: options not correct")
		usage()
		sys.exit()
	
	for o, a in opts:
		if o == "--code" or o == "-c":
			displayCode = 1
		elif o == "--help" or o == "-h":
			print("HELP")
			usage()
			sys.exit()
		elif o == "--gasscale" or o == "-g":
			gasCylinderNumber = int(a)
		elif o == "--screen" or o == "-s":
			print("output also to this screen")
			displayScreen = 1
		elif o == "--test" or o == "-t":
			writeTestFile = 1
		elif o == "--weight" or o == "-e":
			testgewicht = int(a)
		elif o == "--wait" or o == "-w":
			calibrationWait = int(a)

	for a in args:
		print("further argument: ", a)
		
	# read defaults
	(emptyWeight, fullWeight, pin_dout, pin_sck, channel, refUnit) = CaravanPiFiles.readGasScale(gasCylinderNumber)
	
	if displayScreen == 1:
		print("Die Kalibrierung wird gestartet ....")
		print("... vorbereiten der Wägezelle und des HX711 ...")
	
	if displayCode == 1:
		print("Content-Type: text/html; charset=utf-8\n\n")
		print("<html>")
		print("<head>")
		print("<title>CaravanPi Konfiguration</title>")
		print("<meta http-equiv='refresh' content='20; URL=gas-scale.php'>")
		print("<link rel='stylesheet' type='text/css' href='css/main.css'>")
		print("<link rel='stylesheet' type='text/css' href='css/custom.css'>")
		print("</head>")
		print("<body>")
		print('<header class="header">CaravanPi Konfiguration - Kalibrirung der Waage f&uuml;r Gasflasche ', gasCylinderNumber,'</header>')
		print("Die Kalibrierung wird gestartet ....<br/><br/>")
		print("... vorbereiten der W&auml;gezelle und des HX711 ...<br/>")

	# test GPIO Pins
	if pin_dout == 0 or pin_sck == 0:
		if displayCode == 1:
			print("GPIO Pins des HX711 sind nicht richtig gesetzt<br/>")
			print("PIN DOUT: ", pin_dout, "<br/>")
			print("PIN SCK: ", pin_sck, "<br/>")
			print("ABBRUCH<br/>")
			print("<br/><br/>Sie werden in K&uuml;rze zur Eingabeseite weitergeleitet")
			print("</body>")
			print("</html>")
		if displayScreen == 1:
			print("GPIO Pins des HX711 sind nicht richtig gesetzt")
			print("PIN DOUT: ", pin_dout)
			print("PIN SCK: ", pin_sck)
			print("ABBRUCH")
		exit(-1)


	# start sensor
	hx = HX711(pin_dout, pin_sck)
	hx.set_reading_format("MSB", "MSB")

	if displayScreen == 1:
		print("... setzen des Referenzwertes auf 1 ...")
	
	if displayCode == 1: 
		print("... setzen des Referenzwertes auf 1 ...<br/>")

	if channel == "A":
		hx.set_reference_unit_A(1)
	elif channel == "B":
		hx.set_reference_unit_B(1)
	else:
		print("invalid HX711 channel: ", channel)		
		print("set channel to A")
		channel = "A"		
		hx.set_reference_unit_A(1)

	hx.reset()
	
	# Wait if there was a waiting time parameter
	i=0
	while i < calibrationWait:
		sleep(1)
		i+=1
	
	if displayScreen == 1:
		print("... mehrmaliges Wiegen des Testgewichts ...")

	if displayCode == 1: 
		print("... mehrmaliges Wiegen des Testgewichts ...<br/><br/>")

	# read sensor
	if channel == "B":
		weight = hx.get_weight_B(19)
	else:
		weight = hx.get_weight_A(19)

	if displayScreen == 1:
		print("... für das Testgewichts von ",testgewicht, " Gramm wurde ein Referenzwert von ", weight ," ermittelt ...")

	if displayCode == 1: 
		print("... f&uuml;r das Testgewichts von ",testgewicht, " Gramm wurde ein Referenzwert von ", weight ," ermittelt ...<br/>")

	refUnit = weight / testgewicht

	if displayScreen == 1:
		print("... daraus ergibt sich ein Referenzwert von ", refUnit, " ...")
		print("... setzen des Referenzwertes auf ", refUnit, " ...")

	if displayCode == 1: 
		print("... daraus ergibt sich ein Referenzwert von ", refUnit, " ...<br/><br/>")
		print("... setzen des Referenzwertes auf ", refUnit, " ...<br/>")

	if channel == "B":
		hx.set_reference_unit_B(refUnit)
	else:
		hx.set_reference_unit_A(refUnit)

	hx.reset()

	if displayScreen == 1:
		print("... erneutes mehrmaliges Wiegen des Testgewichts ...")

	if displayCode == 1: 
		print("... erneutes mehrmaliges Wiegen des Testgewichts ...<br/><br/>")

	# read sensor
	if channel == "B":
		weight = hx.get_weight_B(5)
	else:
		weight = hx.get_weight_A(5)
	
	if displayScreen == 1:
		print("... für das Testgewichts von ",testgewicht, " Gramm wurde nun ein Gewicht von ", weight ," Gramm ermittelt ...")
		print("... der neue Referenzwert wird in die Default Datei geschrieben ...")

	if displayCode == 1: 
		print("... f&uuml;r das Testgewichts von ",testgewicht, " Gramm wurde nun ein Gewicht von ", weight ," Gramm ermittelt ...<br/><br/>")
		print("... der neue Referenzwert wird in die Default Datei geschrieben ...<br/><br/>")

	# write new defaults
	CaravanPiFiles.writeGasScale(gasCylinderNumber, writeTestFile, displayScreen, emptyWeight, fullWeight, pin_dout, pin_sck, channel, refUnit)
	
	# cleanup GPIO
	hx.GPIOcleanup()

	if displayCode == 1:
		print("... damit wurde die Kalibrierung der Waage f&uuml;r die Gasflasche ", gasCylinderNumber, " abgeschlossen.<br/><br/>")
		print("<br/><br/>Sie werden in K&uuml;rze zur Eingabeseite weitergeleitet")
		print("</body>")
		print("</html>")