Keskustelua tekoälyn kanssa

Antero Virkkala 12.12.2023 18:01

Kokeilin, josko Edge-selaimessa toimiva Copilot osaisi tehdä käyttökelpoisen matkasuunnitelman.
Antero:
Tee suunnitelma kahden viikon lomaa varten matkailuautolla Norjan keskiosiin (noin Oslo-Trondheim -välille). Meitä kiinnostaa maisemat, luonto, melominen ja pyöräily.
Copilot:
Tässä on ehdotus kahden viikon matkareitiksi Norjan keskiosissa. Tämä reitti tarjoaa upeita maisemia, luontokokemuksia, melonta- ja pyöräilymahdollisuuksia.
-1. päivä: Oslo Aloita matkasi Oslossa, Norjan pääkaupungissa. Tutustu kaupungin nähtävyyksiin ja kulttuuriin.
-2.-3. päivä: Oslosta Lillehammeriin (185 km) Aja Oslosta pohjoiseen kohti Lillehammeria. Matkalla voit pysähtyä Mjøsan rannalla ja nauttia kauniista maisemista. Lillehammerissa voit vierailla Maihaugenin ulkoilmamuseossa ja Norjan olympiamuseossa.
-4.-5. päivä: Lillehammerista Rørosiin (382 km) Seuraavaksi suuntaa kohti Rørosia, joka on yksi Norjan vanhimmista puukaupungeista ja UNESCO:n maailmanperintökohde. Voit tutustua kaupungin historiallisiin rakennuksiin ja käsityöläisverstaisiin.
-6.-7. päivä: Rørosista Trondheimiin (156 km) Jatka matkaa länteen Trondheimiin, joka on tunnettu Nidarosin tuomiokirkosta ja värikkäistä vanhoista rakennuksistaan. Voit myös vierailla Rockheimissa, joka on Norjan kansallinen pop- ja rock-museo.
-8.-9. päivä: Trondheimista Kristiansundiin (195 km) Aja Atlantin valtatietä pitkin Kristiansundiin. Tämä upea tie kulkee saarten ja merenlahtien halki, ja matkan varrella on useita näköalapaikkoja ja siltoja. Kristiansundissa voit nauttia merellisestä tunnelmasta ja paikallisesta kalakeitosta, bacalaosta.
-10.-11. päivä: Kristiansundista Ålesundiin (161 km) Seuraavaksi suuntaa etelään kohti Ålesundia, joka on tunnettu jugendtyylisestä arkkitehtuuristaan. Voit kiivetä Aksla-vuorelle, josta on upeat näkymät kaupunkiin ja ympäröivään saaristoon.
-12.-13. päivä: Ålesundista Geirangeriin (124 km) Aja sisämaahan kohti kuuluisaa Geirangerfjordia. Tämä on yksi Norjan kauneimmista fjordeista, ja se on myös UNESCO:n maailmanperintökohde. Voit tehdä fjordiristeilyn, vierailla näköalapaikoilla tai patikoida alueen vaellusreiteillä.
-14. päivä: Geirangerista Osloon (447 km) Palaa takaisin Osloon. Matkalla voit pysähtyä Lomissa, joka on tunnettu Stavkyrkan stavkirkostaan, tai voit ajaa läpi Jotunheimenin kansallispuiston ja nauttia upeista vuorimaisemista.
Muista, että Norjan sää voi olla arvaamaton, joten varaudu kaikenlaisiin olosuhteisiin. Tarkista aina paikalliset sääennusteet ja tieolosuhteet ennen matkaan lähtöä. Toivottavasti nautit matkastasi Norjassa.
Antero:
Kiitos. Piirrä kartta, jossa näkyy matkareitti.
Copilot:
Yritän luoda kartan, jossa näkyy matkareitti.
(Aiempaan kokeiluuni Copilot sanoi, ettei se voi piirtää karttoja. Tällä kertaa se lähetti syötteen ” Map of a road trip from Oslo to Trondheim in Norway” DALL E 3-ohjelmalle, joka luo keinotekoisia kuvia tekstisyötteen perusteella. Syntyneellä kartalla oli kuitenkin enemmän viihteellistä kuin maantieteellistä arvoa.)

Liitetiedostot

reitti.jpg
Antero Virkkala 12.12.2023 18:03

Toisen kokeiluni tavoite on automatisoida matkalla syntyneiden kuvien ja videoiden kopiointia muistikorteilta isommalle ja pysyvämmälle muistivälineelle. Ajatukseni oli, että eri kameroiden muistikorttien nimet vastaavat eri kameroita ja tämän tiedon perusteella muistikortilla olevat kuva- ja videotiedostot kopioituisivat vastaavan nimisiin kansioihin kovalevyllä. Pyysin Copilotia tekemään skriptin (komentojonon) tätä varten.
Antero:
Please write a script that runs on a Windows computer and copies files from a memory card to a hard disk as follows:
-1. the script reads the name of the memory card, e.g. NikonD850
-2. the script then copies all files from the memory card to a folder on the hard disk, wherein the name of the folder on the hard disk equals the name of the memory card (e.g. all files from card named NikonD850 to a folder named NikonD850), but the script does not copy files which already exist on the hard disk's folder
Copilot:
Sure, I can help with that. Here’s a simple script written in PowerShell, a scripting language built into Windows, that should do the trick:

Define the source and destination directories

$sourceDir = "D:\NikonD850" # Replace with your memory card path
$destDir = "C:\NikonD850" # Replace with your hard disk path

Check if the destination directory exists, if not, create it

if (!(Test-Path -path $destDir)) {
New-Item $destDir -ItemType Directory
}

Get the files in the source directory

$sourceFiles = Get-ChildItem $sourceDir -File

Iterate over each file in the source directory

foreach ($file in $sourceFiles) {

Construct the full path of the destination file
$destFile = Join-Path $destDir $file.Name<br /> # If the file does not exist in the destination directory, copy it<br /> if (!(Test-Path $destFile)) {<br /> Copy-Item $file.FullName $destFile<br /> }<br />

}

Please replace "D:\NikonD850" and "C:\NikonD850" with the actual paths of your memory card and hard disk folder respectively. This script will copy all files from the memory card to the hard disk folder, skipping files that already exist in the destination folder.
Note: Please run this script with administrative privileges to ensure it has the necessary permissions to read from the memory card and write to the hard disk. Also, make sure to backup your data before running the script to prevent any accidental data loss. Use this script at your own risk…

Antero:
I think you omitted the first step wherein the script reads the name of the memory card. The purpose of this step is that files from a certain camera are always copied to the same folder and that folder is unique for each camera.

Copilot:
I apologize for misunderstanding your request earlier. Here’s an updated version of the script that reads the name of the memory card and uses it to create a destination folder with the same name:

Define the source directory (memory card)

$sourceDir = "D:\" # Replace with your memory card path

Get the name of the memory card

$memoryCardName = (Get-Volume -DriveLetter $sourceDir.Substring(0,1)).FileSystemLabel

Define the destination directory on the hard disk

$destDir = "C:\$memoryCardName" # Replace "C:\" with your hard disk path

Check if the destination directory exists, if not, create it

if (!(Test-Path -path $destDir)) {
New-Item $destDir -ItemType Directory
}

Get the files in the source directory

$sourceFiles = Get-ChildItem $sourceDir -File

Iterate over each file in the source directory

foreach ($file in $sourceFiles) {

Construct the full path of the destination file
$destFile = Join-Path $destDir $file.Name<br /> # If the file does not exist in the destination directory, copy it<br /> if (!(Test-Path $destFile)) {<br /> Copy-Item $file.FullName $destFile<br /> }<br />

}

This script first reads the name of the memory card, then creates a folder on the hard disk with the same name (if it doesn’t already exist), and finally copies all files from the memory card to the hard disk folder, skipping files that already exist in the destination folder.
(Seuraa Samat varoitukset kuin edellä.)
===========================
No, minähän kokeilin, ja yllätyin kun ohjelma toimi niin kuin pitikin. Tehtävänmäärittelyssäni olin olettanut, että Copilot tietäisi, että kuva/videotiedostot ovat muistikortin DCIM-kansiossa. Ei tiennyt, mutta puuttuva ”\DCIM” oli helppo lisätä lähdehakemiston nimeen.

Antero Virkkala 12.12.2023 18:05

Edellisessä viestissä näkyvässä kokeilussa ongelmana oli, että levyasematunnukset oli koodattu suoraan ohjelmaan. Seuraavaksi pyrin parantamaan ohjelmaa, niin että se tunnistaisi automaattisesti, missä asemassa muistikortti on:

Antero:
Write a PowerShell script to find out which drive letter holds an SD memory card.

Copilot:
Sure, here’s a simple PowerShell script that lists all the drives on your computer. It doesn’t specifically identify an SD card, but you can usually tell by the drive’s size and free space.
Get-WmiObject -Query "Select from Win32LogicalDisk" |
Format-Table DeviceID, VolumeName, @{n='Size (GB)';e={"{0:N2}" -f ($.Size/1GB)}}, @{n='Free Space (GB)';e={"{0:N2}" -f ($_.FreeSpace/1GB)}}
This script uses the Get-WmiObject cmdlet to query the Win32_LogicalDisk class, which represents a data source that resolves to an actual local storage device on a computer system running Windows. The Format-Table cmdlet is then used to display the drive ID (which includes the drive letter), the volume name, the total size of the drive, and the free space on the drive.
If you want to specifically identify an SD card among the drives, you might need a more complex script or a third-party utility, as Windows does not natively distinguish SD cards from other types of drives.

Windows ei siis tiedä (tai ainakaan kerro), missä asemassa on muistikortti. Ehdotin, että ohjelma etsisi saatavilla olevista levyasemista pienimmän.

Antero:
Can you complement the above code by selecting the drive with the lowest capacity?

Copilot:
Sure, here’s how you can modify the script to select the drive with the lowest capacity:

$drives = Get-WmiObject -Query "Select from Win32LogicalDisk"
$minSizeDrive = $drives | Sort-Object Size | Select-Object -First 1
$minSizeDrive | Format-Table DeviceID, VolumeName, @{n='Size (GB)';e={"{0:N2}" -f ($.Size/1GB)}}, @{n='Free Space (GB)';e={"{0:N2}" -f ($_.FreeSpace/1GB)}}

This script first gets all the drives and stores them in the $drives variable. It then sorts these drives by size and selects the first one (i.e., the one with the smallest size), storing it in the $minSizeDrive variable. Finally, it displays information about this drive.
==========
Vaikka ohjelmani ei ole vielä valmis, jo tähänastinen on ollut tajunnanräjäyttävä kokemus. Aiempien ohjelmointikielten oppimiseen on mennyt (muiden töiden ohella) kuukausia, ennen kuin niillä on voinut tehdä mitään mielekästä. Tekoälyn avulla ei tarvitse tuntea PowerShellin (tai muun kielen) detaljeja tai Windowsin rajapintoja, ja varsin nopeasti pääsee kokeilemaan, onnistuuko jonkun asian tekeminen tällä työkalulla.

Alf Lindblom 24.12.2023 15:11

Tuo kopiointiprosessi tulisi huomattavasti yksinkertaisemmaksi käyttämällä XCOPY-comentoa.

Antero Virkkala 26.12.2023 15:27

Alf, viime vuosituhannella työskentelin 18 vuotta räätälöityjen IT-järjestelmien kehityksessä ja markkinoinnissa. Kun asiakaskandidaattia arvelutti järjestelmän oppimiskynnys, käytin usein kottikärry-kuorma-auto -analogiaa. Kun pitää siirtää pieni multakasa auton purkupaikalta vihannesmaalle, on helpompi käyttää kottikärryä. Kun pitää toistuvasti siirtää suuria multakuormia toimittajalta kuluttajille, on helpompi käyttää kuorma-autoa. Kuorma-autolla on tietty oppimiskynnys, mutta sen ylittämisen jälkeen homma hoituu huomattavasti tehokkaammin. Kun sanot, että ” kopiointiprosessi tulisi huomattavasti yksinkertaisemmaksi käyttämällä XCOPY-komentoa”, niin rohkenen olla eri mieltä. XCOPY (tai nykyään ROBOCOPY) vaatii seuraavat ainakin toimenpiteet: 1) selvittää missä asemassa on muistikortti, 2) selvittää missä asemassa on vastaanottava massamuisti, 3) käytettävän kameran perusteella valita oikea kansio kopioitaville tiedostoille, 4) antaa XCOPY:lle oikea parametri jotta alakansiotkin kopioituisivat, ja 5) antaa XCOPY:lle oikea parametri jotta massamuistilla jo olevia tiedostoja ei kopioida uudestaan.


Tuo minun ja Copilotin yhteistyönä tekemä ohjelma pitää vain käynnistää eikä sitten muuta (olettaen, että muistikortti ja kohdeasema ovat ohjelman löydettävissä). Itse asiassa ohjelma on kehittynyt sen jälkeen kun viimeksi tästä asiasta kirjoitin. Huomasin nimittäin, että alakansioiden käyttötarkoitus kamerassa, ja vastaavasti niiden käsittely kopiointivaiheessa, ovat kovasti erilaisia kamerasta toiseen. Järkkärissä (Nikon) alakansiot ovat vain sen vuoksi, että yhdessä hakemistossa ei tulisi olemaan kohtuuttoman monta tiedostoa (kuvaa/videoklippiä). Alakansioiden nimet arvotaan lennossa, mikä sitten johti siihen, etten onnistunut antamaan XCOPY:lle sellaista parametriyhdistelmää, että kaikkien alakansioiden tiedostot yhdistetään samaan massamuistin kansioon. (Olisi kyllä mahdollista kopioida muistikortin alakansiot alakansioina eikä erillisinä tiedostoina, mutta jossain vaiheessa ne pitäisi kuitenkin yhdistää).

Kojelautakameran (VIOFO A139PRO) alakansioilla on hyvin määrätyt tehtävät. \DCIM\MOVIE sisältää ”tavalliset” videoklipit (olen asettanut pituudeksi 5 min). Kun muistikortti täyttyy, uudet klipit kirjoitetaan vanhimpien päälle. Päällekirjoituksen estämiseksi tärkeät klipit voidaan suojat kojelautaa liimattavalla Bluetooth-napilla (tai ajamalla niin suureen kuoppaan, että törmäysanturi aktivoituu). Meneillään oleva klippi suojataan siirtämällä se \DCIM\MOVIE\RO -kansioon, ja samanaikaisesti tallennetaan valokuva \DCIM\PHOTO -kansioon. Jokaisen ajopäivän päätteeksi DCIM\MOVIE-, DCIM\MOVIE\RO- ja DCIM\PHOTO -kansioiden tiedostot pitää kopioida samannimisiin alakansioihin massamuistin VIOFO-kansiossa. Tässä pitää olla tarkkana. Väärään paikkaan kopioituja tiedostoja on hankala löytää, kun niitä kotona tarvitsee. Homma ei ainakaan helpotu siitä, jos työpäivän päätteeksi Parisuhteen Kauniimpi Osapuoli kiehnää kyljessä ja pyrkii vimmaisesti vierihoitoon :)

Kottikärry-kuorma-auto -analogiaa käyttäen, kun ohjelma on kerran tehty, sen käyttäminen toistuvasti on huomattavasti yksinkertaisempaa kuin usean peräkkäisen XCOPY/ROBOCOPY -käskyn antaminen aina erilaisilla parametreilla.

Alf Lindblom 26.12.2023 22:36

No tuossa ongelmassa lähtöpisteen ja loppupisteen selvittely on samaa riippumatta kopiointiprosessista. Kun nämä parametrit ovat selvillä xcopy-komennon suorittaminen menee automaattisesti, kopioidaan vain puuttuvat tai muutetut tiedostot alihakemistoineen.


Käytin tätä menetelmää vuosia (onneksi "dos"-komennot eivät muuttuneet ajan kanssa) työasemani työtiedostojen automaattiseen varmuuskopiointiin työpaikan palvelimelle automaattisena toimenpiteenä työajan jälkeen. Ainoa puute oli että siinä vain lisättiin tiedostoja, poistoja ei tapahtunut. Syncronointi on sitten eri asia, se hoituin manuaalisesti silloin kun muisti. Siihenkin kehitin batch-ohjelman mutta siinä on aina riski että omasta koneesta vahingossa poistettu tiedosto poistuu myös varmuuskopiosta. Syncronoinntiin on hyvä ohjelma olemassa: TotalCommander. Näissä prosesseissa kesä-talviaika voi luoda ongelmia, samoin jos muutetaan aikavyöhykettä. Windows voi silloin tulkita muuttuneet tiedostot väärin.
muokattu: 26.12.2023 22:51
Antero Virkkala 27.12.2023 15:52

Seuraava kokeilu: mitä pitää ottaa huomioon kun EBL:n edelle asennetaan lisälaturi, esim. Victron Orion Tr Smart?

Antero:
I have a motorhome, which has two batteries. One battery (starter battery) is used for starting the engine, while the other (leisure battery) serves various habitation-related functions, such as controlling the fridge and heating, lighting, water pump, etc. Originally, both batteries are lead batteries. I will replace the leisure battery with a LiFePo4 (lithium iron phosphate, also called LFP) battery. LiFePo4 batteries require a different charging profile from lead batteries. My motorhome has a Schaudt Electroblock (EBL) 31 power distribution system. When the engine runs, the EBL connects the leisure battery in parallel with the starter battery. As a result, the engine’s alternator charges both batteries simultaneously. However, the EBL can only charge lead batteries. When the leisure battery is replaced with a LiFePo4 battery, it is customary to insert a battery-to-battery (B2B) charger (also called direct current-to-direct current, or DC to DC charger) between the alternator and the EBL. As regards the B2B or DC to DC charger, I plan to use a Victron Orion-Tr Smart 12 12 30A unit.

Now, please create a summary of what is known about inserting charger Victron Orion-Tr Smart 12 12 30A between the alternator/starter battery and the EBL. There are several good comments on a British forum called motorhomefun.co.uk/forum/ .

Copilot:
Based on the discussions from the MotorhomeFun forum, here are some key points about using the Victron Orion-Tr Smart 12 12 30A charger in your motorhome setup:

Heat Issues: Some users have reported that the Victron Orion-Tr Smart 12 12 30A charger can get quite hot during operation>1. One user reported a case temperature of 55 degrees Celsius after a 45-minute drive>1. Victron has acknowledged heat issues with some early versions of these chargers and offered a free exchange for those units>1. However, it was also mentioned that these temperatures might be normal for this charger due to the high current it handles>1.

Installation: The charger should be mounted vertically with sufficient space above and below as per the installation instructions>1. The cable sizes used should be the maximum for this charger at 16mm2>1.

Input Voltage Lock-out: One user reported getting only 12.4V from the alternator, which triggered the Input Voltage Lock-out on the Victron charger>2. This is a safety feature that shuts down the charger if the input voltage drops below a certain level (12.5V by default)2. It was suggested to try lowering the voltage setting for the Input Voltage Lock-out in the Victron settings>2.

Smart Alternator Considerations: If your motorhome has a smart alternator, you should pick the negative for the B2B input from a good chassis earth point>2. This is because the ECU needs to register a draw to trigger the alternator>2.

Please note that these are experiences and suggestions from other users and may not apply directly to your specific situation. Always consult with a professional or the product manual for accurate information.
1: motorhomefun.co.uk/forum/threads/victron-orion-tr-smart-too-hot.247234/
2: motorhomefun.co.uk/forum/threads/victron-energy-orion-tr-smart-12-12-30a-with-smart-alternator-not-working.287797/
3: motorhomefun.co.uk/forum/threads/changing-my-sargent-charger-for-a-victron-ip22-charger.239125
4: motorhomefun.co.uk/forum/threads/installing-victron-b2b-charger.237284

No niin, Copilot ei selvästikään ole parhaimmillaan tulkitessaan keskustelufoorumia, jonne monet kirjoittajat heittelevät kysymyksiä ja tiedonmurusia. Copilot tekee parempia tiivistelmiä yhden kirjoittajan artikkeleista, joissa fokus pysyy paremmin paikallaan. Olen itsekin löytänyt Motorhomefun-foorumilta relevantimpia juttuja, mutta niiden penkominen on vaatinut tuntien työn.

Mutta ennen kuin liiaksi kivitämme tekoälyä, mietitäänpä mitä tulisi jos tekoälyä pyytäisi tekemään vastaavan tiivistelmän tämän foorumin keskusteluista:

"Victron Orion Tr Smart on usean käyttäjän valinta. Jotkut käyttäjät tosin valittavat EU:n pyrkimystä laajentaa kontrolliaan asioihin, jotka Suomessa osataan paremmin. On jopa arveltu, että euroon liittyminen olisi ollut virhe. Myös makkaran ja dieselpolttoaineen korkeita hintoja on kritisoitu."

Antero Virkkala 27.12.2023 16:32

Edellisessä puheenvuorossa mainitsin tekoälyn rajoituksista. Kuitenkin kuvien/videoiden kopiointiohjelmaa tehdessä olen ihaillut sitä, miten joustavasti Copilot etsii uuden lähestymistavan, jos kerron sille että sen ehdottama tapa ei toimi toivotusti. Sen sijaan ihmiset usein takertuvat tuntemaansa lähestymistapaan vaihtoehtoja miettimättä. Jotkut puhuvat vasarafiksaatiosta: jos sinulla on vasara, kaikki ongelmasi näyttävät nauloilta. Vastaavasti, jos olet joskus käyttänyt XCOPY-komentoa tai TotalCommanderia tietovarastojen synkronointiin, oletat että kaikki tiedostojen siirto on synkronointia.


Tosiasia kuitenkin on, että valokuvien tai videoiden siirtämisessä muistikortilta massamuistille synkronointityökalu olisi ihmiskunnan toiseksi huonoin keksintö (heti AdBluen jälkeen). Alf ei ilmeisesti harrasta valo- tai videokuvaamista, ei ainakaan siinä määrin että kesken matkan pitäisi tyhjentää muistikorttia, jotta sille mahtuisi uusia kuvia. Synkronointi tarkoittaa, että jos primääritietovaraston (muistikortin) tiedostoa muutetaan, muutos synkronoidaan sekundääritietovarastoon (massamuistiin). Mutta eihän valokuvia muuteta kamerassa sen jälkeen kun kuva on otettu. Jos puhelimessa muokataankin kuvaa, muokattu kuva tallennetaan uuteen tiedostoon. Puhelimessa muokattu kuva ei saa korvata massamuistille jo tallennettua alkuperäistä kuvaa. Kaikkinainen pähkäily kesä- ja talviajoista tai aikavyöhykkeistä on siksi täysin epärelevanttia. Puhelimessa muokattu kuva tallennetaan uuden nimiseen tiedostoon, joka kopioidaan massamuistille alkuperäistä poistamatta.


Ja aivan hulluksi asia menee, kun kopioinnin jälkeen muistikortti tyhjennetään, jotta sille mahtuisi uusia kuvia. Synkronointia käytettäessä muistikortilta poistetut kuvatiedostot pitäisi poistaa myös massamuistilta. Alfin mielestä on "puute, että (kopioitaessa) vain lisättiin tiedostoja, poistoja ei tapahtunut". Minun mielestäni jos muistikortilta poistetut kuvatiedostot poistetaan myös massamuistilta, olisi kuvat voinut yhtä hyvin jättää ottamatta ja kameran olisi voinut jättää ostamatta.

Alf, olet jo pari kertaa kehunut, kuinka XCOPY tekee kopioinnin yksinkertaiseksi (24.12.) tai automaattiseksi (26.12.), ja että olet käyttänyt tätä vuosia. Tee nyt sitten kokonainen XCOPY-komento, joka tunnistaa kameran tyypin ja tämän tiedon perusteella päättelee, miten alikansiot pitää käsitellä. Jos tähän pystyt, pyydän anteeksi hiukan kärkevää kielenkäyttöäni.


P.S. Lisään vielä, että kuvien/videoiden kopiointiprosessin automatisointia voisi hyödyntää joku muukin kuin minä. Katselin äsken erään tälläkin foorumilla aktiivisen tubettajan videon, joka yllättäen oli koostettu pelkistä kojelautakameran klipeistä, kun tekijä oli onnistunut kadottamaan muilla kameroilla kuvatut klipit.
muokattu: 27.12.2023 16:33

Osallistuaksesi keskusteluun siirry jäsenkirjautumiseen tai vierailijoille tarkoitettuun Facebook-tunnistautumiseen.