logo elektroda
logo elektroda
X
logo elektroda
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

Deta Grid Connect Inteligentny kontroler prędkości wentylatora z dotykowym włącz

wolfieeewolf 01 Mar 2023 07:37 3387 48
Treść została przetłumaczona angielski » polski Zobacz oryginalną wersję tematu
  • Nazwa urządzenia : Deta Grid Connect Inteligentny kontroler prędkości wentylatora z dotykowym włącznikiem światła - 6914HA
    Rodzaj urządzenia : Przełącznik wentylatora i światła
    Chip urządzenia : WB3S-BK7231T
    Urządzenie kupione : Magazyn bułeczek — 59,36 USD

    Deta Grid Connect Inteligentny kontroler prędkości wentylatora z dotykowym włącz Deta Grid Connect Inteligentny kontroler prędkości wentylatora z dotykowym włącz Deta Grid Connect Inteligentny kontroler prędkości wentylatora z dotykowym włącz Deta Grid Connect Inteligentny kontroler prędkości wentylatora z dotykowym włącz Deta Grid Connect Inteligentny kontroler prędkości wentylatora z dotykowym włącz Deta Grid Connect Inteligentny kontroler prędkości wentylatora z dotykowym włącz Deta Grid Connect Inteligentny kontroler prędkości wentylatora z dotykowym włącz Deta Grid Connect Inteligentny kontroler prędkości wentylatora z dotykowym włącz Deta Grid Connect Inteligentny kontroler prędkości wentylatora z dotykowym włącz


    Miganie głównego układu scalonego

    Ręcznie sflashowałem chip za pomocą BK7231 Narzędzie Flash GUI .

    Karta katalogowa modułu WB3S


    Konfiguracja modułu

    Szpilka Ch Typ Opis
    P1 Ch4 Tylko Btn_Script Przycisk wentylatora (środek)
    P6 Ch2 Rel Prędkość wentylatora MIN, włącza 1 z 3 diod LED wokół przycisku strzałki (prawa dioda).
    Pin aktywny na wszystkich prędkościach wentylatora. Włącza diodę przycisku wentylatora
    P7 Ch3 Rel Prędkość wentylatora MIN, włącza 1 z 3 diod LED wokół przycisku strzałki (górna dioda)
    P8 Rozdział 10 Tylko Btn_Script Przycisk strzałki (w prawo)
    P9 Ch4 Rel Maksymalna prędkość wentylatora, włącza 1 z 3 diod LED wokół przycisku strzałki (dolna dioda LED)
    P10 Ch0 WifiLED_n WifiLED_n — Biała dioda LED świeci, gdy Wi-Fi jest podłączone lub WifiLED — Biała dioda LED świeci, gdy Wi-Fi jest odłączone
    P14 Ch1 Tylko Btn_Script Przycisk światła (lewy)
    P26 Ch1 Rel Przekaźnik światła. Włącza diodę LED przycisku światła



    Uruchom aplikację internetową
    Przejdź do zakładki System plików
    Utwórz plik o nazwie autoexec.bat (powinien być domyślny)
    Wklej następujący skrypt
    Zapisz i uruchom ponownie urządzenie.
    Przetestuj wszystkie funkcje, aby upewnić się, że działają.

    Ogromne podziękowania dla Drkarl I p.kaczmarek2 do opracowania ostatecznego kodowania.

    
    // Display the labels for each channel on the GUI
    setChannelLabel 1 "Light Relay"
    setChannelLabel 2 "Min Fan 1 Relay"
    setChannelLabel 3 "Mid Fan 2 Relay"
    setChannelLabel 4 "Max Fan Relay"
    setChannelType 5 Toggle
    setChannelLabel 5 "Fan ON/OFF"
    setChannelType 10 OffLowMidHigh
    
    // Hide the raw relay channel buttons from the GUI
    setChannelVisible 1 0
    setChannelVisible 2 0
    setChannelVisible 3 0
    setChannelVisible 4 0
    setChannelVisible 5 0
    
    // Start the HTTP button driver
    startDriver httpButtons
    
    // Set up the Light button on the GUI
    setButtonLabel 1 "Light ON/OFF"
    setButtonCommand 1 Do_Light_Press
    setButtonEnabled 1 1
    setButtonColor 1 red
    addChangeHandler Channel1 == 0 setButtonColor 1 red
    addChangeHandler Channel1 != 0 setButtonColor 1 green
    addEventHandler OnClick 14 Do_Light_Press
    alias Do_Light_Press toggleChannel 1
    
    // Set up the Fan ON/OFF button on the GUI
    setButtonLabel 2 "Fan ON/OFF"
    setButtonCommand 2 Do_Power_Press
    setButtonEnabled 2 1
    setButtonColor 2 red
    addChangeHandler Channel2 == 0 setButtonColor 2 red
    addChangeHandler Channel2 != 0 setButtonColor 2 green
    addEventHandler OnClick 1 Do_Power_Press
    alias Do_Power_Press toggleChannel 5
    
    // Set up the Fan speed cycle button on the GUI
    setButtonLabel 10 "Next Fan Speed"
    setButtonCommand 10 Do_Cycle_Press_Ext
    setButtonEnabled 10 1
    addEventHandler OnClick 8 Do_Cycle_Press_Ext
    alias Do_Cycle_Press addChannel 10 -1 1 3 1 
    alias Do_Cycle_Press_Ext if $CH10!=0 then Do_Cycle_Press 
    
    
    // Set up change handlers for the fan speed options
    addChangeHandler Channel10 == 0 backlog SetChannel 2 0; SetChannel 3 0; SetChannel 4 0; SetChannel 5 0
    addChangeHandler Channel10 == 1 backlog SetChannel 2 1; SetChannel 3 0; SetChannel 4 0; SetChannel 5 1
    addChangeHandler Channel10 == 2 backlog SetChannel 2 1; SetChannel 3 1; SetChannel 4 0; SetChannel 5 1
    addChangeHandler Channel10 == 3 backlog SetChannel 2 1; SetChannel 3 1; SetChannel 4 1; SetChannel 5 1
    addChangeHandler Channel5 == 0 backlog SetChannel 10 0
    addChangeHandler Channel5 == 1 backlog SetChannel 10 3
    


    Jak dotąd wszystkie przekaźniki/przyciski działają tak samo jak w oryginalnym oprogramowaniu i jestem w stanie ustawić wszystkie prędkości wentylatora.

    Aby skonfigurować skrypt MQTT w asystencie domowym, użyj następujących elementów

    
    mqtt: 
    ################################################################################
      light:
      ### Bedroom Light #####################
        - unique_id: bedswitch_relay_1
          name: "Bedroom Light"
          state_topic: "bedswitch/1/get"
          command_topic: "bedswitch/1/set"
          qos: 1
          payload_on: 1
          payload_off: 0
          retain: true
          availability:
          - topic: "bedswitch/connected"
    ################################################################################
      fan:
      ### Bedroom Fan ##########################
        - unique_id: "bedswitch_Channel_10"
          name: "Bedroom Fan"
          state_topic: "bedswitch/5/get"
          command_topic: "bedswitch/5/set"
          percentage_state_topic: "bedswitch/10/get"
          percentage_command_topic: "bedswitch/10/set"
          qos: 1
          payload_on: 1
          payload_off: 0
          speed_range_min: 1
          speed_range_max: 3
          retain: true
          availability:
            - topic: "bedswitch/connected"
    

    Fajne? Ranking DIY
    O autorze
    wolfieeewolf
    Poziom 11  
    Offline 
  • Pomocny post
    #2 20464179
    p.kaczmarek2
    Moderator Smart Home
    Witaj, pierwszą rzeczą do zrobienia byłoby sprawdzenie, czy to naprawdę TuyaMCU, czy nie. Nie wyglądam jak TuyaMCU.

    1. Czy usunięcie konfiguracji z autoexec.bat coś zmienia?
    2. Czy przy konfiguracji TuyaMCU, w Uruchom aplikację internetową -> Dzienniki, otrzymałeś jakieś pakiety TuyaMCU?
    3. Czy port WB3S TXD1/RXD1 jest gdzieś podłączony na płytce (sprawdź multimetrem lub po prostu obejrzyj PCB), a jeśli tak to gdzie?

    Konfiguracja modułu wygląda tak, jakby moduł robił prawie wszystko, więc może nie być TuyaMCU.

    Ponadto, jeśli weźmiesz pod uwagę GPIO WB3S:
    15 RXD1 we/wy UART1_RXD, który jest używany jako pin interfejsu szeregowego po stronie użytkownika i jest podłączony do pinu P10 wewnętrznego układu scalonego
    16 TXD1 we/wy UART1_TXD, który jest używany jako pin interfejsu szeregowego po stronie użytkownika i jest podłączony do pinu P11 wewnętrznego układu scalonego

    RXD1 to P10, a już wymieniłeś P10 jako sterowanie LED, więc nie jest możliwe, że to TuyaMCU.

    Powiem, że obecnie wygląda jak urządzenie inne niż TuyaMCU. Więc konfiguracja TuyaMCU nie pomoże.

    Rzeczą, którą możesz zrobić (i mogę napisać dla ciebie scenariusz do tego) jest ręczne skryptowanie rzeczy dla fanów.

    Mamy wiele automatycznych testów na naszym porcie Windows dla tej funkcjonalności. Są przeznaczone głównie dla programistów, ale mogą dać tobie (lub czytelnikom) podstawowe wyobrażenie o tym, jak można to zrobić w skryptach:
    https://github.com/openshwprojects/OpenBK7231...src/selftest/selftest_demo_fanCyclingRelays.c
    https://github.com/openshwprojects/OpenBK7231.../selftest/selftest_demo_mapFanSpeedToRelays.c
    https://github.com/openshwprojects/OpenBK7231.../src/selftest/selftest_demo_exclusiveRelays.c

    Nie jestem pewien, jak dobrze pasują do Twojego urządzenia, ale możemy spróbować coś wymyślić
    Pomogłem? Kup mi kawę.
  • #3 20465515
    wolfieeewolf
    Poziom 11  
    Chyba się z Tobą zgodzę, że na pokładzie nie ma TuyaMCU.

    1. Czy usunięcie konfiguracji z autoexec.bat coś zmienia?

    Dodałem kod do pliku autoexec.bat, aby zobaczyć, co zrobi, i spowodował awarię urządzenia podczas ponownego uruchamiania. Musiałem ClearConfig, aby zresetować.

    2. Czy przy konfiguracji TuyaMCU, w Uruchom aplikację internetową -> Dzienniki, otrzymałeś jakieś pakiety TuyaMCU?

    Próbowałem wysłać kilka poleceń i niewiele daje w dzienniku.

    3. Czy port WB3S TXD1/RXD1 jest gdzieś podłączony na płytce (sprawdź multimetrem lub po prostu obejrzyj PCB), a jeśli tak to gdzie?

    Zrobiłem kilka testów ciągłości za pomocą multimetru i wydaje się, że TXD1 i RXD1 biegną do CH17M, a następnie do BSB13A-1, a następnie kończą się na dwóch górnych pinach CN2 po prawej stronie. Z niektórych wyszukiwań w sieci wynika, że chipy nie są chipami TuyaMCU. Nie żeby było tam dla nich dużo informacji.

    Jestem teraz całkiem pewny, że to urządzenie nie ma TuyaMCU.

    Próbowałem sprawić, by skrypty działały, ale nie jestem zbyt pewny siebie w tych sprawach i nie mogłem ich zmusić do niczego. Z tego co rozumiem muszę dodać skrypt do autoexec.bat. Jak dotąd po prostu się zawiesza lub nic się nie dzieje. Zgaduję, ponieważ część kodu jest niekompatybilna.

    Chyba muszę napisać własny scenariusz z tego, co mi dałeś. Myślę, że rozumiem, co skrypt próbuje zrobić i muszę go tylko zmodyfikować, aby działał z moim urządzeniem. Będzie próbować. Jestem pewien, że to załatwię.
  • #4 20465822
    p.kaczmarek2
    Moderator Smart Home
    Pamiętaj, że możesz użyć roli Btn_ScriptOnly dla przycisku, który jest w pełni skryptowalny i nie ma automatycznych interakcji z kanałami.

    Muszę przyznać, że ta część Twojego opisu nie jest dla mnie jasna:
    Cytat:

    Przekaźnik 2 powinien włączyć Przekaźnik 3 i 4 — Ustawia maksymalną prędkość wentylatora
    Przekaźnik 2 powinien wyłączyć Przekaźnik 3 i 4 - To wyłącza wentylator
    Przekaźnik 3 powinien zawsze zmniejszać prędkość pojedynczo 3 -> 2 -> 1 -> 3

    Jak przekaźnik może włączyć inny przekaźnik? I jak Relay 2 może jednocześnie wyłączać i włączać przekaźniki?

    Mogę napisać scenariusz, ale potrzebuję jaśniejszego opisu.
    Pomogłem? Kup mi kawę.
  • #5 20466019
    wolfieeewolf
    Poziom 11  
    Mam nadzieję że to pomoże. Przeprowadziłem kilka testów ze zmianą kanałów pinów i czuję, że to, co mam poniżej, jest w 99,9% poprawne.

    Próbowałem to zrobić za pomocą skryptów, ale po prostu nie mam pojęcia, od czego zacząć.


    Podział tego, co powinien zrobić skrypt

    Przycisk 1 – Włącz/wyłącz światło

    Przycisk 2 — Włączanie/wyłączanie wentylatora — Ustaw na Maks., gdy jest włączony

    Przyciski 3 – Cykliczna prędkość wentylatora – Maks./Średnia/Niska – Wymaga pętli.

    Co wiem do tej pory

    Przekaźniki

    Styk 26 – Przekaźnik oświetlenia – kanał 1

    Kołek 6 - ? Przełącznik głównego wentylatora — ustawia najniższą prędkość wentylatora i włącza 1 z 3 mniejszych diod LED wokół przycisku strzałki (prawa dioda).
    Ten pin musi być aktywny przy wszystkich prędkościach wentylatora. Ten pin włącza również diodę przycisku wentylatora - kanał 2

    Styk 7 — Ustawia wentylator na najniższą prędkość i włącza 1 z 3 mniejszych diod LED wokół przycisku strzałki (górna dioda LED) — kanał 3

    Pin 9 — Ustawia wentylator na najwyższe ustawienie i włącza 1 z 3 mniejszych diod LED wokół przycisku strzałki (dolna dioda LED) — kanał 4

    Po naciśnięciu przycisku wentylatora powinien włączyć się P6, P7 i P9, a po ponownym naciśnięciu powinien wyłączyć P6, P7 i P9

    Przekaźniki wentylatora mogą być mylące, ale wszystkie 3 mogą być włączone jednocześnie. Gdy oba P6 i P7 są włączone w tym samym czasie, musi dostarczać wyższe napięcie, które następnie zwiększa prędkość wentylatora. Możesz sam włączyć P9 i od razu osiągnie maksymalną prędkość. Jednakże, gdy P9 jest aktywowany za pomocą P6 i P7, musi się gdzieś dziać jakaś magia, ponieważ ustawia prędkość na maksimum i ignoruje wszystko, co robią P6 i P7. Nie włącza jednak diod P6 i P7.

    Wciśnięcie Przycisku Strzałki powinno załączyć przekaźniki w tym cyklu

    Wysoka - P6, P7, P9 - Ch2, 3, 4
    Środek - P6, P7 - Ch2, 3
    Niski - P6 - Ch2

    Przycisk i kanały

    P8 – Przycisk światła (lewy) – kanał 1
    P14 – Przycisk wentylatora (środkowy) – kanał 2
    P24 – przycisk strzałki (w prawo) – kanał 3

    Mam ustawiony P1 jako przycisk dla P9, ale nie ma fizycznego przycisku. To było dla interfejsu internetowego, więc mogłem przełączać P9. Nie trzeba go dodawać do skryptu.

    Jeśli spojrzysz na skrypt Tasmota, może to dać ci lepsze wyobrażenie o tym, jak powinien działać.

    https://templates.blakadder.com/deta_6914HA.html
  • Pomocny post
    #6 20467461
    p.kaczmarek2
    Moderator Smart Home
    Cóż, możemy to zrobić krok po kroku.

    Cytat:

    Przyciski 3 – Cykliczna prędkość wentylatora – Maks./Średnia/Niska – Wymaga pętli.

    Można to zrobić według tego przykładu:
    https://github.com/openshwprojects/OpenBK7231...c6e03c7f7fbfecbaff70e911a0e3d059c6aa64c35ff92
    Zasadniczo musisz wybrać jeden kanał, który będzie miał prędkość wentylatora.
    1. Powiedzmy, że kanał 10 to prędkość wentylatora. W aplikacji internetowej ustaw rolę „Low Mid High”, aby uzyskać kontrolę nad GUI
    2. Wybierz przycisk, który będzie przewijał prędkości. Ustaw rolę na Btn_ScriptOnly
    3. Dodaj następujący skrypt:
    
    // cycle press will cycle values 0, 1, 2 and 3 for channel 10
    // AddChannel [ChannelIndex][ValueToAdd][ClampMin][ClampMax][bWrapInsteadOfClamp]
    alias Do_Cycle_Press addChannel 10 1 0 3 1
    // clicking button on pin 24 toggles cycles
    addEventHandler OnPress 24 Do_Cycle_Press
    

    Spróbuj wykonać poniższy skrypt i powiedz mi, czy przycisk działa.



    Następnie możesz iść dalej.

    Na przykład, jeśli chcesz zrobić:
    Cytat:

    Wysoka - P6, P7, P9 - Ch2, 3, 4
    Środek - P6, P7 - Ch2, 3
    Niski - P6 - Ch2

    A P6, P7, P9 mają już przypisane kanały, możesz zrobić:

    
    // translate fan state (0-4) to relay states
    // This will check for channel 10 change and map it to channels for relays.
    // Fan off - all channels off
    addChangeHandler Channel10 == 0 backlog SetChannel 2 0; SetChannel 3 0; SetChannel 4 0
    // Fan on Low - Ch2 on
    addChangeHandler Channel10 == 1 backlog SetChannel 2 1; SetChannel 3 0; SetChannel 4 0
    // Fan on Medium - Ch2, Ch3 on
    addChangeHandler Channel10 == 2 backlog SetChannel 2 1; SetChannel 3 1; SetChannel 4 0
    // Fan on High - Ch2, 3, 4 on
    addChangeHandler Channel10 == 3 backlog SetChannel 2 1; SetChannel 3 1; SetChannel 4 1
    



    To nie jest kompletne, ale powinno być dobrym początkiem. Rozważ poniższy kod i zacznij od przetestowania tylko pierwszego fragmentu, a jeśli zadziała, przejdź do drugiego. Upewnij się, że indeksy pinów i kanałów są zgodne z posiadanymi.
    Pomogłem? Kup mi kawę.
  • #7 20467780
    wolfieeewolf
    Poziom 11  
    Od kilku dni pracuję nad scenariuszem. Skrypt działa, jeśli korzystam z internetowego interfejsu GUI, ale wszystko jest zepsute na urządzeniu.

    Nie wiem, kiedy powinienem użyć kodu PIN lub numeru KANAŁU. Myślę, że dlatego przyciski na urządzeniu są pomieszane.

    moja konfiguracja jest taka do tej pory
     "pins": {
        "1": "Btn;4",
        "6": "Rel;2",
        "7": "Rel;3",
        "8": "Btn;1",
        "9": "Rel;4",
        "10": "WifiLED_n;0",
        "14": "Btn_ScriptOnly;2",
        "24": "Btn_ScriptOnly;10",
        "26": "Rel;1"


    a mój kod jest następujący - zacytowałem problemy, które mam w samym kodzie w celach informacyjnych.

    // display on gui
    // LowMidHigh on GUI displaying wrong - just cycles when next fan speed is clicked
    // Clicking LowMidHigh radio buttons not correct.  Low=nothing Mid=Low and High=Mid
    setChannelType 10 LowMidHigh
    setChannelLabel 1 "Light Relay"
    setChannelLabel 2 "Min Fan 1 Relay"
    setChannelLabel 3 "Min Fan 2 Relay"
    setChannelLabel 4 "Max Fan Relay"
    
    // hide raw relay channel buttons from GUI
    // setChannelVisible 1 0
    // setChannelVisible 2 0
    // setChannelVisible 3 0
    // setChannelVisible 4 0
    
    startDriver httpButtons
    setButtonLabel 2 "Fan ON/OFF"
    setButtonLabel 10 "Next Fan Speed"
    setButtonEnabled 2 1
    setButtonEnabled 10 1
    
    // button colour
    addChangeHandler Channel2 == 0 setButtonColor 2 red
    addChangeHandler Channel2 != 0 setButtonColor 2 green
    addChangeHandler Channel3 == 0 setButtonColor 2 red
    addChangeHandler Channel3 != 0 setButtonColor 2 green
    addChangeHandler Channel4 == 0 setButtonColor 2 red
    addChangeHandler Channel4 != 0 setButtonColor 2 green
    
    // off by default
    setButtonColor 2 red
    
    // fan cycle setup
    
    setButtonCommand 10 Do_Cycle_Press
    
    // translate fan state (0-4) to relay states
    // This will check for channel 10 change and map it to channels for relays.
    
    // Fan off - all channels off
    addChangeHandler Channel10 == 0 backlog SetChannel 2 0; SetChannel 3 0; SetChannel 4 0
    
    // Fan on Low - Ch2 on
    addChangeHandler Channel10 == 1 backlog SetChannel 2 1; SetChannel 3 0; SetChannel 4 0
    
    // Fan on Medium - Ch2, Ch3 on
    addChangeHandler Channel10 == 2 backlog SetChannel 2 1; SetChannel 3 1; SetChannel 4 0
    
    // Fan on High - Ch2, 3, 4 on
    addChangeHandler Channel10 == 3 backlog SetChannel 2 1; SetChannel 3 1; SetChannel 4 1
    
    addEventHandler OnPress 24 Do_Cycle_Press
    
    // cycle press will cycle values 0, 1, 2 and 3 for channel 10
    // needs to reset to low on Do_Power_Press ??? not sure how to do this
    // AddChannel [ChannelIndex][ValueToAdd][ClampMin][ClampMax][bWrapInsteadOfClamp]
    alias Do_Cycle_Press addChannel 10 1 0 3 1
    
    // fan on/off setup
    
    setButtonCommand 2 Do_Power_Press
    
    addEventHandler OnPress 14 Do_Power_Press
    
    // power press will toggle channel 2,3 and 4 - so if non zero it goes to 0, if zero, then goes to 1
    // So far only toggles Channel 4. have tried ; and , to make multiple toggleChannels but not being recognised
    alias Do_Power_Press toggleChannel 4
  • #8 20467800
    p.kaczmarek2
    Moderator Smart Home
    Czy chcesz mieć „LowMidHigh” (przycisk radiowy z 3 opcjami) w GUI lub 4 opcje („OffLowMidHigh”)?
    Pomogłem? Kup mi kawę.
  • #9 20468514
    wolfieeewolf
    Poziom 11  
    Prowadzę wszystko przez Home Assistant i chociaż ładnie wyglądający interfejs jest dobry, tak naprawdę go nie używam. Mam to tylko w celach testowych, aby upewnić się, że fizyczne przyciski robią to, co muszą. Prawdopodobnie mógłbym po prostu pozbyć się LowMidHigh, ponieważ widzę przekaźniki aktywujące się we właściwej kolejności za pomocą przycisków przełączania.

    Mój problem polega na tym, że jazda na rowerze działa dobrze, gdy klikam przycisk „Następna prędkość wentylatora” na gui, ale kiedy naciskam przycisk na urządzeniu fizycznym, robi coś zupełnie innego.

    Przycisk „Fan ON/OFF” na interfejsie również włącza/wyłącza tylko kanał 4. Musi włączać/wyłączać kanały 2, 3 i 4.

    Wydaje mi się, że pomieszałem gdzieś kanały i piny i nie wiem, kiedy powinienem użyć numeru PIN do aktywacji czegoś lub numeru kanału.

    Zakładam, że stwierdzenia mówiące o kanale, takie jak „addChangeHandler Channel10” i „setChannelLabel”, odnoszą się do liczby, którą mogę ustawić w „polu kanału”, a stwierdzenia takie jak „addEventHandler OnPress 14” i „addEventHandler OnPress 24” odnoszą się do szpilki

    Utknąłem, gdy mam instrukcje takie jak „setButtonCommand 2 Do_Power_Press” i „setButtonCommand 10 Do_Cycle_Press”. Czy to pin czy kanał?? Dokumentacja mi tego nie mówi, a patrzenie na skrypt z linków, które mi wysłałeś, sprawia, że jest to bardziej mylące, ponieważ nie ma odniesienia do Pina ani kanału, które można by wyłączyć.

    W tym momencie prawie zgaduję i mam nadzieję na najlepsze, co nie jest dobre, ponieważ udało mi się kilka razy zresetować urządzenie, po prostu naciskając przyciski na urządzeniu.

    Rozumiem, co robi skrypt. Patrzę na skrypty i używam ich od wielu lat i wszystkie są prawie takie same, ale większość skryptów, których użyłem, została po prostu skopiowana i wklejona, z może niewielkimi zmianami tu i tam. Tego skryptu po prostu nie mogę opracować bez dodatkowych informacji o ustawieniach Pinów i polach kanałów.

    Załączam filmik jak to powinno działać. miejmy nadzieję, że będzie to miało trochę więcej sensu.



  • Pomocny post
    #10 20469063
    p.kaczmarek2
    Moderator Smart Home
    wolfieeewolf napisał:

    Zakładam, że stwierdzenia, które mówią o kanale, takie jak „addChangeHandler Channel10” i „setChannelLabel”, odnoszą się do liczby, którą mogę ustawić w „polu kanału”

    Tak, to dotyczy kanałów
    wolfieeewolf napisał:

    a stwierdzenia takie jak „addEventHandler OnPress 14” i „addEventHandler OnPress 24” odnoszą się do Pinów

    Tak, to jest zdarzenie OnPress (możesz również użyć OnClick) dla indeksu pinów, gdzie pin powinien mieć również rolę przycisku.

    wolfieeewolf napisał:

    Utknąłem, gdy mam instrukcje takie jak „setButtonCommand 2 Do_Power_Press” i „setButtonCommand 10 Do_Cycle_Press”. Czy to pin czy kanał??

    Spróbuję zaktualizować dokumenty, aby były bardziej przejrzyste, ale wszystkie polecenia setButton* służą do tworzenia niestandardowych przycisków HTML (wirtualnych, na stronie WWW), a indeks przycisku HTML jest po prostu indeksem niestandardowego gniazda przycisku HTML.
    Nie ma to nic wspólnego z pinami i kanałami i tylko z tą stroną WWW.

    Oto losowy przykład niestandardowego skryptu przycisków:
    
    
    startDriver httpButtons
    setButtonEnabled 0 1
    setButtonLabel 0 "Turn off after 10 seconds"
    setButtonCommand 0 "addRepeatingEvent 10 1 Power Off"
    //setButtonColor 0 "#FF0000"
    
    setButtonEnabled 1 1
    setButtonLabel 1 "Set Red 50% brightness"
    setButtonCommand 1 "backlog led_basecolor_rgb FF0000; led_dimmer 50; led_enableAll 1"
    //setButtonColor 1 "blue"
    

    Ponownie, jak widać, są to przyciski tylko HTML, a nie fizyczne. Po prostu uruchamiają polecenie po kliknięciu.


    Jeśli możesz skryptować fizyczne przyciski na urządzeniu, użyj:
    
    addEventHandler OnPress 24 setChannel 1 0
    

    gdzie 24 to indeks pinów, P24, a także musi mieć ustawioną rolę Button (lub Btn lub Btn_ScriptOnly).

    wolfieeewolf napisał:

    Rozumiem, co robi skrypt. Przyglądałem się i używałem skryptów przez wiele lat i wszystkie są prawie takie same, ale większość skryptów, których użyłem, została po prostu skopiowana i wklejona, z może niewielkimi zmianami tu i tam. Tego skryptu po prostu nie mogę opracować bez dodatkowych informacji o ustawieniach Pinów i polach kanałów.

    Czy mogę podać jeszcze jakieś informacje?

    Wypróbuj teraz, korzystając z dodanych przeze mnie informacji, a jeśli wystąpi problem, mogę spróbować napisać dla Ciebie coś więcej później dzisiaj lub jutro. postaram się pomóc.
    Pomogłem? Kup mi kawę.
  • #11 20469169
    wolfieeewolf
    Poziom 11  
    Wreszcie się udało!!!

    Po całym tym wysiłku okazuje się, że niektóre przyciski zostały źle przydzielone w ustawieniach Pina. Wywoływałem też niewłaściwe kanały i przyciski w skrypcie.

    Nadal występuje kilka drobnych problemów z przyciskiem włączania/wyłączania wentylatora. Skrypt nie wyzwala wszystkich przekaźników i nie jestem pewien, jak to naprawić. O ile mi wiadomo, instrukcja „toggleChannel” akceptuje tylko jeden kanał, a nie wiele.

    Chciałbym również, aby przełącznik działał jak oryginalne oprogramowanie. Oznacza to, że musisz nacisnąć przycisk WŁ./WYŁ. wentylatora, aby użyć wentylatora, a następnie użyć przycisku strzałki, aby zmienić prędkość. Przycisk strzałki jest zasadniczo zablokowany do momentu naciśnięcia przycisku WŁ./WYŁ. wentylatora. Jak na filmie. Nie jestem jednak pewien, jak można by to zrobić.

    Chciałbym również przenieść ten skrypt do Home Assistant i sprawić, by działał tak samo i miał ładny GUI. Myślę, że jest to bardziej problem z konfiguracją HA niż OpenBK.

    Zaktualizowałem oryginalny post i powinien on pozwolić każdemu, kto ma urządzenie, na korzystanie z niego prawie tak, jak funkcjonowało oryginalne oprogramowanie układowe. Będę dalej kombinował z tym, dopóki nie zrobię tego dobrze. Może jednak zrobię sobie kilkudniową przerwę, żeby oczyścić umysł. To było ciężkie dla mojego biednego mózgu.

    Dziękuję za wszelką dotychczasową pomoc.
  • #12 20469172
    p.kaczmarek2
    Moderator Smart Home
    Czy możesz opublikować aktualną wersję skryptu?

    Jeśli chcesz przełączać wiele kanałów, wykonaj:
    
    backlog toggleChannel 10; toggleChannel 12; toggleChannel 14
    


    Cytat:

    Chciałbym również, aby przełącznik działał jak oryginalne oprogramowanie. Oznacza to, że musisz nacisnąć przycisk WŁ./WYŁ. wentylatora, aby użyć wentylatora, a następnie użyć przycisku strzałki, aby zmienić prędkość. Przycisk strzałki jest zasadniczo zablokowany do momentu naciśnięcia przycisku WŁ./WYŁ. wentylatora. Jak na filmie. Nie jestem jednak pewien, jak można by to zrobić.

    Powiedzmy, że chcesz coś zrobić tylko wtedy, gdy kanał10 jest różny od zera. Następnie możesz zrobić:
    
    addEventHandler OnPress 24 if $CH10 then Do_Cycle_Press
    

    Ogólna składnia to:
    
    if CONDITION_SINGLE_WORD then COMMAND_SINGLE_WORD
    

    Pamiętaj, że możesz użyć „aliasu”, aby skrócić długie ciągi poleceń do krótkich instrukcji

    Dodano po 1 [minutach]:

    Warunek:

    mogą również przyjmować ciąg znaków w cudzysłowie i są oceniane jako polecenie, patrz:
    https://github.com/openshwprojects/OpenBK7231T_App/blob/main/src/selftest/selftest_if.c
    Pomogłem? Kup mi kawę.
  • #13 20469187
    wolfieeewolf
    Poziom 11  
    Aktualny skrypt znajduje się poniżej.

    Nie dodałeś jeszcze swoich ostatnich zmian w odpowiedziach. Jest około 1:30 w nocy, więc idę spać. Jutro się z tym pobawie.

    // display on gui
    setChannelType 10 OffLowMidHigh
    setChannelLabel 1 "Light Relay"
    setChannelLabel 2 "Min Fan 1 Relay"
    setChannelLabel 3 "Min Fan 2 Relay"
    setChannelLabel 4 "Max Fan Relay"
    
    // hide raw relay channel buttons from GUI
    // setChannelVisible 1 0
    // setChannelVisible 2 0
    // setChannelVisible 3 0
    // setChannelVisible 4 0
    
    //startDriver httpButtons
    setButtonEnabled 1 1
    setButtonEnabled 2 1
    setButtonEnabled 10 1
    
    // button colour
    addChangeHandler Channel1 == 0 setButtonColor 1 red
    addChangeHandler Channel1 != 0 setButtonColor 1 green
    addChangeHandler Channel2 == 0 setButtonColor 2 red
    addChangeHandler Channel2 != 0 setButtonColor 2 green
    addChangeHandler Channel3 == 0 setButtonColor 2 red
    addChangeHandler Channel3 != 0 setButtonColor 2 green
    addChangeHandler Channel4 == 0 setButtonColor 2 red
    addChangeHandler Channel4 != 0 setButtonColor 2 green
    
    // off by default
    setButtonColor 1 red
    setButtonColor 2 red
    
    //enables Light button on GUI - not working unsure why
    setButtonLabel 1 "Light ON/OFF"
    
    // fan on/off setup
    // power press will toggle channel 2,3 and 4 - so if non zero it goes to 0, if zero, then goes to 1
    // So far only toggles channel 4. have tried ; and , to make multiple toggleChannels but not being recognised
    
    setButtonLabel 2 "Fan ON/OFF"
    setButtonCommand 2 Do_Power_Press
    addEventHandler OnClick 1 Do_Power_Press
    alias Do_Power_Press toggleChannel 4
    
    
    // fan cycle setup
    // cycle press will cycle values 0, 1, 2 and 3 for channel 10
    // needs to reset to 1 on Do_Power_Press ??? not sure how to do this
    // AddChannel [ChannelIndex][ValueToAdd][ClampMin][ClampMax][bWrapInsteadOfClamp]
    
    setButtonLabel 10 "Next Fan Speed"
    setButtonCommand 10 Do_Cycle_Press
    addEventHandler OnClick 8 Do_Cycle_Press
    alias Do_Cycle_Press addChannel 10 1 0 3 1
    
    // translate fan state (0-4) to relay states
    // This will check for channel 10 change and map it to channels for relays.
    
    // Fan off - all channels off
    addChangeHandler Channel10 == 0 backlog SetChannel 2 0; SetChannel 3 0; SetChannel 4 0
    
    // Fan on Low - Ch2 on
    addChangeHandler Channel10 == 1 backlog SetChannel 2 1; SetChannel 3 0; SetChannel 4 0
    
    // Fan on Medium - Ch2, Ch3 on
    addChangeHandler Channel10 == 2 backlog SetChannel 2 1; SetChannel 3 1; SetChannel 4 0
    
    // Fan on High - Ch2, 3, 4 on
    addChangeHandler Channel10 == 3 backlog SetChannel 2 1; SetChannel 3 1; SetChannel 4 1
    
    
  • #14 20469285
    p.kaczmarek2
    Moderator Smart Home
    Może wymień:
    
    alias Do_Cycle_Press addChannel 10 1 0 3 1
    

    z
    
    alias Really_Do_Cycle_Press addChannel 10 1 0 3 1
    alias Do_Cycle_Press if $CH4 then Really_Do_Cycle_Press
    

    ponieważ wydaje się, że twój $ CH4 jest zmienną POWER.
    Pomogłem? Kup mi kawę.
  • #15 20470084
    wolfieeewolf
    Poziom 11  
    Wypróbowałem zmiany, które zasugerowałeś, podczas gdy działały, ale nie działały tak, jak miałem nadzieję.


    Przycisk wentylatora włącza/wyłącza teraz kanały przekaźnikowe 2,3 i 4

    Przycisk cyklu wentylatora przełącza cykle na wysokie, średnie, niskie i wyłączone.

    Kiedy łączysz dwie sekcje, napotykam problemy.

    Naciśnij przycisk wentylatora – włączają się kanały 2,3 i 4
    Następnie naciśnij przycisk cyklu wentylatora – Ch2,3 on, 4 off
    naciśnij ponownie przycisk cyklu wentylatora – Ch2 włączony, 3 i 4 wyłączony
    Naciśnij przycisk wentylatora – Ch 2 wyłączony, 3 i 4 włączony.

    Przycisk wentylatora po prostu włącza/wyłącza Ch2, 3 i 4 w zależności od ich statusu. Próbowałem temu zaradzić, pisząc instrukcję typu If this then that, ale skończyło się na tym, że musiałem to zrobić dla każdej możliwej kombinacji, co po prostu stworzyło niechlujny, trudny do naśladowania skrypt, który ostatecznie nie zadziałał.

    Udało mi się sprawić, aby przycisk cyklu wentylatora działał tylko wtedy, gdy przycisk wentylatora jest włączony, ale w powyższym problemie pominąłem to w skrypcie, ponieważ spowodowało to więcej problemów, niż było to warte.

    Zmodyfikowałem skrypt, aby był dla mnie nieco bardziej zrozumiały podczas testowania powyższego. Wygląda niechlujnie i wiem, że nie tak powinno się to robić, ale działa i obawiam się, że jeśli znowu z tym zadzieram, po prostu to zepsuję, więc zostawiłem to tak, jak jest. Zaktualizowałem oryginalny post o nowy skrypt.

    Nowe skrypty poniżej dla zachowania ciągłości postów

    /// Display the labels for each channel on the GUI
    setChannelType 10 OffLowMidHigh
    setChannelLabel 1 "Light Relay"
    setChannelLabel 2 "Min Fan 1 Relay"
    setChannelLabel 3 "Min Fan 2 Relay"
    setChannelLabel 4 "Max Fan Relay"
    
    // Hide the raw relay channel buttons from the GUI
    setChannelVisible 1 0
    setChannelVisible 2 0
    setChannelVisible 3 0
    setChannelVisible 4 0
    
    // Start the HTTP button driver
    startDriver httpButtons
    
    // Set up the Light button on the GUI
    setButtonLabel 1 "Light ON/OFF"
    setButtonCommand 1 Do_Light_Press
    setButtonEnabled 1 1
    setButtonColor 1 red
    addChangeHandler Channel1 == 0 setButtonColor 1 red
    addChangeHandler Channel1 != 0 setButtonColor 1 green
    addEventHandler OnClick 14 Do_Light_Press
    alias Do_Light_Press toggleChannel 1
    
    // Set up the Fan ON/OFF button on the GUI
    setButtonLabel 2 "Fan ON/OFF"
    setButtonCommand 2 Do_Power_Press
    setButtonEnabled 2 1
    setButtonColor 2 red
    addChangeHandler Channel2 == 0 setButtonColor 2 red
    addChangeHandler Channel2 != 0 setButtonColor 2 green
    addChangeHandler Channel3 == 0 setButtonColor 2 red
    addChangeHandler Channel3 != 0 setButtonColor 2 green
    addChangeHandler Channel4 == 0 setButtonColor 2 red
    addChangeHandler Channel4 != 0 setButtonColor 2 green
    addEventHandler OnClick 1 Do_Power_Press
    alias Do_Power_Press backlog toggleChannel 2; toggleChannel 3; toggleChannel 4
    
    // Set up the Fan speed cycle button on the GUI
    setButtonLabel 10 "Next Fan Speed"
    setButtonCommand 10 Do_Cycle_Press
    setButtonEnabled 10 1
    addEventHandler OnClick 8 Do_Cycle_Press
    alias Do_Cycle_Press addChannel 10 1 0 3 1
    
    // Set up change handlers for the fan speed options
    addChangeHandler Channel10 == 0 backlog SetChannel 2 0; SetChannel 3 0; SetChannel 4 0
    addChangeHandler Channel10 == 1 backlog SetChannel 2 1; SetChannel 3 1; SetChannel 4 1
    addChangeHandler Channel10 == 2 backlog SetChannel 2 1; SetChannel 3 1; SetChannel 4 0
    addChangeHandler Channel10 == 3 backlog SetChannel 2 1; SetChannel 3 0; SetChannel 4 0
    
  • #16 20537905
    wolfieeewolf
    Poziom 11  
    Wciąż próbuję uporządkować ten dramat prędkości wentylatora. Próbowałem użyć skryptów typu Tasmota, ale nie sądzę, żeby OpenBK bardzo to lubił.

    Musi podążać za logiką w tym zakresie strona

    // Display the labels for each channel on the GUI
    setChannelType 10 OffLowMidHigh
    setChannelLabel 1 "Light Relay"
    setChannelLabel 2 "Min Fan 1 Relay"
    setChannelLabel 3 "Min Fan 2 Relay"
    setChannelLabel 4 "Max Fan Relay"
    
    // Hide the raw relay channel buttons from the GUI
    setChannelVisible 1 0
    setChannelVisible 2 0
    setChannelVisible 3 0
    setChannelVisible 4 0
    
    // Start the HTTP button driver
    startDriver httpButtons
    
    // Set up the Light button on the GUI
    setButtonLabel 1 "Light ON/OFF"
    setButtonCommand 1 Do_Light_Press
    setButtonEnabled 1 1
    setButtonColor 1 red
    addChangeHandler Channel1 == 0 setButtonColor 1 red
    addChangeHandler Channel1 != 0 setButtonColor 1 green
    addEventHandler OnClick 14 Do_Light_Press
    alias Do_Light_Press power1 toggle
    
    // Set up the Fan ON/OFF button on the GUI
    setButtonLabel 2 "Fan ON/OFF"
    setButtonCommand 2 Do_Power_Press
    setButtonEnabled 2 1
    setButtonColor 2 red
    addChangeHandler Channel2 == 0 setButtonColor 2 red
    addChangeHandler Channel2 != 0 setButtonColor 2 green
    addChangeHandler Channel3 == 0 setButtonColor 2 red
    addChangeHandler Channel3 != 0 setButtonColor 2 green
    addChangeHandler Channel4 == 0 setButtonColor 2 red
    addChangeHandler Channel4 != 0 setButtonColor 2 green
    addEventHandler OnClick 1 Do_Power_Press
    alias Do_Power_Press power2 toggle; power3 toggle; power4 toggle
    
    // Set up the Fan speed cycle button on the GUI
    setButtonLabel 10 "Next Fan Speed"
    setButtonCommand 10 Do_Cycle_Press
    setButtonEnabled 10 1
    addEventHandler OnClick 8 Do_Cycle_Press
    alias Do_Cycle_Press event p=%var1%
    
    // Set up change handlers for the fan speed options
    ON EVENT#p=0 DO power2 OFF ENDON
    ON EVENT#p=0 DO power3 OFF ENDON
    ON EVENT#p=0 DO power4 OFF ENDON
    ON EVENT#p=1 DO power2 ON ENDON
    ON EVENT#p=1 DO power3 ON ENDON
    ON EVENT#p=1 DO power4 ON ENDON
    ON EVENT#p=2 DO power2 ON ENDON
    ON EVENT#p=2 DO power3 ON ENDON
    ON EVENT#p=2 DO power4 OFF ENDON
    ON EVENT#p=3 DO power2 ON ENDON
    ON EVENT#p=3 DO power3 OFF ENDON
    ON EVENT#p=3 DO power4 OFF ENDON
    


    Zgaduję, że muszę to zmienić na jakieś polecenie toggleChannel, aby działało. Będzie próbować.
  • #17 20626915
    drkarl
    Poziom 4  
    Gdzie jesteś w stanie sprawić, żeby to działało poprawnie?
  • #18 20626929
    p.kaczmarek2
    Moderator Smart Home
    Witam, nie widziałem ostatniego posta w tym temacie.
    Ta linia:
    
    ON EVENT#p=0 DO power2 OFF ENDON
    
    nie będzie jeszcze działać w OBK.
    Aby przełączyć kanał, możesz:
    
    POWER Toggle
    

    Lub
    
    toggleChannel 3
    

    gdzie 3 to indeks kanału.
    Zobacz więcej przykładów na:
    https://github.com/openshwprojects/OpenBK7231T_App/blob/main/docs/autoexecExamples.md

    Daj mi znać, jeśli problem nadal występuje. Mógłbym spróbować pomóc bardziej, ale jak wspomniano powyżej, jest to nieco problematyczne bez posiadania tego samego urządzenia pod ręką.
    Pomogłem? Kup mi kawę.
  • #19 20631248
    drkarl
    Poziom 4  
    Zaktualizowane skrypty — wydaje się działać, gdy urządzenie jest wyjęte z pudełka z 1 wyjątkiem, patrz poniżej.

    Cytat:
    // Wyświetl etykiety dla każdego kanału w GUI
    setChannelLabel 1 „Przekaźnik świetlny”
    setChannelLabel 2 „Przekaźnik min wentylatora 1”
    setChannelLabel 3 „Przekaźnik środkowego wentylatora 2”
    setChannelLabel 4 „Maksymalny przekaźnik wentylatora”
    setChannelType 5 Przełącz
    setChannelLabel 5 „Wentylator włączony/wyłączony”
    setChannelType 10 OffLowMidHigh

    // Ukryj przyciski surowego kanału przekaźnikowego w GUI
    setChannelVisible 1 0
    setChannelVisible 2 0
    setChannelVisible 3 0
    setChannelVisible 4 0
    setChannelVisible 5 0

    // Uruchom sterownik przycisku HTTP
    StartDriver httpButtons

    // Skonfiguruj przycisk Light w GUI
    setButtonLabel 1 „Światło włączone/wyłączone”
    setButtonCommand 1 Do_Light_Press
    setButtonEnabled 1 1
    setButtonColor 1 czerwony
    addChangeHandler Channel1 == 0 setButtonColor 1 czerwony
    addChangeHandler Channel1 != 0 setButtonColor 1 zielony
    addEventHandler OnClick 14 Do_Light_Press
    alias Do_Light_Press toggleChannel 1

    // Skonfiguruj przycisk włączania/wyłączania wentylatora w interfejsie GUI
    setButtonLabel 2 „Wentylator WŁ./WYŁ.”
    setButtonCommand 2 Do_Power_Press
    setButtonEnabled 2 1
    setButtonColor 2 czerwony
    addChangeHandler Channel2 == 0 setButtonColor 2 czerwony
    addChangeHandler Channel2 != 0 setButtonColor 2 zielony
    addEventHandler OnClick 1 Do_Power_Press
    alias Do_Power_Press toggleChannel 5

    // Skonfiguruj przycisk cyklu prędkości wentylatora w interfejsie GUI
    setButtonLabel 10 „Następna prędkość wentylatora”
    setButtonCommand 10 Do_Cycle_Press
    setButtonEnabled 10 1
    addEventHandler OnClick 8 Do_Cycle_Press
    alias Do_Cycle_Press dodaj kanał 10 -1 1 3 1

    // Skonfiguruj procedury obsługi zmian dla opcji prędkości wentylatora
    addChangeHandler Channel10 == 0 zaległości SetChannel 2 0; Ustaw kanał 3 0; Ustaw kanał 4 0; Ustaw kanał 5 0
    addChangeHandler Channel10 == 1 zaległości SetChannel 2 1; Ustaw kanał 3 0; Ustaw kanał 4 0; Ustaw kanał 5 1
    addChangeHandler Channel10 == 2 zaległości SetChannel 2 1; Ustaw kanał 3 1; Ustaw kanał 4 0; Ustaw kanał 5 1
    addChangeHandler Channel10 == 3 zaległości SetChannel 2 1; Ustaw kanał 3 1; Ustaw kanał 4 1; Ustaw kanał 5 1
    addChangeHandler Channel5 == 0 zaległości SetChannel 10 0
    addChangeHandler Channel5 == 1 zaległości SetChannel 10 3


    Kod: YAML
    Zaloguj się, aby zobaczyć kod


    Zachowanie niefabryczne — przycisk przełączania prędkości wentylatora
    Wydanie:
    Przycisk cyklu prędkości wentylatora również włącza wentylator
    Oczekiwane zachowanie:
    Przycisk działa tylko i przełącza prędkość wentylatora JEŚLI wentylator jest włączony, tj. Channel10 != 0
    Może instrukcja IF THEN ELSE
    if 'Channel10 != 0' then 'alias Do_Cycle_Press addChannel 10 -1 1 3 1 ' else 'setChannel 10 0'
  • #20 20632147
    p.kaczmarek2
    Moderator Smart Home
    Mogę dodać typ kanału „MaxMedMin” lub coś takiego, jeśli chcesz zamówić inne prędkości.

    Twoja składnia if jest niepoprawna.
    Chcesz coś takiego:
    
    alias Do_Cycle_Press_Ext if $CH10!=0 then Do_Cycle_Press 
    
    Pomogłem? Kup mi kawę.
  • #21 20632399
    drkarl
    Poziom 4  
    Cytat:
    Mogę dodać typ kanału „MaxMedMin” lub coś takiego, jeśli chcesz zamówić inne prędkości.

    Nie, nie sądzę, żeby to było konieczne. W rzeczywistości może to powodować problem z wyborem prędkości w Home Assistant.
    Channel10 = 1 to Max w aplikacji internetowej, ale pokazuje Min w Asystencie domowym
    Channel10 = 3 byłby Min w aplikacji internetowej, ale pokazałby Max w Asystencie domowym

    Cytat:
    Twoja składnia if jest niepoprawna.
    Chcesz coś takiego:
    alias Do_Cycle_Press_Ext jeśli $CH10!=0 to Do_Cycle_Press

    Nie powiodło się, przepraszam, wydaje mi się, że nie rozumiem poprawnie składni, próbowałem wykonać następujące czynności

    Przegrany
    /
    Cytat:
    / Skonfiguruj przycisk cyklu prędkości wentylatora w interfejsie GUI
    setButtonLabel 10 „Następna prędkość wentylatora”
    setButtonCommand 10 Do_Cycle_Press
    setButtonEnabled 10 1
    addEventHandler OnClick 8 Do_Cycle_Press
    alias Do_Cycle_Press jeśli $CH10!=0 to Do_Cycle_Press addChannel 10 -1 1 3 1


    Przegrany
    /
    Cytat:
    / Skonfiguruj przycisk cyklu prędkości wentylatora w interfejsie GUI
    setButtonLabel 10 „Następna prędkość wentylatora”
    setButtonCommand 10 Do_Cycle_Press
    setButtonEnabled 10 1
    addEventHandler OnClick 8 Do_Cycle_Press
    alias Do_Cycle_Press dodaj kanał 10 -1 1 3 1
    alias Do_Cycle_Press_Ext jeśli $CH10!=0 to Do_Cycle_Press
  • #22 20632483
    p.kaczmarek2
    Moderator Smart Home
    Hej, tworzysz nowe polecenie z aliasem, ale go nie używasz! Nadal używasz starego aliasu bez warunku. Zobacz zrzut ekranu:
    Deta Grid Connect Inteligentny kontroler prędkości wentylatora z dotykowym włącz
    Pomogłem? Kup mi kawę.
  • #23 20632523
    drkarl
    Poziom 4  
    ZWYCIĘSTWO! Dziękujemy za wskazówki, wydaje się, że wszystko działa zgodnie z dostawą OEM. W najbliższych dniach będę kontynuował testy.
    Jeśli widzisz jakieś oczywiste oczyszczenie skryptu lub ulepszenia, proszę o poradę.

    Przycisk światła — włącza/wyłącza światło
    Przycisk wentylatora — włącza i wyłącza wentylator przy prędkości MAKSYMALNEJ
    Przyciski prędkości — działają TYLKO, gdy wentylator jest WŁĄCZONY i przełączają wentylator w kolejności MAX -> Med -> Min ->Max

    SCENARIUSZ
    // Display the labels for each channel on the GUI
    setChannelLabel 1 "Light Relay"
    setChannelLabel 2 "Min Fan 1 Relay"
    setChannelLabel 3 "Mid Fan 2 Relay"
    setChannelLabel 4 "Max Fan Relay"
    setChannelType 5 Toggle
    setChannelLabel 5 "Fan ON/OFF"
    setChannelType 10 OffLowMidHigh
    
    // Hide the raw relay channel buttons from the GUI
    setChannelVisible 1 0
    setChannelVisible 2 0
    setChannelVisible 3 0
    setChannelVisible 4 0
    setChannelVisible 5 0
    
    // Start the HTTP button driver
    startDriver httpButtons
    
    // Set up the Light button on the GUI
    setButtonLabel 1 "Light ON/OFF"
    setButtonCommand 1 Do_Light_Press
    setButtonEnabled 1 1
    setButtonColor 1 red
    addChangeHandler Channel1 == 0 setButtonColor 1 red
    addChangeHandler Channel1 != 0 setButtonColor 1 green
    addEventHandler OnClick 14 Do_Light_Press
    alias Do_Light_Press toggleChannel 1
    
    // Set up the Fan ON/OFF button on the GUI
    setButtonLabel 2 "Fan ON/OFF"
    setButtonCommand 2 Do_Power_Press
    setButtonEnabled 2 1
    setButtonColor 2 red
    addChangeHandler Channel2 == 0 setButtonColor 2 red
    addChangeHandler Channel2 != 0 setButtonColor 2 green
    addEventHandler OnClick 1 Do_Power_Press
    alias Do_Power_Press toggleChannel 5
    
    // Set up the Fan speed cycle button on the GUI
    setButtonLabel 10 "Next Fan Speed"
    setButtonCommand 10 Do_Cycle_Press_Ext
    setButtonEnabled 10 1
    addEventHandler OnClick 8 Do_Cycle_Press_Ext
    alias Do_Cycle_Press addChannel 10 -1 1 3 1 
    alias Do_Cycle_Press_Ext if $CH10!=0 then Do_Cycle_Press 
    
    
    // Set up change handlers for the fan speed options
    addChangeHandler Channel10 == 0 backlog SetChannel 2 0; SetChannel 3 0; SetChannel 4 0; SetChannel 5 0
    addChangeHandler Channel10 == 1 backlog SetChannel 2 1; SetChannel 3 0; SetChannel 4 0; SetChannel 5 1
    addChangeHandler Channel10 == 2 backlog SetChannel 2 1; SetChannel 3 1; SetChannel 4 0; SetChannel 5 1
    addChangeHandler Channel10 == 3 backlog SetChannel 2 1; SetChannel 3 1; SetChannel 4 1; SetChannel 5 1
    addChangeHandler Channel5 == 0 backlog SetChannel 10 0
    addChangeHandler Channel5 == 1 backlog SetChannel 10 3



    Integracja MQTT asystenta domowego działa zgodnie z powyższą konfiguracją przycisku OEM
    Światło — przełącza światło
    Wentylator — włącza i wyłącza wentylator przy maksymalnej prędkości
    Wybór prędkości — cykle zmniejszania prędkości wentylatora od MAX -> Med -> Min -> MAX. Jeśli wentylator jest wyłączony, dowolna wybrana prędkość włącza wentylator na MAX (w celu skrócenia czasu uruchamiania i poboru prądu), a następnie cyklicznie jak powyżej.

    Kod: YAML
    Zaloguj się, aby zobaczyć kod
  • #24 20632943
    wolfieeewolf
    Poziom 11  
    Przetestowałem ten skrypt na wszystkich 5 moich urządzeniach i działa zgodnie z planem.

    Byłby zainteresowany sprawdzeniem, czy istnieje sposób, aby oprogramowanie układowe wysyłało niestandardowy skrypt MQTT. Nie jestem pewien, jak można to zrobić. być może dać opcję wysłania skryptu domyślnego lub niestandardowego. Rozwiązałoby to problem wyświetlania 4 dodatkowych przełączników w asystencie domowym.

    Ponieważ możesz pisać skrypty przycisków dla tego oprogramowania układowego, byłoby interesujące zobaczyć, czy mógłbym sterować inteligentną diodową kulą ziemską za pomocą przycisku zasilania światła. To powstrzymałoby moją żonę i dzieci przed zabiciem mocy na świecie, czego jestem pewien, że wszyscy tego doświadczyliśmy. Byłoby wspaniale, gdyby przycisk zasilania wyłączał kulę ziemską lub przyciemniał kulę ziemską, przytrzymując przycisk. Można nawet ustawić sceny z podwójnymi / potrójnymi kliknięciami.

    Jestem pewien, że jest to już możliwe, wystarczy trochę więcej poszukać, aby to znaleźć.

    Ponieważ skrypt autoexec i skrypt MQTT działają zgodnie z planem, zaktualizuję oryginalny post, aby każdy nowy użytkownik tego urządzenia nie musiał przekopywać się przez post, aby znaleźć te informacje.

    Dziękuję wszystkim za ciężką pracę nad tym. Prawie zrezygnowałem z prób uruchomienia go.
  • #25 20633597
    p.kaczmarek2
    Moderator Smart Home
    Bardzo się cieszę, że w końcu udało nam się to wspólnie uporządkować. Daj mi znać, jeśli coś jeszcze jest potrzebne.

    wolfieeewolf napisał:

    Byłby zainteresowany sprawdzeniem, czy istnieje sposób, aby oprogramowanie układowe wysyłało niestandardowy skrypt MQTT. Nie jestem pewien, jak można to zrobić. być może dać opcję wysłania skryptu domyślnego lub niestandardowego. Rozwiązałoby to problem wyświetlania 4 dodatkowych przełączników w asystencie domowym.

    Czy masz na myśli niestandardowy yaml Home Assistant Discovery? Planuje się, że będzie to możliwe za pośrednictwem aplikacji internetowej.



    wolfieeewolf napisał:

    Ponieważ możesz pisać skrypty przycisków dla tego oprogramowania układowego, byłoby interesujące zobaczyć, czy mógłbym sterować inteligentną kulą ziemską za pomocą przycisku zasilania światła. To powstrzymałoby moją żonę i dzieci przed zabiciem mocy na świecie, czego jestem pewien, że wszyscy tego doświadczyliśmy. Byłoby wspaniale, gdyby przycisk zasilania wyłączał kulę ziemską lub przyciemniał kulę ziemską, przytrzymując przycisk. Można nawet ustawić sceny z podwójnymi / potrójnymi kliknięciami.

    Więc masz jedno urządzenie z przyciskiem i chcesz przełączyć drugie urządzenie z tego?
    Możesz użyć WyślijPobierz w tym celu zobacz ten temat:
    https://www.elektroda.com/rtvforum/topic3892160.html#20012428
    Deta Grid Connect Inteligentny kontroler prędkości wentylatora z dotykowym włącz
    Aby zapoznać się ze zdarzeniami kliknięć, zobacz:
    https://www.elektroda.com/rtvforum/find.php?q=on3click

    Należy jednak zauważyć, że zdarzenia przycisków nie działają z TuyaMCU z powodu ograniczeń TuyaMCU. To tylko protokół UART. Nie powiadamia OBK o poszczególnych zdarzeniach kliknięcia przycisku. Zdarzenia On3Click itp. są dostępne w urządzeniach OBK, które używają roli Btn dla przycisków (i podobnych ról), a nie TuyaMCU.
    Pomogłem? Kup mi kawę.
  • #26 20633598
    wolfieeewolf
    Poziom 11  
    p.kaczmarek2 napisał:
    Czy masz na myśli niestandardowy yaml Home Assistant Discovery? Planuje się, że będzie to możliwe za pośrednictwem aplikacji internetowej.


    Prawidłowy. Byłoby wspaniale mieć możliwość wysłania automatycznie wygenerowanego yamla lub niestandardowego. To rozwiązałoby wiele moich problemów z podwojeniem przełączników w asystencie domowym.

    p.kaczmarek2 napisał:
    Więc masz jedno urządzenie z przyciskiem i chcesz przełączyć drugie urządzenie z tego?
    Możesz do tego użyć SendGet, zobacz ten temat:
    https://www.elektroda.com/rtvforum/topic3892160.html#20012428

    Aby zapoznać się ze zdarzeniami kliknięć, zobacz:
    https://www.elektroda.com/rtvforum/find.php?q=on3click

    Należy jednak zauważyć, że zdarzenia przycisków nie działają z TuyaMCU z powodu ograniczeń TuyaMCU. To tylko protokół UART. Nie powiadamia OBK o poszczególnych zdarzeniach kliknięcia przycisku. Zdarzenia On3Click itp. są dostępne w urządzeniach OBK, które używają roli Btn dla przycisków (i podobnych ról), a nie TuyaMCU.


    Poszedłem szukać i znalazłem polecenie SendGet niedługo po napisaniu posta. Trzeba tylko wymyślić, jak teraz wysyłać polecenia HTTP do urządzeń Zigbee. Mógłbym użyć niektórych haków internetowych, ale nie są one najbezpieczniejszym sposobem robienia tego przez Internet. Znalazłem wiele rzeczy na forach asystentów domowych na ten temat, więc jeśli uda mi się to uruchomić, zaktualizuję to tutaj.

    Jeszcze raz dziękuję za pomoc w sprawie, aby to urządzenie działało tak, jak powinno.
  • #27 20633818
    p.kaczmarek2
    Moderator Smart Home
    Nie wiem obecnie, jak wysyłać polecenia HTTP do urządzeń Zigbee, więc jeśli to rozgryziesz, daj mi znać. Możesz również rozważyć opublikowanie go jako osobnego posta w naszej sekcji samouczków. Próbuję stworzyć wiele samouczków z pomocą moich współpracowników, ale myślę, że nadal przydałaby się pomoc innych użytkowników.

    Czy możesz podać więcej szczegółów na temat tego, co rozumiesz przez „podwójne przełączniki”? Czy próbujesz jednocześnie używać zarówno ręcznego YAML, jak i Hass Discovery?
    Pomogłem? Kup mi kawę.
  • #28 20634842
    wolfieeewolf
    Poziom 11  
    p.kaczmarek2 napisał:
    Nie wiem obecnie, jak wysyłać polecenia HTTP do urządzeń Zigbee, więc jeśli to rozgryziesz, daj mi znać. Możesz również rozważyć opublikowanie go jako osobnego posta w naszej sekcji samouczków. Próbuję stworzyć wiele samouczków z pomocą moich współpracowników, ale myślę, że nadal przydałaby nam się pomoc innych użytkowników


    myślę, że muszę użyć curl, aby zigbee zadziałało. wciąż testuje, ale na razie wygląda na to, jak to zrobić. Również tak, zrobię kolejny post, jeśli to rozpracuję.

    curl -X POST -H "Content-Type: application/json" -H "x-ha-access: YOUR_API_PASSWORD" -d '{"entity_id": "light.your_light_entity_id", "state": "on"}' http://localhost:8123/api/services/light/turn_on


    p.kaczmarek2 napisał:
    Czy możesz podać więcej szczegółów na temat tego, co rozumiesz przez „podwojenie przełączników”? Czy próbujesz jednocześnie używać zarówno ręcznego YAML, jak i Hass Discovery?


    Możesz zobaczyć, że mam wiele wpisów dotyczących wentylatorów i świateł, które automatycznie pojawiają się na pulpicie nawigacyjnym w Asystencie domowym. Pierwsze dwa przełączniki „Fan” i „Light” zostały ustawione ręcznie przy użyciu pliku config.yaml. Reszta jest automatycznie wykrywana przez brokera MQTT. Byłoby miło móc wyizolować, jakie dane MQTT są wysyłane do asystenta domowego lub jeszcze lepiej pozwolić nam wysyłać niestandardowe dane z internetowego interfejsu użytkownika i ignorować dane generowane automatycznie. Mam nadzieję, że to ma sens.

    Deta Grid Connect Inteligentny kontroler prędkości wentylatora z dotykowym włącz Deta Grid Connect Inteligentny kontroler prędkości wentylatora z dotykowym włącz

    Kilka postów temu pisałeś, że pracujesz nad czymś takim. Czy jest tutaj post, do którego możemy przenieść ten wątek, aby nie zalewać tego wątku postami nie na temat?
  • #29 20634985
    p.kaczmarek2
    Moderator Smart Home
    Myślę, że możesz otworzyć nowy temat z dokładną prośbą/pomysłem na funkcję, obecnie nie ma na to tematu.

    Ale powiem tutaj, że generalnie nie chciałem, aby ludzie używali jednocześnie wykrywania HASS i konfiguracji yaml. Jeśli używasz konfiguracji yaml, obecne podejście do rozwiązania tego problemu polegałoby na ręcznym dodaniu wszystkich punktów danych do yaml i nie korzystaniu z wykrywania HA.
    Pomogłem? Kup mi kawę.
  • #30 20645012
    drkarl
    Poziom 4  
    +1 za używanie tylko ręcznej konfiguracji mqtt, masz pełną kontrolę nad tym, co jest następnie udostępniane asystentowi domowemu. Dlaczego więc nie użyć automatyzacji w ramach asystenta domowego do sterowania urządzeniem ZigBee?
REKLAMA