Advertisement
Guest User

Untitled

a guest
Oct 27th, 2018
111
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 9.18 KB | None | 0 0
  1. import pickle
  2. import os.path
  3.  
  4. class IrrigationProgram:
  5. program = 0
  6. units = 0
  7. water_before_1 = 0
  8. water_before_2 = 0
  9. water_after_1 = 0
  10. water_after_2 = 0
  11. water_total_1 = 0
  12. water_total_2 = 0
  13. kicks = 0
  14. fertilization_program = 0
  15. condition_program = 0
  16. time_start_1 = 0
  17. time_start_2 = 0
  18. time_between_1 = 0
  19. time_between_2 = 0
  20. days = ""
  21. valves = ""
  22.  
  23.  
  24. class FertilizationProgram:
  25. program = 0
  26. values_1 = 0.0
  27. values_2 = 0.0
  28. values_3 = 0.0
  29. values_4 = 0.0
  30. values_5 = 0.0
  31. values_6 = 0.0
  32. values_7 = 0.0
  33. values_8 = 0.0
  34. ec = 0.0
  35. ph = 0.0
  36.  
  37. class InyectionProgram:
  38. program = 1
  39. flow = 600
  40. time_on = 10
  41. litres_pulse = 100
  42. max_deviation = 70
  43. simulator = True
  44.  
  45.  
  46. class AlarmConfig:
  47. delay_alarm_flow_secs = 0
  48. deviation_warning_max_error_flow = 0
  49. function_alarm_no_water = 0
  50. over_dangerous_flow_percentage = 0
  51. function_alarm_dangerous_flow = 0
  52. max_seconds_between_water_pulses = 0
  53. # Config alarmas de presion
  54. delay_alarm_low_pressure_secs = 0
  55. level_alarm_low_pressure_kg = 0
  56. delay_alarm_high_pressure_kg = 0
  57. level_alarm_high_pressure_kg = 0
  58. function_alarm_high_pressure = 0
  59. # Config alarms de fertilizacion
  60. function_alarm_no_fertilization = 0
  61. pulses_needs_fertilizer = 0
  62. function_alarm_fertilizer_discontinued = 0
  63. pulses_fertilizer_no_control = 0
  64. # Config alarms de EC y pH
  65. max_diff_warning_error_ec = 0
  66. max_diff_warning_error_ph = 0
  67. delay_alarms_ec_ph_secs = 0
  68. function_alarm_ec_ph_dangerous = 0
  69. max_deviation_over_ec = 0
  70. max_deviation_under_ph = 0
  71. delay_alarm_ec_dangerous_secs = 0
  72. delay_alarm_ph_dangerous_secs = 0
  73. # config params EC
  74. delay_secs_if_diff_ec_more_1 = 0
  75. delay_secs_if_diff_ec_more_05 = 0
  76. delay_secs_if_diff_ec_more_03 = 0
  77. coefficient_correction_ec_more_1 = 0
  78. coefficient_correction_ec_more_05 = 0
  79. coefficient_correction_ec_more_03 = 0
  80. secs_first_ec_correction = 0
  81. # config params ph
  82. delay_secs_if_diff_ph_more_1 = 0
  83. delay_secs_if_diff_ph_more_05 = 0
  84. delay_secs_if_diff_ph_more_03 = 0
  85. coefficient_correction_ph_more_1 = 0
  86. coefficient_correction_ph_more_05 = 0
  87. coefficient_correction_ph_more_03 = 0
  88. secs_first_ph_correction = 0
  89.  
  90.  
  91. class ControllerState:
  92. last_update = 0
  93. allIrrigation = dict()
  94. allFertilization = dict()
  95. allInyection = dict()
  96. username = None
  97. password = None
  98. alarm_config = AlarmConfig()
  99.  
  100. def load_from_file(path):
  101. if os.path.isfile(path):
  102. with open(path, 'rb') as in_file:
  103. return(pickle.load(in_file))
  104.  
  105. def load_from_json(self, json):
  106. self.last_update = int(json['update'])
  107. for fert in json["fertilizer_prog"]:
  108. fertProg = FertilizationProgram()
  109. fertProg.program = fert["program"]
  110. fertProg.ec = fert["ec"]
  111. fertProg.ph = fert["ph"]
  112. fertProg.values_1 = fert["value_1"]
  113. fertProg.values_2 = fert["value_2"]
  114. fertProg.values_3 = fert["value_3"]
  115. fertProg.values_4 = fert["value_4"]
  116. fertProg.values_5 = fert["value_5"]
  117. fertProg.values_6 = fert["value_6"]
  118. fertProg.values_7 = fert["value_7"]
  119. fertProg.values_8 = fert["value_8"]
  120. self.allFertilization[fertProg.program] = fertProg
  121. for irr in json["irrigation_prog"]:
  122. irrProg = IrrigationProgram()
  123. irrProg.program = irr["program"]
  124. irrProg.units = irr["units"]
  125. irrProg.water_before_1 = irr["water_before_1"]
  126. irrProg.water_before_2 = irr["water_before_2"]
  127. irrProg.water_after_1 = irr["water_after_1"]
  128. irrProg.water_after_2 = irr["water_after_2"]
  129. irrProg.water_total_1 = irr["water_total_1"]
  130. irrProg.water_total_2 = irr["water_total_2"]
  131. irrProg.kicks = irr["kicks"]
  132. irrProg.fertilization_program = irr["fertilization_program"]
  133. irrProg.condition_program = irr["condition_program"]
  134. irrProg.time_start_1 = irr["time_start_1"]
  135. irrProg.time_start_2 = irr["time_start_2"]
  136. irrProg.time_between_1 = irr["time_between_1"]
  137. irrProg.time_between_2 = irr["time_between_2"]
  138. irrProg.valves = irr["valves"]
  139. irrProg.days = irr["days"]
  140. self.allIrrigation[irrProg.program] = irrProg
  141. # TODO valves
  142. for iny in json["inyection_prog"]:
  143. inyProg = InyectionProgram()
  144. inyProg.program = iny["program"]
  145. inyProg.flow = iny["flow"]
  146. inyProg.time_on = iny["time_on"]
  147. inyProg.litres_pulse = iny["litres_pulse"]
  148. inyProg.max_deviation = iny["max_deviation"]
  149. inyProg.simulator = iny["simulator"]
  150. self.allInyection[inyProg.program] = inyProg
  151. if "alarm_config" in json["alarm_config"]:
  152. json_alarm = json["alarm_config"]
  153. alarm_config.delay_alarm_flow_secs = json_alarm["delay_alarm_flow_secs"]
  154. alarm_config.deviation_warning_max_error_flow = json_alarm["deviation_warning_max_error_flow"]
  155. alarm_config.function_alarm_no_water = json_alarm["function_alarm_no_water"]
  156. alarm_config.over_dangerous_flow_percentage = json_alarm["over_dangerous_flow_percentage"]
  157. alarm_config.function_alarm_dangerous_flow = json_alarm["function_alarm_dangerous_flow"]
  158. alarm_config.max_seconds_between_water_pulses = json_alarm["max_seconds_between_water_pulses"]
  159. alarm_config.delay_alarm_low_pressure_secs = json_alarm["delay_alarm_low_pressure_secs"]
  160. alarm_config.level_alarm_low_pressure_kg = json_alarm["level_alarm_low_pressure_kg"]
  161. alarm_config.delay_alarm_high_pressure_kg = json_alarm["delay_alarm_high_pressure_kg"]
  162. alarm_config.level_alarm_high_pressure_kg = json_alarm["level_alarm_high_pressure_kg"]
  163. alarm_config.function_alarm_high_pressure = json_alarm["function_alarm_high_pressure"]
  164. alarm_config.function_alarm_no_fertilization = json_alarm["function_alarm_no_fertilization"]
  165. alarm_config.pulses_needs_fertilizer = json_alarm["pulses_needs_fertilizer"]
  166. alarm_config.function_alarm_fertilizer_discontinued = json_alarm["function_alarm_fertilizer_discontinued"]
  167. alarm_config.pulses_fertilizer_no_control = json_alarm["pulses_fertilizer_no_control"]
  168. alarm_config.max_diff_warning_error_ec = json_alarm["max_diff_warning_error_ec"]
  169. alarm_config.max_diff_warning_error_ph = json_alarm["max_diff_warning_error_ph"]
  170. alarm_config.delay_alarms_ec_ph_secs = json_alarm["delay_alarms_ec_ph_secs"]
  171. alarm_config.function_alarm_ec_ph_dangerous = json_alarm["function_alarm_ec_ph_dangerous"]
  172. alarm_config.max_deviation_over_ec = json_alarm["max_deviation_over_ec"]
  173. alarm_config.max_deviation_under_ph = json_alarm["max_deviation_under_ph"]
  174. alarm_config.delay_alarm_ec_dangerous_secs = json_alarm["delay_alarm_ec_dangerous_secs"]
  175. alarm_config.delay_alarm_ph_dangerous_secs = json_alarm["delay_alarm_ph_dangerous_secs"]
  176. alarm_config.delay_secs_if_diff_ec_more_1 = json_alarm["delay_secs_if_diff_ec_more_1"]
  177. alarm_config.delay_secs_if_diff_ec_more_05 = json_alarm["delay_secs_if_diff_ec_more_05"]
  178. alarm_config.delay_secs_if_diff_ec_more_03 = json_alarm["delay_secs_if_diff_ec_more_03"]
  179. alarm_config.coefficient_correction_ec_more_1 = json_alarm["coefficient_correction_ec_more_1"]
  180. alarm_config.coefficient_correction_ec_more_05 = json_alarm["coefficient_correction_ec_more_05"]
  181. alarm_config.coefficient_correction_ec_more_03 = json_alarm["coefficient_correction_ec_more_03"]
  182. alarm_config.secs_first_ec_correction = json_alarm["secs_first_ec_correction"]
  183. alarm_config.delay_secs_if_diff_ph_more_1 = json_alarm["delay_secs_if_diff_ph_more_1"]
  184. alarm_config.delay_secs_if_diff_ph_more_05 = json_alarm["delay_secs_if_diff_ph_more_05"]
  185. alarm_config.delay_secs_if_diff_ph_more_03 = json_alarm["delay_secs_if_diff_ph_more_03"]
  186. alarm_config.coefficient_correction_ph_more_1 = json_alarm["coefficient_correction_ph_more_1"]
  187. alarm_config.coefficient_correction_ph_more_05 = json_alarm["coefficient_correction_ph_more_05"]
  188. alarm_config.coefficient_correction_ph_more_03 = json_alarm["coefficient_correction_ph_more_03"]
  189. alarm_config.secs_first_ph_correction = json_alarm["secs_first_ph_correction"]
  190.  
  191.  
  192. def save_to_file(self, filename):
  193. pickle.dumps(self)
  194. with open(filename, 'wb') as out_file:
  195. pickle.dump(self, out_file)
  196. def __eq__(self, other):
  197. if self.last_update == other.last_update and\
  198. self.allInyection == other.allInyection and\
  199. self.allFertilization == other.allFertilization and\
  200. self.allIrrigation == other.allIrrigation:
  201. return True
  202. else:
  203. return False
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement