示例#1
0
def	generate_ini_hashes(f, plants):
	h = IniParser()
	h.read('hashes.ini')
	for ini in h.sections():
		f.write('<tr>\n')
		f.write('<th>%s</th>\n' % ini)
		for i in plants:
			tooltip = ' title = \'%s%s\'' % (ini, create_tooltip(i))

			if ini in i.ini_hashes:
				hash = 'h%s' % i.ini_hashes[ini]		
		
				style = ' class="pink"'
			
				if h.has_option(ini, hash):
					val = h.get(ini, hash)
					app = val.split(':')[0]
					
					if (h.get(ini, hash) == '' or (app in i.versions and i.versions[app][0] in h.get(ini, hash))) \
					and (not h.has_option(ini, '%s_motherboard' % hash) or i.motherboard in h.get(ini, '%s_motherboard' % hash)):
						style = ' class="green"'

						if h.has_option(ini, '%s_message' % hash): hash = h.get(ini, '%s_message' % hash)
						else: hash = ''
					else:
						style = ' class="yellow"'
					#endif
				#endif
			else:
				hash = ''
				style = ' class="grey"'
			#endif		
		
			f.write('<td%s%s>%s</td>\n' % (tooltip, style, hash))
		#endfor
		f.write('</tr>\n')
示例#2
0
	def get_little_amounts(self):
		log.info('little amounts function called')
		
		silo = {}
		self.little_amounts_fails = {}
		
		doba = None
		vaha = None
		navazeno = None
		analog = None
		adaptivita = None
		pozadavek = None
		zasobnik = 99 # can delete this line after three month (bacuse of error in info txt from Piestany)
	
		fn = 'control.log'
		
		for l in give_lines(fn, 3):
			if 'poddavkovani ' in l.lower():
				zasobnik = int(l.split()[-1])
				vaha = None
				navazeno = None
				pozadavek = None
			elif 'dobaotevreni ' in l.lower():
				pom = float(l.split()[-1])
				if pom > 3 or pom < 0: continue  # filtrace demetskych hodnot v milisekundach a zapornych hodnot
				doba = pom
			elif 'mezistav1 ' in l.lower():
				vaha = float(l.split()[-1])
			elif 'NejblizsiCil2' in l and vaha:
				pozadavek = float(l.split()[-1]) - vaha
			elif 'PrumernaHodnotaAI[CisloAnalogu] - VychoziVaha' in l:
				analog = float(l.split()[-1])
			elif 'frakcenamereno2 ' in l.lower() and vaha:
				navazeno = float(l.split()[-1]) - vaha
			#endif
		
			if doba and navazeno:
				log.info('%i, %0.2f, %i' % (navazeno, doba, zasobnik))
				
				if navazeno < 30 or navazeno > 500:
					log.info('little amount fail: %i, %0.2f, %i' % (navazeno, doba, zasobnik))
					
					if not zasobnik in self.little_amounts_fails:
						self.little_amounts_fails[zasobnik] = []
					#endif
					
					self.little_amounts_fails[zasobnik].append('%i, %0.2f' % (navazeno, doba))
					doba = None
					continue
				#endif
				
				if analog: adaptivita = navazeno - analog + vaha
				if not zasobnik in silo: silo[zasobnik] = []		
				silo[zasobnik].append((doba, navazeno, pozadavek, adaptivita))

				doba = None
				vaha = None
				navazeno = None
				analog = None
				adaptivita = None
			#endif
		#endfor

		#log.info('%s' % silo)

		self.silo = {}

		self.little_amounts_error = False
		
		f = './temp/ini/adapt.ini'
		if not os.path.isfile(f): return
		adapt = IniParser()
		adapt.read(f)

		f = './temp/ini/parameters.ini'
		if not os.path.isfile(f): return
		parameters = IniParser()
		parameters.read(f)

		for k in silo:
			self.little_amounts_error = adapt.has_option('Aggregate', 'VelocityOfFilling1-%s' % k)
			
			param_velocity = 0
			param_offset = 0
			
			if parameters.has_option('Aggregate_Bin1_Silo%s' % k, 'Velocity_Base'):
				param_velocity = parameters.getint('Aggregate_Bin1_Silo%s' % k, 'Velocity_Base')
				param_offset = parameters.getfloat('Aggregate_Bin1_Silo%s' % k, 'Additional_Time')
			else:
				self.little_amounts_error = True
			#endif
		
			x = 0
			sez = {}
	
			while x < 1.5:
				if not x in sez: sez[x] = []
				for doba, navazeno, pozadavek, adaptivita in silo[k]:
					if doba-x == 0: continue #I dont know why
					sez[x].append(navazeno/(doba - x))
				#endfor
				x = x + 0.01
			#endwhile

			minimum = None
			
			for x in sorted(sez):

				sqr_sum = 0
				avg = 0
				dev = 0
			
				avg = sum(sez[x]) * 1.0 / len(sez[x])

				for velocity in sez[x]:
					sqr_sum += ((velocity - avg) ** 2) / len(sez[x])
				#endfor

				dev = sqr_sum ** 0.5
				
				if not minimum or dev < minimum:
					#print dev
					minimum = dev
					self.silo[k] = (x, avg, len(sez[x]), dev, param_velocity, param_offset)