Skip to content

Commit 01e8e1c

Browse files
authored
[netatmo] Presence sub events were not updated (openhab#16681)
* Making sub event work Signed-off-by: clinique <[email protected]>
1 parent bd2dcba commit 01e8e1c

File tree

7 files changed

+29
-60
lines changed

7 files changed

+29
-60
lines changed

bundles/org.openhab.binding.netatmo/src/main/java/org/openhab/binding/netatmo/internal/api/dto/Event.java

+4
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,10 @@ public String getCameraId() {
5151
return cameraId;
5252
}
5353

54+
public void setCameraId(String cameraId) {
55+
this.cameraId = cameraId;
56+
}
57+
5458
@Override
5559
public @Nullable String getName() {
5660
String localMessage = super.getName();

bundles/org.openhab.binding.netatmo/src/main/java/org/openhab/binding/netatmo/internal/api/dto/HomeEvent.java

+9-8
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,9 @@ public class HomeEvent extends Event {
3737
public class NAEventsDataResponse extends ApiResponse<BodyResponse<Home>> {
3838
}
3939

40+
private record Snapshot(String url, ZonedDateTime expiresAt) {
41+
}
42+
4043
private ZonedDateTime time = ZonedDateTime.now();
4144
private @Nullable String personId;
4245
private EventCategory category = EventCategory.UNKNOWN;
@@ -93,20 +96,18 @@ public Optional<EventSubType> getSubTypeDescription() {
9396

9497
@Override
9598
public @Nullable String getSnapshotUrl() {
96-
Snapshot image = snapshot;
97-
return image != null ? image.getUrl() : null;
99+
return internalGetUrl(snapshot);
98100
}
99101

100102
public @Nullable String getVignetteUrl() {
101-
Snapshot image = vignette;
102-
return image != null ? image.getUrl() : null;
103+
return internalGetUrl(vignette);
103104
}
104105

105-
public List<HomeEvent> getSubevents() {
106-
return subevents;
106+
public List<HomeEvent> getSubEvents() {
107+
return subevents.stream().peek(subevent -> subevent.setCameraId(getCameraId())).toList();
107108
}
108109

109-
public @Nullable Snapshot getVignette() {
110-
return vignette;
110+
private @Nullable String internalGetUrl(@Nullable Snapshot image) {
111+
return image == null ? null : image.url();
111112
}
112113
}

bundles/org.openhab.binding.netatmo/src/main/java/org/openhab/binding/netatmo/internal/api/dto/Snapshot.java

-32
This file was deleted.

bundles/org.openhab.binding.netatmo/src/main/java/org/openhab/binding/netatmo/internal/handler/capability/CameraCapability.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -163,7 +163,7 @@ public List<NAObject> updateReadings() {
163163
HomeEvent event = cap.getDeviceLastEvent(handler.getId(), moduleType.apiName);
164164
if (event != null) {
165165
result.add(event);
166-
result.addAll(event.getSubevents());
166+
result.addAll(event.getSubEvents());
167167
}
168168
});
169169
return result;

bundles/org.openhab.binding.netatmo/src/main/java/org/openhab/binding/netatmo/internal/handler/capability/PersonCapability.java

+2-1
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@
2222

2323
import org.eclipse.jdt.annotation.NonNullByDefault;
2424
import org.eclipse.jdt.annotation.Nullable;
25+
import org.openhab.binding.netatmo.internal.api.data.EventSubType;
2526
import org.openhab.binding.netatmo.internal.api.data.EventType;
2627
import org.openhab.binding.netatmo.internal.api.data.ModuleType;
2728
import org.openhab.binding.netatmo.internal.api.dto.Event;
@@ -100,7 +101,7 @@ public void updateEvent(Event event) {
100101
}
101102
lastEventTime = eventTime;
102103
handler.triggerChannel(CHANNEL_HOME_EVENT,
103-
event.getSubTypeDescription().map(st -> st.name()).orElse(event.getEventType().name()));
104+
event.getSubTypeDescription().map(EventSubType::name).orElse(event.getEventType().name()));
104105
}
105106

106107
@Override

bundles/org.openhab.binding.netatmo/src/main/java/org/openhab/binding/netatmo/internal/handler/channelhelper/EventCameraChannelHelper.java

+11-17
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@
3030
*
3131
*/
3232
@NonNullByDefault
33-
public class EventCameraChannelHelper extends EventChannelHelper {
33+
public class EventCameraChannelHelper extends ChannelHelper {
3434

3535
public EventCameraChannelHelper(Set<String> providedGroups) {
3636
super(providedGroups);
@@ -39,22 +39,16 @@ public EventCameraChannelHelper(Set<String> providedGroups) {
3939
@Override
4040
protected @Nullable State internalGetHomeEvent(String channelId, @Nullable String groupId, HomeEvent event) {
4141
if (groupId != null && groupId.startsWith(GROUP_SUB_EVENT)) {
42-
switch (channelId) {
43-
case CHANNEL_EVENT_TYPE:
44-
return toStringType(event.getEventType());
45-
case CHANNEL_EVENT_TIME:
46-
return new DateTimeType(event.getTime());
47-
case CHANNEL_EVENT_MESSAGE:
48-
return toStringType(event.getName());
49-
case CHANNEL_EVENT_SNAPSHOT:
50-
return toRawType(event.getSnapshotUrl());
51-
case CHANNEL_EVENT_SNAPSHOT_URL:
52-
return toStringType(event.getSnapshotUrl());
53-
case CHANNEL_EVENT_VIGNETTE:
54-
return toRawType(event.getVignetteUrl());
55-
case CHANNEL_EVENT_VIGNETTE_URL:
56-
return toStringType(event.getVignetteUrl());
57-
}
42+
return switch (channelId) {
43+
case CHANNEL_EVENT_TYPE -> toStringType(event.getEventType());
44+
case CHANNEL_EVENT_TIME -> new DateTimeType(event.getTime());
45+
case CHANNEL_EVENT_MESSAGE -> toStringType(event.getName());
46+
case CHANNEL_EVENT_SNAPSHOT -> toRawType(event.getSnapshotUrl());
47+
case CHANNEL_EVENT_SNAPSHOT_URL -> toStringType(event.getSnapshotUrl());
48+
case CHANNEL_EVENT_VIGNETTE -> toRawType(event.getVignetteUrl());
49+
case CHANNEL_EVENT_VIGNETTE_URL -> toStringType(event.getVignetteUrl());
50+
default -> super.internalGetHomeEvent(channelId, groupId, event);
51+
};
5852
}
5953
return super.internalGetHomeEvent(channelId, groupId, event);
6054
}

bundles/org.openhab.binding.netatmo/src/main/java/org/openhab/binding/netatmo/internal/handler/channelhelper/EventChannelHelper.java

+2-1
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@
2424
import org.openhab.binding.netatmo.internal.api.dto.Event;
2525
import org.openhab.binding.netatmo.internal.api.dto.HomeEvent;
2626
import org.openhab.binding.netatmo.internal.api.dto.NAObject;
27+
import org.openhab.binding.netatmo.internal.utils.ChannelTypeUtils;
2728
import org.openhab.core.library.types.DateTimeType;
2829
import org.openhab.core.types.State;
2930
import org.openhab.core.types.UnDefType;
@@ -78,7 +79,7 @@ public void setNewData(@Nullable NAObject data) {
7879
case CHANNEL_EVENT_CAMERA_ID:
7980
return toStringType(event.getCameraId());
8081
case CHANNEL_EVENT_SUBTYPE:
81-
return event.getSubTypeDescription().map(d -> toStringType(d)).orElse(UnDefType.NULL);
82+
return event.getSubTypeDescription().map(ChannelTypeUtils::toStringType).orElse(UnDefType.NULL);
8283
case CHANNEL_EVENT_SNAPSHOT:
8384
return toRawType(event.getSnapshotUrl());
8485
case CHANNEL_EVENT_SNAPSHOT_URL:

0 commit comments

Comments
 (0)