Til hovedinnhold

HTPC trinn for trinn - del 10

Innledning

På tross av det jeg skrev til slutt i forrige artikkel, blir det ikke TV-kort og NetRemote denne gangen. I denne artikkelen skal jeg forklare litt om grunnleggende automatisering, både av selve HTPC-en og av andre ting, som kan oppnås med Girder fra Promixis (som også står bak NetRemote, som blir gjennomgått i en senere artikkel).

Promixis er et firma opprettet av entusiaster, for entusiaster, og kundebehandlingen og brukerstøtten er direkte eksemplarisk. Dessuten er de fantastiske til å implementere nye funksjoner og tillegg til eksisterende funksjoner når folk ber om det. Hvis Microsoft hadde vært like flinke, ville neppe noen orket å bry seg om Linux-systemer eller Apple nå!

Men dette blir ikke en "sånn gjør man for å få en HTPC som styrer alt jeg har lyst til og fungerer perfekt for meg"-artikkel. Da måtte jeg skrevet hundrevis av gjennomganger, for alle har jo ulike behov. Men igjen kommer fordelene ved brukerstøtten og alle de gode hjelperne på Promixis-forumet. Først en gjennomgang med mulighetene særlig Girder byr på.

Oversikten over alle artikler i denne serien så langt finner du her.

Girder

Girder

Dette er det mest kompliserte, men samtidig nyttigste av alle programmer jeg har i huset mitt! Med det kan jeg styre stort sett alt som kan styres på en PC, nesten alt som kan styres infrarødt (ved hjelp av en USB-UIRT - det eneste unntaket er Barco-prosjektøren min, som har en uvanlig sær infrarød kommunikasjon, men den klarer til og med en gammel Bang & Olufsen, som også regnes som noe av det vanskeligste å styre).

Lys og det meste annet som plugges inn i kontakter tar den ved hjelp av såkalte X-10-enheter (i Norge føres det av flere forskjellige forhandlere) eller 220-voltsreleer med 12 volt styrestrøm levert av Phidgets. Og alt som kan styres serielt (altså med en serieport, der jeg tar igjen den manglende infrarøde kontrollen av prosjektøren) tar Girder seg av uten annet ekstrautstyr enn en seriekabel.

Her er en del av enhetene jeg bruker:



USB-UIRT


X-10-sender, koblet til PC-en via serieporten


X-10-mottakere, den store er en apparatkontroll som tåler noen tusen Watt, den minste er en lysstyring med dimmer.


Phidget-kontrollen, koblet til PC-en med USB-kabel.


Den typen relé med 220-voltskontroll og 12-volts styrestrøm som Phidgeten styrer.


IR-mottaker som sender signalet videre som radiobølger til en nesten helt lik IR-utsender.

Hundene og fru Mastiff klarer jeg dessverre ikke å styre, selv om jeg flere ganger har bedt om at Promixis skal utvikle en Stepford Wife-plugin, men til gjengjeld er de tobeinte Mastiff-valpene enkle. Det er bare å slå på en av TV-ene i huset med en av barnekanalene, så er de ute av veien! Her er en liten gjennomgang av en Girder-brukers hverdag:

Klokka er kvart på sju, og fru Mastiff skal opp for å få Mastiffvalpene på skolen. Derfor begynner Girder med å slå på receiveren på soverommet ved hjelp av USB-UIRT-en, som har eksterne IR-dioder med kabler fra serverrommet til stua, kinoen og soverommet. Volumet blir skrudd helt ned, og deretter skrus det opp igjen til et passe behagelig nivå, og lydkilden settes til CD, som får digitallyd fra et av HTPC-ens lydkort. Når det er oppe på riktig nivå, sender Girder på serveren en kommando til Girder på HTPC-en, slik at den begynner å spille "Concerning Hobbits" fra "Ringens brorskap" (men da ikke en midiutgave, det er ekte saker).

Til slutt blir høyttalerne på soverommet slått på. Receiveren kan ikke slå av høyttalerne med en IR-kommando (det er det faktisk få receivere som kan), derfor sender Girder en X-10-kommando til en X-10-enhet på soverommet. Denne slår av og på strømmen til en batterieliminator som gir tolv volt, og det er styrestrømmen til releet som kobler inn og ut høyttalerne.

Så "Ringenes herre"-musikken strømmer altså ut med et behagelig lydnivå til å begynne med. Det pleier å være nok, men hvis fruen skulle sove ekstra tungt, blir volumet skrudd opp en tanke etter 20 sekunder, litt til etter ytterligere 20 sekunder og så videre. Samtidig som denne vekkingen foregår, sender Girder en vekkekommando til PC-en på kjøkkenet som fungerer som TV (med 19" flatskjerm og ATI All-In-Wonder-kort). Ti minutter senere går det X-10-signaler til leselysene på Mastiff-valpenes rom, så lysene der går gradvis opp til full styrke i løpet av ti minutter.

Klokka fem på halv åtte kommer morgenkåseriet, og da blir receiveren på soverommet igjen slått på, så jeg får hørt det. Har jeg flaks er det Are Kalvø! Deretter pleier jeg å sovne igjen. Det har sine fordeler å ha hjemmekontor, jeg slipper å tenke så mye på om jeg rekker frem til jobben i tide!

Kvart på åtte blir volumet skrudd opp til, med Politisk kvarter. Avhengig av hvor sent det ble kvelden før ligger jeg halvvåken og hører på det, eller så sover gjennom det hele. Men klokka ett minutt på åtte er det ingen bønn! Da slår Girder receiveren over på HTPC-inngangen igjen, fyrer volumet opp til et sted mellom voldsomt og uutholdelig og kjører "THX-symfonien", en tone som begynner dypt og går oppover, samtidig som den øker kraftig i volum. Vanligvis klarer selv ikke jeg å sove gjennom den, selv om det har hendt

Samtidig slår Girder på JVC Boom Blasteren på badet, med nyhetene. Der er det ikke lagt kabel fra USB-UIRT-en, men den lille boksen fyrer også signaler inn i en IR til RF-sender, og på badet og enkelte andre strategisk utvalgte steder står det mottakere som konverterer signalene til IR-signaler igjen og sender dem ut til det som måtte være der av elektronikk. Samtidig som alt dette skjer, startes de nødvendige PC-ene på kontoret.

Under arbeidsdagen er ikke Girder fremtredende, men den ligger hele tiden der i form av en del hurtigtaster og avanserte funksjoner som kjøres på jobbmaskinen. I tillegg har jeg egne makroer som fyller ut nødvendige fakturaer automatisk og døper om filer som skal sendes til hovedkontoret. Det sparer jeg mye tid på!

Hvis noen skulle ringe i løpet av dagen, er det et modem på serveren som leser av hvem ringer-informasjonen, gjør et oppslag i nummersøket på Gule Sider og sender videre nummer, navn og adresse, der det er tilgjengelig. Det kommer både som OSD på flere av maskinene med informasjonen, som e-post med SMS-kopi til mobiltelefonen, og som informasjon om siste innringer på Girders webserver. Denne kan brukes til stort sett alt, både å vise informasjon og sende kommandoer til Girder. Skulle det for eksempel være nødvendig å justere temperaturen på varmepumpen fordi det er blitt mye kaldere mens vi har vært bortreist i helgen, kan jeg gjøre det med webserveren fra hvilken som helst Internett-tilkoblet PC eller fra lomme-PC-mobilen (en Qtek 9090 oppgradert med Windows Mobile 5).

Girder forts.


Girder forts.

På et gitt tidspunkt i løpet av dagen vil en timer i Girder på serveren sende en kommando som vekke en egen maskin med i overkant av en terabyte lagringsplass. Når den vekkes, kjører den en automatisert sikkerhetskopiering av data på tre maskiner på nettverket, to av kontormaskinene og serveren. Etterpå går den i dvale igjen.

På kvelden, etter en lang arbeidsdag, kunne det kanskje være på sin plass med en film, og da bruker jeg enten en IR-fjernkontroll i stua eller i kinoen, eller NetRemote på lomme-PC-en eller en egen PCi stua med en 21-tommers berøringsfølsom skjerm. Dette slår på prosjektøren, som trenger en halvtimes oppvarmingstid for å fungere optimalt. Det hele styres av et 220-volts relé med tolv volts styrestrøm på en av utgangene fra et system som kalles Phidget, også det styrt av Girder.

Når prosjektøren slås på, gir den samtidig strøm til et relé som er koblet til den ene av viftene dens. Dette gir signal til en av inngangene på Phidgeten, og dette utløser en kommando på serveren som sender en e-post om at prosjektøren er slått på. Samtidig som prosjektøren slås på, kommer det motoriserte lerretet ned, og Girder på HTPC-en får en kommando over nettverket som setter i gang skjermspareren.

Når så oppvarmingen er ferdig, går jeg ned i kinoen, og et trykk på fjernkontrollen der (i kinomørket liker jeg best å bruke en vanlig fjernkontroll med knapper, og ikke en berøringsfølsom skjerm) setter kinoen over i bruksmodus. Det vil si at skjermspareren forsvinner, Zoom Player startes, Phidgets reléstyring slår på forsterkeren til rumperisteren og subwooferen, og strømmen til receiveren kobles til.

Deretter slår USB-UIRT-en på riktig inngang og justerer volumet. Og midt oppi dette har en kombinasjon av X-10 og Phidgets slått på spottene i taket og lyset på bordet mellom kinosjefens og kinosjeffruens stoler. En DVD settes inn (eller kjøres fra harddisken på dvd-serveren), og showet begynner. Hvis filmen ikke dekker hele lerretet, kan IR-fjernkontrollen sende signaler til Girder via USB-UIRT-en.

Dermed heves lerretet med Phidgets-releene, slik at feltet under filmen er maskert. Hver gang det er på tide med tissepause eller en ny øl (de to tingene har en underlig tendens til å henge sammen...) og jeg trykker på pauseknappen, blir lysene tonet opp samtidig som filmen stopper. Og når den forrige ølen er helt ut etter siling gjennom diverse organer, og den neste hentet i kjølerommet (som ligger meget strategisk plassert, bare fem skritt fra kinosjefens stol), vil en trykk på play-knappen dempe lysene helt ned og sette i gang avspillingen igjen.

Hvis noen skulle ringe mens filmen går, stopper Girder filmen automatisk. Med renderless exclusive modus, som fjerner tearing - se tidligere artikler - kan ikke skjermkortet vise andre ting enn filmen, derfor må filmen stoppes. Men Zoom Player begynner igjen nøyaktig der filmen sluttet, så det er ikke noe problem. Samtidig tones lysene opp, og det kommer en Girder-OSD som viser den nevnte hvem ringer-informasjonen. Et trykk på play setter i gang filmen igjen og demper lysene.

Etter filmen vil et trykk på en annen knapp på fjernkontrollen få Girder på serveren til å slå av strømmen til prosjektøren, slå av forsterkerne, kjøre lerretet helt opp, tone opp lysene og sette i gang en nedtelling som slår dem av etter to minutter. Samtidig sendes et signal til HTPC-en som får Girder der til å lukke Zoom Player og maksimere J.River Media Center, som er det vanlige forgrunnsprogrammet når kinoen ikke er i bruk.

Det er blitt sent, og Mastiff-valpene har lagt seg. Med et trykk på deres egne IR-fjernkontroller blir sengelampene slått på med en X-10-kommando fra serveren og deretter dempet til passe sovnebelysning, og det starter en nedtelling som slår dem helt av etter 20 minutter. Hannvalpen liker å høre på lydbøker med putehøyttaleren sin, og han styrer selvsagt valget av bøker med NetRemote (som regel "Harry Potter", "Hobbiten" eller "Ringenes herre"), mens vanlige transportkommandoer kommer fra IR-fjernkontrollen. Men nedtellingen er i gang, og halv elleve på hverdager og elleve på fredager og lørdager blir forsterkeren hans slått av med en X-10-enhet.

Far selv legger seg gjerne litt senere, og også jeg hører på noe i en egenprodusert putehøyttaler, lagd ved å lage et snitt øverst i kiropraktorputen og legge inn en halv hodetelefon. For min del er årsaken at jeg har øresus på høyre øre, noe som kan spores tilbake til uforsiktig omgang med salonggevær i ungdommen. Så hvis jeg ikke har lyder som får oppmerksomheten bort fra suset, får jeg ikke sove. Men min innsovningsmakro er litt mer avansert, den ikke bare slår på forsterkeren, men justerer volumet og setter riktig lydkilde, etter å ha slått av høyttalerne med de nevnte releene som slår dem på til vekkingen om morgenen. I tillegg setter den i gang en nedtelling som slår av forsterkeren etter én time.

Det er selvsagt mange andre ting Girder brukes til i huset, som f.eks. på tronerommet, der et par høyttalere er felt inn i taket. En ATI Remote Wonder RF-fjernkontroll (radiofrekvens, så den går gjennom vegger og gulv) sender signaler til serveren, og serverrommet befinner seg tilfeldigvis direkte under nevnte lille rom. Så Girder gir kommandoer via USB-UIRT-en som styrer en receiver som står på serverrommet. Fjernkontrollen kan endre volum, slå av og på, endre lydkilde og styre musikkvalg fra HTPC-en, som er koblet til CD- inngangen på receiveren. Så alt i alt er Girder et fantastisk system, men frem til for noen måneder siden var et også et forholdsvis ugjennomtrengelig system for alt annet enn de mest datamaskinerfarne.

Men like før jul var så betaperioden ferdig for Girder 4, som riktignok er en forholdsvis stor funksjonell oppgradering, men en ekstremt stor oppgradering på brukergrensesnittet. Den forrige versjonen hadde også voldsomme muligheter, men var altså omtrent like tilgjengelig for en vanlig PC-bruker som onkel Skrues lykketiøring er for Magica Fra Tryll - akkurat når man tror man hadde full kontroll, får man en på trynet igjen. Dessuten var ikke hjelpefilene akkurat noe å skryte av. Det eneste som ikke har forandret seg, er innstillingen til hovedmannen bak Girder, Ron Bessems, og resten av banden på forumet. De var like hjelpsomme før som nå. Men nå som Girder ikke bare er i stor grad et enmannsprosjekt, men mer av en firmainnsats, med egne personer til å skrive dokumentasjon og lignende, har det blitt kraftige forbedringer på dette området. Og med eksemplene som følger med, pluss de ekstra kontrollgruppene som kan lastes ned fra hjemmesiden, kommer man veldig langt.

Girders funksjon

Det er tre viktige vinduer i Girder, hovedvinduet, loggeren og Lua-konsollen. I tillegg kommer vinduer for redigering av handlinger, såkalt "mapping", altså programmering, av fjernkontroller og innstillingsvinduet. Her er først de tre viktigste, som det forklares mer om senere:

Girder bygger på to hovedbestanddeler, "events" og "actions". Dette kan oversettes med utløsere og handlinger. Utløsere sender informasjon inn til Girder, mens handlinger er noe Girder gjør som gir informasjon til brukere eller påvirker enten dets egen funksjon eller eksterne forhold. Alt dette foregår ved hjelp av såkalte plug-ins, som jeg vil kalle moduler.

I tillegg er det enkelte moduler som har en dobbeltfunksjon ved både å ta imot utløsere og foreta handlinger. Her er en kort gjennomgang av de viktigste modulene som følger med en full installasjon, altså Pro eller Whole Home Pro. Den siste versjonen tillater installasjon på et ubegrenset antall maskiner i det samme hjemmet. Jeg har opp mot 15 ulike PC-er til ulikt bruk, og hver eneste har selvsagt Girder installert!

Audio Mixer: Denne er både handlings- og utløsermodul. Man kan sette den til å utløse kommandoer når f.eks. volumet blir dempet, og Girder kan justere hovedvolum, inngangsvolum, balanse og så videre med den.

Communication server: Også denne er en kombinasjonsmodul. Hvis man bare har én PC med Girder, og ikke har NetRemote brukes den ikke, men hvis man har noe den kan få kontakt med, sender den beskjeder til en annen Girder-installasjon eller til NetRemote, og den tar imot beskjeder. Dette kan f.eks. gjøre at én PC utløser handlinger på en annen (som når min server sender ordrer til HTPC-en). Det fins en del mer avanserte bruksområder, men dem vil det føre for langt å komme inn på her.

Copy Data: En handlingsmodul som kan sende ordrer og informasjon til en del programmer med Windows-kommandoer.

DLPort IO Extensions: Denne handlingsmodulen skriver direkte til maskinvare i PC-en og er farlig å bruke hvis man ikke er helt sikker på hva man gjør. Jeg skyr den som pesten!

Daemon Tools: En handlingsmodul som kan montere og demontere volumer som brukes av Daemon Tools-programmet.

Device Notify driver: Utløsermodul som sender beskjed til Girder hvis en CD, DVD eller et annet medium blir satt inn eller tatt ut.

Diamond Key Plugin: Handlingsmodul som viser frem et tastatur der man kan navigere med piltaster og en OK-knapp eller med en fjernkontroll for å skrive inn tekst.

Enhanced task switcher: Denne kombinerte modulen erstatter det vanlige alt+tab-vinduet og gjør det lettere å programmere inn hvilket program som skal være i forgrunnen.

Generic Internet Plugin: Kombinert modul som tillater kommunikasjon over TCP/IP, altså den vanlige Internett-protokollen, både inn og ut.

Generic Serial: Kombinert modul som kan sende og ta imot kommunikasjon over serieporten. Jeg bruker den selv til å styre Barco-prosjektøren min, og mange bruker dem til å styre receivere og forsterkere med serieport. I tillegg er det denne man kan adressere til et modem for å ta imot "hvem ringer"-informasjon.

Generic X10 Remotes: Utløsermodul som tillater bruk av en rekke fjernkontroller, blant annet ATI Remote Wonder og FireFly. I tillegg kan man bruke flere fjernkontroller til ulike bruksområder, for man kan programmere inn en identifikasjonskode fra 1 til 16, slik at visse kommandoer bare løses ut hvis de f.eks. mottas fra fjernkontrollen med koden 4.

Global Cache: Kombinert modul for et alternativ til USB-UIRT-en, jeg foretrekker den siste.

HID: Utløsermodul for "enhet for menneskelig grensesnitt", som det så fint heter i Windows. Det vil si en del tastaturer, styrepinner, håndkontrollere og lignende. Man kan for eksempel gjøre som jeg har fått min bror til å gjøre: dele opp en billig spillekontroller og lodde ledninger på kontaktpunktene, slik at en knapp eller et relé kan sende signal om at den knappen er trykket ned og utløse en handling.

IR Trans: Kombinert modul for enda et alternativ til USB-UIRT-en.

Keyboard: Utløsermodul som tar imot signaler fra PC-tastaturet, det som vanligvis kalles hurtigtaster. Denne er spesielt nyttig på en jobb-PC, der man vanligvis bruker tastaturet.

Lua Misc. Functions Library: Et Lua-bibliotek (mer om Lua senere) som tillater oppslag i CDDB direkte fra Girder, og som kan hente informasjon om den låten som spilles i øyeblikket i WinAmp.

Monitor APM Extensions: Handlingsmodul som kan slå av og på skjermen (vanlig strømstyring) og dessuten la Lua styre oppløsning og lignende.

Mouse Control: Handlingsmodul som lar fjernkontroller, hurtigtaster, NetRemote og lignende styre muspekeren på PC-en. Jeg bruker den blant annet på HTPC-en istedenfor å ha en mus i kinoen, og den brukes på TV-PC-en på kjøkkenet.

PowerLinc USB Plugin: Kombinert modul som styrer en USB-versjon av X-10-kontrolleren. X-10 styrer som tidligere nevnt moduler som kan slå av og på strøm til kontakter og lyspærer. Den kan også ta imot signaler fra enkelte typer enheter, og signalene går over strømnettet.

Scheduler: Utløsermodul som opererer i Lua. Denne fungerer som en uhyre avansert tidsbryter, og man kan ha bortimot utallige handlinger utløst av den. Jeg bruker den til vekking og innsovning, til styring av sikkerhetskopiene og mye annet.

Send Message: Handlingsmodul som sender Windows Messages til andre programmer. Dette er ordrer, man kan for eksempel åpne menyer, åpne filer og mye annet ved hjelp av slike ordrer.

Simple Timer: En mye enklere utgave av Scheduler. Denne krever ikke Lua-programmering, man velger bare hvilken kommando som skal løses ut av den.

Streamzap PC Remote: Utløsermodul for fjernkontrolltypen Streamzap.

Task Create: Utløsermodul som sender beskjed til Girder hvis et nytt program eller et nytt vindu i et eksisterende program åpner seg.

Task Switch: Ligner på den forrige, men denne sender beskjed til Girder hvis forgrunnsprogrammet endres, altså når man bytter fra Zoom Player til Word eller lignende.

Tree Script: Lua-bibliotek som lar Lua-kode dukke opp som valgbare handlinger på handlingstreet (se senere).

UIR/IRMan/IRa osv: Utløsermodul for en del IR fjernkontrollmottakere.

USB-UIRT driver: Kombinert modul for den nevnte IR-mottakeren og -senderen som jeg bruker og anbefaler.

Web Server: Kombinert modul som kan vise informasjon fra Girder på en nettside, som enten kan være tilgjengelig bare for internnettverket eller også fra Internett, og som også kan ta imot utløsere når man klikker på en kobling.

Window Conditional: Utløsermodul som kan gjøre handlinger avhengige av at et spesielt vindu eksisterer eller er i forgrunnen. Dermed kan samme tast eller fjernkontrollknapp utføre andre handlinger når Zoom Player er i forgrunnen enn når JRMC er i forgrunnen.

X10-CM1X: Kombinert modul som sender og tar imot signaler via en CM-modul, et eldre, serielt alternativ til PowerLinc. Det er den jeg selv bruker.

Zip Extensions: Lua-bibliotek for innpakking og utpakking av komprimerte zipfiler.

Videre justeringer

En del av disse modulene vil ha egne arkfaner i modulvinduet med flere innstillinger, men disse er stort sett selvforklarende og iallfall forklart i hjelpefilene. I tillegg til de vanlige modulene fins det noen ekstrafunksjoner under "Automation", med styring av "Girder to Girder", altså kommunikasjon mellom Girder på ulike PC-er, andre funksjoner for kommunikasjon til og fra NetRemote, stemmebruk, altså at Girder snakker til en, og enhetsstyring av X-10-enheter. Selv bruker jeg ikke den siste, men den brukes til å definere hvilke enheter som befinner seg hvor.

Så da er det bare å installere Girder, gjerne med standardinnstillingene. Det legger også til en del ferdige programdefinisjoner og lignende som er gode eksempler. Det første man må gjøre når Girder så har startet opp, er å velge View, Switch to Expert Interface, ellers forsvinner stort sett alt av muligheter. Novice Interface, som Girder starter opp i, tillater ikke endringer i handlingsgrupper. Deretter må man inn i File/Settings for å gjøre videre justeringer før programmet kan tas i bruk.

Under General er det oppstartsalternativer, dessuten må man skrive inn e-post-server og -port hvis Girder skal kunne sende e-post, som mine e-poster når prosjektøren er slått på og når telefonen ringer. On Screen Display kan bare stå som det står, eller man kan leke seg med det. Det er ren kosmetikk. Under geographical location er det posisjonen man godt kan legge inn. Har man GPS, vet man jo posisjonen. Hvis ikke, kan man slå den opp ved å klikke på "Lookup your coordinates"-knappen, som åpner et nettleservindu.

Og grunnen til dette er den siste arkfanen, nemlig "Weather". For Girder kan hente satellittværkart og prognoser, men man jo ha lagt inn riktig lokalisering for at det skal stemme. Det hjelper lite å vite hvordan været blir i USA hvis man ikke skal dit... I tillegg bruker Girder denne informasjonen til å beregne når det er soloppgang og solnedgang, for man kan bruke det også som utløsere.

Logger er et eget kapittel. Den hentes fram med F4, og da ser man utløsersignaler som er kommet inn og hvilke handlinger som er utløst. Man kan velge hvilke moduler som skal legge til logginformasjon.

Modulaktivering
Så er det over til modulaktivering. Hvilke moduler man skal bruke, avhenger fullstendig av hva man skal bruke programmet til. Se på listen på forrige side om du tror du har bruk for dem på ditt system, og deaktiver gjerne det du ikke har bruk for. Noen av dem gir feilmeldinger når man ikke har installert maskinvaren de skal jobbe opp mot, men det skjer ikke noe verre. Med unntak for den nevnte DLPort IO Extensions er de stort sett ufarlige, og man gjør sjelden noe galt med å aktivere og teste dem.

Man gjør jo heller ikke noe riktig ved å aktivere noe som styrer maskinvare man ikke har, men akkurat det med testingen er egentlig hovedsaken for å lære noe om Girder-bruk. Man må bare eksperimentere til man kommer fram til det resultatet man ønsker. Og uansett: Du har vel tatt en av de vanlige fulle sikkerhetskopiene før du begynner å eksperimentere, ikke sant?

Og siden programmet da er i gang, med de nødvendige modulene, kan vi ta en titt på hovedvinduet igjen. Det er en enkel knapperad oppe og menyer som på et vanlig Windows-program. Mer interessant er det såkalt handlingstreet på venstre side. Der kan man velge mellom mange forskjellige handlinger, også her er det bare å kikke gjennom dem og eksperimentere. Lar man muspekeren sveve over en handling eller en handlingsgruppe, dukker det opp en forklaring.

Men hvis man skal kunne gjøre noe, må man ha åpen en såkalt GML-fil, som står for Girder Markup Languague, og som er en meget nær slektning av XML, som brukes på mange nettsider. Så nær at man faktisk kan åpne en GML-fil i en XML-editor (men ikke gjør det, det skal nemlig veldig lite til for å ødelegge dem på den måten). Det er like godt å lage sin egen fil med en gang og så heller kopiere over de programgruppene man ønsker å bruke fra eksemplene eller nedlastede programgrupper, for det blir lett rotete når det er så mange programgrupper oppe på en gang.

Skripting og Lua

Den eneste formen for handling jeg vil komme innom med harelabb i dag er "Scripting", som står øverst på treet. Lua er det programmeringsspråket Girder bruker for å få til mer avanserte ting. Og tro meg, dette kan bli veldig avansert! Men det er også vanskelig, særlig hvis man ikke har noen erfaring med programmering fra før av. Jeg har lært en del om det på de siste par årene, men de som virkelig kan det, programmerer i ring rundt meg! Likevel er det verd å lære seg en del hvis man vil utnytte Girder og NetRemote mest mulig, for mulighetene det byr på er nesten ubegrenset.

Veldig mye av det jeg styrer, som lerretet, de avanserte tidsbryterfunksjonene og kommunikasjonen mellom ulike maskiner med Girder og NetRemote, er programmert i Lua. Jeg skal ikke engang late som jeg er blitt flink i dette, for hvem som helst kan gå på Promixis-forumet og se at jeg stadig vekk tabber meg ut og må spørre om hjelp. Men det viser jo også at det ikke er noen grunn til å fortvile for nybegynnere, for uansett hvor fast man står, pleier det alltid å være noen som kan mer om det, og som er villige til å forklare og hjelpe en litt. Her er et eksempel på veldig enkel Lua kode:

print("Hei på deg!")

Noen som kjenner igjen dette? Det minner styggelig om alle andre former for programmering, som gamle Basic, Visual Basic og satsvise filer, såkalt batchfiler. Denne kommandoen vil skrive ordene Hei på deg! i Lua-konsollen. Printkommandoen er hovedsakelig til bruk for å se hva som skjer i Lua-skriptene, med feilmeldinger og lignende, men kan også brukes til tilbakemeldinger. Men dette er jo ikke noe gøy. Denne er litt morsommere:

local settings = table.copy(osd.Styles.StatusDarkBlue)

settings.BorderColor = 4294901760
settings.BorderSize = 10
settings.Position = 'CENTERHCENTERW'
settings.Monitor= 1
settings.FontSize = 60
settings.Font = "Comic Sans MS"
settings.TimeOut = 3000
osd.StatusMessage ("Hei på deg!", settings)

Og hva gjør dette? Jo, det får frem et OSD midt på skjermen (CENTERHCENTERW, altså sentrum høyde og bredde) med mørk blåfarge (StatusDarkBlue) og ti piksler bred (BorderSize = 10) rød ramme (BorderColor = 4294901760), på hovedskjermen hvis PC-en har flere skjermer (Monitor = 1), en skriftstørrelse på 60 (FontSize = 60) og skrifttype (Font) Comics Sans MS, som blir stående i tre sekunder (TimeOut, i Girder opereres det alltid med millisekunder, og 3000 ms er tre sekunder), der det står Hei på deg! Mye fikling for så lite, men det kan brukes på utallige måter.

Her er et annet eksempel:

local settings = table.copy(osd.Styles.StatusDarkBlue)

settings.BorderColor = 4294901760
settings.BorderSize = 10
settings.Position = 'CENTERHCENTERW'
settings.Monitor= 1
settings.FontSize = 20
settings.Font = "Comic Sans MS"
settings.TimeOut = 3000
totalt, ledig = win.GetDiskFreeSpace("c:")
osd.StatusMessage ("C: er "..totalt.."megabyte
stor, og den har "..ledig.." megabyte ledig plass.",
settings)

Denne viser istedenfor den totale størrelsen (totalt) og den ledige plassen (ledig) på harddisk C. Informasjonen hentes via funksjonen win.GetDiskFreeSpace og kopieres til de to variablene totalt og ledig.

Og nettopp variabler er en viktig del av Lua, for når man har kopiert informasjon til variabler, kan man bruke disse til det utroligste. Et siste eksempel, der man kan velge mellom å vise ledig plass på harddisken og en beskjed:

local settings = table.copy(osd.Styles.StatusDarkBlue)

settings.BorderColor = 4294901760
settings.BorderSize = 10
settings.Position = 'CENTERHCENTERW'
settings.Monitor= 1
settings.FontSize = 20
settings.Font = "Comic Sans MS"
settings.TimeOut = 3000

if win.MessageBox("Vil du se harddiskinformasjon?",
"Hei på deg!", win.MB_YESNO) == 6
then
totalt, ledig = win.GetDiskFreeSpace("c:")
osd.StatusMessage ("C: er "..totalt.."megabyte
stor, og den har "..ledig.." megabyte ledig plass.",
settings)
else
win.MessageBox("Du ville ikke se harddiskinformasjonen.",
"Hei på deg igjen!", win.MB_OK)
return
end

Legg merke til at deler av koden er den samme, som oppsettet av OSD-en og hentingen av harddiskinformasjonen. Forskjellen består i variabelbruken, for hvis man klikker "Ja" på meldingsboksen, sender det variabelen 6 til Girder. "Hvis"-funksjonen (if) spør om dette blir resultatet. Hvis det er tilfelle, går den til "then", altså "gjør da". Mens hvis man klikker på "Nei", blir variabelen 7, og da er det "else", altså noe som skal skje hvis første forutsetning ikke er oppfylt.

Og dette var bare noen helt enkle eksempler. Det fins mange flere eksempler i de GML-filene som blir installert sammen med Girder i katalogen C:\Programfiler\Promixis\Girder\Examples (hvis man har en vanlig norsk Windows-installasjon og velger standardalternativene når Girder blir installert).

Lua er noe man absolutt bør lære seg hvis man har interesse for mer avansert fjernstyring, men man kan gjøre mye med Girder også uten å lære det. Grunnen til at det var det eneste jeg tok med i denne første delen av Girder-gjennomgangen var rett og slett at jeg ikke kommer til å omtale det mer fordi dette er så avansert at det faller utenfor det denne artikkelserien skulle gjøre. Men som sagt fins det en god hjelpefil i Girder, og hjelpsomme folk på forumet.

Avslutning

Det får være nok for denne gang. Neste gang går vi litt dypere inn i Girder, med bedre forklaring av handlinger og lignende. Men igjen må jeg understreke at dette bare blir enkelte eksempler og ikke en full opplæring. Likevel burde det være nok til å sette de fleste i gang med programmet. Og når en så pass enkel gjennomgang holder til to artikler, ville en full skole krevd en hel telefonkatalog!

Helt til slutt må jeg dessverre melde at jeg ikke har tid til å hjelpe de enkelte med automatiseringsspørsmål, verken gjennom noen form for privatkontakt (e-post, PM) eller på forumet her på Hardware.no. Legg heller inn spørsmål på Promixis-forumet, dere er nesten garantert å få svar på det.

Så da sier jeg på gjensyn neste gang!

annonse