od dłuższego czasu zbierałem się za przygotowanie integracji z jakąś wiodącą platformą. Kiedyś nawet zacząłem coś dłubać pod Domoticz, ale po przejrzeniu jak sprawa aktualnie wygląda, stanęło na openHAB 2 - Domoticz raczej jest w tendencji spadkowej jeśli chodzi o popularność, a dodatkowo openHAB jest pisany w Javie, w której czuję się najlepiej.
Przygotowałem plugin (binding) dla openHAB 2 - na razie załączam tylko skompilowaną wersję, źródła opublikuję, jak tylko doprowadzę je do jakiegoś sensownego wyglądu. Plugin, który załączam jest skompilowany dla wersji openHAB 2.4.0-SNAPSHOT, nie pójdzie na Stable. Należy go wrzucić do folderu 'addons', testowałem go tylko pod Windows.
https://www.openhab.org/download/
Starałem się dodać obsługę wszystkich urządzeń, które powstały, z wyjątkiem Odbiornika/Nadajnika podczerwieni, testowałem jednak niestety tylko na systemie Hapcan złożonym z trzech urządzeń: przycisku UNIV 3.1.0.x, przekaźników UNIV 3.2.1.x i Kontrolera RGB UNIV 3.8.0.x (widocznego w systemie jako 3 osobne dimmery + master).
Podstawowe cechy pluginu:
- integracja przez Ethernet Interface UNIV 3.102.0.0 (brak obsługi RS232 - nie przewiduję dopisywania),
- obsługa urządzeń HAPCAN z procesorami UNIV3 i UNIV1 (oprócz nadajnika/odbiornika podczerwieni),
- urządzenie „Ethernet interface” należy dodać i skonfigurować ręcznie, następnie można skorzystać z automatycznego wykrywania modułów do niego podłączonych,
- wykrywanie rodzaju procesora, urządzenia, aplikacji, opisu itp., odczyt napięć,
- id w systemie openHAB w przypadku dodawania ręcznego musi być w postaci AABB, gdzie AA to nr grupy w hex, a BB nr modułu - w przeciwnym razie automatyczne wyszukiwanie będzie ponownie wykrywać taki moduł (dublować go)
- przyciski jako elementy ‘contact’ (stan on/off) oraz ‘trigger’ (zdarzenia triggerów: PRESSED, RELEASED, SHORT_PRESSED, DOUBLE_PRESSED, LONG_PRESSED, HELD_400MS, HELD_4S)
- kontroler RGB widoczny jako 4 dimmery (może później dodam, żeby był widoczny w systemie jako 'Kolor' + 'Master channel' - sam używam poszczególne 3 kanały jako osobne ściemniacze do taśm LED),
- konfiguracja, skrypty itp. jak dla każdego innego pluginu openHAB 2.
Potencjalne problemy jakie przewiduję i wymagają sprawdzenia:
- działanie sprawdzałem tylko dla 3 ww. urządzeń (tylko UNIV3) - przy oprogramowywaniu innych urządzeń lub ich modeli prawdopodobnie zdarzyły się jakieś błędy,
- wykrywanie urządzeń przy ich dużej ilości w systemie,
- urządzenia w systemie wykrywane są komendami kierowanymi do grupy 00 - czyli wszystkich na raz (np. HAPCAN Programator wykrywa urządzenia w każdej grupie osobno), jeśli będzie to powodować problemy to się poprawi.
Nie oprogramowywałem dotąd samego działania openHAB (skrypty) - tylko przygotowałem plugin, więc nauka konfiguracji openHAB dopiero przede mną.
Włączenie logowania/debugowania dla pluginu Hapcan do oddzielnego pliku – może przydać się, żeby pomóc mi zdiagnozować ewentualne problemy:
- w pliku userdata/etc[skrypt forum blokuje sciezki]/org.ops4j.pax.logging.cfg należy dodać:
Code: Select all
# Logger - Hapcan.log
log4j2.logger.hapcan.name = org.openhab.binding.hapcan
log4j2.logger.hapcan.level = DEBUG
log4j2.logger.hapcan.additivity = false
log4j2.logger.hapcan.appenderRefs = hapcan
log4j2.logger.hapcan.appenderRef.event.ref = HAPCAN
# Hapcan.log file appender
log4j2.appender.hapcan.type = RollingRandomAccessFile
log4j2.appender.hapcan.name = HAPCAN
log4j2.appender.hapcan.fileName = ${openhab.logdir}/hapcan.log
log4j2.appender.hapcan.filePattern = ${openhab.logdir}/hapcan.log.%i
log4j2.appender.hapcan.append = true
log4j2.appender.hapcan.layout.type = PatternLayout
log4j2.appender.hapcan.layout.pattern = %d{yyyy-MM-dd HH:mm:ss.SSS} [%-5.5p] [%-36.36c] - %m%n
log4j2.appender.hapcan.policies.type = Policies
log4j2.appender.hapcan.policies.size.type = SizeBasedTriggeringPolicy
log4j2.appender.hapcan.policies.size.size = 8MB
Przed wgraniem ewentualnej kolejnej wersji pluginu konieczne jest wyczyszczenie cache’u openHAB, poprzez usunięcie przy wyłączonej aplikacji zawartości folderów: userdata/cache i userdata/logs.
Pozdrawiam i proszę o testy,
Marcin