Włącznik zmierzchowy z czujnikami ruchu i światła

RafalL
Posts: 7
Joined: Thu Sep 07, 2023 9:16 am

Post

Cześć,

nie wiem jak sobie poradzić z następującym problemem: chcę zrobić w garażu przekaźnik aktywowany na określony czas przez czujnik ruchu, ale tylko wtedy gdy w garażu jest ciemno (czyli główne światło jest wyłączone i brama garażowa zamknięta). Zastosowaniem przekaźnika ma być włączanie jakiegoś małego źródła światła, żeby nie zapalać światła głównego gdy nie trzeba.

Mam zrobiony własny układ na D1 mini z następującymi elementami:
- czujnik światła (L) na BH1750, podpięty jako ogólny kanał pomiarowy
- przekaźnik (R), skonfigurowany jako 'Automat schodowy'
- czujnik ruchu (PIR), utworzony jako Supla::Sensor::Binary(PIR_INPUT, false, false) - w cloudzie skonfigurowany jako 'Czujnik otwarcia bramy wjazdowej'.

I teraz: mogę podpiąć mój czujnik ruchu PIR do przekaźnika R w cloudzie (i działa tak jakbym chciał - na ruch przekażnik załącza sie na określony czas), ale nie wiem jak dodać bramkowanie sygnału z PIR przez wartość światła odczytaną z L (wartość poniżej jakiegoś progu, powiedzmy 5lux). Idealnie gdybym wartość progu światła mógł konfigurować również w cloudzie.

Zauważyłem, że mogę na czujniku światła zdefiniować Reakcję i zdefiniować próg poniżej którego ma włączyć przekaźnik, ale wtedy musiałbym jakoś to bramkować wartościa z czujnika PIR, czyli jakby klasyczna bramka AND. Ale w reakcjach nie widzę możliwości takiego ANDowania warunków (oprócz możlwiości zdefiniowania Harmonogramu).

Czy można w jakiś prosty sposób zrealizować to co bym chciał? czy tylko w kodzie z hardkodowaną wartością progu oświetlenia?

pozdrawiam
Rafał
User avatar
klew
Posts: 8638
Joined: Thu Jun 27, 2019 12:16 pm
Location: Wrocław

Post

Widzimy się na Supla Offline Party vol. 2 :!:
RafalL
Posts: 7
Joined: Thu Sep 07, 2023 9:16 am

Post

hehe, no tak. Ale to co chciałem (i prawie dodałem) to jest dodane 'extra, przy okazji' do innej funkcjonalności na tym D1 mini. Będzie mi przykro jak się będę musiał poddać :) .
User avatar
klew
Posts: 8638
Joined: Thu Jun 27, 2019 12:16 pm
Location: Wrocław

Post

RafalL wrote: Sun Apr 21, 2024 9:22 pm hehe, no tak. Ale to co chciałem (i prawie dodałem) to jest dodane 'extra, przy okazji' do innej funkcjonalności na tym D1 mini. Będzie mi przykro jak się będę musiał poddać :) .
Jeśli już, to ja bym taką logikę robił wyłącznie na urządzeniu - bez angażowania Clouda i serwera.
W supla-device nie ma operatorów logicznych na warunkach. Także jeśli światło ma się włączyć, gdy poziom jasności jest poniżej jakiegoś progu, oraz gdy pojawi się sygnał na czujce ruchu, to taką logikę trzeba samemu zaimplementować.

Najprościej jest dodać własną klasę (nazwijmy ją SterownikZmierzchowy) dziedziczącą po Supla::ActionHandler (src/supla/action_handler.h) i spiąć ją warunkami z czujnika oświetlenia i czujki ruchu (używając addAction).
Tu masz temat o akcjach warunkowych: viewtopic.php?t=7952

SterownikZmierzchowy powinien implementować metodę handleAction(event, action). Powinien przyjmować dwie akcje - jedna związana ze stanem jasności, a druga ze stanem PIR. Stan jasności powinien być po prostu zapisany do jakiejś zmiennej typu bool jestJuzCiemnoAleWszystkoJedno ;). I reakcje na akcje od czujnika jasności powinny po prostu tą zmienną przestawiać.
Natomiast w reakcji na akcję od PIR, SterownikZmierzchowy powinien sprawdzić czy "jestJuzCiemnoAleWszystkoJedno" i jeśli tak, to włączyć światło.

Czas załączania ustawisz w Cloud na przekaźniku będącym automatem schodowym.
Widzimy się na Supla Offline Party vol. 2 :!:
RafalL
Posts: 7
Joined: Thu Sep 07, 2023 9:16 am

Post

Dzięki! coś takiego zaczęło mi wczoraj w głowie świtać, z tym że będę chciał jakoś wpleść możliwość ustawiania progu oświetlenie przez WebUI, myślałem żeby użyć wirtualny przekaźnik, który byłby trigerrowany zmianą światła (poniżej/powyżej progu) i dopiero jego stan użyć w Action Handlerze. Pokombinuję, ale bardzo dziękuję, za potwierdzenie że nie ma na to jakiegoś bardziej oczywistego rozwiązania z dostępnymi już elementami.

pozdrawiam
Rafał
RafalL
Posts: 7
Joined: Thu Sep 07, 2023 9:16 am

Post

Zrobiłem jak opisałem: wirtualny przekaźnik służy jako dyskryminator poziomu oświetlenia w garażu, progami załączania i wyłączania mogę sterować z cloudowego WebUI (reakcje na warunki mniejsze niż/większe niż). Mój customowy ActionHandler podpięty do czujnika ruchu włącza włącznik schodowy tylko jeżeli jest wystarczająco ciemno.

Dzięki za dobrego hinta!

Return to “FAQ / Jak to zrobić”