Nowy typ dla Channel.state

magx2
Posts: 417
Joined: Wed May 17, 2017 1:27 pm
Has thanked: 1 time
Been thanked: 1 time

Post

W tej chwili Channel.state nie ma żadnego typu przez co generatory kodu nie działają. Proponuję dodać nowy typ ChannelState który będzie miał wszystkie możliwe pola, które da się przesłać.

W swaggerze mogło by to wyglądać tak:

Code: Select all

ChannelState:
	properties:
		hi:
			type: boolean
		partialHi:
			type: boolean
		temperature:
			type: integer
		humidity:
			type: integer
		isCalibrating:
			type: boolean
		shut:
			type: integer
		on:
			type: boolean
		brightness:
			type: integer
			min: 0
			max: 100
		colorBrightness:
			type: integer
			min: 0
			max: 100
		depth:
			type integer
		distance:
			type: integer
Przykładowa implementacja w javie: https://github.com/magx2/jSuplaApi/blob ... State.java
Supla ❤️ Open HAB - https://github.com/magx2/openhab-supla
User avatar
fracz
Posts: 2342
Joined: Fri Oct 28, 2016 10:56 pm
Location: Kraków
Has thanked: 4 times
Been thanked: 6 times

Post

Takie obiekty będą niepoprawne w sensie programowania obiektowego... Bo zawsze będą miały tylko część pól z sensowną wartością.

Ale rzeczywiście taki typ pomógłby w odczycie wartości, dodam.
magx2
Posts: 417
Joined: Wed May 17, 2017 1:27 pm
Has thanked: 1 time
Been thanked: 1 time

Post

Póki co to nie ma niczego więc lepiej dodać żeby było cokolwiek.

Co do czystych praktyk programowania obiektowego w kilku miejscach i tak są one już naruszone, np. param1/2/3 mają różne znaczenia zależnie od kontekstu (typu channelu). Rozwiązaniem tego problemu (i problemu z ChannelState) byłoby wprowadzenie abstrakcyjnej klasy Channel i dziedziczących po niej klas dla konkretnej funkcji, tj. LedChannel, GateChannel, SwitchChannel, ect. Jak to zrobić w swaggerze znajdziesz tutaj: https://swagger.io/docs/specification/d ... ymorphism/

Oczywiście to rozwiązanie, które zaproponowałem wymaga dużych zmian w swaggerze (zerwanie kompatybilności ) i na backendzie dlatego proszę tylko o dodanie ChannelState ;)
Supla ❤️ Open HAB - https://github.com/magx2/openhab-supla
User avatar
pzygmunt
Posts: 20302
Joined: Tue Jan 19, 2016 9:26 am
Location: Paczków
Been thanked: 59 times

Post

Bierzesz pod uwagę, że Supla składa się również z elementów, które nie są pisane obiektowo ?
Stąd np Param1 który ma wiele znaczeń. Gdyby supla-server był napisany w Javie czy w innym wysokopoziomowym języku to wydajność spadłaby na tyle, że utrzymywanie serwerów bezpłatnie byłoby niemożliwe na tym etapie projektu.
SUPLA.... Nareszcie w domu.
magx2
Posts: 417
Joined: Wed May 17, 2017 1:27 pm
Has thanked: 1 time
Been thanked: 1 time

Post

W javie można bezproblemowo pisać programy które będą obsługiwać tysiące socketów w czasie rzeczywistym (są do tego gotowe biblioteki takie jak Netty czy Java NIO) ale nie o tym. Z tego co widzę to Supla Cloud jest napisany w PHP z corem w C/C++ (do komunikacji). Czy nie ma warstwy abstrakcji tuż przed REStowym endpointem, na której da się dokonać takiej konwersji?
Supla ❤️ Open HAB - https://github.com/magx2/openhab-supla
User avatar
pzygmunt
Posts: 20302
Joined: Tue Jan 19, 2016 9:26 am
Location: Paczków
Been thanked: 59 times

Post

Ad 1. Tu nie chodzi o to czy można... w najmniej wydajnym języku napiszesz wielosocket-owy serwer... kwestia kosztów.
I tu w wysokopoziomowych językach koszt wytworzenia jest mniejszy, ale już koszt CPU jest dużo wyższy.

Ad 2. Jest taka warstwa ale nie możemy też zbyt drastycznie ewoluować z uwagi na kompatybilność wsteczną. Weź też pod uwagę nasze zasoby i historię projektu. Dziś gdy projekt jest w jakimś miejscu naturalnie nasuwają się spostrzeżenia mówiące, że to i owo (w rzeczywistości bardzo dużo;) ) należałoby inaczej zaprojektować. Twoje spostrzeżenia są również bardzo trafne i słuszne... niemniej jednak na wiele z tych zmian nie możemy sobie od razu pozwolić. :) Tak czy inaczej wszelkie uwagi i sugestie są mile widziane.
SUPLA.... Nareszcie w domu.
magx2
Posts: 417
Joined: Wed May 17, 2017 1:27 pm
Has thanked: 1 time
Been thanked: 1 time

Post

Jakiś update dotyczący tego?
Supla ❤️ Open HAB - https://github.com/magx2/openhab-supla
magx2
Posts: 417
Joined: Wed May 17, 2017 1:27 pm
Has thanked: 1 time
Been thanked: 1 time

Post

Cos bedziemy z tym robic - przydalo by sie chociaz wpraowadzic tan pomysl z 1szego postu
Supla ❤️ Open HAB - https://github.com/magx2/openhab-supla

Return to “CLOUD”