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

Prosta automatyzacja chłodzenia na dwóch urządzeniach OpenBeken bez Home Assistant

p.kaczmarek2 28 Gru 2024 23:34 1815 2

TL;DR

  • OpenBeken łączy miernik mocy LSPA9 i przekaźnik, tworząc prostą automatyzację chłodzenia laptopa bez Home Assistant.
  • Pierwsze urządzenie wysyła przez HTTP GET wartość $power do kanału 2, a drugie porównuje ją z progiem i przełącza przekaźnik w LittleFS.
  • Skrypt sprawdza stan mniej więcej co 1 sekundę, a kanały 1–4 zapisano jako Toggle, Toggle, Power i TextField.
  • Tryb automatyczny i ręczny działają w GUI, a tę samą logikę można przenieść z pomiaru mocy na temperaturę z DHT lub DS18B20.
  • Napięcie wyższe niż 5V może spalić LDO 3.3V i moduł WiFi, więc dla 12V potrzebny jest konwerter 12V na 3,3V.
Wygenerowane przez model językowy.
REKLAMA
Treść została przetłumaczona angielski » polski Zobacz oryginalną wersję tematu
📢 Słuchaj (AI):
  • Interfejs użytkownika dla automatyzacji chłodzenia z wykorzystaniem OpenBeken.
    OpenBeken może być używany do tworzenia prostych automatyzacji obejmujących wiele urządzeń bez Home Assistant. Nie jest wymagany żaden centralny serwer, wystarczy mieć sflashowane urządzenia Tuya. Tutaj pokażę jedną z takich automatyzacji, w której wykorzystywane są dwa urządzenia - pierwszym jest miernik mocy, używany do pomiaru zużycia energii przez urządzenie, a drugim jest przekaźnik używany do włączania i wyłączania chłodzenia. Chłodzenie zostanie włączone, gdy pobór mocy przekroczy określony próg.

    Ta prosta konfiguracja jest wymagana dla mojej karty chłodzenia laptopa DIY, jak pokazano tutaj:
    Czy podstawka chłodząca DIY wykonana z wentylatorów 12V pomoże w przegrzewaniu się laptopa?

    Najpierw zastanówmy się nad wymaganiami:
    - chłodzenie będzie używane w prostym trybie włącz/wyłącz, bez regulacji PWM
    - pierwsze urządzenie będzie tylko mierzyć pobór mocy i wysyłać je do drugiego urządzenia
    - drugie urządzenie będzie oferować tryb automatyczny lub ręczny, w trybie automatycznym będzie porównywać moc z podanym progiem i włączać przekaźnik, jeśli próg zostanie przekroczony
    W razie potrzeby to samo można zrobić z bardziej niezawodnym pomiarem temperatury.

    Rozważmy teraz najpierw dostępny sprzęt.
    - Laptop jest chłodzony przez wentylatory, które pracują z napięciem 5V. Jest to ważna informacja, ponieważ zostanie ona później wykorzystana do uproszczenia obwodu
    Wentylatory 12V zamontowane na drewnianej powierzchni w konstrukcji DIY.
    - LSPA9 wtyczka mierzy zużycie energii:
    Ekran pomiaru energii urządzenia BK7231T_LSPA9_BL0937.
    - urządzenie DIY kontroluje moc wentylatorów, urządzenie może pracować bezpośrednio na zasilaniu 5V, nie wymaga zasilania sieciowego

    Krótkie wprowadzenie
    OpenBeken działa obecnie na wielu różnych modułach WiFi. Moduły te można łatwo podłączyć do Home Assistant, ale nie jest to konieczne do prostych automatyzacji. OpenBeken obsługuje system skryptów poprzez LittleFS, tutaj można zobaczyć kilka przykładowych skryptów. Więcej informacji można znaleźć w naszej dokumentacji:
    https://github.com/openshwprojects/OpenBK7231T_App/blob/main/docs/README.md

    DIY urządzenie do sterowania wentylatorami
    Moje obecne wentylatory nie działają dobrze z PWM, więc zdecydowałem się na przekaźnik. W przyszłości mogę wprowadzić również sterowanie PWM, ale teraz potrzebowałem tylko podstawowej możliwości ich włączania i wyłączania. Dlatego zdecydowałem się przekonwertować stary smart switch z uszkodzoną przetwornicą 230V na 5V :
    Płytka drukowana z różnymi komponentami elektronicznymi na drewnianym tle.
    Poniższy moduł przełącznika posiada prostą, zasilaną z sieci przetwornicę step down, która dostarcza 5V dla przekaźnika, które jest następnie podawane do 3.3V LDO zasilającego moduł WiFi.
    Widok z bliska na płytkę drukowaną ze ścieżkami i komponentami elektronicznymi.
    W przypadku zasilania całego układu z 5V, pierwsza przetwornica 230V na 5V nie jest potrzebna, ale należy pamiętać, że napięcie wyższe niż 5V może po prostu spalić LDO 3.3V i moduł WiFi . Jeśli chcesz używać napięcia 12V, wymagany jest konwerter napięcia 12V na 3,3V.
    Obwód końcowy:
    Zdjęcie płytki obwodu na drewnianym tle z podłączonymi kablami.
    Zastąpiłem również pełny mostek prostowniczy prostą diodą, ponieważ prąd stały jest tutaj już na wejściu, a dodatkowa dioda jest używana tylko do ochrony przed odwrotną polaryzacją.
    DHT11 wyprowadzony do późniejszych eksperymentów:
    DIY układ elektroniczny z przewodami i komponentami na drewnianym podłożu Interfejs użytkownika OpenBeken z danymi z czujnika DHT11
    Obudowa:
    Zmodyfikowany moduł przełącznika na drewnianym blacie. Przerobiony inteligentny przełącznik z kablami na drewnianym stole .

    Ustawienie pomiaru mocy
    LSPA9 był już sflashowany, potrzebował tylko skryptu do raportowania poboru mocy do urządzenia docelowego.
    Postanowiłem zrobić to za pomocą polecenia HTTP GET ze składnią w stylu Tasmota:
    
    again:
    
    SendGET http://192.168.0.111/cm?cmnd=setChannel%202%20$power
    delay_s 0.5
    
    goto again
    

    Upewnij się, że IP urządzenia docelowego jest poprawnie wpisane w skrypcie, upewnij się również, że się nie zmieni (zrób rezerwację MAC na routerze).
    To w zasadzie wysyła polecenie ustawienia kanału:
    
    setChannel 2 $power
    

    a $power jest rozszerzane do bieżącej wartości mocy z BL0937.

    Konfiguracja urządzenia przekaźnikowego
    Urządzenie przekaźnikowe będzie miało nieco bardziej zaawansowany skrypt.
    Chciałbym, aby skrypt oferował dwa tryby:
    - tryb automatyczny, w którym przekaźnik jest automatycznie ustawiany na otwarty lub zamknięty, w zależności od aktualnego odczytu i podanego marginesu
    - tryb ręczny, w którym użytkownik może dowolnie sterować przekaźnikiem.
    Ponadto chciałbym, aby margines był konfigurowalny w GUI urządzenia.
    Na szczęście wszystko to jest możliwe dzięki typom kanałów OBK:
    https://github.com/openshwprojects/OpenBK7231T_App/blob/main/docs/channelTypes.md
    Zacznijmy pisanie skryptu od określenia kanałów, których potrzebujemy:
    
    // main relay
    setChannelType 1 Toggle
    setChannelLabel 1 Relay
    // working mode
    setChannelType 2 Toggle
    setChannelLabel 2 Automatic Mode
    // received power [W]
    setChannelLabel 3 Power
    setChannelType 3 Power
    // min power to enable cooling
    setChannelType 4 TextField
    setChannelLabel 4 Min Power To Cool
    

    Warto również zapisać te kanały we flashvars, aby były przechowywane między restartami:
    
    // remember channels
    setStartValue 1 -1
    setStartValue 2 -1
    setStartValue 3 -1
    setStartValue 4 -1
    
    .
    Teraz musimy zaimplementować główną logikę... przekaźnik musi być ustawiony na wartość określoną przez zależność danego progu i aktualnego odczytu. Musi się to odbywać często, mniej więcej co sekundę, może 10 sekund... na szczęście okazuje się, że można to zrobić w kilku linijkach:
    
    again:
    if $CH2==1 then setChannel 1 $CH3>$CH4
    delay_s 1
    

    Jeśli kanał 2 jest 1 (jeśli tryb jest automatyczny), to ustaw kanał przekaźnika na wynik porównania marginesu i wartości. Jeśli kanał 3 jest większy niż 4, to da 1, włączając przekaźnik.

    REKLAMA


    A oto panel OBK dla tego skryptu:
    Interfejs użytkownika dla automatyzacji chłodzenia z wykorzystaniem OpenBeken.

    Użycie czujnika temperatury zamiast zasilania
    Pobór mocy może nie być najlepszym wskaźnikiem zapotrzebowania na chłodzenie, ale pokazany skrypt można po prostu dostosować, aby zamiast tego użyć zmierzonej temperatury. OpenBeken obsługuje serię czujników DHT, DS18B20 powinien również działać poprawnie, więc jeśli zapiszesz temperaturę w kanale 3 , ta sama logika, która działa dla mocy, może teraz działać dla temperatury. Nie są wymagane żadne dalsze zmiany w skrypcie.


    Testowanie skryptu automatyzacji za pomocą symulatora OpenBeken
    Ta sekcja nie jest obowiązkowa, to tylko zalecenie dla programistów .
    OpenBeken zawiera symulator urządzenia IoT , który jest wyposażony w automatyczny system autotestu. Autotesty są używane do upewnienia się, że każda kompilacja nie łamie kompatybilności z oczekiwanymi funkcjami i zachowaniami OBK.
    Autotesty są uruchamiane automatycznie na Githubie z każdą wersją online .
    Oto autotest, który zaprojektowałem:
    Kod: C / C++
    Zaloguj się, aby zobaczyć kod
    .
    Poniższy kod konfiguruje wspomniany skrypt wewnątrz symulatora, a następnie symuluje różne scenariusze przypadków użycia, najpierw scenariusz z wyłączonym automatycznym sterowaniem, a następnie scenariusz z włączonym automatycznym sterowaniem. Symuluje również losowy odczyt mocy i sprawdza, czy zachowanie przekaźnika jest zgodne z oczekiwaniami. Wszystkie oczekiwane stany OBK są potwierdzane za pomocą makr preprocesora ASSERT. Jeśli dana asercja nie powiedzie się, autotesty są zatrzymywane z błędem, dzięki czemu programista może sprawdzić, co jest nie tak.

    Mechanizm selftestów jest bardzo przydatny, ponieważ pozwala nam szybko sprawdzić, czy nowe zmiany działają zgodnie z oczekiwaniami. Selftest zakończy się niepowodzeniem, jeśli którakolwiek z nowych zatwierdzonych zmian łamie niektóre ze starych funkcji, które są objęte autotestami.

    Selftesty mogą być również uruchamiane na komputerze, podobnie jak wspomniany Symulator OBK.

    Podsumowanie
    W ten sposób można stworzyć bardzo proste urządzenie przypominające termostat, z jednym lub nawet dwoma oddzielnymi urządzeniami. Termostat można łatwo włączać i wyłączać, a wartość progowa jest również dostępna w GUI.
    Jeśli potrzebujesz bardziej zaawansowanego rozwiązania, możesz również rozważyć
    tworzenie własnego sterownika .
    To na razie wszystko, ale w następnej części pokażę podobny mechanizm, ale z obsługą chłodzenia PWM (stopniowego). Będzie to używane do zmniejszenia hałasu wentylatora, gdy silne chłodzenie nie jest potrzebne.

    Fajne? Ranking DIY
    Pomogłem? Kup mi kawę.
    O autorze
    p.kaczmarek2
    Moderator Smart Home
    Offline 
    Inżynier programista z wieloletnim doświadczeniem embedded i full stack developer.
    Specjalizuje się w: embedded, Full-Stack Developer
    p.kaczmarek2 napisał 14570 postów o ocenie 12584, pomógł 654 razy. Jest z nami od 2014 roku.
  • REKLAMA
  • #2 21379196
    chemik_16
    Poziom 27  
    Posty: 1000
    Pomógł: 74
    Ocena: 127
    właśnie za jakieś pół roku będę musiał postawić całe iot w nowym domu, tak kombinuje jak pozbyć się kompletnie HA jako elementu automatyzacji - zostawiłbym go ewentualnie tylko do zbierania logów i podglądu. Tak to jak dla mnie jako "serce" instalacji sprawuje się beznadziejnie. Lepiej jakby wszystkie elementy komunikowały się bezpośrednio między sobą,
  • #3 21379212
    p.kaczmarek2
    Moderator Smart Home
    Posty: 14570
    Pomógł: 654
    Ocena: 12584
    W OBK możesz albo użyć gotowego wsparcia Tasmota Device Groups (do grupowania świateł, włączników i świateł, itd) albo skryptować zapytania SendGET tak aby urządzenia bezpośrednio ze sobą "rozmawiały". Możesz również utworzyć prosty własny sterownik w C, który potem skompilujesz online, i automatycznie wgrasz przez OTA. Nie jest potrzebny toolchain.
    Automatyzacje możesz testować też w Symulatorze OBK, który chodzi na Windows i również wspiera ewentualny Home Assistant.
    Tu jest lista wspieranych platform:
    
    - BK7231T (WB3S, WB2S, WB2L, etc)
    - BK7231N (CB2S, CB2L, WB2L_M1, etc)
    - BK7231M, this is a non-Tuya version of BK7231N with 00000000 keys, also sometimes in BL2028 flavour
    - T34 (T34 is based on BK7231N), see flashing trick
    - BL2028N (BL2028N is a Belon version of BK7231N)
    - XR809 (XR3, etc)
    - BL602 (SM-028_V1.3 etc), see also BL602 flash OBK via OTA tutorial (Magic Home devices only)
    - LF686 (flash it as BL602)
    - W800 (W800-C400, WinnerMicro WiFi & Bluetooth), W801
    - W600 (WinnerMicro chip), W601 (WIS600, ESP-01W, TW-02, TW-03, etc)
    - LN882H by Lightning Semi - datasheet, see flashing how-to, see sample device teardown and flashing, see new flash tool, see dev board
    Windows, via simulator
    - ESP32 (working good, guide will be released soon, development topic)
    - RTL8710C/RTL8720C (WBR2, WBR3, etc)
    - BK7238 (WIP)
    - TR6260 (see guide)
    
    Pomogłem? Kup mi kawę.
📢 Słuchaj (AI):
REKLAMA