MCPcopy Create free account
hub / github.com/JoshuaPostel/texaform / Smelter

Class Smelter

python/smelter.py:14–64  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

12
13
14class Smelter(Agent):
15
16 def __init__(self, port: int, location: Point):
17 super().__init__(port, location)
18 self.powered = False
19
20 def stat(self) -> Tuple[int, Counter, Counter]:
21 parts = self.send("STAT").split()
22 temp = int(parts[1])
23 buffer_in = parts[2]
24 if buffer_in == "_":
25 buffer_in = ""
26 buffer_out = parts[3]
27 if buffer_out == "_":
28 buffer_out = ""
29 return (temp, Counter(list(buffer_in)), Counter(list(buffer_out)))
30
31 def power_on(self):
32 if not self.powered:
33 self.send("POWR")
34 self.powered = not self.powered
35
36 def power_off(self):
37 if self.powered:
38 self.send("POWR")
39 self.powered = not self.powered
40
41 def temp(self) -> int:
42 return self.stat()[0]
43
44
45 def smelt(self, hud: HUD, output: str):
46 output_char = name_char_map[output]
47 (temp, _, buf_out) = self.stat()
48 previous_count = buf_out[output_char]
49 while True:
50 if hud.accumulator_charge() == 0:
51 seconds = 60
52 print(f"ACC CHARGE 0, powering off for {seconds} sec")
53 self.power_off()
54 sleep(seconds)
55 (temp, _, buf_out) = self.stat()
56 if temp < (min_smelt + 50):
57 self.power_on()
58 if temp > (max_smelt - 50):
59 self.power_off()
60 if buf_out[output_char] > previous_count:
61 self.power_off()
62 break
63 # an unluckily timed dog pick could cause this to fail
64 previous_count = buf_out[output_char]
65
66
67

Callers 1

main.pyFile · 0.90

Calls

no outgoing calls

Tested by

no test coverage detected