Skip to content

Commit e2cd01d

Browse files
feat: implement temperature control agent
1 parent 46c256a commit e2cd01d

File tree

1 file changed

+61
-3
lines changed

1 file changed

+61
-3
lines changed

src/agt/temperatureControl.asl

Lines changed: 61 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -18,14 +18,72 @@
1818
start [aid(OperatingBlockObserverId)];
1919
focus(OperatingBlockObserverId).
2020

21+
+temperature(RoomId, RoomType, Value)
22+
: optimalTemperature(RoomType, OptimalValue) &
23+
TollerancedOptimalValue = OptimalValue + 0.5 &
24+
Value > TollerancedOptimalValue
25+
<- .println(cooling);
26+
!turnOffHeating(RoomId);
27+
!turnOnCooling(RoomId).
28+
29+
+temperature(RoomId, RoomType, Value)
30+
: optimalTemperature(RoomType, OptimalValue) &
31+
TollerancedOptimalValue = OptimalValue - 0.5 &
32+
Value < TollerancedOptimalValue
33+
<- .println(heating);
34+
!turnOffCooling(RoomId);
35+
!turnOnHeating(RoomId).
36+
37+
+temperature(RoomId, RoomType, Value) : optimalTemperature(RoomType, OptimalValue) & Value == OptimalValue
38+
<- .println(off);
39+
!turnOffCooling(RoomId);
40+
!turnOffHeating(RoomId).
41+
42+
// Cooling goal
43+
+!turnOnCooling(RoomId) : not cooling(RoomId)
44+
<- .concat(RoomId, "-cooler", ResultString);
45+
makeArtifact(ResultString, "artifact.environment.Cooler", [RoomId], CoolerId);
46+
turnOn [aid(CoolerId)];
47+
+cooling(RoomId); // add mental note to not re-turn on
48+
disposeArtifact(CoolerId).
49+
-!turnOnCooling(RoomId)
50+
<- true.
51+
52+
+!turnOffCooling(RoomId) : cooling(RoomId)
53+
<- .concat(RoomId, "-cooler", ResultString);
54+
makeArtifact(ResultString, "artifact.environment.Cooler", [RoomId], CoolerId);
55+
turnOff [aid(CoolerId)];
56+
-cooling(RoomId); // remove mental note to not re-turn off
57+
disposeArtifact(CoolerId).
58+
-!turnOffCooling(RoomId)
59+
<- true.
60+
61+
// Heating goal
62+
+!turnOnHeating(RoomId) : not heating(RoomId)
63+
<- .concat(RoomId, "-heater", ResultString);
64+
makeArtifact(ResultString, "artifact.environment.Heater", [RoomId], HeaterId);
65+
turnOn [aid(HeaterId)];
66+
+heating(RoomId); // add mental note to not re-turn on
67+
disposeArtifact(HeaterId).
68+
-!turnOnHeating(RoomId)
69+
<- true.
70+
71+
+!turnOffHeating(RoomId) : heating(RoomId)
72+
<- .concat(RoomId, "-heater", ResultString);
73+
makeArtifact(ResultString, "artifact.environment.Heater", [RoomId], HeaterId);
74+
turnOff [aid(HeaterId)];
75+
-heating(RoomId); // remove mental note to not re-turn off
76+
disposeArtifact(HeaterId).
77+
-!turnOffHeating(RoomId)
78+
<- true.
79+
2180
// Obtain the operating block observer
2281
+?obtainObserver(OperatingBlockObserverId)
2382
<- lookupArtifact("operating_block_observer", OperatingBlockObserverId).
2483

25-
// If the operating block observer artifact is not found in the workspace, then create it
2684
-?obtainObserver(OperatingBlockObserverId)
27-
<- makeArtifact("operating_block_observer", "artifact.environment.OperatingBlockObserverArtifact", [], OperatingBlockObserverId).
28-
85+
<- .wait(100);
86+
?obtainObserver(OperatingBlockObserverId).
2987

3088
{ include("$jacamoJar/templates/common-cartago.asl") }
3189
{ include("$jacamoJar/templates/common-moise.asl") }

0 commit comments

Comments
 (0)