U siebie w domu mam postawionego mesha na Batmanie Adv z piątą wersją protokołu i 4szt. Xiaomi AX3200 i jeden AX53U jako print serwer, zaletą batmana jest to że łatwo można tworzyć vlany które są przenoszone przez wifi, inne rozwiązania mesh wymagają tuneli itp... poza tym działa to jak jeden rozległy switch. Backbone jest na 5GHz a sieci dostępowe na 2.4GHz (na każdym AP używam pełnej wersji wpad-openssl). Można też połączyć nody mesha skrętką lub światłowodem ale wtedy trzeba trochę zmienić configi.
opkg update
# batctl-full instalujemy w pierwszej kolejności
# w przeciwnym wypadku instalacja kmod-batman-adv może zainstalować okrojoną wersję batctl z zależności
opkg install batctl-full
opkg install kmod-batman-adv
Mam jeden router główny, który działa też jako AP (mwan3, adblock, sqm, dhcp, firewall...itp) oraz 4 "dumb AP".
Na wszystkich AP-kach mam skonfigurowane wszystkie SSIDy a za pomocą "option disabled 1/0" w wireless włączam jakie potrzebuję w danym miejscu domu - np na jednym APku mam tylko sieć domową, na innym gościnną i iot a na jeszcze innym domową i iot, dodatkowo dzięki fast roamingowi nie muszę tworzyć oddzielnych sieci np: iot1, iot2, domowa1, domowa2 itp - mam jedną sieć IoT i to ułatwia sprawę, a ESP32/8285/8266 łapią sobie zasięg z tego AP-ka z którego mają lepszy sygnał.
Na razie mam trzy Sonoffy Mini R2 przerobione na Tasmotę v12.4.0, które sterują lampami na podwórku, działają nawet przy sygnale -90dBm / 15m od AP i 2 ściany z pustaka po drodze (pobieranie czasu z internetu wymagane przez timery zachodu i wschodu słońca)
fragment /etc/config/network dla routera głównego:
config device
option name 'br-lan'
option type 'bridge'
option ipv6 '0'
option igmp_snooping '1'
list ports 'lan2'
list ports 'lan3'
list ports 'lan4'
list ports 'bat0.3'
config device
option name 'br-iot'
option type 'bridge'
option ipv6 '0'
option igmp_snooping '1'
list ports 'bat0.5'
config device
option name 'br-guest'
option type 'bridge'
option ipv6 '0'
option igmp_snooping '1'
list ports 'bat0.7'
config interface 'lan'
option device 'br-lan'
option proto 'static'
option ipaddr '192.168.3.1'
option netmask '255.255.255.0'
option ip6assign '60'
config interface 'iot'
option device 'br-iot'
option proto 'static'
option ipaddr '192.168.5.1'
option netmask '255.255.255.0'
option ip6assign '60'
config interface 'guest'
option device 'br-guest'
option proto 'static'
option ipaddr '192.168.7.1'
option netmask '255.255.255.0'
option ip6assign '60'
config interface 'wan'
option device 'wan'
option proto 'dhcp'
config interface 'bat0'
option proto 'batadv'
option routing_algo 'BATMAN_V'
option aggregated_ogms '1'
option ap_isolation '1'
option bonding '0'
option bridge_loop_avoidance '1'
option distributed_arp_table '1'
option gw_mode 'server'
option gw_bandwidth '100000/25000'
option hop_penalty '30'
option isolation_mark '0x00000000/0x00000000'
option log_level '0'
option multicast_mode '1'
option multicast_fanout '16'
option network_coding '0'
option delegate '0'
option orig_interval '60000'
option fragmentation '1'
config interface 'bat0_lan'
option proto 'batadv_vlan'
option ifname 'bat0.3'
option ap_isolation '0'
config interface 'bat0_iot'
option proto 'batadv_vlan'
option ifname 'bat0.5'
option ap_isolation '0'
config interface 'bat0_guest'
option proto 'batadv_vlan'
option ifname 'bat0.7'
option ap_isolation '1'
config interface 'mesh5g'
option proto 'batadv_hardif'
option master 'bat0'
option mtu '2304'
fragment /etc/config/network dla "dumb AP" nr 5:
config device
option name 'br-lan'
option type 'bridge'
option igmp_snooping '1'
option ipv6 '0'
list ports 'bat0.3'
config device
option name 'br-iot'
option type 'bridge'
option igmp_snooping '1'
option ipv6 '0'
list ports 'bat0.5'
# porty wan, lanX można dowolnie przydzielać do sieci, w tym przypadku wszystkie fizyczne porty są przydzielone do sieci guest
config device
option name 'br-guest'
option type 'bridge'
option igmp_snooping '1'
option ipv6 '0'
list ports 'wan'
list ports 'lan1'
list ports 'lan2'
list ports 'lan3'
list ports 'bat0.7'
config interface 'lan'
option device 'br-lan'
option proto 'static'
option ipaddr '192.168.3.5'
option netmask '255.255.255.0'
option gateway '192.168.3.1'
option dns '192.168.3.1'
option ip6assign '60'
# ponieważ jest to "dumb AP" sieci iot i guest są połączone z routerem głównym tylko poprzez bridge i nie potrzebują adresów ip
config interface 'iot'
option device 'br-iot'
option proto 'none'
config interface 'guest'
option device 'br-guest'
option proto 'none'
config interface 'bat0'
option proto 'batadv'
option routing_algo 'BATMAN_V'
option aggregated_ogms '1'
option ap_isolation '1'
option bonding '0'
option bridge_loop_avoidance '1'
option distributed_arp_table '1'
option fragmentation '1'
option gw_mode 'client'
option hop_penalty '30'
option isolation_mark '0x00000000/0x00000000'
option log_level '0'
option multicast_mode '1'
option multicast_fanout '16'
option network_coding '0'
option orig_interval '60000'
config interface 'bat0_lan'
option proto 'batadv_vlan'
option ifname 'bat0.3'
option ap_isolation '0'
config interface 'bat0_iot'
option proto 'batadv_vlan'
option ifname 'bat0.5'
option ap_isolation '0'
config interface 'bat0_guest'
option proto 'batadv_vlan'
option ifname 'bat0.7'
option ap_isolation '1'
config interface 'mesh5g'
option proto 'batadv_hardif'
option master 'bat0'
option mtu '2304'
fragment /etc/config/wireless (na każdym AP):
config wifi-iface 'radio2g_iot'
option device 'radio2g'
option network 'iot'
option mode 'ap'
option ssid 'iot'
option encryption 'psk2'
option key 'iot password'
option hidden '1'
option disassoc_low_ack '1'
option wpa_disable_eapol_key_retries '1'
option tdls_prohibit '1'
option ieee80211w '1'
option ieee80211w_max_timeout '500'
option ieee80211w_retry_timeout '100'
option ieee80211r '1'
option ft_over_ds '0'
option ft_psk_generate_local '1'
option reassociation_deadline '20000'
option ieee80211k '1'
option disabled '0'
config wifi-iface 'radio2g_guest'
option device 'radio2g'
option network 'guest'
option mode 'ap'
option ssid 'goscinna'
option encryption 'psk2'
option key 'guest password'
option isolate '1'
option disassoc_low_ack '1'
option ieee80211r '1'
option ft_over_ds '0'
option ft_psk_generate_local '1'
option reassociation_deadline '20000'
option ieee80211k '1'
option disabled '0'
config wifi-device 'radio5g'
option type 'mac80211'
option path '1a143000.pcie/pci0000:00/0000:00:00.0/0000:01:00.0'
option channel '36'
option band '5g'
option htmode 'HE80'
option country 'PL'
option disabled '0'
config wifi-iface 'radio5g_mesh'
option device 'radio5g'
option network 'mesh5g'
option mode 'mesh'
option mesh_id 'MyMesh'
option encryption 'sae'
option key 'mesh password'
option mesh_fwding '0'
option mesh_ttl '1'
option mcast_rate '24000'
Każdy AP działa na innym kanale, trochę mi zajęło przypisanie kanałów tak żeby były najdalej od siebie, bo niezachodzących kanałów w 2.4GHz jest 3 a AP-ków 5szt, poza tym sieci sąsiadów i włączony fast roaming - wyszło na to że w końcu użyłem kanałów 1, 5, 9 i 13. AP na parterze i AP na poddaszu mają te same kanały ale są tak daleko od siebie, że się nie zakłócają.
Jeśli chodzi o ESP8266/8285 to w większości one mają tylko 1MB flash - jeżeli robię aktualizację Tasmoty przez OTA to najnowsze buildy muszą wgrywać się w dwóch krokach (najpierw obraz minimalny, potem właściwy) bo brakuje pamięci.
Lepiej chyba pójść w ESP32 - mają 4MB flash i Bluetooth - z Tasmota+Blerry lub ESPHome można wykorzystać je jako gateway/proxy dla czujników lub tagów działających poprzez BT (np: termometr LYWSD03MMC z customowym fw czy czujnik światła i ruchu CGPR1)
...no i od niedawna jest też OpenMQTTGateway na ESP32