Skip to content
Merged

Iot #10

Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 3 additions & 1 deletion IoTSonnenUploader/config-sample/mqtt.yml
Original file line number Diff line number Diff line change
@@ -1,4 +1,6 @@
mqtt:
monitoruploads:
enabled: true
device:
id: tims
broker:
Expand All @@ -19,7 +21,7 @@ mqtt:
clean-session: true
automatic-reconnect: true
connection-timeout: "PT30s"
keep-alive-interval: "PT60s"
keep-alive-interval: 60

will-message:
topic: home/sonnen/will/${mqtt.device.id}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -47,6 +47,7 @@ Software and the Larger Work(s), and to sublicense the foregoing rights on
@Log
@MqttSubscriber
@Requires(property = MqttDeviceSettings.PREFIX + ".id")
@Requires(property = "mqtt.monitoruploads.enabled", value = "true", defaultValue = "false")
public class MqttUploadMonitor {
@Topic("house/sonnen/configuration/${" + MqttDeviceSettings.PREFIX + ".id}")
public void receiveConfig(SonnenConfiguration config) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -46,6 +46,7 @@ Software and the Larger Work(s), and to sublicense the foregoing rights on
import io.micronaut.http.annotation.Get;
import io.micronaut.http.annotation.Header;
import io.micronaut.http.client.annotation.Client;
import io.micronaut.http.client.exceptions.HttpClientException;

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

@Get("/configurations")
public SonnenConfiguration fetchConfiguration();
// @Error(exception = ReadTimeoutException.class)
public SonnenConfiguration fetchConfiguration() throws HttpClientException;

@Get("/status")
public SonnenStatus fetchStatus();
// @Error(exception = ReadTimeoutException.class)
public SonnenStatus fetchStatus() throws HttpClientException;

}
Original file line number Diff line number Diff line change
Expand Up @@ -44,6 +44,7 @@ Software and the Larger Work(s), and to sublicense the foregoing rights on
import com.oracle.demo.timg.iot.iotsonnenuploader.sonnencontroller.SonnenBatteryClient;

import io.micronaut.context.event.StartupEvent;
import io.micronaut.http.client.exceptions.HttpClientException;
import io.micronaut.runtime.event.annotation.EventListener;
import io.micronaut.scheduling.TaskExecutors;
import io.micronaut.scheduling.annotation.ExecuteOn;
Expand All @@ -63,7 +64,14 @@ public class Uploader {
@Scheduled(fixedRate = "120s", initialDelay = "5s")
@ExecuteOn(TaskExecutors.IO)
public SonnenConfiguration processConfiguration() {
SonnenConfiguration conf = client.fetchConfiguration();
SonnenConfiguration conf;
try {
conf = client.fetchConfiguration();
} catch (HttpClientException e) {
log.warning("HttpClientException getting configuration from sonnen, no data to upload for service "
+ e.getServiceId());
return null;
}
log.info("Retrieved configuration from battery : " + conf);
CompletableFuture<Void> publishResp = mqttSonnenBatteryPublisher.publishSonnenConfiguration(conf);
publishResp.thenRun(() -> log.info("Published configuration as object"));
Expand All @@ -73,7 +81,14 @@ public SonnenConfiguration processConfiguration() {
@Scheduled(fixedRate = "10s", initialDelay = "10s")
@ExecuteOn(TaskExecutors.IO)
public SonnenStatus processStatus() {
SonnenStatus status = client.fetchStatus();
SonnenStatus status;
try {
status = client.fetchStatus();
} catch (HttpClientException e) {
log.warning("HttpClientExcepton getting configuration from sonnen, no data to upload, for service "
+ e.getServiceId());
return null;
}
log.info("Retrieved status from battery : " + status);
CompletableFuture<Void> publishResp = mqttSonnenBatteryPublisher.publishSonnenStatus(status);
publishResp.thenRun(() -> log.info("Published status as object"));
Expand Down