Arduino + Supla + Sterowanie Przyciskiem (jak wyświetlić aktualny stan Pinu)

alankedzior
Posts: 114
Joined: Mon Jun 18, 2018 5:38 pm

Post

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"
User avatar
Espablo
Posts: 1754
Joined: Wed Jun 29, 2016 5:04 pm
Location: Oświęcim

Post

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. :? :roll:
alankedzior
Posts: 114
Joined: Mon Jun 18, 2018 5:38 pm

Post

No właśnie przy arduino i sterowaniu buttonem nie zmienia mi stanu w Cloud, przy sterowaniu tylko Suplą jest OK :?:
User avatar
Espablo
Posts: 1754
Joined: Wed Jun 29, 2016 5:04 pm
Location: Oświęcim

Post

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. :? :roll:
alankedzior
Posts: 114
Joined: Mon Jun 18, 2018 5:38 pm

Post

System musi zostać taki jak jest, instalacja już położona arduino kupione :) teraz tylko muszę ogarnac stany pinów :)
User avatar
pzygmunt
Posts: 20302
Joined: Tue Jan 19, 2016 9:26 am
Location: Paczków
Been thanked: 59 times

Post

Zmieniaj stan przekaźnika przy użyciu metody SuplaDevice.relayOn, a nie bezpośrednio poprzez digitalWrite
SUPLA.... Nareszcie w domu.
alankedzior
Posts: 114
Joined: Mon Jun 18, 2018 5:38 pm

Post

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?
User avatar
pzygmunt
Posts: 20302
Joined: Tue Jan 19, 2016 9:26 am
Location: Paczków
Been thanked: 59 times

Post

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
SUPLA.... Nareszcie w domu.
alankedzior
Posts: 114
Joined: Mon Jun 18, 2018 5:38 pm

Post

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.
Last edited by alankedzior on Sun Jun 24, 2018 10:35 am, edited 1 time in total.
User avatar
pzygmunt
Posts: 20302
Joined: Tue Jan 19, 2016 9:26 am
Location: Paczków
Been thanked: 59 times

Post

Jutro się przypomnij. Dziś jestem poza kompem
SUPLA.... Nareszcie w domu.

Return to “Pomoc”