Proč nešel ten kód zkompilovat:
Třída IPAddress v Arduino nepodporuje přímo IPv6 adresy přes konstruktor s 8× 16bitovými čísly.
Kód: Vybrat vše
IPAddress local_IP(0x2001, 0x0db8, 0x1234, 0x0000, 0x0000, 0x0000, 0x0000, 0x0002);
Tento zápis je jen pro IPv4 (4× 8bitové oktety).
Pro IPv6 takový konstruktor neexistuje → kompilátor hlásí chybu.
Jak správně nastavit IPv6 na ESP32 / ESP8266?
Použij řetězec nebo pole uint16_t + funkci WiFi.config() s IPv6 parametry.
Řešení 1 – nejjednodušší (doporučeno)
Kód: Vybrat vše
// IPv6 adresa a brána jako řetězec
WiFi.config(
IPv6Address("2001:db8:1234::2"), // local IP
IPv6Address("2001:db8:1234::1"), // gateway
IPv6Address("255.255.255.0"), // subnet (IPv4-style, volitelné)
IPv6Address("2001:db8::1") // DNS (volitelné)
);
Řešení 2 – přes pole 16bitových slov
Kód: Vybrat vše
uint16_t ipv6[] = {0x2001, 0x0db8, 0x1234, 0x0000, 0x0000, 0x0000, 0x0000, 0x0002};
WiFi.config(IPv6Address(ipv6));
Řešení 3 – přes uint8_t pole (128 bitů)
Kód: Vybrat vše
uint8_t ip6[16] = {
0x20,0x01, 0x0d,0xb8, 0x12,0x34, 0x00,0x00,
0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x02
};
WiFi.config(IPv6Address(ip6));
Kompletní funkční kód (ESP32)
Kód: Vybrat vše
#include <WiFi.h>
void setup() {
Serial.begin(115200);
WiFi.begin("SSID", "heslo");
// Nastavení statické IPv6 (a volitelně IPv4)
WiFi.config(
IPv6Address("2001:db8:1234::2"), // statická IPv6
IPv6Address("2001:db8:1234::1"), // brána
IPv6Address("ffff:ffff:ffff:ffff::"), // subnet /64 (nebo vynechat)
IPv6Address("2001:db8::1") // DNS
);
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println("\nPřipojeno!");
Serial.print("IPv6: ");
Serial.println(WiFi.localIPv6());
}
void loop() {}
Shrnutí
Ne: IPAddress(0x2001, …) → to je jen pro IPv4
Ano: IPv6Address("2001:db8

:2") nebo pole