Kincony 8 Channel Relay Board (KC868-A8)

Miał być mini sterownik PLC ale jakoś mi nie szło to programowanie w języku strukturalny ST dlatego postanowiłem sprawdzić to urządzenie:

Najpierw dokładnie poczytałem o tym “sterowniku” czy współpracuje z Tasmotą albo z ESPHome:

Urządzenie dotarło z Aliexpress szybko, jakość płytki bardzo dobra, obudowa bez zastrzeżeń, można się uczepić starej wersji wtyczki USB na płytce, trochę szukałem odpowiedniego kabla w domu.

Wgranie gotowego obrazu Tasmoty z forum Lesson29- How to use tasmota for KC868-A8 via PCF8574 IIC extend GPIO poszło szybko i sprawnie, konfiguracja MQTT i urządzenie jest widoczne w integracji Tasmota w HA (Tasmota - Home Assistant).
Jako, że mam (będę miał w mieszkaniu) przyciski dzwonkowe musiałem napisać szybko ich obsługę w Tasmota (na podstawie PCF8574 / PCF8574A GPIO Expander - Tasmota):

Rule1
   ON PCF8574-1_INP#D0=0 DO Power1 toggle ENDON
Rule1 1

Efekt końcowy - naciśnięcie i zwolnienie przycisku dzwonkowego - w konsoli Tasmota

17:47:31.432 MQT: home/stat/tasmota_DC2E18/RESULT = {"Time":"2022-03-22T17:47:31","PCF8574-1_INP":{"D0":0}}
17:47:31.449 RUL: PCF8574-1_INP#D0=0 performs "Power2 toggle"
17:47:31.470 MQT: home/stat/tasmota_DC2E18/RESULT = {"POWER2":"OFF"}
17:47:31.483 MQT: home/stat/tasmota_DC2E18/POWER2 = OFF
17:47:31.885 MQT: home/stat/tasmota_DC2E18/RESULT = {"Time":"2022-03-22T17:47:31","PCF8574-1_INP":{"D0":1}}

Teraz pora na obsługę wieloklikow Buttons and Switches - Tasmota, cdn …

P.S. Jak widać, wcale nie jest to trudne (wystarczy dokumentacja) a Tasmota daje naprawdę sporo możliwości :slight_smile:.

Edit 2022-03-27:

Niestety z uwagi na pewne ograniczenia Tasmoty dla PCF8574:
From the perspective of Tasmota, PCF8574 pins are not buttons, merely inputs which can change state. Since your device is ESP32-based, with Berry you have a good programming environment for coding additional handling, like detecting multiple actions within a short time.
aby zrealizować obsługę multiklików musiałem skorzystać z ESPHome.
“Przeniesienie” obecnej konfiguracji Tasmota na ESPHome - obsługa przycisku dzwonkowego - poszło bez problemów:

binary_sensor:     
  - platform: gpio
    name: "button 1"
    pin:
      pcf8574: pcf8574_1_inp
      number: 0
      mode: input
      inverted: true
    on_press:
      then:
        - switch.toggle: relay1

switch:
  - platform: gpio
    name: "relay 1"
    id: relay1
    pin:
      pcf8574: pcf8574_2_out
      number: 0
      mode: output
      inverted: true

Efekt końcowy w logach ESPHome:

# stan: przekaźnik wyłączony
# naciśnięcie przycisku
12:49:32	[D]	[binary_sensor:036]	'button 1': Sending state ON
# wywołanie akcji dla on_press
12:49:32	[D]	[switch:021]		'relay 1' Toggling ON.
# przekaźnik włączony
12:49:32	[D]	[switch:037]		'relay 1': Sending state ON
# zwolnienie przycisku
12:49:32	[D]	[binary_sensor:036]	'button 1': Sending state OFF
# kolejne naciśnięcie przycisku powoduje wyłączenie przekaźnika
12:49:36	[D]	[binary_sensor:036]	'button 1': Sending state ON
12:49:36	[D]	[switch:021]		'relay 1' Toggling OFF.
12:49:36	[D]	[switch:037]		'relay 1': Sending state OFF
12:49:36	[D]	[binary_sensor:036]	'button 1': Sending state OFF

3 Likes

Dzisiaj przyszedł do mnie Kincony KC868-A64, czy w analogiczny sposób (zmieniając ilość portów) będę go mógł integrować z HA?

@Dominik_Lewiński to zależy jaki soft - Tasmota czy ESPHome - wgrasz do sterownika Kincony ale napewno integracja będzie możliwa w analogiczny sposób. Spora dawka wiedzy jest na oficjalnym forum producenta KC868-A series and Uair Smart Controller.

1 Like

Dzięki za odpowiedź

ale jeszcze nie do końca wiem jak technicznie się za to zabrać (nie jestem programistą)
Od czego zacząć?
Podłączyłem płytkę do komputera zalogowanego zdalnie do mojego HA poprzez USB i coś zacząłem działać (lekko na czuja) kreatorem ESP z HA (pokazała się konsola i widać było, że ESP się “wgrywa” a potem HA się zresetował
Na razie “wiem, że nic nie wiem…”

Coś mi się tu “nie klei” (z jakiej paki HA się zresetował??), jeśli nie wiesz co robisz, a liczysz na pomoc to chociaż rób screenshoty w istotnych momentach, to będziesz miał co wrzucić na forum.

Przykładowo w win10 jest do tego nawet kilka narzędzi systemowych jak dość wygodne “narzędzie wycinanie”, czy “wycinek i szkic” - odpalany choćby skrótem win+shift+S, a na klasycznych klawiaturach jest klawisz PrtScr (PrintScreen), który można używać również z modyfikatorami takimi jak Alt
Są też inne świetne narzędzia (których używam to tworzenia prostych tutoriali w windows, bo mają możliwość prostego rysowania po wklejkach ze schowka bądź nawet bezpośrednio na przechwytywanym ekranie) takie jak

lub

Uniwersalna instrukcja dla ESPHome (nie uwzględniam sprzętu z wątku, bo jego dokumentację to powinieneś sam przeczytać):
Zależnie od metody jaką będziesz flashował sprzęt podpinasz (przez mostek USB-UART jeśli jest konieczny)

  1. do komputera na którym pracuje środowisko ESPHome, w szczególnym i najczęstszym przypadku (gdy masz IDE ESPHome zainstalowane jako dodatek do HA lub masz instalację ESPHome w inny sposób na tej samej maszynie co HA) może to być maszyna na której pracuje HA, natomiast gdy ESPHome masz jako środowisko standalone to chodzi o komputer, gdzie ono pracuje
  2. do komputera z którego oglądasz GUI ESPHome (w szczególności GUI HA - w przypadku j/w), wymagane połączenie https oraz przeglądarka vivaldi, chrome lub edge, ta metoda używa bardziej lub mniej pochrzanionego kreatora - wybierz ESPHome-web jeśli nie wiesz co robić i ściśle wykonuj zaproponowane kroki - jest szansa, że z pierwszym urządzeniem się uda, potem będzie trzeba doczytać dokumentację by dostosować autowygenerowanego gotowca do swoich potrzeb (tworząc YAMLa na piechotę zaoszczędzam parę dodatkowych kroków które implikuje ten kreator…)
  3. nigdzie (wynikowo z kompilacji dostaniesz plik, który sflaszujesz sobie swoimi ulubionymi narzędziami używając dowolnego komputera, również offline), ta metoda nadaje się również do konwersji z innego softu przez OTA w tym innym sofcie (jeśli on to umożliwia; w ten sposób można zrobić np.migrację Tasmota → ESPHome)
  4. przez WiFi lub LAN (widzę, że ten sprzęt ma kartę Ethernet, więc akurat tu po przewodowym połączeniu Ethernet) w tej samej sieci LAN, w której pracuje HA/ESPHome - ta metoda jest dostępna tylko gdy na sprzęcie już pracuje ESPHome umieściłem ją na 4 miejscu bo jakoś musisz zacząć (jeśli wyprodukujesz działający soft nawet bez żadnych opcji użytkowych - wstępnie wystarczy wgrać tylko taki szkielet który obsłuży połączenie się ESP do sieci oraz umożliwi OTA) ale potem ta metoda będzie najwygodniejsza (póki nie wyprodukujesz softu który uniemożliwi bootowanie ESP lub będzie bez OTA)

MCU ESPxxxx musi być wprowadzone w tryb flashowania - zależnie od konstrukcji sprzętu stanie się to automatycznie lub będzie wymagane podpięcie GPIO0 do masy przed włączeniem jego zasilania (lub skorzystanie z klawiszy sprzętowych zgodnie z dokumentacją bo to często jakaś specyficzna kombinacją z wciśnięceime jednego i przytrzymaniem drugiego - zwykle chodzi o klawisze BOOT/FLASH/RST/RESET/EN).

Oczywiście warunkiem koniecznym jest by konfiguracja YAML jaką stworzysz była poprawna - można ją “przelecieć” linterem - to opcja Validate przed próbą kompilacji, jeśli “kod” jest poprawny składniowo, to zobaczysz zielonego czekboksa


a jeśli kod (tak naprawdę to konfiguracja YAML) jest schrzaniony to linter wywali jakieś błędy - a wtedy nie ma co marzyć o udanej kompilacji i pozostanie tylko poprawić YAML

Zakładając, że masz prawidłowy YAML, to w tym terminalu widzisz postęp kompilacji (u mnie to akurat update, więc widać że pobierają się i instalują nowe wersje komponentów)


ale to co istotne - na dole masz klawisz, którym możesz pobrać logi w formie tekstu i wrzucić je na forum gdyby coś szło nie tak.

PS “gotowa konfiguracja” spod tamtego linka jest całkowicie pozbawiona niezbędnych wcięć, więc jeśli ktoś ją poprawiał (@macek ?), to może wrzucić do wątku poprawioną (bo jest sporo roboty z tymi poprawkami, chyba, że ktoś składnię YAMLa ma w małym palcu)

PPS Kreator w ESPHome jaki teraz prowadzi za rączkę “od zera” naprawdę zrył mi beret (szczerze mówiąc nie rozumiem jak miałby on komukolwiek pomóc), ale jest metoda w tym szaleństwie - można go całkiem olać i wygenerować sobie YAMLa “aby był” a następnie zmienić jego zawartość na pożądaną i tu UWAGA - ten kreator zawsze bezczelnie modyfikuje plik secrets.yaml więc polecam tam nie wpisywać totalnych bzdur, bo będą wywoływały konflikty w przyszłości (albo proponuję je skasować od razu - ikonka kłódki z podpisem SECRETS).

Ten “jeszcze łatwiejszy” kreator ESPHome-web jest jeszcze bardziej pochrzaniony - trzeba wykonać “prepare for adoption” i mnóstwo innych kroków ściśle w/g tego co proponuje (w mojej konfiguracji adopcja się nie udaje, bo jeden z końcowych kroków rozwala mi plik secrets.yaml, jakkolwiek umiem sobie z tym poradzić i obszedłem aktualizacją, ale nie wiem jak to wygląda dla początkującego), a moim skromnym zdaniem ten kreator w sumie niczego nie ułatwia, choć w zasadzie można nie mieć bladego pojęcia co robić i on jakoś poprowadzi (nie mając żadnych starych konfiguracji to się może udać), tylko zostaniemy z urządzeniem o losowo wygenerowanej nazwie, ale za to ze szkieletem YAMLa o którym pisałem wcześniej (bez kreatora oszczędziłbym z pół godziny) więc i tak będzie trzeba sobie porzeźbić po swojemu.
Edit: w końcu jest łatwa zmiana nazwy urządzeń, więc nie jest tak dramatycznie jak świeżo po wprowadzeniu kreatora (ale nadal nie jest on doskonały i nie radzi sobie z zastaną sytuacją, gdy istnieją np. konfiguracje urządzeń tworzone w ESPHome kilka lat temu).


Kroki z tego pochrzanionego web-kreatora (bez końcówki, bo u mnie się nie udało dobrnąć do końca w “normalny” sposób) oczywiście sprzęt testowy był inny (ale też ESP32 jakkolwiek bez Ethernetu, ale z wgranym całkowicie innym oprogramowaniem, aby się przekonać czy automat sobie to obwącha i ogarnie - jakoś się udało i to chyba bezproblemowo)

Następnie to zamykamy wchodzimy do GUI naszego ESPHome (najlepiej by był bez istniejących projektów - może wtedy automat zachowa się normalnie) i wykonujemy “adopcję” (może się uda, a jeśli się nie uda to likwidujemy przyczynę porażki - np. zbędne modyfikacje w pliku secrets.yaml i wykonujemy zwykłe update korzystając z panelu urządzenia zaimportowanego dzięki nieudanej adopcji).

Dopiero na tym etapie można modyfikować YAML w/g naszych potrzeb (jeśli chcemy zmienić nazwę urządzenia, to trzeba doczytać dokumentację chociaż w sumie jest nowa opcja Rename, której jeszcze nie testowałem :stuck_out_tongue: ).

Kreator można ogarnąć też innymi drogami (jeśli posiadamy gotową konfigurację, ale w takim wypadku wciąż wolę to robić “po staremu”, bezpośrednio z GUI ESPHome).

W przypadku każdej innej metody instalacji niż te kreatory “prowadzące za rękę” można od razu stworzyć własny YAML i go skompilować oraz sflaszować urządzenie (zupełnie bez tych nowych kroków, ale uwaga - gotowe konfiguracje ściągane “z sieci” mogą być napisane pod stare wersje ESPHome, więc tak czy inaczej trzeba przejrzeć dokumentację wszystkich wykorzystanych komponentów czy czegoś nie należy zmienić by konfiguracja była w pełni zgodna z najnowszymi zaleceniami, wprawdzie część zmian w kluczowych miejscach konfiguracji ma zachowaną kompatybilność wstecz, ale kiedyś mogą pojawić się “breaking changes” i będzie to trzeba zrobić “na ostatnią chwilę”).

1 Like

Na forum producenta jest gotowa poprawna konfiguracja dla KC868-A64 pod ESPHome - KC868-A64 configure for ESPhome.

2 Likes

Dziękuję za bardzo szybkie wsparcie

w moim przypadku wszystko odbyło się tak jak u Ciebie (tzn. doszło do ekranu "Configuration instaled!).
Upewniłem się, że moje intuicyjne działania były poprawne i się uda uzyskać z czasem sukces.
Nurtuje mnie jeszcze jedna rzecz (załóżmy że wszystko zadziała),to co będzie z PCF8574 i definicjami wejść/wyjść, bo każda płytka ma inne dodatki? (czy to się jakoś ustawia w webminie espp easy czy potem w plikach YAML?)

ESPEasy to jest zupełnie inny projekt od ESPHome, jeśli używasz ESPHome (i przeszedłeś ten webowy kreator) to nie jest to ESPEasy.
Dobrze, że Tasmota nie ma ESP w nazwie :stuck_out_tongue:

Nie wiem co będzie - pewnie to co skonfigurujesz?

1 Like

Pobrałem plik i otworzyłem w Notepad++ i wydaje mi się, że są prawidłowe wcięcia dla YAML (przynajmniej tak to wygląda w porównaniu z moim dzialającym configuration.yaml)

Nie musisz porównywać “na oko” - linter (Validate) sprawdzi składnię, a właśnie w tym YAMLu będziesz dopisywał wszystkie swoje peryferia podpięte np. do PCF8574.

1 Like

Mam nadzieje, że wystarczy mi mocy obliczeniowej do ogarnięcia tego zagadnienia (urodziłem się u zmierzchu epoki lampowej) znaczy stary dzad

2 Likes

Dasz radę - wystarczy postudiować dokumentację.