Nie mogę otrzowrzyć/zamknąć CONTROLLINGTHEGARAGEDOOR

magx2
Posty: 351
Rejestracja: śr maja 17, 2017 1:27 pm
Kontakt:

Mam taki o to kanał, który według tego co wróciło z pola functions może być otwierany zamykany:

Kod: Zaznacz cały

{
  "id": 0,
  "channelNumber": 0,
  "caption": "xxx",
  "type": {
	"id": 2900,
	"name": "RELAY",
	"caption": "Relay",
	"output": true
  },
  "function": {
	"id": 30,
	"name": "CONTROLLINGTHEGARAGEDOOR",
	"caption": "Garage door operation",
	"possibleActions": [
	  {
		"id": 10,
		"name": "OPEN",
		"nameSlug": "open",
		"caption": "Open"
	  },
	  {
		"id": 20,
		"name": "CLOSE",
		"nameSlug": "close",
		"caption": "Close"
	  },
	  {
		"id": 90,
		"name": "OPEN_CLOSE",
		"nameSlug": "open-close",
		"caption": "Open \/ close"
	  }
	],
	"possibleVisualStates": [
	  "opened",
	  "closed"
	],
	"maxAlternativeIconIndex": 0
  },
  "state": {
	"connected": true,
	"hi": true
  }
}
Próbuje go otworzyć/zamknąć takim wywołaniem REST API niestety dostaję cały czas błąd 400:

Kod: Zaznacz cały

2019-04-12 09:43:28.693 [TRACE] [ing.supla.handler.CloudBridgeHandler] - Log for request:
--> PATCH https://svr19.supla.org/api/v2.3.0/channels/xxx HTTP/1.1
Content-Type: application/json; charset=utf-8
Content-Length: 18
Authorization: Bearer token
Accept: application/json
User-Agent: magx2/jSuplaApi

{"action":"CLOSE"}
--> END PATCH (18-byte body)
<-- HTTP/1.1 400 Bad Request (94ms)
Date: Fri, 12 Apr 2019 07:43:28 GMT
Server: Apache/2.4.25 (Debian)
Vary: Authorization
Cache-Control: no-cache, private
Content-Length: 71
Connection: close
Content-Type: application/json
OkHttp-Sent-Millis: 1555055008601
OkHttp-Received-Millis: 1555055008691

{"status":400,"message":"Cannot execute requested action through API."}
<-- END HTTP (71-byte body)
Jakiś powód dlaczego tak jest?
Java 4 Life :twisted:

API Java
GUI
Server Mock

Awatar użytkownika
pzygmunt
Posty: 18284
Rejestracja: wt sty 19, 2016 9:26 am
Lokalizacja: Paczków
Kontakt:

Dozwolona jest tylko akcja OPEN_CLOSE. Nie wiem dlaczego tam jest OPEN i CLOSE na liście.
Awatar użytkownika
fracz
Posty: 2256
Rejestracja: pt paź 28, 2016 10:56 pm
Lokalizacja: Kraków

Widzę że porządnie testujesz API - super :-)

Wiadomość mówi: Cannot execute requested action through API.

Ta akcja aktualnie jest tylko do harmonogramów - i tylko tam może być aktualnie wykonana.
magx2
Posty: 351
Rejestracja: śr maja 17, 2017 1:27 pm
Kontakt:

A czemu tylko w harmonogramach mogę wykonać te akcje?
Java 4 Life :twisted:

API Java
GUI
Server Mock

Awatar użytkownika
pzygmunt
Posty: 18284
Rejestracja: wt sty 19, 2016 9:26 am
Lokalizacja: Paczków
Kontakt:

Tylko harmonogramy potrafią ją wykonać.
Awatar użytkownika
fracz
Posty: 2256
Rejestracja: pt paź 28, 2016 10:56 pm
Lokalizacja: Kraków

Ze względu na to że to nie jest akcja jednorazowa. Tj. harmonogram sprawdza czujnik, po czym jeśli powinien - wykonuje otwórz/zamknij. Po krótkim czasie sprawdza czy rzeczywiście brama się zamknęła/otwarła i ponownie wykonuje otwórz/zamknij, jeśli jest taka potrzeba (upewniając się, że finalny stan na pewno jest taki jak powinien).

Teoretycznie można by wspierać akcję open/close przez API ze sprawdzeniem stanu czujnika (podobnie jak toggle). Ale nie było by tego algorytmu upewniania się. @pzygmunt, co myślisz o tym?
Awatar użytkownika
pzygmunt
Posty: 18284
Rejestracja: wt sty 19, 2016 9:26 am
Lokalizacja: Paczków
Kontakt:

Generalnie te akcje będą zaimplementowane w samym serwerze przy okazji implementacji obsługi scen, ale jak ktoś pilnie potrzebuje to może sobie to zaimplementować przez API tak jak napisałeś.
magx2
Posty: 351
Rejestracja: śr maja 17, 2017 1:27 pm
Kontakt:

A otwieranie / zamykanie bramy nie może działać tak jak żarówka? Po prostu wysyłam zadanie do serwera, serwer do urządzenia a urządzenie już wykonuje pełna akcje. Czy to ciągle sprawdzanie stanu jest konieczne?
Java 4 Life :twisted:

API Java
GUI
Server Mock

Awatar użytkownika
pzygmunt
Posty: 18284
Rejestracja: wt sty 19, 2016 9:26 am
Lokalizacja: Paczków
Kontakt:

Brama nie działa jak żarówka.
Supla daje sygnał domsterownika ale nie wie czy brama się zacznie otwierać czy zamykać czy może zatrzyma otwieranie/zamykanie. To wynika ze specyfiki tego typu sprzętu. Aby móc poprawnie obsłużyć akcje OPEN lub CLOSE to należy brać powyższe pod uwagę i dodatkowo czytać stan czujnika otwarcia.
ODPOWIEDZ

Wróć do „CLOUD”