HA Sterowanie silni...
 
Powiadomienia
Wyczyść wszystko

Home Assistant [Rozwiązany] HA Sterowanie silnikiem rolet przez modbus

44 Wpisów
3 Użytkownicy
2 Reactions
919 Wyświetleń
(@szpila86)
Wpisów: 363
Weteran Patron Strony Donator 2K22, Donator 2K23, Donator 2K24
Autor tematu
 

Hej

Jak poprawnie zrobić sterowanie roletą mając do dyspozycji tylko przekaźniki (góra/dół) w OH działa bez problemu ale nie wiem jak to przepisać do HA. Mogę zrobić przycisk z automatyzacją który się wyłączy po czasie potrzebnym do zamknięcia ale jak zrobić uchylenie? 

I żeby to było poprawnie a wygląd cieszył okiem, a nie np trzy oddzielne przyciski dla każdej rolety.

 
Dodane : 09/05/2024 12:13 pm
pawell32
(@pawell32)
Wpisów: 1334
Guru
 

Trochę mało danych. Nie wiadomo jakie to "przekaźniki", czy jest zabezpieczenie przed włączeniem obu kierunków jednocześnie, pomiar prądu etc.

W HA również robisz za pomocą automatyzacji wbudowanej, lub NodeRed.

 
Dodane : 09/05/2024 12:58 pm
(@szpila86)
Wpisów: 363
Weteran Patron Strony Donator 2K22, Donator 2K23, Donator 2K24
Autor tematu
 

@pawell32 

Zwykły przekaźnik NC/NO, silniki z wbudowanymi krańcówkami żadnej amperometryki nic więcej.

Jedyne zabezpieczenie przed włączenie dwóch kierunków jednocześnie to uwzględnić to w programie (tak mam na OH)

 
Dodane : 09/05/2024 1:13 pm
pawell32
(@pawell32)
Wpisów: 1334
Guru
 

Jak zwykły przekaźnik to wgralbym esphome. Jest konfiguracja zabezpieczająca, dodał bym krańcówki i resztę opedzil w NR

 
Dodane : 09/05/2024 7:34 pm
(@szpila86)
Wpisów: 363
Weteran Patron Strony Donator 2K22, Donator 2K23, Donator 2K24
Autor tematu
 

@pawell32 

Nie chcę ESP przekaźniki są wpięte zamiast przycisku ściennego. Kiedyś może wymienię silnik w roletach na bardziej Smart ale na chwilę obecną zostaje tak.

Wolałbym bez NR niby logika coś jak w PLC ale jakoś mi nie idzie wywoływanie takiego programu z poziomu panelu.

 
Dodane : 09/05/2024 8:33 pm
pawell32
(@pawell32)
Wpisów: 1334
Guru
 

@szpila86 wybacz, nie rozumiem. Nie wiem już jak to sterujesz z OH, gdzie tu Modbus? Musi być jakiś kontroler, który wykonuje polecenia. Logika o jakiej wspominasz właśnie może być w kontrolerze.

Co do silników smart - nie wiem czy to dobry kierunek. Przejrzyj wątki choćby tu.

 
Dodane : 10/05/2024 6:42 am
(@szpila86)
Wpisów: 363
Weteran Patron Strony Donator 2K22, Donator 2K23, Donator 2K24
Autor tematu
 

@pawell32 

To odskoczę na chwilę do OH

Things:

Bridge modbus:tcp:Przekazniki "Przekaźniki strych Bridge" [ host="192.168.86.xxx", port=502, id=3] {
    Bridge poller PkStrych "PKS" [ start=1, length=16, refresh=500, type="holding" ] {
       Thing    data Pk1   "PK1"        [ readStart="1", readValueType="int16", readTransform="JS(Read16relay.js)", writeStart="1", writeValueType="int16", writeTransform="JS(Write16relay.js)", writeType="holding" ]
       Thing    data Pk2   "PK2"        [ readStart="2", readValueType="int16", readTransform="JS(Read16relay.js)", writeStart="2", writeValueType="int16", writeTransform="JS(Write16relay.js)", writeType="holding" ]
       Thing    data Pk3   "PK3"        [ readStart="3", readValueType="int16", readTransform="JS(Read16relay.js)", writeStart="3", writeValueType="int16", writeTransform="JS(Write16relay.js)", writeType="holding" ]
       Thing    data Pk4   "PK4"        [ readStart="4", readValueType="int16", readTransform="JS(Read16relay.js)", writeStart="4", writeValueType="int16", writeTransform="JS(Write16relay.js)", writeType="holding" ]
       Thing    data Pk5   "PK5"        [ readStart="5", readValueType="int16", readTransform="JS(Read16relay.js)", writeStart="5", writeValueType="int16", writeTransform="JS(Write16relay.js)", writeType="holding" ]
       Thing    data Pk6   "PK6"        [ readStart="6", readValueType="int16", readTransform="JS(Read16relay.js)", writeStart="6", writeValueType="int16", writeTransform="JS(Write16relay.js)", writeType="holding" ]
       Thing    data Pk7   "PK7"        [ readStart="7", readValueType="int16", readTransform="JS(Read16relay.js)", writeStart="7", writeValueType="int16", writeTransform="JS(Write16relay.js)", writeType="holding" ]
       Thing    data Pk8   "PK8"        [ readStart="8", readValueType="int16", readTransform="JS(Read16relay.js)", writeStart="8", writeValueType="int16", writeTransform="JS(Write16relay.js)", writeType="holding" ]
       Thing    data Pk9   "PK9"        [ readStart="9", readValueType="int16", readTransform="JS(Read16relay.js)", writeStart="9", writeValueType="int16", writeTransform="JS(Write16relay.js)", writeType="holding" ]
       Thing    data Pk10  "PK10"       [ readStart="10", readValueType="int16", readTransform="JS(Read16relay.js)", writeStart="10", writeValueType="int16", writeTransform="JS(Write16relay.js)", writeType="holding" ]
       Thing    data Pk11  "PK11"       [ readStart="11", readValueType="int16", readTransform="JS(Read16relay.js)", writeStart="11", writeValueType="int16", writeTransform="JS(Write16relay.js)", writeType="holding" ]
       Thing    data Pk12  "PK12"       [ readStart="12", readValueType="int16", readTransform="JS(Read16relay.js)", writeStart="12", writeValueType="int16", writeTransform="JS(Write16relay.js)", writeType="holding" ]
       Thing    data Pk13  "PK13"       [ readStart="13", readValueType="int16", readTransform="JS(Read16relay.js)", writeStart="13", writeValueType="int16", writeTransform="JS(Write16relay.js)", writeType="holding" ]
       Thing    data Pk14  "PK14"       [ readStart="14", readValueType="int16", readTransform="JS(Read16relay.js)", writeStart="14", writeValueType="int16", writeTransform="JS(Write16relay.js)", writeType="holding" ]
       Thing    data Pk15  "PK15"       [ readStart="15", readValueType="int16", readTransform="JS(Read16relay.js)", writeStart="15", writeValueType="int16", writeTransform="JS(Write16relay.js)", writeType="holding" ]
       Thing    data Pk16  "PK16"       [ readStart="16", readValueType="int16", readTransform="JS(Read16relay.js)", writeStart="16", writeValueType="int16", writeTransform="JS(Write16relay.js)", writeType="holding" ]

       }  
}  

 

Reguła:

rule "Rolety jadalnia"
when
    Item RolJad received command 
then
    switch(receivedCommand) {
        case UP: {
		    logInfo("Rolety jadalnia","ROLETA: " + receivedCommand)
            Pk1S_S.sendCommand(OFF)
            Pk2S_S.sendCommand(ON)
        }
        case STOP: {
		    logInfo("Rolety jadalnia","ROLETA: " + receivedCommand)
            Pk1S_S.sendCommand(OFF)
            Pk2S_S.sendCommand(OFF)
        }
        case DOWN: {
		    logInfo("Rolety jadalnia","ROLETA: " + receivedCommand)
            Pk2S_S.sendCommand(OFF)
            Pk1S_S.sendCommand(ON)
        }
        default : {
		    logInfo("Rolety jadalnia","ROLETA: " + receivedCommand)
        }
    }
end

 

Możesz podrzucić link bo nie działa odnośnik. Myślałem o silnikach z wbudowanym wifi z pozycją rolety i zabezpieczeniach choćby wykrywającym przeciążenie czy przeszkodę.

 
Dodane : 10/05/2024 8:09 am
pawell32
(@pawell32)
Wpisów: 1334
Guru
 

Nadal nic nie wiem, nie napisałeś jak masz to podłączone - elektrycznie -  do komputera. Podajesz za to configi z OH, z których widzę jedynie, że lata po IP.

Dodane przez: @szpila86

Myślałem o silnikach z wbudowanym wifi z pozycją rolety i zabezpieczeniach choćby wykrywającym przeciążenie czy przeszkodę

sprawdź wpierw czy będziej je w stanie spiąć z systemem. Pomijam już koszt, który na pewno będzie wyższy niż zwykły silnik + moduł.

 
Dodane : 10/05/2024 8:40 am
isom
 isom
(@isom)
Wpisów: 5178
Szef wszystkich szefów Moderator Zasłużony dla Forum, Donator 2K19, Donator 2K20
 

Dodane przez: @szpila86

To odskoczę na chwilę do OH

Wreszcie jakiś konkret, ale nie ma tu nic o stanach pośrednich ( uchyleniu). Napisz jak to robiłeś w OH.

 
Dodane : 10/05/2024 8:46 am
pawell32
(@pawell32)
Wpisów: 1334
Guru
 

Dodane przez: @szpila86

Możesz podrzucić link bo nie działa odnośnik.

nie podawałem linku, sorry moje zdanie tak mogło sugerować, jednak miałem na myśli to forum. Było kilka wątków nt. silników rolet, teraz nie ma czasu, jak odnajdę jakiś to podeślę.

 
Dodane : 10/05/2024 9:10 am
(@szpila86)
Wpisów: 363
Weteran Patron Strony Donator 2K22, Donator 2K23, Donator 2K24
Autor tematu
 

Stanu pośredniego nie ma. Nie ma skąd pobrać takiej info. Pełen ruch w dół trwa X sek, w górę Y sek.

Elektrycznie przekaźniki są podpięte w miejsce zwykłych przycisków, a sterowane po modbus nie ma nic więcej. Tylko stan NC i NO uzależnione os OH lub HA

Dodane przez: @pawell32

sprawdź wpierw czy będziej je w stanie spiąć z systemem. Pomijam już koszt, który na pewno będzie wyższy niż zwykły silnik + moduł.

Silnik z wifi na pewno wyjdzie drożej ale czy to nie będzie stabilniejsze.... choć może jeden ch... grzyb - musze to przemyśleć. 

Macie może jakiś moduł do polecenia tak żeby obsługiwał już pozycję rolety i był po wifi? Tak żeby nie wymagał dodatkowej bramki do łączności.

 
Dodane : 10/05/2024 9:50 am
isom
 isom
(@isom)
Wpisów: 5178
Szef wszystkich szefów Moderator Zasłużony dla Forum, Donator 2K19, Donator 2K20
 

Dodane przez: @szpila86

Stanu pośredniego nie ma. Nie ma skąd pobrać takiej info

Nie mam jak dokładnie sprawdzić, bo mam rolety na shelly 2.5, ale na szybko zrobiłem dwóch pomocników w HA , roleta up i drugi roleta down , do tego komponent z hacs https://github.com/kotborealis/home-assistant-custom-components-cover-time-based-synced

Działa to tak

 Jak tego chcesz to działaj, mój cały plik w config HA wygląda tak 

cover:
  - platform: cover_time_based_synced
    devices:
      my_room_cover_time_based:
        name: Roleta Biuro
        travelling_time_up: 26
        travelling_time_down: 24
        close_switch_entity_id: input_boolean.roleta_down
        open_switch_entity_id: input_boolean.roleta_up
        send_stop_at_ends: False #optional
        aliases: #optional
          - my_room_cover_time_based

A jak chcesz przejść na moduły wifi z zabezpieczeniem, to proponuję shelly , mają dokładne pozycjonowanie, kalibrację i zabezpieczenia przed przeciążeniem.

 
Dodane : 10/05/2024 12:02 pm
szpila86 and pawell32 reacted
pawell32
(@pawell32)
Wpisów: 1334
Guru
 

@szpila86 tak jak już tu wspomniał kolega - Shelly 2,5 lub nowszy Shelly plus 2,5

 
Dodane : 10/05/2024 12:20 pm
pawell32
(@pawell32)
Wpisów: 1334
Guru
 

Dodane przez: @szpila86

Stanu pośredniego nie ma. Nie ma skąd pobrać takiej info. Pełen ruch w dół trwa X sek, w górę Y sek.

i może tego się trzymaj. Isom podał Ci bardzo dobry i prosty przykład. Przy pomocy tego utworzysz 3 przyciski. Utworzych do tego skróty, które będą działać wg ustalonego schematu np. uchylenie  - otwieranie z czasem 3s.

Wiem, że ten czas pewnie będzie się różnił w zależności od warunków, ale jeśli nie ma enkodera na silniku to tylko czas pozostaje. Nie mam rolet, za to podobne rozwiązanie mam w innym urządzeniu, też oparciu o czas i sprawdza się. Zrobiłem dodatkowo tryb test - otwórz - zamknij by ustawić stan - początek lub koniec.

 
Dodane : 10/05/2024 3:03 pm
(@szpila86)
Wpisów: 363
Weteran Patron Strony Donator 2K22, Donator 2K23, Donator 2K24
Autor tematu
 

@pawell32 

Tak mam zrobione na OH a w HA to nawet nie raczkuje - chyba bariera jakaś psychologiczna ;(

 

Dodane przez: @pawell32

 

@szpila86 tak jak już tu wspomniał kolega - Shelly 2,5 lub nowszy Shelly plus 2,5

 

 

Nie mogęznaleść... czy to to samo co Shelly Plus 2PM?

Po czasie widzę że amperometryka by mi się przydała (jedną roletę już 2x składałem)

 

@isom

Jak wróce do domu to zacznę eksperyment... 😀 

 

Taka rozkminka sterowanie przekaźnikami jest przez rejestr holdingowy 

Bridge modbus:tcp:Przekazniki "Przekaźniki strych Bridge" [ host="192.168.xx.xx", port=502, id=3] {
    Bridge poller PkStrych "PKS" [ start=1, length=16, refresh=500, type="holding" ] {
       Thing    data Pk1   "PK1"        [ readStart="1", readValueType="int16", readTransform="JS(Read16relay.js)", writeStart="1", writeValueType="int16", writeTransform="JS(Write16relay.js)", writeType="holding" ]
       Thing    data Pk2   "PK2"        [ readStart="2", readValueType="int16", readTransform="JS(Read16relay.js)", writeStart="2", writeValueType="int16", writeTransform="JS(Write16relay.js)", writeType="holding" ]
       ...

potem zmiana logiki 

(function(inputData) {
    var out = inputData ;
    if (inputData == '0' ){
        out = 'OFF';  //opened
    } else if (inputData == '1' ){
        out = 'ON' ; //closed
    }
    return out ; 
})(input)

Jak w HA to ogarnąć?

- name: Przekazniki_strych
  type: tcp
  host: 192.168.xx.xx
  port: 502
  switches:
    - name: "Roleta_jadalnia_w_gore? "
      address: ?001
      write_type: coil/holding?
      verify:
       input_type: ?
 
Dodane : 14/05/2024 8:23 am
pawell32
(@pawell32)
Wpisów: 1334
Guru
 

Dodane przez: @szpila86

Nie mogęznaleść... czy to to samo co Shelly Plus 2PM?

Po czasie widzę że amperometryka by mi się przydała (jedną roletę już 2x składałem)

tak, to to samo link

 
Dodane : 14/05/2024 10:52 am
pawell32
(@pawell32)
Wpisów: 1334
Guru
 

Dodane przez: @szpila86

Jak w HA to ogarnąć?

To zależy jak to podłączysz, jak zostaniesz przy tym co masz to już Isom podawał Ci przykład prostej automatyki z pomocnikiem. 

Jeśli zastąpisz to Shelly plus 2PM to większość masz w samym module, integrujesz to z HA i masz dostępne przyciski, napięcie, prąd, moc. Mając takie dane  - prosta automatyka - ustomatyzacje i sceny - gdzie ustawiasz co ma się wykonać.

 
Dodane : 14/05/2024 11:09 am
(@szpila86)
Wpisów: 363
Weteran Patron Strony Donator 2K22, Donator 2K23, Donator 2K24
Autor tematu
 

@pawell32 

tylko żeby użyć "Cover Time Based Synced" musze mieć zdeklarowane przyciski do rolety góra i dół, które muszę zintegrować przez Modbus za pomocą rejestru holdning chyba że coś źle rozumiem?

 

Panowie napalam się jak szczerbaty na sucharek.

Czy te sterowniki będą komunikować się bez dostępu do Internetu?  Tylko w sieci domowej?

 
Dodane : 14/05/2024 11:22 am
pawell32
(@pawell32)
Wpisów: 1334
Guru
 

Dodane przez: @szpila86

tylko żeby użyć "Cover Time Based Synced" musze mieć zdeklarowane przyciski do rolety góra i dół, które muszę zintegrować przez Modbus za pomocą rejestru holdning chyba że coś źle rozumiem?

tak, jednak nic więcej nie podpowiem bo nie mam takiego sterowania.

Dodane przez: @szpila86

Panowie napalam się jak szczerbaty na sucharek.

Czy te sterowniki będą komunikować się bez dostępu do Internetu?  Tylko w sieci domowej?

tak, Shelly ma swój web service, chmura przez sieć potrzebna, kiedy Shelly pracuje samodzielnie, a Ty kontrolujesz przez apkę.

ustawienia -> integracje - > dodaj -> shelly

podajesz adres IP, warto ustawić na stałe, lub zrobić rezerwację w DHCP

 

 
Dodane : 14/05/2024 11:34 am
(@szpila86)
Wpisów: 363
Weteran Patron Strony Donator 2K22, Donator 2K23, Donator 2K24
Autor tematu
 

@pawell32

Dziękuję.

Co do shelly na chwilę obecną temat wyczerpany pozostaje tylko odczyt/zapis do rejestru holding w HA. Rodzaj sterownika raczej nie ma znaczenia jeśli to standard?

Podglądam pakiety do hosta ale nic nie trafia 

Dodane przez: @szpila86

- name: Przekazniki_strych
  type: tcp
  host: 192.168.xx.xx
  port: 502
  switches:
    - name: "Roleta_jadalnia_w_gore? "
      address: ?001
      write_type: coil/holding?
      verify:
       input_type: ?

 

 
Dodane : 14/05/2024 11:43 am
Strona 1 / 3
Udostępnij: