Powiadomienia
Wyczyść wszystko

Domoticz Domoticz i krańcówki na eesp8266

13 Wpisów
2 Użytkownicy
4 Reactions
1,822 Wyświetleń
Jarson
(@jartech)
Wpisów: 51
Kontrybutor
Autor tematu
 

Witam.

Posiadam zbudowany system sterowania oparty na Malince + Domoticz oraz ESP8266 jako wykonawczy moduł.

Opiszę sytuację. Mam zamontowane w oknach i w drzwiach wejściowych rolety wewnętrzne zaciemniające i staram się wykonać do nich napędy.

Wykorzystać chcę ESP8266 dla każdego okna i drzwi.

Mam skonfigurowane połączenie i sterowanie kierunkami jak na załączonych zrzutach ekranów. Działa jazda w górę i jazda w dół. Dodatkowo zaprogramowane są krańcówki góra/dół. Jeżeli jest załączony ruch w górę i zadziała krańcówka góra rozłącza napęd. Analogicznie jest w przeciwnym kierunku. Wszystko jest realizowane lokalnie na ESP. Dodatkowo stan krańcówek jest wysyłany do domoticza i jest widoczny na ekranie.

Problem pojawia się gdy roleta jest np. na dole na krańcówce lub górze na krańcówce sterowanie pozwala na ponowne załączenie kierunku mimo pozycji krańcowej co jest stanem niedopuszczalnym.

Proszę o pomoc w wykonaniu skryptu lub blokady programowej. Elektryczna na tą chwilę nie wchodzi w grę.

Z informacji jakie już zdążyłem otrzymać w innym dziale jest możliwość w dwóch miejscach

- domoticz

- ESP

Jakieś sugestie?

 

 
Dodane : 19/08/2021 8:46 am
isom
 isom
(@isom)
Wpisów: 5190
Szef wszystkich szefów Moderator Zasłużony dla Forum, Donator 2K19, Donator 2K20
 

@jartech na początek najprostsze blockly , praktycznie nie ma co wyjaśniać, ale Góra i Dół to przekaźniki od kierunków i do tego odpowiednie krańcówki.

 Ponieważ widzę u Ciebie krańcówki jako zwykły przełącznik i drugie jako "Contact" może być potrzeba wymiany "ON" i "OFF" na "OPEN" i "CLOSED"

Ten przykład dotyczy jednej rolety, ale nic nie stoi na przeszkodzie żeby go rozbudować dla wszystkich.

Drugie co jest potrzebne to układ bloczków zapobiegający włączeniu obu przekaźników jednocześnie

 Jak widać banalnie proste.

Na deser te same funkcje realizowane za pomocą skryptów dzVents . Pierwszy to krańcówki czyli zabezpieczenie żeby nie uruchomić kierunku gdy krańcówka jest aktywna

return {
    on = {
          devices = {'Krańcówka góra','Krańcówka dół','Góra','Dół'}  -- wyzwalacze skryptu w tym wypaddku tylko urzadzenie ale moze byc czas, zmienne, sceny czy grupy
},                                                                   -- tu trzeba wpisac poprawne nazwy urzadzen na zmiane ktorych ma reagowac skrypt
   logging =   
    {
        level = domoticz.LOG_DEBUG, -- logi pomocne w diagnozie, po sprawdzeniu poprawnosci dzialania najlepiej ustawic na LOG_ERROR,
        marker = 'Krancówki',
    },
    execute = function(domoticz, device) --  tu zaznaczamy typ wyzwalacza lub wyzwalaczy w skrypcie (devices, timer, item) item oznacza rozne typy wyzwalacza
       local k1 = domoticz.devices('Krańcówka góra') -- uproszczenie nazw devices zamiast uzywac "Krancowka...." dalej w skrypcie uzyjemy k1
       local k2 = domoticz.devices('Krańcówka dół')
       local gora =  domoticz.devices('Góra')
       local dol =  domoticz.devices('Dół') 
     -- ponizej zaczyna sie magia 
     if k1.state == 'On' and gora.state == 'On' then
         domoticz.log ('Roleta odsłonięta w całości')
         gora.switchOff()
     elseif k2.state == 'On' and dol.state == 'On' then
         domoticz.log ('Roleta całkowicie zasłonięta')
        dol.switchOff()
    end
end
}

 

Drugi to zabezpieczenie przekaźników

local gora = 'Góra'
local dol = 'Dół'

return {
	on = {
		devices = {
			gora,
			dol
		}
	},
    execute = function(domoticz, device, triggerInfo)
        if (domoticz.EVENT_TYPE_TIMER == triggerInfo.type) then
            domoticz.log( 'timer event: '..tostring(triggerInfo.trigger)..'.', domoticz.LOG_INFO)

        elseif (domoticz.EVENT_TYPE_DEVICE == triggerInfo.type) then
            if (device.name == gora) then
                if (device.state == domoticz.devices(dol).state) then
                    domoticz.devices(dol).switchOff().silent()
                end
            elseif (device.name == dol) then
                if (device.state == domoticz.devices(gora).state) then
                    domoticz.devices(gora).switchOff().silent()
                end
            end
        end
    end
}
 
Dodane : 19/08/2021 4:55 pm
Jarson reacted
Jarson
(@jartech)
Wpisów: 51
Kontrybutor
Autor tematu
 
Dodane przez: @isom

@jartech na początek najprostsze blockly , praktycznie nie ma co wyjaśniać, ale Góra i Dół to przekaźniki od kierunków i do tego odpowiednie krańcówki.

 Ponieważ widzę u Ciebie krańcówki jako zwykły przełącznik i drugie jako "Contact" może być potrzeba wymiany "ON" i "OFF" na "OPEN" i "CLOSED"

Ten przykład dotyczy jednej rolety, ale nic nie stoi na przeszkodzie żeby go rozbudować dla wszystkich.

Drugie co jest potrzebne to układ bloczków zapobiegający włączeniu obu przekaźników jednocześnie

 Jak widać banalnie proste.

Na deser te same funkcje realizowane za pomocą skryptów dzVents 

return {
    on = {
          devices = {'Krańcówka góra','Krańcówka dół','Góra','Dół'}  -- wyzwalacze skryptu w tym wypaddku tylko urzadzenie ale moze byc czas, zmienne, sceny czy grupy
},                                                                   -- tu trzeba wpisac poprawne nazwy urzadzen na zmiane ktorych ma reagowac skrypt
   logging =   
    {
        level = domoticz.LOG_DEBUG, -- logi pomocne w diagnozie, po sprawdzeniu poprawnosci dzialania najlepiej ustawic na LOG_ERROR,
        marker = 'Krancówki',
    },
    execute = function(domoticz, device) --  tu zaznaczamy typ wyzwalacza lub wyzwalaczy w skrypcie (devices, timer, item) item oznacza rozne typy wyzwalacza
       local k1 = domoticz.devices('Krańcówka góra') -- uproszczenie nazw devices zamiast uzywac "Krancowka...." dalej w skrypcie uzyjemy k1
       local k2 = domoticz.devices('Krańcówka dół')
       local gora =  domoticz.devices('Góra')
       local dol =  domoticz.devices('Dół') 
     -- ponizej zaczyna sie magia 
     if k1.state == 'On' and gora.state == 'On' then
         domoticz.log ('Roleta odsłonięta w całości')
         gora.switchOff()
     elseif k2.state == 'On' and dol.state == 'On' then
         domoticz.log ('Roleta całkowicie zasłonięta')
        dol.switchOff()
    end
end
}

 

 

Dzięki za szybką odpowiedz i porady.

Co do blokady załączenia obu na raz to już zrobiłem. jest to na drugim obrazku załączonym.

Pobawię się tylko trochę czasu muszę nagromadzić wolnego.

 
Dodane : 19/08/2021 5:16 pm
Jarson
(@jartech)
Wpisów: 51
Kontrybutor
Autor tematu
 

@isom

Coś tu jest nie bangla. Powiem więcej w drugim skrypcie miałem praktycznie identyczne rozwiązanie które nie działało.

Przepisałem Twoje rozwiązanie i nie działa niestety.

 
Dodane : 19/08/2021 9:08 pm
isom
 isom
(@isom)
Wpisów: 5190
Szef wszystkich szefów Moderator Zasłużony dla Forum, Donator 2K19, Donator 2K20
 

@jartech tak to nigdy nie zacznie działać bo 

Rozdziel to na  dwa oddzielne skrypty i sprawdź jeszcze raz ;))

Ty miałeś w swoim skrypcie tylko część warunków

Chodzi o Okno Południe Odsłoń =ON 

jak chcesz wszystko w jednym skrypcie to tak

Jeszcze zapytam , dlaczego raz dajesz "ON' a drugi raz Closed skoro obie krańcówki są przełącznikami on/off ?

Napisałem o ewentualnej konieczności zmiany dla krańcówek które masz typu czujnik Contact bo wtedy w kafelku domoticza nie masz ON/OFF tylko Otwarte/zamknięte  

 
Dodane : 19/08/2021 9:17 pm
Jarson
(@jartech)
Wpisów: 51
Kontrybutor
Autor tematu
 

To akurat on/off czy też closed nie ma znaczenia zmieniłem to specjalnie oraz z and na or przed zrzutem ekranu - czy ktoś czyta dokładnie.

To teraz @isom patrz:

pierwszy skrypt

drugi skrypt

I w żaden sposób nie blokuje ponownego wyboru napędu jak jest zadziałana krańcówka.

 

PS

Sorry za te tricki ze zmianą zmiennych. Nawyk z prowadzonych lekcji.

 
Dodane : 19/08/2021 10:02 pm
isom
 isom
(@isom)
Wpisów: 5190
Szef wszystkich szefów Moderator Zasłużony dla Forum, Donator 2K19, Donator 2K20
 

Gubią Cię te triki , popraw błędy i zobacz

 

 
Dodane : 19/08/2021 10:17 pm
Jarson reacted
Jarson
(@jartech)
Wpisów: 51
Kontrybutor
Autor tematu
 

No przykro mi bardzo lecz nie działa. Za każdym razem mogę załączyć kierunek.

Jedyne co zauważyłem. To każdorazowa zdejmuję sygnał (fizycznie) z krańcówki rozłącza kierunek.

Przetestowałem wszystkie kombinacje.

 

Ja takich ładnych ikonek nie posiadam 🙂

 
Dodane : 19/08/2021 10:42 pm
Jarson
(@jartech)
Wpisów: 51
Kontrybutor
Autor tematu
 

@isom jest lepiej, podobnie jak na Twoim filmiku. Drażni mnie to chwilowe podanie potencjału na wyjście.

Muszę zmienić logikę działania skryptu by wyeliminować kłapnięcie przekaźnikiem.

 

Wielki szacun dla Ciebie @isom.

Jestem Twoim dłużnikiem.

 
Dodane : 19/08/2021 11:03 pm
isom
 isom
(@isom)
Wpisów: 5190
Szef wszystkich szefów Moderator Zasłużony dla Forum, Donator 2K19, Donator 2K20
 
Dodane przez: @jartech

@isom jest lepiej, podobnie jak na Twoim filmiku. Drażni mnie to chwilowe podanie potencjału na wyjście.

Muszę zmienić logikę działania skryptu by wyeliminować kłapnięcie przekaźnikiem.

 

Na takim zestawie urządzeń jak masz teraz łatwo nie będzie, musisz pomyśleć o dodaniu zmiennych użytkownika albo zrobić to po bożemu i ograniczyć całą obsługę rolety do dwóch wirtualnych urządzeń

 Całość wtedy powinna wygladać tak

 ale po ukryciu przełączników krańcówek i przekaźników zostanie tylko to co istotne. 

Informacyjnie jedno z tych urządzeń to selector a drugie roleta venetian blinds eu . Żeby ukryć niepotrzebne przełączniki przed nazwą wstawiasz $

 
Dodane : 20/08/2021 4:29 pm
Jarson reacted
Jarson
(@jartech)
Wpisów: 51
Kontrybutor
Autor tematu
 

@isom 

Trochę bez sensu było to rozwiązanie. załączać coś by po chwili to wyłączyć.

Też myślałem o użyciu wirtualnych urządzeń i tak zrobię (jak w Sterownikach PLC robię), ale obecnie latam bo mi akumulator padł w aucie a sam go nie wymienię

 
Dodane : 20/08/2021 4:34 pm
isom
 isom
(@isom)
Wpisów: 5190
Szef wszystkich szefów Moderator Zasłużony dla Forum, Donator 2K19, Donator 2K20
 

@jartech rozwiązanie wynikało z takiej a nie innej konfiguracji, a Ty zadałeś konkretne pytanie , na które dostałeś odpowiedź. Gdybyś zapytał jak to sensownie rozwiązać i czy Twoja konfiguracja jest ok , pewnie odpowiedz wyglądała by inaczej . Mniejsza z tym. Nie tylko my czytamy to forum i być może ktoś skorzysta z przedstawionego rozwiązania.

Nie uważam go za złe bo nie często będzie dochodziło do takiej powiedzmy pomyłki,  gdzie ktoś kliknie zamknij gdy roleta będzie zamknięta.

Zresztą czy coś jest bez sensu zależy od punktu patrzenia, dla mnie np bez sensu jest fakt , że układałeś te skrypty w blockly chociaż wstawiłem przykłady w dzVents ze sporą ilością komentarzy.

Skrypty blockly bardzo szybko staną się niewystarczające i bez sensu będzie wtedy mieszać w systemie różne rodzaje skryptów. Podstawa przynajmniej dla mnie to przejrzysty i łatwy w utrzymaniu system.

 

 
Dodane : 20/08/2021 5:42 pm
Jarson reacted
Jarson
(@jartech)
Wpisów: 51
Kontrybutor
Autor tematu
 
Dodane przez: @isom

@jartech rozwiązanie wynikało z takiej a nie innej konfiguracji, a Ty zadałeś konkretne pytanie , na które dostałeś odpowiedź. Gdybyś zapytał jak to sensownie rozwiązać i czy Twoja konfiguracja jest ok , pewnie odpowiedz wyglądała by inaczej . Mniejsza z tym. Nie tylko my czytamy to forum i być może ktoś skorzysta z przedstawionego rozwiązania.

Nie uważam go za złe bo nie często będzie dochodziło do takiej powiedzmy pomyłki,  gdzie ktoś kliknie zamknij gdy roleta będzie zamknięta.

Zresztą czy coś jest bez sensu zależy od punktu patrzenia, dla mnie np bez sensu jest fakt , że układałeś te skrypty w blockly chociaż wstawiłem przykłady w dzVents ze sporą ilością komentarzy.

Skrypty blockly bardzo szybko staną się niewystarczające i bez sensu będzie wtedy mieszać w systemie różne rodzaje skryptów. Podstawa przynajmniej dla mnie to przejrzysty i łatwy w utrzymaniu system.

 

OK, OK.

Zawziąłem się na te zabawki to drążę temat. Mam znikomą wiedzę na temat Maliny+domoticz+ESP i inne tego typu rozwiązania.

Strasznie mnie kusi by zdjąć z regału w magazynie Siemensa S7-1200 i na tym postawić, ale tym to już się znam. Wielką niewiadomą jest Domoticz.

 

 
Dodane : 20/08/2021 5:49 pm
Udostępnij: