Skip to content

Commit e8f3051

Browse files
authored
Merge pull request #10 from oracle-devrel/iot
Iot
2 parents c4a2fae + 6584dda commit e8f3051

File tree

4 files changed

+26
-5
lines changed

4 files changed

+26
-5
lines changed

IoTSonnenUploader/config-sample/mqtt.yml

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,6 @@
11
mqtt:
2+
monitoruploads:
3+
enabled: true
24
device:
35
id: tims
46
broker:
@@ -19,7 +21,7 @@ mqtt:
1921
clean-session: true
2022
automatic-reconnect: true
2123
connection-timeout: "PT30s"
22-
keep-alive-interval: "PT60s"
24+
keep-alive-interval: 60
2325

2426
will-message:
2527
topic: home/sonnen/will/${mqtt.device.id}

IoTSonnenUploader/src/main/java/com/oracle/demo/timg/iot/iotsonnenuploader/mqtt/MqttUploadMonitor.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,7 @@ Software and the Larger Work(s), and to sublicense the foregoing rights on
4747
@Log
4848
@MqttSubscriber
4949
@Requires(property = MqttDeviceSettings.PREFIX + ".id")
50+
@Requires(property = "mqtt.monitoruploads.enabled", value = "true", defaultValue = "false")
5051
public class MqttUploadMonitor {
5152
@Topic("house/sonnen/configuration/${" + MqttDeviceSettings.PREFIX + ".id}")
5253
public void receiveConfig(SonnenConfiguration config) {

IoTSonnenUploader/src/main/java/com/oracle/demo/timg/iot/iotsonnenuploader/sonnencontroller/SonnenBatteryClient.java

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,7 @@ Software and the Larger Work(s), and to sublicense the foregoing rights on
4646
import io.micronaut.http.annotation.Get;
4747
import io.micronaut.http.annotation.Header;
4848
import io.micronaut.http.client.annotation.Client;
49+
import io.micronaut.http.client.exceptions.HttpClientException;
4950

5051
@Client(id = "sonnenbattery", path = "/api/v2")
5152
@Header(name = USER_AGENT, value = "Micronaut HTTP Client")
@@ -54,9 +55,11 @@ Software and the Larger Work(s), and to sublicense the foregoing rights on
5455
public interface SonnenBatteryClient {
5556

5657
@Get("/configurations")
57-
public SonnenConfiguration fetchConfiguration();
58+
// @Error(exception = ReadTimeoutException.class)
59+
public SonnenConfiguration fetchConfiguration() throws HttpClientException;
5860

5961
@Get("/status")
60-
public SonnenStatus fetchStatus();
62+
// @Error(exception = ReadTimeoutException.class)
63+
public SonnenStatus fetchStatus() throws HttpClientException;
6164

6265
}

IoTSonnenUploader/src/main/java/com/oracle/demo/timg/iot/iotsonnenuploader/uploader/Uploader.java

Lines changed: 17 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,7 @@ Software and the Larger Work(s), and to sublicense the foregoing rights on
4444
import com.oracle.demo.timg.iot.iotsonnenuploader.sonnencontroller.SonnenBatteryClient;
4545

4646
import io.micronaut.context.event.StartupEvent;
47+
import io.micronaut.http.client.exceptions.HttpClientException;
4748
import io.micronaut.runtime.event.annotation.EventListener;
4849
import io.micronaut.scheduling.TaskExecutors;
4950
import io.micronaut.scheduling.annotation.ExecuteOn;
@@ -63,7 +64,14 @@ public class Uploader {
6364
@Scheduled(fixedRate = "120s", initialDelay = "5s")
6465
@ExecuteOn(TaskExecutors.IO)
6566
public SonnenConfiguration processConfiguration() {
66-
SonnenConfiguration conf = client.fetchConfiguration();
67+
SonnenConfiguration conf;
68+
try {
69+
conf = client.fetchConfiguration();
70+
} catch (HttpClientException e) {
71+
log.warning("HttpClientException getting configuration from sonnen, no data to upload for service "
72+
+ e.getServiceId());
73+
return null;
74+
}
6775
log.info("Retrieved configuration from battery : " + conf);
6876
CompletableFuture<Void> publishResp = mqttSonnenBatteryPublisher.publishSonnenConfiguration(conf);
6977
publishResp.thenRun(() -> log.info("Published configuration as object"));
@@ -73,7 +81,14 @@ public SonnenConfiguration processConfiguration() {
7381
@Scheduled(fixedRate = "10s", initialDelay = "10s")
7482
@ExecuteOn(TaskExecutors.IO)
7583
public SonnenStatus processStatus() {
76-
SonnenStatus status = client.fetchStatus();
84+
SonnenStatus status;
85+
try {
86+
status = client.fetchStatus();
87+
} catch (HttpClientException e) {
88+
log.warning("HttpClientExcepton getting configuration from sonnen, no data to upload, for service "
89+
+ e.getServiceId());
90+
return null;
91+
}
7792
log.info("Retrieved status from battery : " + status);
7893
CompletableFuture<Void> publishResp = mqttSonnenBatteryPublisher.publishSonnenStatus(status);
7994
publishResp.thenRun(() -> log.info("Published status as object"));

0 commit comments

Comments
 (0)