OTA med arduino R4 wifi utan iot cloud

Permalänk
Medlem

OTA med arduino R4 wifi utan iot cloud

Tjo. Går det att fixa så man kan skicka kod OTA från datorn till Arduino R4 wifi utan att behöva använda deras cloud-service. Tycker det är lite väl att betala från 24 dollar/år för att det ska fungera. Kommer i första hand styra en lampa som jag ibland vill ändra färg/mönster på. Är en medusa med en Neopixel-ring). Hade en R3 tidigare men bytte till R4 wifi just för att slippa koppla i och ut alla kablar när något ska ändras.

Har inte hittat något användbart när jag googlat. Det närmsta jag kom var denna tråd: https://www.visualmicro.com/forums/YaBB.pl?num=1711079499/0

Men när jag försöker verifiera koden i Arduino IDE får jag meddelandet "The instance is no longer valid and needs to be reinitialized
Compilation error: The instance is no longer valid and needs to be reinitialized".

Får känslan av att de blockerat detta för att folk ska köpa deras tjänst istället.

Vore kalas om någon vet hur man löser detta.

Visa signatur
Permalänk
Medlem

Jag använder detta biblioteket när jag använder OTA hemma.
https://github.com/jandrassy/ArduinoOTA

Jag har dock inte provat det med Arduino R4 utan bara några ESP8266:or och ESP32:or.
Men enligt dokumentationen så är den testad med UNO R4:an
https://github.com/jandrassy/ArduinoOTA?tab=readme-ov-file#boards-tested

Edit efter jag läst din länk:
Det verkar vara samma bibliotek som dom använder.
Om det inte fungerar så får du gärna dela med dig hur din kod för just OTA setup och vilket anrop du använder i din loop

Exempel på hur min setup kan se ut:

void setupOTA() { ArduinoOTA.setPort(8266); //Port defaults to 8266 ArduinoOTA.setHostname("hostname"); ArduinoOTA.setPassword("password"); ArduinoOTA.onStart([]() { String type; if (ArduinoOTA.getCommand() == U_FLASH) { type = "sketch"; } else { // U_FS type = "filesystem"; } // NOTE: if updating FS this would be the place to unmount FS using FS.end() Serial.println("Start updating " + type); }); ArduinoOTA.onEnd([]() { Serial.println("\nEnd"); }); ArduinoOTA.onProgress([](unsigned int progress, unsigned int total) { Serial.printf("Progress: %u%%\r", (progress / (total / 100))); }); ArduinoOTA.onError([](ota_error_t error) { Serial.printf("Error[%u]: ", error); if (error == OTA_AUTH_ERROR) { Serial.println("Auth Failed"); } else if (error == OTA_BEGIN_ERROR) { Serial.println("Begin Failed"); } else if (error == OTA_CONNECT_ERROR) { Serial.println("Connect Failed"); } else if (error == OTA_RECEIVE_ERROR) { Serial.println("Receive Failed"); } else if (error == OTA_END_ERROR) { Serial.println("End Failed"); } }); ArduinoOTA.begin(); }

Sedan ser jag till att anropa ArduinoOTA i varje loop:

void loop() { ArduinoOTA.handle(); ALL ANNAN LOGIK }