diff --git a/README.md b/README.md index 7fba2c3..0ec17c6 100644 --- a/README.md +++ b/README.md @@ -12,14 +12,19 @@ This code will run on a Raspberry PI in a chicken barn. There are scales under t * Story: (done) using Github Actions to automatic build and create an image * Story: (done) install current Docker image on Raspberry PI and start it initially * Story: (done) create structure with timer service pulling dummy scale service and show data via GET service +* Story: (done) give calibrate webservice operation for load cell +* Story: (done) create scale service that delivers current weight -* Story: create scale service that delivers current weight +* Story: change discovery webserivce to use DO instead of strings +* Story: write tests and mock for scale service +* Story: respect box/UID of load cell * Story: get current weight and calculate the "state" (chicken, egg) +* Story: Integration test with whole process * Story: integrate Whatsapp and send messages +* Story: integrate Prometheus * Story: manage chickens * Story: read data from scale and show by webservice (GET) - diff --git a/src/main/java/ch/stephan/chickenfarm/Discovery.java b/src/main/java/ch/stephan/chickenfarm/Discovery.java deleted file mode 100644 index 2328b30..0000000 --- a/src/main/java/ch/stephan/chickenfarm/Discovery.java +++ /dev/null @@ -1,6 +0,0 @@ -package ch.stephan.chickenfarm; - -import java.util.List; - -public record Discovery(String uid, List data) { -} diff --git a/src/main/java/ch/stephan/chickenfarm/DiscoveryController.java b/src/main/java/ch/stephan/chickenfarm/DiscoveryController.java index 66951c3..bc45e15 100644 --- a/src/main/java/ch/stephan/chickenfarm/DiscoveryController.java +++ b/src/main/java/ch/stephan/chickenfarm/DiscoveryController.java @@ -1,12 +1,12 @@ package ch.stephan.chickenfarm; import java.util.List; -import java.util.stream.Collectors; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RestController; +import ch.stephan.chickenfarm.dto.Discovery; import ch.stephan.chickenfarm.scale.ScaleService; @RestController @@ -17,9 +17,7 @@ public class DiscoveryController { @GetMapping("/discovery") public List discovery() { - return scaleService.discovery().entrySet().stream()// - .map(e -> new Discovery(e.getKey(), e.getValue()))// - .collect(Collectors.toList()); + return scaleService.discovery(); } } diff --git a/src/main/java/ch/stephan/chickenfarm/GreetingController.java b/src/main/java/ch/stephan/chickenfarm/GreetingController.java index 71d4d00..72603d1 100644 --- a/src/main/java/ch/stephan/chickenfarm/GreetingController.java +++ b/src/main/java/ch/stephan/chickenfarm/GreetingController.java @@ -7,6 +7,7 @@ import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; +import ch.stephan.chickenfarm.dto.Greeting; import ch.stephan.chickenfarm.scale.ScaleService; @RestController diff --git a/src/main/java/ch/stephan/chickenfarm/dto/Discovery.java b/src/main/java/ch/stephan/chickenfarm/dto/Discovery.java new file mode 100644 index 0000000..50dd97d --- /dev/null +++ b/src/main/java/ch/stephan/chickenfarm/dto/Discovery.java @@ -0,0 +1,5 @@ +package ch.stephan.chickenfarm.dto; + +public record Discovery(String uid, String connectedUid, int position, String hardwareVersion, String firmwareVersion, + int deviceIdentifier, int enumerationType) { +} diff --git a/src/main/java/ch/stephan/chickenfarm/Greeting.java b/src/main/java/ch/stephan/chickenfarm/dto/Greeting.java similarity index 59% rename from src/main/java/ch/stephan/chickenfarm/Greeting.java rename to src/main/java/ch/stephan/chickenfarm/dto/Greeting.java index e075d8d..565ed73 100644 --- a/src/main/java/ch/stephan/chickenfarm/Greeting.java +++ b/src/main/java/ch/stephan/chickenfarm/dto/Greeting.java @@ -1,3 +1,3 @@ -package ch.stephan.chickenfarm; +package ch.stephan.chickenfarm.dto; public record Greeting(long id, String content) { } diff --git a/src/main/java/ch/stephan/chickenfarm/scale/ScaleService.java b/src/main/java/ch/stephan/chickenfarm/scale/ScaleService.java index 2a2cf76..3907ec1 100644 --- a/src/main/java/ch/stephan/chickenfarm/scale/ScaleService.java +++ b/src/main/java/ch/stephan/chickenfarm/scale/ScaleService.java @@ -2,9 +2,7 @@ import java.io.IOException; import java.util.ArrayList; -import java.util.HashMap; import java.util.List; -import java.util.Map; import org.springframework.stereotype.Service; @@ -15,6 +13,7 @@ import com.tinkerforge.NotConnectedException; import com.tinkerforge.TinkerforgeException; +import ch.stephan.chickenfarm.dto.Discovery; import jakarta.annotation.PostConstruct; import jakarta.annotation.PreDestroy; @@ -26,7 +25,7 @@ public class ScaleService { private static final String UID = "ZUw"; private IPConnection ipConnection; - private Map> discoveryResult = new HashMap<>(); + private List discoveryResult = new ArrayList<>(); public int measureWeight(int box) { int weight = -1; @@ -42,7 +41,22 @@ public int measureWeight(int box) { return weight; } - public Map> discovery() { + public String calibrate(int box) { + try { + BrickletLoadCellV2 loadCell = new BrickletLoadCellV2(UID, ipConnection); + int before = loadCell.getWeight(); + loadCell.calibrate(before); + int after = loadCell.getWeight(); + System.out.println("Scale was recalibrated. Before: " + before + " g - after: " + after + " g"); + + } catch (TinkerforgeException ex) { + ex.printStackTrace(); + } + + return "successfully calibrated"; + } + + public List discovery() { try { ipConnection.enumerate(); System.out.println("Broadcast sent to all connected components"); @@ -89,20 +103,9 @@ private final class EnumerateListenerImpl implements IPConnection.EnumerateListe public void enumerate(String uid, String connectedUid, char position, short[] hardwareVersion, short[] firmwareVersion, int deviceIdentifier, short enumerationType) { - List result = new ArrayList(); - result.add("UID: " + uid); - result.add("Enumeration Type: " + enumerationType); - - if (enumerationType != IPConnection.ENUMERATION_TYPE_DISCONNECTED) { - result.add("Connected UID: " + connectedUid); - result.add("Position: " + position); - result.add("Hardware Version: " + asString(hardwareVersion)); - result.add("Firmware Version: " + asString(firmwareVersion)); - result.add("Device Identifier: " + deviceIdentifier); - } - result.add(""); - - discoveryResult.put(uid, result); + Discovery discovery = new Discovery(uid, connectedUid, position, asString(hardwareVersion), + asString(firmwareVersion), deviceIdentifier, enumerationType); + discoveryResult.add(discovery); } private String asString(short[] version) {