
Julkaisin camera-wifi-autoimport-projektin lähdekoodin ja asennusohjeet GitHubiin: github.com/ollijunes/camera-wifi-autoimport.
Minulla on kotona ketju, joka toimii. Sony A7 IV lähettää kuvat kotiverkon kautta Synologyn FTP-kansioon. Sieltä tuontiohjelma vie ne Immichiin. Immich tallentaa omat kopionsa NAS:lle ja tekee latauksen jälkeen omat työnsä, kuten haun ja kasvojentunnistuksen. Immich tunnistaa ja ryhmittelee kasvot, ja nimet käyttäjä antaa itse.
Alkuperäinen tuontiohjelma on tehty omaan käyttööni. Halusin jakaa sen, joten kirjoitin siitä siistimmän version, joka ei ole sidottu kameramerkkiin. Nimeksi tuli camera-wifi-autoimport. Kuten aiempi TOTP Migrator, tämäkin syntyi omaan tarpeeseen.
Miksi pelkkä kansio ei riitä
Kamera osaa lähettää kuvia verkon yli, mutta lähetys päättyy kansioon. Immichiin kuvat eivät mene itsestään. Väliin tarvitaan jotain, joka huomaa uudet tiedostot, odottaa siirron valmistumista, välttää kaksoiskappaleet ja pitää kirjaa siitä, mikä on jo viety.
Hankalin kohta on puolivalmis tiedosto. Jos tuontiohjelma tarttuu kuvaan, jota kamera vielä kirjoittaa, Immichiin päätyy rikkinäinen kuva.
Miten camera-wifi-autoimport toimii
camera-wifi-autoimport ei vahdi kansiota jatkuvasti. Se käy yhden JPEG-kansion läpi kerran ja lopettaa, ja ajastin käynnistää sen uudelleen. Siksi yksi ajo ei riitä uuden kuvan viemiseen. Kuva kelpaa vasta, kun se näyttää samalta kahdella ajolla, joiden välissä on kulunut asetettu odotusaika. Sen jälkeen tiedostosta otetaan tilannekuva, ja työkalu tarkistaa JPEG-tiedoston alku- ja loppumerkit. Kuvaa ei pureta kokonaan, joten tarkistus on kevyt eikä täydellinen.
Ennen latausta työkalu tarkistaa, onko Immichissä jo tavu tavulta sama tiedosto, jottei samaa kuvaa tuoda kahdesti. Sekä uusi että Immichissä jo oleva kuva lisätään valittuun albumiin, ja kuva merkitään valmiiksi vasta, kun on varmistettu, että se on albumissa. Jos jokin vaihe epäonnistuu, kesken jäänyt työ yritetään uudelleen.
Immichiin työkalu lataa kuvasta kopion. Alkuperäistä tiedostoa se ei poista eikä siirrä pois tuontikansiosta, eikä se tyhjennä muistikorttia.
Työkalu on Python-ohjelma, joka vaatii Python 3.11:n tai uudemman ja käyttää vain standardikirjastoa. Se on tehty POSIX-järjestelmiin: Linuxiin, macOS:ään ja Synologyyn.
Mitä tarvitset
- Kameran, joka osaa lähettää kuvia FTP:llä tai FTPS:llä, tai muun sillan, joka kirjoittaa JPEG-tiedostot kansioon. Pelkkä Wi-Fi kamerassa ei riitä.
- Toimivan Immichin. Synologylle siihen on oma asennusohje.
- Ajastimen, joka käynnistää työkalun säännöllisesti.
- JPEG-kuvia. RAW-, HEIF- ja videotiedostoja työkalu ei tuo.
Sony on alkuperäisen ketjun kamera, ja Sonyn FTP-siirrosta on oma ohjeensa. Muiden merkkien kameroita en ole fyysisesti kokeillut.
Kuvat lähtevät vain, kun kamera on päällä ja sen siirto on käytössä. Se, että kamera liittyy kotiverkkoon, ei välttämättä tarkoita, että kortilla jo olevat vanhemmat kuvat siirtyvät. Kameran omasta ohjeesta näkee, miten siirto käynnistetään ja mitkä kuvat se kattaa.
Tietoturva
Immichin API-avain luetaan omasta tiedostostaan, jonka oikeudet on rajattu ja joka on repon ja tuontikansion ulkopuolella. Avainta ei anneta komentorivillä, joten se ei näy komentohistoriassa, eikä se päädy työkalun lokeihin. HTTPS-yhteydessä työkalu tarkistaa varmenteen eikä seuraa uudelleenohjauksia.
FTP on selväkielistä. Käytä sitä vain luotetussa kotiverkossa. Jos sekä kamera että palvelin tukevat FTPS:ää, valitse se.
Mitä olen testannut
Automaattiset testit kattavat siirrot, kaksoiskappaleet, albumit ja virhetilanteet. Viimeksi läpikäymäni version CI-ajossa kaikki kymmenen työtä menivät läpi: testit macOS:llä ja Linuxilla Python-versioilla 3.11:stä 3.14:ään sekä lint ja yksityisyystarkistus.
Uutta versiota en ole vielä ajanut päästä päähän oikealla kameralla ja NAS:lla. Alkuperäinen ketju toimii, mutta se ei todista, että uusi versio toimii.
Repon, sen historian ja lokien tarkistus salaisuuksien varalta ei löytänyt mitään. Automaattinen haku ei silti voi todistaa, ettei missään ole yhtään salaisuutta.
Mitä työkalu ei tee
Tämä ei ole varmuuskopio. Tuontikansio ja Immich vievät kumpikin oman tallennustilansa, mutta kaksi kopiota samassa laitteessa ei suojaa laitteen hajoamiselta. Pidä varmuuskopio sekä kuvista että Immichin tietokannasta. Tarkista, että kuvat ovat tallessa, ennen kuin tyhjennät muistikortin.
Kokeile
Lähdekoodi ja asennusohjeet löytyvät GitHubista: github.com/ollijunes/camera-wifi-autoimport.
Jos törmäät ongelmaan, avaa siitä issue. Kuvaa ongelma keksityillä esimerkeillä. Älä liitä oikeita valokuvia, asetustiedostoja tai tunnuksia.
