Przykład: załączam przekaźnik PIN 28 przyciskiem na Pinie 27, gdy steruję Suplą Cloud widzi kiedy PIN jest "wystawiony" jeżeli załącze przyciskiem Stan Pinu sie nie zmienia w aplikacji a PIN fizycznie jest "wystawiony"
Arduino + Supla + Sterowanie Przyciskiem (jak wyświetlić aktualny stan Pinu)
-
alankedzior
- Posts: 114
- Joined: Mon Jun 18, 2018 5:38 pm
Witam ciekawki mnie jak ogarąć sterowanie jednoczesne przekaźnikiem poprzez Sterowanie przyciskiem i Suplą, chodzi mi o prawidłowe wskazanie załączenia np.żarówki. Wcześniej myślałem nad rozwiązaniem TELEDUINO które jednocześnie steruje Pinem i automatycznei sprawdza jego stan co można sprawdzić przez www, ale żeby to ładnie wyglądało trzeba już napisać stronkę z odnośnikami URL do każdego PINU w php co dla mnie znaczy już za dużo
chodzi mi o przykład założmy zalączam PIN przyciskiem arduino wystawia Stan na przekaźnik, a Supla widzi aktualny stan przekaźnika idzie to ogarnać ?
Przykład: załączam przekaźnik PIN 28 przyciskiem na Pinie 27, gdy steruję Suplą Cloud widzi kiedy PIN jest "wystawiony" jeżeli załącze przyciskiem Stan Pinu sie nie zmienia w aplikacji a PIN fizycznie jest "wystawiony"
Przykład: załączam przekaźnik PIN 28 przyciskiem na Pinie 27, gdy steruję Suplą Cloud widzi kiedy PIN jest "wystawiony" jeżeli załącze przyciskiem Stan Pinu sie nie zmienia w aplikacji a PIN fizycznie jest "wystawiony"
-
Espablo
- Posts: 1754
- Joined: Wed Jun 29, 2016 5:04 pm
- Location: Oświęcim
Nie wiem jak jest pod Arduiono, ale w supla-espressif-esp moduł sprawdza stan pinu sterującego przekaźnikiem (np. PIN 28) i jeśli się zmienił to wysyła ten stan do supla-cloud. Nie ma tu znaczenia czy przekaźnik został załączony ręcznie buttonem na innym pinie (np. PIN 27) czy też apką.
Każde urządzenie elektryczne działa o wiele lepiej jeśli podłączysz je do prądu.

-
alankedzior
- Posts: 114
- Joined: Mon Jun 18, 2018 5:38 pm
No właśnie przy arduino i sterowaniu buttonem nie zmienia mi stanu w Cloud, przy sterowaniu tylko Suplą jest OK 
-
Espablo
- Posts: 1754
- Joined: Wed Jun 29, 2016 5:04 pm
- Location: Oświęcim
Musisz dodać funkcję sprawdzającą stan i wysłać stan pinu na serwer. Tutaj jednak nie pomogę bo nie programuję Supli pod Arduino. Proponuję przesiadkę na supla-espressif-esp, pozbędziesz się tego problemu.
Każde urządzenie elektryczne działa o wiele lepiej jeśli podłączysz je do prądu.

-
alankedzior
- Posts: 114
- Joined: Mon Jun 18, 2018 5:38 pm
System musi zostać taki jak jest, instalacja już położona arduino kupione
teraz tylko muszę ogarnac stany pinów 
-
alankedzior
- Posts: 114
- Joined: Mon Jun 18, 2018 5:38 pm
Czyli jeśli dobrze rozumiem nie muszę definiować przyciskow i używać digitalwrite. Tylko opcja supla relay on podaję numer pinu który odpowiada za przycisk i supla wie że to przycisk ? Jak to się ma do sterowania masa a plusem?
-
pzygmunt
- Posts: 20302
- Joined: Tue Jan 19, 2016 9:26 am
- Location: Paczków
- Been thanked: 59 times
Obsługę przycisku robisz sam, ale już zmianę stanu przycisku poprzez wskazaną metodę.
Możesz obsłużyć przycisk tak samo jak robią to rolety. Tu masz przykład.
https://github.com/SUPLA/arduino/blob/m ... cpp#L1213
Nie rób tego w loop-ie.
Użyj
https://github.com/SUPLA/arduino/blob/m ... ice.h#L286
No chyba, że chcesz sobie zrobić obsługę przycisku opartą o przerwania. Tak czy owak samą zmianę stanu przekaźnika realizuj przez
relayOn
Możesz obsłużyć przycisk tak samo jak robią to rolety. Tu masz przykład.
https://github.com/SUPLA/arduino/blob/m ... cpp#L1213
Nie rób tego w loop-ie.
Użyj
https://github.com/SUPLA/arduino/blob/m ... ice.h#L286
No chyba, że chcesz sobie zrobić obsługę przycisku opartą o przerwania. Tak czy owak samą zmianę stanu przekaźnika realizuj przez
relayOn
SUPLA.... Nareszcie w domu.
-
alankedzior
- Posts: 114
- Joined: Mon Jun 18, 2018 5:38 pm
możesz to rozwinąć na jakimś krótkim przykladzie, bo walczę nad tym juz drugi dzień
działam tak:
int przekaznikk11 = 29; // definiuje przekaznik
int przycisk1 = 28; // definiuje przycisk
bool sp1 = true; //zmienna boolowska sp1 do steowania stanem przekaznika1
void setup() {
pinMode(przekaznikk11, OUTPUT); //przekaznik1 jako wyjście
pinMode(przycisk1, INPUT_PULLUP); //przycisk1 jako wejście z programowym pull-upem
digitalWrite(przekaznikk11, HIGH); //stan początkowy przekaznika1 wysoki
SuplaDevice.addRelay(29, false); // tutaj działa mi SUPLA
void loop() {
if(digitalRead(przycisk1) == 0) //jezeli przycisk1 zostal wcisniety:
{
sp1=!sp1; //zaneguj zmienną sp1
SuplaDevice.relayON(29); //stan przekaźnika ustaw taki jak jest stan sp1
delay(150); //odczekaj 150ms
}
SuplaDevice.iterate();
}
z pominięciem obsługi serwera SUPLI wszstko działa, muszę zdefiniować jakąś bioblioteke czy jak ma działać
SuplaDevice.RelayON gdzie jej nie podstawię to czegoś brakuje.
działam tak:
int przekaznikk11 = 29; // definiuje przekaznik
int przycisk1 = 28; // definiuje przycisk
bool sp1 = true; //zmienna boolowska sp1 do steowania stanem przekaznika1
void setup() {
pinMode(przekaznikk11, OUTPUT); //przekaznik1 jako wyjście
pinMode(przycisk1, INPUT_PULLUP); //przycisk1 jako wejście z programowym pull-upem
digitalWrite(przekaznikk11, HIGH); //stan początkowy przekaznika1 wysoki
SuplaDevice.addRelay(29, false); // tutaj działa mi SUPLA
void loop() {
if(digitalRead(przycisk1) == 0) //jezeli przycisk1 zostal wcisniety:
{
sp1=!sp1; //zaneguj zmienną sp1
SuplaDevice.relayON(29); //stan przekaźnika ustaw taki jak jest stan sp1
delay(150); //odczekaj 150ms
}
SuplaDevice.iterate();
}
z pominięciem obsługi serwera SUPLI wszstko działa, muszę zdefiniować jakąś bioblioteke czy jak ma działać
SuplaDevice.RelayON gdzie jej nie podstawię to czegoś brakuje.
Last edited by alankedzior on Sun Jun 24, 2018 10:35 am, edited 1 time in total.
