From 3dc8965a53645aa9d6d4d992333e15435faee30e Mon Sep 17 00:00:00 2001 From: Julien Lengrand-Lambert Date: Fri, 20 Dec 2019 11:20:16 +0100 Subject: [PATCH] Simple retry mechanism, and start script --- README.md | 4 ++- .../main/java/nl/lengrand/CellarProvider.java | 16 ++++++++- .../java/nl/lengrand/faunadb/SensorApi.java | 33 +------------------ startCellar.sh | 3 ++ 4 files changed, 22 insertions(+), 34 deletions(-) create mode 100755 startCellar.sh diff --git a/README.md b/README.md index 519a4ad..608ca62 100644 --- a/README.md +++ b/README.md @@ -32,4 +32,6 @@ ping raspberrypi.local http://hirt.se/blog/?p=1116 -https://github.com/fauna/faunadb-jvm/blob/master/docs/java.md \ No newline at end of file +https://github.com/fauna/faunadb-jvm/blob/master/docs/java.md + +Stack Overflow Question : https://iot.stackexchange.com/questions/4662/in-what-form-should-i-store-data-in-the-cloud-for-a-single-device \ No newline at end of file diff --git a/cellar-app/src/main/java/nl/lengrand/CellarProvider.java b/cellar-app/src/main/java/nl/lengrand/CellarProvider.java index d9c3b6b..207a5fa 100644 --- a/cellar-app/src/main/java/nl/lengrand/CellarProvider.java +++ b/cellar-app/src/main/java/nl/lengrand/CellarProvider.java @@ -7,10 +7,24 @@ import javax.enterprise.context.ApplicationScoped; @ApplicationScoped public class CellarProvider { + private static final int N_TRIES = 5; + private Dht11Driver driver = new Dht11Driver(); public SensorValue getSensorValues(){ - float[] values = driver.getTemperatureAndHumidity(); + + int counter = 0; + float[] values; + do { + values = driver.getTemperatureAndHumidity(); + counter++; + } + while (noSensorData(values) && counter < N_TRIES); + return new SensorValue(values); } + + private boolean noSensorData(float[] values) { + return values[0] == 0 && values[1] == 0; + } } diff --git a/cellar-app/src/main/java/nl/lengrand/faunadb/SensorApi.java b/cellar-app/src/main/java/nl/lengrand/faunadb/SensorApi.java index 597dbad..e7548e3 100644 --- a/cellar-app/src/main/java/nl/lengrand/faunadb/SensorApi.java +++ b/cellar-app/src/main/java/nl/lengrand/faunadb/SensorApi.java @@ -27,6 +27,7 @@ public class SensorApi { Obj("data", Obj( "temperature", Language.Value(values.getTemperature()), "humidity", Language.Value(values.getHumidity()) , + "reading", Language.Value(values.getReading()), "timestamp", Language.Value(Instant.now()) ) ) @@ -34,36 +35,4 @@ public class SensorApi { ).get(); System.out.println("Added sensor data to collection " + COLLECTION_NAME + ":\n " + addDataResult + "\n"); } - - public void add(float[] res) throws ExecutionException, InterruptedException { - Value addDataResult = connection.getClient().query( - Create( - Collection(Language.Value(COLLECTION_NAME)), - Obj("data", - Obj( "temperature", Language.Value(res[0]), - "humidity", Language.Value(res[1]), - "timestamp", Language.Value(Instant.now()) - ) - ) - ) - ).get(); - System.out.println("Added sensor data to collection " + COLLECTION_NAME + ":\n " + addDataResult + "\n"); - } - - public void update(float[] res) throws ExecutionException, InterruptedException { - Value updateDataResult = - connection.getClient().query( - Update( - Select(Language.Value("ref"), Get(Match(Index(INDEX_NAME), Language.Value(UPDATE_DEVICE_NAME)))), - Obj("data", - Obj( - "temperature", Language.Value(res[0]), - "humidity", Language.Value(res[1]), - "timestamp", Language.Value(Instant.now()) - ) - ) - ) - ).get(); - System.out.println("Updated sensor data from collection " + COLLECTION_NAME + ":\n " + updateDataResult + "\n"); - } } \ No newline at end of file diff --git a/startCellar.sh b/startCellar.sh new file mode 100755 index 0000000..2fff748 --- /dev/null +++ b/startCellar.sh @@ -0,0 +1,3 @@ +#!/bin/bash + +nohup java -jar cellar-app/target/cellar-app.jar & \ No newline at end of file