Uruchamianie funkcji zamiast pinów w arduino

doteq
Posts: 5
Joined: Mon Mar 04, 2019 3:07 pm

Post

Witam.

Zdaję sobie sprawę, że dawno temu był podobny wątek, ale kod jest tam napisany do konkretnych rolet i nie mogę się w nim odnaleźć.
Otóż mam rolety sterowane po RF, do których udało mi się sklonować sygnał. Chciałbym teraz sterować tymi roletami z supli. Funkcja

Code: Select all

SuplaDevice.addRollerShutterRelays(1, 2);
przyjmuje za argumenty piny. Chciałbym jednak, aby otwarcie/zamknięcie rolety w supli powodowało uruchomienie funkcji na Wemos D1. Czyli coś takiego:

Code: Select all

...
SuplaDevice.addRollerShutterRelays(controlBlinds(1, 1), controlBlinds(1, 0));
...
void controlBlinds(int channel, int action) {

}
W jaki sposób mam uruchomić taką funkcję?
User avatar
klew
Posts: 13907
Joined: Thu Jun 27, 2019 12:16 pm
Location: Wrocław
Has thanked: 134 times
Been thanked: 137 times

Post

Kończę już przepisywać rolety na nową bibliotekę. Będziesz mógł tam napisać własne metody do zamykania/otwierania.

Jak mniej więcej wygląda ten protokół RF? Jest osobny kod do "zamknij" i osobny do "otwórz"? Czy jest osobne polecenie "stop"? Czy też roleta działa tak, że "zamknij" zaczyna zamykać, a drugie "zamknij" powoduje, że się zatrzymuje?
Najlepsze suple dla Twojego domu :mrgreen:
doteq
Posts: 5
Joined: Mon Mar 04, 2019 3:07 pm

Post

W takim razie czekam z niecierpliwością, pisz jak będzie gotowe, czy coś do przetestowania :D

Akurat u mnie muszę wysyłać dodatkowo sygnał stop. Czyli jak chcę opuszczać roletę przez 5 sekund, to wysyłam sygnał od spuszczania i po 5 sekundach stop. Jeśli nie wyślę sygnału stop, to roleta zjedzie na sam dół lub - w zależności od kierunku - wjedzie na samą górę.
User avatar
klew
Posts: 13907
Joined: Thu Jun 27, 2019 12:16 pm
Location: Wrocław
Has thanked: 134 times
Been thanked: 137 times

Post

Możesz wziąć aktualną wersję biblioteki z https://github.com/klew/arduino

W pliku ino dodaj:

Code: Select all

#include <supla/control/roller_shutter.h>

class RFRollerShutter : public Supla::Control::RollerShutter {
  RFRollerShutter() : Supla::Control::RollerShutter(0, 0, false)
  {
  }
  
  void onInit() { }
  
  void relayDownOn() {
   // tu wstaw kod do zamykania
}

void relayUpOn() {
  // tu wstaw kod do otwierania
}

void relayDownOff() {
 // tu wstaw kod zatrzymujący ruch w dół
}

void relayUpOff() {
 // tu daj kod zatrzymujący ruch w górę - jeśli jest taki sam, to możesz zrobić:
 // relayDownOff();
}

};
Nie kompilowałem tego kodu, więc mogłem gdzieś się pomylić.

Program może trochę nadmiarowo wysyłać komendy "stop" - jeśli to nie problem dla rolety, to ok, w przeciwnym wypadku będzie trzeba coś jeszcze poprawić.

Aktualny kod nie zapamiętuje stanu rolety, kalibracji, ani czasów zamykania/otiwerania. Więc po każdym resecie urządzenia wykona się kalibracja przy pierwszym użyciu rolety z poziomu aplikacji. Zapamiętywanie stanu jest w trakcie implementacji.
Natomiast cała obsługa rolety powinna działać. Daj znać, czy działa.
Najlepsze suple dla Twojego domu :mrgreen:
peterson13
Posts: 57
Joined: Sun Jan 08, 2017 5:05 pm

Post

doteq wrote: Sun Aug 30, 2020 9:24 pm Witam.

Zdaję sobie sprawę, że dawno temu był podobny wątek, ale kod jest tam napisany do konkretnych rolet i nie mogę się w nim odnaleźć.
Otóż mam rolety sterowane po RF, do których udało mi się sklonować sygnał.
Czy możesz podpowiedzieć jak udało Ci się sklonować sygnał RF do napędu.
Ja mam napędy rolet f-my "Inel", które działają identycznie jak Twoje.
doteq
Posts: 5
Joined: Mon Mar 04, 2019 3:07 pm

Post

Edit: nie ważne, okazało się że to ja używam starej wersji, a teraz jest o wiele łatwiejszy sposób na płytki z wifi, tak to jest jak się nie zerka w readme :D
klew wrote: Mon Aug 31, 2020 8:49 am Możesz wziąć aktualną wersję biblioteki z https://github.com/klew/arduino
Niestety nie jestem w stanie użyć twojej biblioteki. Na pokładzie mam wemos d1, który jest płytką na wifi. Twój fork jest jeszcze ze starej wersji supli, na nowej jest przykład "SuplaNodeMCU", który działa z moją płytką. Twój fork nie posiada jeszcze funkcji

Code: Select all

SuplaDeviceCallbacks supla_arduino_get_callbacks(void)
, także raczej nie użyję tej płytki
Last edited by doteq on Mon Aug 31, 2020 11:07 am, edited 1 time in total.
doteq
Posts: 5
Joined: Mon Mar 04, 2019 3:07 pm

Post

peterson13 wrote: Mon Aug 31, 2020 9:48 am Czy możesz podpowiedzieć jak udało Ci się sklonować sygnał RF do napędu.
Ja mam napędy rolet f-my "Inel", które działają identycznie jak Twoje.
Wieczorem postaram się napisać poradnik, ale korzystałem z:
https://forum.mysensors.org/topic/7/con ... o-and-vera
https://rayshobby.net/wordpress/interfa ... l-version/

Jedno ci mogę powiedzieć: Jeżeli masz transmitter RF, zrób do niego antenkę (u mnie to zwykły drut). Gdybym wcześniej o tym pomyślał, to miałbym sterowanie roletami już 0,5 roku temu :D
peterson13
Posts: 57
Joined: Sun Jan 08, 2017 5:05 pm

Post

Inel stosuje piloty z systemem zmiennokodowym KeeLoq, tego chyba nie będę w stanie odczytać oraz później użyć w projekcie Zybi’ego viewtopic.php?f=11&t=5244&p=48262#p48262
Ma ktoś jakieś doświadczenie jak ugryźć to kodowanie ?

Return to “Pomoc”