Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

support for Relays activated by low state #8

Closed
djanosz opened this issue Nov 1, 2019 · 26 comments
Closed

support for Relays activated by low state #8

djanosz opened this issue Nov 1, 2019 · 26 comments
Labels
enhancement New feature or request

Comments

@djanosz
Copy link

djanosz commented Nov 1, 2019

Czy istnieje możliwość dodania do sketchu obsługi SSR sterowanych stanem niskim?
Obecnie wszystko działa, ale niestety stany przekaźników są błędnie prezentowane w HA.
Stany są odwrócone.

@Kirizaki Kirizaki added the enhancement New feature or request label Nov 2, 2019
@Kirizaki
Copy link
Owner

Kirizaki commented Nov 2, 2019

Hej @djanosz
Mamy to w planach - zaktualizuję sekcję TODO w README.md.
Zostawiam to Issue otwarte, więc będziesz poinformowany jak coś się ruszy w temacie.

Dziękuje za przypomnienie,
Pozdrawiam

@th0m4sek
Copy link
Collaborator

You can try this branch - i have no access to hardware so i will be grateful for testing.
https://github.com/Kirizaki/mysensors/tree/8-th0m4sek-active_low_state

//możesz spróbować tych zmian - nie mam dostępu do sprzętu więc będę wdzięczny za informacje czy działa tak jak powinno ;)

@th0m4sek th0m4sek changed the title SSR stan niski support for Relays activated by low state Nov 11, 2019
@djanosz
Copy link
Author

djanosz commented Nov 11, 2019

Sketch wgrany, niestety nie działa poprawnie.
Po przekopiowaniu mojej konfiguracji przycisków, przełączników etc. stany w HA zmieniły się na zgodne z rzeczywistością Niestety okazało się, iż coś się pomieszało. Włącznik(pin A1), który opowiadał za światło w salonie(Pin 4), zapala teraz lampę w innym pokoju (pin 8).
Po wgraniu starego softu wszystko działa poprawnie.
Dla testu wgrałem też Twój pobrany soft(zmodyfikowałem tylko pin z przełącznikiem na 8 pin, przycisk pozostał na pinie A1, niestety także nie działa.

@th0m4sek
Copy link
Collaborator

a mogbys wrzucic gdzies twoje pliki? bo niebardzo widze taka mozliwosc po moich zmianach

@djanosz
Copy link
Author

djanosz commented Nov 12, 2019

Poniżej link do plików.

  • Oryginal - pliki, które u mnie działają, ale w HA pokazują odwrócone stany.
  • Stan niski - pliki z którymi mam problem
    https://we.tl/t-hof5YOVUVl

@Kirizaki
Copy link
Owner

Chyba zły link podałeś. :)

@djanosz
Copy link
Author

djanosz commented Nov 12, 2019 via email

@th0m4sek
Copy link
Collaborator

niewiem skad pomysl na zamiane
namespace Relay {
const uint8_t OFF = 1;
const uint8_t ON = 0;
const uint8_t FLIP = 2;
}
w oryginalnym pliku bo to wiecej komplikuje niz rozwiazuje ale to wyjasniac inne zachowanie sketchy

@djanosz
Copy link
Author

djanosz commented Nov 12, 2019

Pewnie podczas szukania sposobu na poprawne statusy dla HA to zmieniłem i tak pozostało, co nie zmienia faktu, iż sketch działa poprawnie.
Nie bardzo rozumiem ostanie zdanie :)

@th0m4sek
Copy link
Collaborator

i zeby latwiej bylo ci dojsc co do czego nie definiuj wszystki akcji do wszystkich przyciskow jesli nie zamierzasz ich uzywac
i pamietaj ze mozesz przypisac jedna funkcje do kilku przyciskow
i latwiej ci bedzie nazywac przyciski tak ja sa czyli nie salon 1 2 i 3 tylko salonlewy itp, bo i tak odrazu dodajesz komentarz ze to lewy itp

@djanosz
Copy link
Author

djanosz commented Nov 12, 2019

Dziękuję za radę, powiem szczerze, że robię to z doskoku po pracy. W związku z tym, iż pracuję na "żywym organizmie" muszę ograniczyć miganie światłem(wgrywanie sketchy, restarty arduino/maliny etc) do minimum, w przeciwnym razie żona mnie wyrzuci z domu :)
Po zakończeniu testów zastosuje się do Twoich wskazówek i to uporządkuję.

@th0m4sek
Copy link
Collaborator

doskonale rozumiem poprostu niewidze poki co mozliwosci zeby zmiany wprowadzone przezemnie dokonaly takich zachowan i wlasnie przez to ze dzialasz na zywym organizmie ogranicz to i opisz tak jak radze bedzie ci zdecydowanie latwiej
czekam na informacje o efektach

@th0m4sek
Copy link
Collaborator

void saloon2AClick() {
setOutput(GARDEROBA_ID);
//setOutput(SALOON_2_ID);
}
bo to mi w tym sketczu podpada ale powino dzialac w obu wersjach tak samo - tu pelna zgoda

@djanosz
Copy link
Author

djanosz commented Nov 12, 2019

W ramach testu uprościłem wszystko do jednego przekaźnika(pin 11) i włącznik(PIN A1), po wgraniu lampa świeci cały czas, ale niestety nie reaguje na włącznik.
Pliki tutaj: https://we.tl/t-uoGWVaQIXi

@th0m4sek
Copy link
Collaborator

th0m4sek commented Nov 13, 2019

pobierz nowe zmiany albo zamień w Automation.hpp
void setGPIO(const uint8_t& sensorId, const uint8_t& cmd) {
CustomSensor sensor = CustomSensor::getSensorById(sensorId, customSensors);
const uint8_t state = (sensor.activelow == 1) ? (1-cmd) : cmd;

digitalWrite(sensor.pin, state);
}
bo wychodzi na to ze próbowałem zamienić 1 na zero operacją logiczną co nie było dobrym pomysłem...

Wielkie dzięki za testy!

@djanosz
Copy link
Author

djanosz commented Nov 13, 2019

Po wgraniu nadal problemy.
Po wgraniu sketcha wszystkie lampy są włączone.
Włącznik PIN A3 uruchamia lampę w sypialni PIN 10 - a powinien projektor PIN 6
Włącznik PIN A5 uruchamia lampę PIN 7 a powinien lampę PIN 8

Pliki po modyfikacji: https://we.tl/t-DLqSZs7yuI

@th0m4sek
Copy link
Collaborator

reszta dziala jak nalezy czy to sa jedyne reakcje z przyciskow
i drugie pytanie czy akcje z HA dzialaja poprawnie ?

@djanosz
Copy link
Author

djanosz commented Nov 15, 2019

Reszta nie działa w ogóle. Tzn wszystkie lamy świecą i nie reagują na włączniki.
W HA stany są wyświetlane błędnie(lampa włączona ma status - OFF)
Sterowanie z HA działa błędnie włączniki uruchamiają inne przekaźniki .

PS
Jaka powinna być wersja bibliotek?
PS2
Oczywiście po wgraniu pierwotnego sketcha wszystko działa poprawnie(prócz stanów w HA)

@th0m4sek
Copy link
Collaborator

pozostaje mi tylko jedno pytanie czy nowy sketch bez parametru active low dziala poprawnie?
musze pozadnie popatrzec w kod bo nierozumiem tego zachowania i pomyslec jeszcze raz jak to zaatakowac
jeszcze raz bardzo dziekuje za testy

@th0m4sek
Copy link
Collaborator

Wiem już raczej co namieszalem potrzebuje chwile zeby to teraz poprawnie zapisac

@th0m4sek
Copy link
Collaborator

Mam nadzieje ze teraz jest ok
Aktualna wersja ciągle tu:
https://github.com/Kirizaki/mysensors/tree/8-th0m4sek-active_low_state
Czekam na relacje i jeszcze raz dziękuję ze pomoc i cierpliwość

@Kirizaki
Copy link
Owner

Kirizaki commented Nov 16, 2019

edit inline (wkradł się błąd)
Unikajmy działań na zmiennych o dwóch innych typach (druga linia):

void setGPIO(const CustomSensor sensor, const uint8_t& cmd) {
  const uint8_t state = (sensor.activelow == 1) ? (1-cmd) : cmd;

  digitalWrite(sensor.pin, state);
}

Możesz porównać activelow bezpośrednio ze zmienną ActiveLow oraz skorzystać ze static_cast żeby bezpiecznie zrzutować na bool w czasie kompilacji, np:

void setGPIO(const CustomSensor sensor, const uint8_t& cmd) {
  bool bState = static_cast<bool>(cmd);
  bState = (ActiveLow == sensor.activelow) ? !bState : bState;

  digitalWrite(sensor.pin, bState);
}

Rzutowanie:
https://www.geeksforgeeks.org/static_cast-in-c-type-casting-operators/

@djanosz
Copy link
Author

djanosz commented Nov 16, 2019

Jestem w pracy, więc przetestuję to wieczorem.
Nie ma za co dziękować to Ty pomagasz mi, nie ja Tobie :)

@djanosz
Copy link
Author

djanosz commented Nov 16, 2019

Stany w HA wyświetlają się poprawnie. :)
Włączniki, przekaźniki działają poprawnie.
LongPress działa poprawnie.

Czyli wszystko działa.
Dziękuję bardzo za pomoc.

PS
Zastanawia mnie tylko czy powinno być tak, że longpress działa dopiero po zwolnieniu przycisku?

@th0m4sek
Copy link
Collaborator

no powinien dzilac po puszczeniu - i mam nadzieje ze tak sie zachowuje.
jesli chcesz zeby akacja wykonala sie po wykryciu dlugiego przycisku zamien longpressstop na longpressstart
// tu masz przyklad z pomoca dla guzikow

Dzieki wielkie jeszcze raz za pomoc

Kirizaki added a commit that referenced this issue Nov 17, 2019
@Kirizaki
Copy link
Owner

Resolved by #18

@djanosz
Changes merged with dev. Feel free to use it and thank you for your contribution!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request
Projects
None yet
Development

No branches or pull requests

3 participants