Włączanie i wyłączanie wifi na ruterze z OpenWRT

Chciałbym z poziomu home assistanta włączać i wyłączać wifi na ruterze z OpenWRT.
Z tego co już udało mi się znaleźć to najprościej jest zrealizować włączanie i wyłącznie WiFi poprzez luci-app-commands, poprzez dodanie dwóch poleceń - osobna dla włączania i osobna dla wyłączania. Do tak stworzonych komend generują się adresy http. Zrobiłem w home assistant dwie automatyzacje, które uruchamiają te adresy, a z kolei automatyzacje wyzwalane są dwoma przyciskami z dashboardu.

Takie rozwiązanie jest nieeleganckie jak dla mnie, ale jedyne które udało mi się zrobić.
Pytanie czy można to zrobić np. za pomocą switch’a, którego stan akurat pokazywałby czy wifi jest włączone czy nie. I tutaj zaczynają się schody.
Logując się poprzez ssh i wydając komendę wifi status dostajemy dosyć długą odpowiedź, w której jest zawarte czy WiFi (a właściwie Radio) jest włączone czy wyłączone. Pytanie czy można to jakoś wykorzystać, czy może jest lepszy sposób na ogarnięcie tego?

Można użyć ping jakiegoś urządzenia łączącego się z routerem po wifi, utworzony binary_sensor da ci on lub off.

W sytuacji gdy do WiFi nie będzie podłączonego żadnego urządzenia to nie będzie co pingować. W międzyczasie znalazłem, że można by pewnie użyć hotplug i wygenerować jakąś informację mqtt w momencie wyłączania lub włączania radia. Z tego co przyjdzie przez mqtt można by utworzyć sensor. Pytanie jak zrobić przełącznik z polecenia automatyzacji włącz, wyłącz i sensora, na podstawie którego przełącznik byłby załączony lub włączony?

Utwórz pomocnika typu przełącznik. Ustawienia → Urządzenia i usługi → Pomocnicy

Jak wyżej tylko typ pomocnika sensor template

I wtedy wiesz że wifi wyłączony jest najprawdopodobniej.
Edit: Tylko nie potrafię sobie wyobrazić potrzeby wyłączania wifii aby po pewnym jakimś czasie znowu je włączać (może mam za dużo urządzeń, które potrzebują stałego dostępu).

Dzięki. Spróbuję.
Większość automatyki planuję przewodowo. WiFi włączałbym głównie do oglądnięcia mediów na telefonie, żeby nie ciągło wtedy z pakietu po GSM. W pozostałym czasie WiFi byłoby wyłączone.

Dziwne to ale skoro nie masz żadnych urządzeń oprócz swojego telefonu to po co wyłączać radio-wifi jak i tak nic innego nie potrzebuje dostępu do sieci LAN czy WAN korzystając z wifi.

Domyślam się, że trudno to zrozumieć ale żona naczytała się coś w temacie szkodliwości WiFi i chce, żeby wyłączać jak jest nie używane.

Ok to wyjaśnia wszystko :slight_smile:

Jak pewnie stwierdzicie tempo mam zabójcze bo zacząłem temat już jakiś czas temu ale do tej pory tego nie uruchomiłem. Dzisiaj przysiadłem do tego, żeby mieć status WiFi w HA (true/false). Ale na razie nie udało mi się zrobić działającego przełącznika.
Sytuacja wygląda obecnie tak:
Mam na ten moment dwie encje skonfigurowane w configuration.yaml:

rest_command:
  wifi_enable:
    url: http://192.168.5.250/cgi-bin/luci/command/cfg0d9944s
  wifi_disable:
    url: http://192.168.5.250/cgi-bin/luci/command/cfg0e9944s

i encję ze stanem wifi sensor.openwrt_bthh3_wifi_status

Pytanie jak to posklejać, żeby mieć fajny przełącznik z weryfikacją statusu przy pomocy encji którą podałem?

Próbowałem z szablonem ze strony:

ale przełącznik nie działa. Tylko status pokazuje się poprawnie. Po moich modyfikacjach wygląda to tak:

switch:
  - platform: template
    switches:
      blind:
        friendly_name: "WiFi"
        value_template: "{{ is_state('sensor.openwrt_bthh3_wifi_status', 'true') }}"
        turn_on:
          service: switch.turn_on
          target:
            entity_id: rest_command.wifi_enable
        turn_off:
          service: switch.turn_off
          target:
            entity_id: rest_command.wifi_disable

Już chyba sobie odpowiedziałem. Należy ostatnią część uprościć:

switch:
  - platform: template
    switches:
      wifi:
        friendly_name: "WiFi"
        value_template: "{{ is_state('sensor.openwrt_bthh3_wifi_status', 'true') }}"
        unique_id: wifi_switch_id
        turn_on:
          service: rest_command.wifi_enable
        turn_off:
          service: rest_command.wifi_disable

Czy to się sprawdzi to zobaczymy, bo przez chwilę miałem tak, że samo się włączało i wyłączało co pół minuty.