Skip to content

Commit f497d25

Browse files
committed
Try to retrace DSM7 changes
- event handling - Auth API version
1 parent 267b393 commit f497d25

File tree

3 files changed

+29
-22
lines changed

3 files changed

+29
-22
lines changed

src/main/java/org/openhab/binding/synologysurveillancestation/internal/thread/SynoApiThreadEvent.java

Lines changed: 17 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -62,16 +62,17 @@ public boolean isNeeded() {
6262
@Override
6363
public boolean refresh() throws Exception {
6464
SynoCameraHandler cameraHandler = getSynoHandler();
65+
// Thing thing = cameraHandler.getThing();
6566

66-
for (String eventType : events.keySet()) {
67-
if (getSynoHandler().isLinked(eventType)) {
68-
Channel channel = cameraHandler.getThing().getChannel(eventType);
69-
SynoEvent event = events.get(eventType);
70-
EventResponse response = cameraHandler.getSynoWebApiHandler().getApiEvent()
71-
.getEventResponse(cameraHandler.getCameraId(), lastEventTime, event.getReason());
72-
if (response.isSuccess()) {
73-
if (!response.isEmpty()) {
74-
SynoEvent responseEvent = response.getFirst();
67+
EventResponse response = cameraHandler.getSynoWebApiHandler().getApiEvent()
68+
.getEventResponse(cameraHandler.getCameraId(), lastEventTime, events);
69+
if (response.isSuccess()) {
70+
for (String eventType : events.keySet()) {
71+
if (getSynoHandler().isLinked(eventType)) {
72+
SynoEvent event = events.get(eventType);
73+
Channel channel = cameraHandler.getThing().getChannel(eventType);
74+
if (response.hasEvent(event.getReason())) {
75+
SynoEvent responseEvent = response.getEvent(event.getReason());
7576
if (responseEvent.getEventId() != event.getEventId()) {
7677
event.setEventId(responseEvent.getEventId());
7778
event.setEventCompleted(responseEvent.isEventCompleted());
@@ -88,17 +89,16 @@ public boolean refresh() throws Exception {
8889
event.setEventCompleted(true);
8990
cameraHandler.updateState(channel.getUID(), OnOffType.OFF);
9091
}
91-
if (response.getTimestamp() > lastEventTime) {
92-
lastEventTime = response.getTimestamp();
93-
}
94-
} else if (response.getErrorcode() == 105) {
95-
throw new WebApiException(WebApiAuthErrorCodes.INSUFFICIENT_USER_PRIVILEGE);
96-
} else {
97-
return false;
9892
}
9993
}
94+
95+
lastEventTime = response.getTimestamp();
96+
return true;
97+
} else if (response.getErrorcode() == 105) {
98+
throw new WebApiException(WebApiAuthErrorCodes.INSUFFICIENT_USER_PRIVILEGE);
99+
} else {
100+
return false;
100101
}
101-
return true;
102102
}
103103

104104
/**

src/main/java/org/openhab/binding/synologysurveillancestation/internal/webapi/request/SynoApiAuth.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ public class SynoApiAuth extends SynoApiRequest<AuthResponse> {
4040

4141
// API configuration
4242
private static final String API_NAME = "SYNO.API.Auth";
43-
private static final SynoApiConfig API_CONFIG = new SynoApiConfig(API_NAME, API_VERSION_06, API_SCRIPT_AUTH);
43+
private static final SynoApiConfig API_CONFIG = new SynoApiConfig(API_NAME, API_VERSION_02, API_SCRIPT_AUTH);
4444

4545
/**
4646
* @param config

src/main/java/org/openhab/binding/synologysurveillancestation/internal/webapi/request/SynoApiEvent.java

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -14,10 +14,12 @@
1414

1515
import java.util.HashMap;
1616
import java.util.Map;
17+
import java.util.StringJoiner;
1718

1819
import org.eclipse.jdt.annotation.NonNullByDefault;
1920
import org.eclipse.jetty.client.HttpClient;
2021
import org.openhab.binding.synologysurveillancestation.internal.SynoConfig;
22+
import org.openhab.binding.synologysurveillancestation.internal.webapi.SynoEvent;
2123
import org.openhab.binding.synologysurveillancestation.internal.webapi.WebApiException;
2224
import org.openhab.binding.synologysurveillancestation.internal.webapi.response.EventResponse;
2325

@@ -48,14 +50,19 @@ public SynoApiEvent(SynoConfig config, HttpClient httpClient) {
4850
* @return
4951
* @throws WebApiException
5052
*/
51-
public EventResponse getEventResponse(String cameraId, long lastEventTime, int reason) {
53+
public EventResponse getEventResponse(String cameraId, long lastEventTime, Map<String, SynoEvent> events) {
5254
Map<String, String> params = new HashMap<>();
5355

5456
params.put("cameraIds", cameraId);
55-
// params.put("fromTime", String.valueOf(lastEventTime));
57+
params.put("fromTime", String.valueOf(lastEventTime));
5658
params.put("blIncludeSnapshot", API_FALSE);
57-
params.put("limit", "1");
58-
params.put("reason", String.valueOf(reason));
59+
params.put("limit", "25");
60+
61+
StringJoiner reasons = new StringJoiner(",");
62+
for (SynoEvent event : events.values()) {
63+
reasons.add(String.valueOf(event.getReason()));
64+
}
65+
params.put("reason", reasons.toString());
5966

6067
try {
6168
return callApi(METHOD_LIST, params);

0 commit comments

Comments
 (0)