Udløsere til eksterne programmer
Fotoboksen melder trin i sit forløb udadtil: til en adresse i netværket eller til et program på sin egen computer. Dermed kan der tilsluttes teknik, som der ikke findes et eget område til.
Det slås til i administrationsområdet "Lys- og tilbehørsstyring" > "Udløsere til eksterne programmer". Dette kapitel beskriver, hvad der ankommer dér, og hvordan man kan arbejde med det.
Hvad det er godt til#
Et par opgaver fra praksis, der kan løses med det:
- Styr ringlys eller blitzanlæg, der har egen software. Kør op ved nedtællingen, sluk i optagelsesøjeblikket eller ved en afbrydelse.
- Tænd en stikkontakt, så snart en session begynder, og sluk igen efter afslutningsskærmen
- via et hjemmeautomatiseringssystem.
- Send færdige billeder videre: kopiér, omdøb, læg i en mappe, overdrag til et billedbehandlingsprogram.
- Tæl med, hvor mange sessioner og udskrifter der er blevet til, uden at spørge fotoboksen om det.
- Røgmaskine, lysorgel, konfettikanon - alt, der reagerer på et signal.
- Lad en visning køre med, f.eks. en anden skærm i sidelokalet, der viser, hvad der sker lige nu.
Fotoboksen forventer intet svar og vurderer ikke noget. Den melder kun.
Opsætning i tre trin#
- Fastlæg mål. Enten en adresse i netværket eller et program på fotoboksens computer. Ved et program hører den fuldstændige sti inklusive filendelse i feltet; knappen "Vælg program" finder den frem i stedet for at taste den.
- Sæt flueben ved hændelser. Kun det afkrydsede meldes. Den, der først vil finde ud af, hvad der kommer hvornår, krydser først alt af og fjerner senere det, der ikke bruges.
- Test. Knappen "Test hændelse" sender en enkelt hændelse med eksempelværdier af sted og viser den kommando, der faktisk er gået ud - ved en fejl desuden dens årsag.
De to veje#
Adresse i netværket#
Fotoboksen kalder en adresse og hænger værdierne på som parametre:
http://127.0.0.1:8000?event_type=session_start¶m1=photo
event_type nævner hændelsen, param1 til param4 de ekstra værdier. Specialtegn er kodet, som det er almindeligt ved internetadresser.
Alternativt sendes i stedet en POST med JSON:
{"event_type": "session_start", "param1": "photo"}
Det første format passer til eksisterende scripts og til enkle enheder, det andet til nyskrevne modtagere.
Program på denne computer#
Fotoboksen starter det angivne program og overgiver værdierne som argumenter i fast rækkefølge - først hændelsesnavnet, derefter de ekstra værdier:
Mein-Skript.bat session_start photo
Programmet kører uden synligt vindue. Dets arbejdsmappe er den mappe, det ligger i - nabofiler kan altså kaldes med blot navnet.
Reference: de elleve hændelser#
I forløbets rækkefølge. En værdi, som en hændelse ikke giver med, forbliver tom, men beholder sin plads.
Session starter#
Gæsten har valgt optagetilstanden, sessionen er oprettet.
| Værdi | Indhold |
|---|---|
| 1 | Optagetilstand: photo, gif, boomerang eller ai_portrait |
Mein-Skript.bat session_start photo
Nedtælling begynder#
Kommer før hver enkelt optagelse, ved et layout med fire billeder altså fire gange.
| Værdi | Indhold |
|---|---|
| 1 | Nedtællingens varighed - i sekunder, alternativt i millisekunder |
Mein-Skript.bat countdown_start 3
Nedtælling slutter eller afbrydes#
Nedtællingen er forbi. Følger præcis én gang efter hver "Nedtælling begynder" - enten ved nul, umiddelbart før udløsningen, eller fordi nedtællingen blev afbrudt forinden.
| Værdi | Indhold |
|---|---|
| 1 | completed, når nul er nået; aborted ved en afbrydelse |
Mein-Skript.bat countdown_stop completed
En nedtælling afbrydes, når gæsten afbryder, eller sessionen af en anden grund slutter, før nul er nået. Efter aborted følger ingen capture_start - et ringlys, der er kørt op ved nedtællingen, bør slukke igen her.
Udløsning#
Optagelsesøjeblikket. Kommer ligeledes før hver enkelt optagelse, umiddelbart før billedet opstår.
Denne hændelse har ingen ekstra værdier.
Mein-Skript.bat capture_start
Optagelse modtaget fra kameraet#
Kameraet har leveret et billede, og det ligger på harddisken. Kommer kun ved et tilsluttet foto- eller systemkamera, ikke ved et webcam - dér opstår billedet først i brugerfladen.
| Værdi | Indhold |
|---|---|
| 1 | Fuldstændig sti til den uændrede kamerafil |
Mein-Skript.bat file_download "C:\...\sessions\20260918\dslr_raw\shot_01.jpg"
Behandling begynder#
Alle optagelser foreligger, det færdige billede beregnes nu: fritlægning, filter, layout. Afhængigt af indstilling tager det nogle sekunder.
| Værdi | Indhold |
|---|---|
| 1 | Kildefilerne, adskilt med semikolon |
| 2 | Sti, hvor det færdige billede vil opstå |
Mein-Skript.bat processing_start "C:\...\shot_01.jpg;C:\...\shot_02.jpg" "C:\...\final.jpg"
Målstien ligger allerede fast, før der beregnes. Et script kan altså forberede sig i stedet for at gennemsøge mappen. Selve filen findes endnu ikke på dette tidspunkt.
Gevinst i konkurrencen#
En session har vundet i konkurrencen. Der meldes ved sessionens første afslutning; en gentagelse af optagelsen melder ikke igen.
| Værdi | Indhold |
|---|---|
| 1 | Præmiens navn |
| 2 | Gevinstkode, f.eks. K7P-4XM |
Mein-Skript.bat prize_won "Gratis drink" K7P-4XM
Afslutningsskærm vises#
Det færdige billede kan ses, gæsten beslutter om udskrift og deling.
Denne hændelse har ingen ekstra værdier.
Mein-Skript.bat sharing_screen
Udskriftsjob sendes#
En udskrift er sat i gang - af gæsten eller automatisk.
| Værdi | Indhold |
|---|---|
| 1 | Sti til den fil, der udskrives |
| 2 | Antal udskrifter |
| 3 | Printerens navn |
Mein-Skript.bat printing "C:\...\final.jpg" 2 "DS-RX1"
Der meldes, at jobbet har forladt fotoboksen. Om papiret faktisk kommer ud, ved kun printeren.
Upload afsluttet#
Et billede er ankommet til cloudmålet.
| Værdi | Indhold |
|---|---|
| 1 | Sti til den uploadede fil |
| 2 | Adresse til billedet, såfremt målet leverer en |
| 3 | Filendelse, f.eks. jpg eller mp4 |
| 4 | Målets kendetegn |
Mein-Skript.bat file_upload "C:\...\final.jpg" "https://.../s/abc" jpg Hochzeit
Session slutter#
Forløbet vender tilbage til startskærmen - efter afslutningsskærmen, efter at tidsuret er udløbet, eller fordi gæsten har afbrudt.
Denne hændelse har ingen ekstra værdier.
Mein-Skript.bat session_end
Hvad der kommer hvornår#
En fuldstændig gennemkørsel med et layout af to optagelser, udskrift og upload:
session_start photo
countdown_start 3
countdown_stop completed
capture_start
file_download C:\...\shot_01.jpg
countdown_start 3
countdown_stop completed
capture_start
file_download C:\...\shot_02.jpg
processing_start C:\...\shot_01.jpg;C:\...\shot_02.jpg C:\...\final.jpg
sharing_screen
printing C:\...\final.jpg 1 DS-RX1
file_upload C:\...\final.jpg https://.../s/abc jpg Hochzeit
session_end
Ved et webcam mangler file_download-linjerne. Afbryder gæsten, kommer session_end uden linjerne forinden. Falder afbrydelsen i en nedtælling, kommer umiddelbart før session_end desuden countdown_stop aborted. Udskrift og upload kommer kun, når de er slået til, og gæsten udløser dem.
Læs værdierne rigtigt#
I en batchfil#
Værdierne står til rådighed som %~1, %~2 og så videre. Tilden hører med: Værdier med mellemrum, lighedstegn, komma eller semikolon overgives i anførselstegn, og %~2 fjerner dem igen. Med %2 ville de stå i teksten.
@echo off
if /i "%~1"=="printing" (
rem %~2 = Datei, %~3 = Anzahl, %~4 = Drucker
echo Es werden %~3 Ausdrucke auf %~4 gemacht
)
Enkle værdier uden specialtegn - f.eks. en nedtællingsvarighed - ankommer uden anførselstegn og kan også læses med %2.
I PowerShell#
param([string]$Ereignis, [string]$Wert1, [string]$Wert2, [string]$Wert3, [string]$Wert4)
Sekunder eller millisekunder#
Nedtællingsvarigheden sendes fra fabrikken i sekunder. Nogle enheder forventer millisekunder - til det findes fluebenet "Angiv nedtællingens varighed i millisekunder" i administrationsområdet. 3 bliver så til 3000.
Forbliver en nedtællingsanimation mørk, eller er den forbi med det samme, skyldes det næsten altid denne enhed.
Færdige eksempler#
Filerne kan downloades, lægges i en egen mappe og angives som mål i administrationsområdet. De er tænkt som udgangspunkt og må ændres.
Skriv hver hændelse med#
Skriver hvert kald med tid, hændelse og alle værdier i en tekstfil ved siden af scriptet. Det første skridt til alt videre.
Download ausloeser-protokoll.bat
Styr en enhed via den serielle port#
Sender ved nedtællingen og ved udløsningen hver en kommando til en enhed på COM3 og slukker den igen efter en afbrudt nedtælling - det mønster, ringlys og lignende styringer arbejder efter. Kommandoer og tilslutning indtastes øverst i scriptet.
Download ausloeser-seriell.bat
Kopiér og omdøb færdige billeder#
Lægger hvert færdigt billede desuden i en målmappe med dato og klokkeslæt i navnet. Nyttigt for en fotograf, der arbejder videre parallelt.
Download ausloeser-kopieren.ps1
En lille modtager til netværksvejen#
Et program, der lytter på en adresse og viser hver hændelse. Til at afprøve vejen via netværket, før den egentlige målenhed tilsluttes. Kræver en installeret Python-runtime.
Download ausloeser-empfaenger.py
Hjemmeautomatisering#
Systemer som Home Assistant, ioBroker eller Node-RED tager imod et kald via netværket. Som mål indtastes deres adresse, f.eks.:
http://192.168.1.50:8123/api/webhook/fotobox
Dér udløser en automatisering så. Hændelsen står i event_type, og fordi værdierne kommer med som parametre, kan der skelnes mellem sessionsstart og sessionsslut uden at oprette en egen adresse for hver hændelse.
Forventer systemet JSON i stedet for parametre, skiftes formatet i administrationsområdet.
Fejlfinding#
Der ankommer slet intet#
Kontrollér i rækkefølge:
- Er "Brug udløsere" slået til og gemt?
- Er den ønskede hændelse afkrydset?
- Står den fuldstændige sti inklusive filendelse i feltet ved et program?
- Hvad siger knappen "Test hændelse"? Den viser den kommando, der sendes, og ved en fejl dens årsag.
- Må der skrives i den mappe, hvor scriptet vil oprette sin fil?
Scriptet kører, men gør intet#
Et script, der i fotoboksens mappe leder efter nabofiler, finder dem ikke - det kører i sin egen mappe. Angiv derfor stier i scriptet enten fuldstændigt, eller henvis med %~dp0 til den egne mappe.
Værdier står på det forkerte sted#
Næsten altid forskellen mellem %2 og %~2. Se ovenfor under "Læs værdierne rigtigt".
Gæstens forløb går i stå#
Det må ikke ske, og det skyldes så ikke udløseren: Fotoboksen venter højst den indstillede tidsgrænse og fortsætter derefter, også når målet ikke svarer. Tidsgrænsen kan forkortes, når en langsom enhed er med i spillet.
En hændelse kommer flere gange#
Det er oftest rigtigt sådan: Nedtællingsstart, nedtællingsslut og udløsning kommer før hver enkelt optagelse. Ved et layout med fire billeder altså fire gange.