Dimmer/ściemniacz QS-WIFI-D02-TRIAC-2C - konwersja

arturo
Posts: 15
Joined: Tue Dec 29, 2020 9:01 am

Post

Cześć,
Badał może ktoś temat zasuplowania dimmera dwukanałowego QS-WIFI-D02-TRIAC-2C? Ewentualnie MS-105? Potencjalnie mogłaby to być tańsza alternatywa dla zamela DIW-01.
Jeśli nikt nie badał to jeśli ktoś mógłby poprowadzić mnie za rączkę to chętnie zbadam temat :)
arturo
Posts: 15
Joined: Tue Dec 29, 2020 9:01 am

Post

Nie spodziewałem się takiej ciszy :D
Zakupiłem na próbę jeden moduł. Po rozebraniu okazuje się że siedzi tam Lingan LM1 - to chyba dobrze bo z dokumentacji wyczytałem, że stoi na ESP8266. Tylko teraz pytanie: co dalej?

Generalnie gotowe softy już wrzucałem na sonoffy czy inne gniazdka więc samo wrzucenie softu pewnie jakoś ogarnę. Natomiast domyślam się, że tu trzeba będzie stworzyć soft. Podpowie ktoś za co złapać się w kolejnym kroku? Zapewne nie ma to znaczenia ale na co dzień programuje w innym języku więc potrzebuje jakiś punktów zaczepienia (co przeczytać?) i może ogarnę.
User avatar
klew
Posts: 8647
Joined: Thu Jun 27, 2019 12:16 pm
Location: Wrocław

Post

Najpierw trzeba by sprawdzić w jaki sposób jest zrealizowany hw do ściemnienie.
Raczej ESP nie steruje bezpośrednio triakiem, bo to nie działa dobrze (a przynajmniej mi się nie udało osiągnąć zadowalających efektów i z tego co słyszałem to dimmery zawsze mają osobny układ, który steruje triakiem).
Jak już będziesz wiedział jak to jest zbudowane to trzeba poszukać informacji jak ESP się komunikuje w tym układem i dopiero wtedy możemy zacząć się zastanawiać nad oprogramowaniem
Widzimy się na Supla Offline Party vol. 2 :!:
arturo
Posts: 15
Joined: Tue Dec 29, 2020 9:01 am

Post

Tam generalnie nie ma żadnego triaka ponieważ układ jest zbudowany na mosfetach.

Znalazłem, że ktoś robił już konwersję z tuya na tasmota. Niestety jeszcze nie wiem czy te informacje są przydatne

Wersja dwukanałowa
https://github.com/mick96/QS-WIFI-D02-TRIAC-2C
Wersja jednokanałowa
https://templates.blakadder.com/qs-wifi_D01_dimmer.html
User avatar
Duch__
Posts: 1792
Joined: Wed Aug 24, 2016 7:26 pm
Location: Opole

Post

Jest w dokumentacji napisane że komunikacja z modułem STM odbywa się przez uart z prędkością 9600. Jest tam podana komenda odpowiedzialna za jasność.
Image
arturo
Posts: 15
Joined: Tue Dec 29, 2020 9:01 am

Post

Walczę dalej, C++ to nie mój ulubieniec (jeszcze) ale się nie poddaje. Przeanalizowałem repo supla-device wraz z przykładami i doszedłem do wniosku, że chyba najlepiej byłoby nadpisać klasę RGBWBase, zauważyłem że jest tam metoda setRGB która generalnie zawsze ustawia jasność itp. pomyślałem że to ją odbiorę sobie na cel i ja nadpisze po to aby po jej wykonaniu wysłać odpowiednią komendę. Nie jestem pewien czy w dobrym kierunku wiosłuje i trochę liczę, że mnie poprawicie jeśli jestem w błędzie. Natomiast jeśli kombinuje dobrze to czy moglibyście podpowiedzieć jak wysłać ta komendę przez uart?
Wymyśliłem, że stworzę hardwareserial na odpowiednich pinach i wyśle poprzez write() std::string ale tak nie przejdzie bo już na etapie kompilacji się krzaczy że write nie obsługuje typu std::string&. Nie liczę na kod ale chociaż na jakąś podpowiedź. Dzięki!
User avatar
klew
Posts: 8647
Joined: Thu Jun 27, 2019 12:16 pm
Location: Wrocław

Post

arturo wrote: Tue Feb 07, 2023 12:03 am Walczę dalej, C++ to nie mój ulubieniec (jeszcze) ale się nie poddaje. Przeanalizowałem repo supla-device wraz z przykładami i doszedłem do wniosku, że chyba najlepiej byłoby nadpisać klasę RGBWBase, zauważyłem że jest tam metoda setRGB która generalnie zawsze ustawia jasność itp. pomyślałem że to ją odbiorę sobie na cel i ja nadpisze po to aby po jej wykonaniu wysłać odpowiednią komendę. Nie jestem pewien czy w dobrym kierunku wiosłuje i trochę liczę, że mnie poprawicie jeśli jestem w błędzie. Natomiast jeśli kombinuje dobrze to czy moglibyście podpowiedzieć jak wysłać ta komendę przez uart?
Wymyśliłem, że stworzę hardwareserial na odpowiednich pinach i wyśle poprzez write() std::string ale tak nie przejdzie bo już na etapie kompilacji się krzaczy że write nie obsługuje typu std::string&. Nie liczę na kod ale chociaż na jakąś podpowiedź. Dzięki!
RGBW base jest jeśli używasz kanałów RGB oraz W(white/dimmer) (jest to też klasa bazowa dla pozostałych rgb i dimmer). Jeśli to jest tylko "dimmer", to użyj "supla/control/dimmer_base.h" Supla::Control::DimmerBase.

Do nadpisania przy dziedziczeniu jest metoda setRGBWValuesOnDevice oraz prawdopodobnie onInit, aby zainicjalizować co trzeba.
Zerknij sobie na pliki "dimmer_leds.h" i "dimmer_leds.cpp" - tam jest pokazana przykładowoa implementacja dimmera, która używa wyjścia PWM. W "onInit" jest ustawiana inicjalizacja GPIO, a w setRGBWValuesOnDevice jest ustawienie konkretnych wartości na GPIO.

Ty prawdopodobnie musisz ustawić jakąś incicjalizację uarta w metodzie onInit, a w setRGBW... ustawiasz wysyłanie komend z konkretną wartością ściemniacza.

setRGBWValuesOnDevice jest uruchamiana czasem wiele razy na sekundę, z różnymi wartościami, aby realizować np. efekt rozjaśniania/śmieniania/soft start itd.

Osobiście, gdy zaczynam pracować z nowym sprzętem, to często tworzę sobie pusty projelkt w arduino ide i próbuję ogarnąć najpierw komunikację z tym urządzeniem. Czyli zainicjalizowałbym tego uarta, a następnie w pętli np co 1 s wysyłał różne wartości na układ, aby zobaczyć czy wszystko działa.
Jak to mam ogarnięte, to wtedy kod przesoszę do klasy w Supli, która ma to obsługiwać.
Dzięki temu nie walczysz na raz z wieloma potencjalnymi problemami, tylko idziesz po kolei .
Widzimy się na Supla Offline Party vol. 2 :!:
arturo
Posts: 15
Joined: Tue Dec 29, 2020 9:01 am

Post

klew wrote: Tue Feb 07, 2023 11:19 am
arturo wrote: Tue Feb 07, 2023 12:03 am Walczę dalej, C++ to nie mój ulubieniec (jeszcze) ale się nie poddaje. Przeanalizowałem repo supla-device wraz z przykładami i doszedłem do wniosku, że chyba najlepiej byłoby nadpisać klasę RGBWBase, zauważyłem że jest tam metoda setRGB która generalnie zawsze ustawia jasność itp. pomyślałem że to ją odbiorę sobie na cel i ja nadpisze po to aby po jej wykonaniu wysłać odpowiednią komendę. Nie jestem pewien czy w dobrym kierunku wiosłuje i trochę liczę, że mnie poprawicie jeśli jestem w błędzie. Natomiast jeśli kombinuje dobrze to czy moglibyście podpowiedzieć jak wysłać ta komendę przez uart?
Wymyśliłem, że stworzę hardwareserial na odpowiednich pinach i wyśle poprzez write() std::string ale tak nie przejdzie bo już na etapie kompilacji się krzaczy że write nie obsługuje typu std::string&. Nie liczę na kod ale chociaż na jakąś podpowiedź. Dzięki!
RGBW base jest jeśli używasz kanałów RGB oraz W(white/dimmer) (jest to też klasa bazowa dla pozostałych rgb i dimmer). Jeśli to jest tylko "dimmer", to użyj "supla/control/dimmer_base.h" Supla::Control::DimmerBase.

Do nadpisania przy dziedziczeniu jest metoda setRGBWValuesOnDevice oraz prawdopodobnie onInit, aby zainicjalizować co trzeba.
Zerknij sobie na pliki "dimmer_leds.h" i "dimmer_leds.cpp" - tam jest pokazana przykładowoa implementacja dimmera, która używa wyjścia PWM. W "onInit" jest ustawiana inicjalizacja GPIO, a w setRGBWValuesOnDevice jest ustawienie konkretnych wartości na GPIO.

Ty prawdopodobnie musisz ustawić jakąś incicjalizację uarta w metodzie onInit, a w setRGBW... ustawiasz wysyłanie komend z konkretną wartością ściemniacza.

setRGBWValuesOnDevice jest uruchamiana czasem wiele razy na sekundę, z różnymi wartościami, aby realizować np. efekt rozjaśniania/śmieniania/soft start itd.

Osobiście, gdy zaczynam pracować z nowym sprzętem, to często tworzę sobie pusty projelkt w arduino ide i próbuję ogarnąć najpierw komunikację z tym urządzeniem. Czyli zainicjalizowałbym tego uarta, a następnie w pętli np co 1 s wysyłał różne wartości na układ, aby zobaczyć czy wszystko działa.
Jak to mam ogarnięte, to wtedy kod przesoszę do klasy w Supli, która ma to obsługiwać.
Dzięki temu nie walczysz na raz z wieloma potencjalnymi problemami, tylko idziesz po kolei .
Zdecydowanie masz rację :) zacznę od początku i sprawdzę czy w ogóle komunikacja po uart działa tak jak opisali.
arturo
Posts: 15
Joined: Tue Dec 29, 2020 9:01 am

Post

No i mały update, poszedłem za radą kolegi klew i wrzuciłem kawałek kodu który niby ma wysyłać komendy na seriala i niestety nie działa. Użyłem biblioteki softwareserial ustawiłem piny, oraz prędkość i efekt jest taki, że po podłączeniu zasilania żarówka po chwili delikatnie się zaświeca i tak sobie świeci (oczywiście niezależnie od komendy).

Na szczęście należę do tych co robią backupy więc wrzuciłem ponownie oryginalny soft.

Ale jeszcze się nie poddaje :D wrócę silniejszy :lol:
edm
Posts: 448
Joined: Mon Jan 15, 2018 6:18 pm

Post

Może nie do końca w temacie ale też ściemniacz.
viewtopic.php?t=8770
Jest kilka wersji ściemniaczy, są 1,2,4 kanałowe np. https://pl.aliexpress.com/item/10050017 ... 05319%21sh
Przykładowe działanie, uruchomienie w/w ściemniacza
https://www.youtube.com/watch?v=rx0F6wOA-Ic
https://www.youtube.com/watch?v=Kn8ghB2bd9Q
Kod źródłowy https://github.com/nassir-malik/4CH_Dim ... reen_Wemos
Wziąłem udział w Supla Offline Party 2023 :D

Return to “Sprzęt”