13.1.14. Kolmannen osapuolen tietovarastot#

IDE toimittaa OpenMV:n omia levyjä, laiteohjelmistoja, esimerkkejä, koneoppimismalleja ja editorin osia, mutta se voi ladata samanlaista sisältöä myös muilta yrityksiltä - kumppanin rakentaman levyn, sillä toimivan laiteohjelmiston, sille viritetyt esimerkit ja mallit sekä laiteohjelmiston lisäämien sovellusliittymien koodin viimeistely. Nämä saapuvat muodossa third-party repositories: sisältökansiot, joita IDE yhdistää omiin ja pysyy ajan tasalla.

Tällä sivulla on kaksi yleisöä. Suurin osa siitä on henkilölle, joka asentaa ja hallitsee jonkun muun julkaisemaa tietovarastoa. Viimeinen osa, authoring a repository, on toimittajan rakentamista varten.

13.1.14.1. Kolmannen osapuolen tietovarastot-sivu#

Kaikkea hallitaan kohdasta Muokkaa → Asetukset → OpenMV → Kolmannen osapuolen arkistot. Taulukossa luetellaan kaikki asennetut arkistot ja kunkin kohdalla sen näyttönimi, lyhyt tunnus, onko se Built-in tai User, asennettu versio kustakin sen tarjoamasta sisällöstä – laiteohjelmistot, esimerkit, mallit, tynkät – ja URL-osoite, josta se päivittää.

Built-in tarkoittaa, että toimittajan toimittama asennusohjelma on sijoittanut arkiston sovelluksen omaan hakemistoon samalla tavalla kuin ohjainpaketti lisää tiedostoja ohjelmaan. User tarkoittaa, että asensit sen itse URL-osoitteesta. Ainoa käytännöllinen ero on, että et voi poistaa sisäänrakennettua arkistoa IDE:stä - se poistetaan poistamalla kaikki, mitä se on sijoitettu - joten Poista-painike on poistettu käytöstä.

13.1.14.2. Arkiston asentaminen#

Asenna URL-osoitteesta kysyy arkiston osoitetta config.json - toimittajan julkaiseman pienen luettelotiedoston - ja asentaa kaiken, mihin se viittaa. Liitä toimittajan sinulle antama URL-osoite. IDE lataa luettelon, hakee laiteohjelmiston, esimerkit, mallit ja sen luettelot ja tarkistaa jokaisen latauksen. Arkiston asentaminen, poistaminen ja päivittäminen tulevat voimaan uudelleenkäynnistyksen jälkeen, joten IDE tarjoaa uudelleenkäynnistyksen, kun asennus on valmis.

Toimittaja voi myös jakaa arkiston asennusohjelmana, joka pudottaa sen suoraan sovellushakemistoon, jolloin se näkyy yksinkertaisesti rivinä Built-in, kun avaat sivun ensimmäisen kerran – ei tarvitse asentaa.

13.1.14.3. Tietovarastojen pitäminen ajan tasalla#

Päivitys-URL-osoitteen sisältävä arkisto tarkistetaan aina, kun IDE käynnistyy. Kun uudempaa sisältöä on saatavilla, IDE kertoo sinulle, mitä - luettelee kukin arkisto ja siihen liittyvät versiot - ja tarjoaa sen asennuksen, kaikki yhdellä kehotuksella. Tarkista päivitykset suorittaa saman tarkistuksen pyynnöstä.

13.1.14.4. Prioriteetti ja ohitukset#

Arkistot ovat järjestetty luettelo, korkein prioriteetti yläreunassa, ja Siirrä ylös- ja Siirrä alas -järjestys uudelleen. Järjestyksellä on väliä vain, kun kaksi lähdettä tarjoavat same: kortti, jolla on sama USB-tunniste, tai esimerkki, malli tai tynkä, jolla on sama nimi. Kun näin tapahtuu, korkeampi merkintä voittaa, ja jokainen arkisto voittaa OpenMV:n sisäänrakennetun sisällön. Tämä on tarkoituksellista – näin toimittaja toimittaa oman laiteohjelmistonsa levylle, joka jakaa OpenMV-levyn USB-tunnisteen, korvaamalla IDE:n sille muutoin tarjoaman kiinteän laiteohjelmiston tai korvaamalla varastoesimerkin laitteistolleen kirjoitetulla ohjelmistolla.

Koska ohitus muuttaa hiljaa tutun nimen toimintaa, sivu ei koskaan piilota sitä. Ohita varoitukset -paneelissa luetellaan kaikki voimassa olevat ohitukset – mikä arkiston kortti, esimerkki, malli tai typpi ohittaa minkä – ja sama luettelo ilmestyy kerran viestinä, kun arkisto nähdään ensimmäisen kerran. Jos taulu, esimerkki tai malli ei toimi OpenMV:n dokumentaatiossa kuvatulla tavalla, tämä paneeli on ensimmäinen paikka katsoa.

13.1.14.5. Mitä arkisto tarjoaa#

Neljä erilaista sisältöä näkyvät kukin tavallisella paikallaan IDE:ssä, joten kun arkisto on asennettu, ei ole mitään uutta opittavaa:

  • Boards and firmware. Arkiston kortti toimii täsmälleen kuten OpenMV-kortti – se tunnistetaan yhdistämisen yhteydessä, sen tyyppi näkyy tilapalkissa ja sen laiteohjelmistopäivitykset IDE:n kautta, mukaan lukien Asenna uusin kehitysversio -polku. Katso Laiteohjelmiston päivitykset ja palautus.

  • Examples. Arkiston esimerkit näkyvät kohdassa Tiedosto → Esimerkit, yhdistettynä luokkapuuhun: esimerkki luokassa, jonka toimittaja on nimetty OpenMV-kategoriaksi, on OpenMV-kategorian rinnalla, ja uudesta kategoriasta tulee oma alivalikko. Ne suodatetaan tukemiinsa levyihin kuten mikä tahansa esimerkki. Katso Skriptit, esimerkit ja dokumenttikansio.

  • Models. Arkiston mallit näkyvät kohdassa Model Zoo yhdistettynä selainpuuhun samalla tavalla toimittajan omilla kuvauksilla.

  • Stubs. Arkisto voi lähettää .pyi tynkätiedostot, joten editor tarjoaa täydennyksen, allekirjoitukset ja dokumentaation sen laiteohjelmiston lisäämille toiminnoille – saman täydennyksen kuin OpenMV:n omille moduuleille, toimittajan mukautetulle API:lle.

13.1.14.6. Arkiston luominen#

Arkisto on toimittajalle nimetty kansio, jossa on config.json-luettelo ja alikansio jokaiselle sen tarjoamalle sisällölle:

acme/
  config.json
  firmware/
    settings.json                 board descriptions
    ACME_CAM1/                    one folder per board, named by boardFirmwareFolder
      firmware.bin
      romfs0.img
  firmware.version
  examples/
    index.csv                     which examples show for which board / sensor
    01-Getting-Started/           numbered category folders, same as OpenMV's
      hello_acme.py
      read_sensor.py
    02-Acme-Widgets/
      spin_widget.py
  examples.version
  models/
    index.csv                     which models show for which board
    acme/                         a group; its index.html + image describe it
      index.html
      image.jpg
      person_detector/            one folder per model
        person_detector.tflite
        person_detector.txt       class labels
  models.version
  stubs/
    acme_hal.pyi                  a module the firmware adds
    csi.pyi                       overrides OpenMV's to add methods
  stubs.version

Kansion nimi on arkiston tunnus: pienet kirjaimet, numerot, - ja _, alkaen kirjaimella. Jokainen osakansio on valinnainen; lähetä vain mitä sinulla on. Jokaisen osakansion vieressä on <part>.version-tiedosto, jossa on yksi versiomerkkijono (1.2.0), jonka avulla IDE päättää, milloin päivitys on uudempi.

13.1.14.6.1. Ilmoitus#

config.json nimeää arkiston ja osoittaa kunkin osan kohdalla ladattavaan arkistoon:

{
  "name": "acme",
  "displayName": "Acme Robotics",
  "homepage": "https://acme.example",
  "configUrl": "https://acme.example/openmv/config.json",
  "firmware": {
    "release":     { "version": "1.2.0", "url": "https://acme.example/acme-fw-1.2.0.zip", "sha256": "..." },
    "development": { "version": "dev-20260701", "url": "https://acme.example/acme-fw-dev.zip", "sha256": "..." }
  },
  "examples": { "release": { "version": "1.1.0", "url": "https://acme.example/acme-examples-1.1.0.zip", "sha256": "..." } },
  "models":   { "release": { "version": "1.0.0", "url": "https://acme.example/acme-models-1.0.0.zip", "sha256": "..." } },
  "stubs":    { "release": { "version": "1.0.0", "url": "https://acme.example/acme-stubs-1.0.0.zip", "sha256": "..." } }
}

name on vastattava kansion nimeä. configUrl on osoite, jossa tätä samaa tiedostoa isännöidään; IDE hakee sen uudelleen tarkistaakseen päivitykset, joten jätä se pois vain arkistolta, joka ei koskaan päivity. Jokaisessa osassa on release-kanava, ja laiteohjelmistossa voi myös olla development-kanava, jota Asenna uusin kehitysjulkaisu käyttää. Julkaisun version arvoja verrataan numeroina, joten korkeampi tarjotaan päivityksenä; kehitysversioita verrataan vain muutoksen vuoksi. sha256 on valinnainen, mutta se vahvistetaan, kun se on olemassa.

Jokainen url osoittaa pistettä .zip (vain vetoketju). Arkisto sisältää täsmälleen one top-level folder, ja IDE asentaa kansion contents osaksi - joten laiteohjelmiston arkisto on pakattu seuraavasti:

acme-fw-1.2.0.zip
  acme-firmware/           one wrapping folder; its name does not matter
    settings.json
    ACME_CAM1/
      firmware.bin
      romfs0.img

ja purkaa pakkauksen aiemmin esitettyyn kansioon firmware/. Esimerkit, mallit ja tynkäarkistot on pakattu samalla tavalla – yksi käärekansio, joka sisältää merkinnät examples/, models/ tai stubs/. Käärittävän kansion nimeä ei huomioida; tärkeintä on, että niitä on juuri yksi. Tiedostojen pakkaaminen arkiston juureen ilman käärekansiota tai useampaan kuin yhteen kansioon ei asennu. Yksinkertaisin tapa saada se oikein on pakata kansio itse – valitse acme-firmware ja pakkaa se sen sisällön valitsemisen sijaan.

13.1.14.6.2. Taulut, esimerkit, mallit ja tyngät#

firmware/settings.json käyttää samaa levykuvausmuotoa kuin IDE:n toimittama laiteohjelmisto; lisää boards-merkintä jokaiselle taulullesi. Muutama sääntö koskee vain kolmannen osapuolen levyjä: boardFirmwareFolder on oltava yksilöllinen (OpenMV tai muu toimittaja ei vielä käytä sitä, koska se nimeää kansion, jossa binaarisi asuvat), jokaisella levyllä on oltava oma firmware_version (tämä ohjaa päivitys yhteyden yhteydessä -kehotteen) ja kortti voi asettaa arvoksi boardFirmwareFolderAlias OpenMV-levyn laiteohjelmisto- ja kansiomallien nimissä. laiteohjelmisto on yhteensopiva OpenMV:n kanssa. OpenMV-käynnistyslataimen tunnisteiden uudelleenkäyttöä odotetaan (ne sisältävät allekirjoitetut Windows-ohjaimet); sisäänrakennetun piirilevyn kanssa törmäävä sovellustunniste ohittaa kyseisen kortin, minkä Ohita varoituspaneeli raportoi.

Esimerkkejä löytyy numeroiduista luokkakansioista, kuten OpenMV:t (01-Getting-Started); luokka, jonka nimeät samalla tavalla kuin OpenMV:n, limittyy siihen ja uudesta nimestä tulee oma valikkoosio. Malli on kansio, jossa on sen .tflite ja vastaava .txt luokkatunnisteita, ryhmitelty kansion alle, jonka index.html (ja valinnainen kuva) on kuvaus, joka näkyy sen vieressä Mallieläintarhassa. examples/index.csv ja models/index.csv ovat samoja kortti- ja anturisuodatintiedostoja, joita OpenMV:n omat esimerkit ja mallit käyttävät, verrattuina esimerkki- ja mallipolkuisi, ja päätät, mitkä omasi näkyvät mille kortille. Stubit ovat tavallisia .pyi-tiedostoja; IDE luovuttaa kansionsa kielipalvelimelle, jotta ne ratkaisevat OpenMV:n rinnalla, ja olemassa olevalle moduulille nimetty tynkä (csi.pyi) ohittaa kyseisen moduulin valmistumisen.

13.1.14.6.3. Julkaiseminen ja päivittäminen#

To publish, host the config.json and the archives it references at stable URLs and give users the config.json URL to install from. Anywhere that serves plain files over HTTPS works – a web server, an object store, or a code host. Lähettääksesi päivityksen lataa uudet arkistot, lyö vaikuttaneet version-arvot isännöityyn config.json:iin ja seuraavan kerran, kun kunkin käyttäjän IDE käynnistyy, se tarjoaa päivityksen. Users who installed the repository through an installer instead get updates the same way, as long as the installed config.json carries a configUrl.

13.1.14.6.4. Isännöinti GitHubissa#

GitHub on kätevä isäntä, ja IDE hakee siitä samalla tavalla kuin se hakee omat resurssinsa. Sijoitettavana on kaksi kappaletta: manifesti ja arkistot.

Säilytä config.json arkistossa ja anna käyttäjille sen raw URL-osoite – osoite, johon tiedosto tarjotaan suoraan, ei sitä näyttävälle GitHub-sivulle. Tiedoston Raw-painike näyttää sen; sillä on muoto

https://raw.githubusercontent.com/<user>/<repo>/<branch>/config.json

Tämän raaka-URL-osoitteen käyttäjä liittää Asenna URL-osoitteesta -kohtaan ja lisäät luettelon omaan osoitteeseen configUrl, joten IDE hakee sen uudelleen tarkistaakseen päivitykset. Sen osoittaminen haaraan (main) tarkoittaa, että uuden sitoumuksen työntäminen julkaisee muutoksen; sen osoittaminen tunnisteeseen kiinnittää käyttäjät sen sijaan kiinteään versioon.

Isännöi .zip-arkistoja tunnuksella release assets sen sijaan, että sitoisit niitä – julkaisut on suunniteltu binäärilatauksia varten, joten monen megatavun laiteohjelmistopaketti kuuluu sinne, ei arkiston historiaan. Liitä jokainen arkisto GitHub-julkaisuun ja käytä sen lataus-URL-osoitetta, jossa on lomake

https://github.com/<user>/<repo>/releases/download/<tag>/acme-fw-1.2.0.zip

luettelon kentissä url, joista jokaisessa on arkiston sha256. Päivityksen toimittaminen on sitten: liitä uudet arkistot julkaisuun, muokkaa config.json osoittaaksesi niitä ja lyö versiot ja sitoudu. IDE havaitsee muutoksen seuraavassa käynnistyksessään (raakatiedosto toimitetaan välimuistin kautta, joka päivittyy muutaman minuutin kuluessa työntämisestä).