Med den nye ECOS behøver jeg ikke længere at have et USB kabel i PC’en. Kommunikationen kan foregå trådløst via WLAN (selvom det ganske vist er trådet LAN mellem ECOS og routeren).
Men jeg vil stadigvæk bruge min IB-COM til at styre signaler m.v. Og så er jeg lige vidt. Den har jo kun USB interface og ikke LAN.
Derfor har jeg nu (september 2015) købt en Raspberry Pi 2 B. Det er en lille ARM baseret computer, lidt større end en tændstikæske. Den er bl.a. udstyret med et Ethernet (LAN) stik og 4 USB stik. Processoren er omtrent på linie med dem, der sidder i en billig smartphone, så uden at det ligefrem er en gaming PC, så kan den faktisk godt flytte et par bits.
Jeg har tænkt mig, at min Raspberry Pi skal bruges udelukkende til det ret enkle job at omsætte mellem USB og Ethernet / LAN.
Rent fysisk ejer jeg hverken skærm, tastatur eller mus, så de eneste stik, der sidder i min Pi er:
1. Strømforsyning (en 2A USB strømforsyning).
2. USB stik med forbindelse til IB-COM.
3. Ethernet stik med forbindelse til min router (via en switch og et Powerlink).
For at sætte det hele op har jeg gjort følgende:
1. Installeret Raspian (standard Linux variant til Raspian Pi) på enheden.
2. Installeret Putty (en SSH client) på min PC.
3. Installeret TightVNC server på Pi samt sat den op til at starte automatisk.
4. Installeret TightVNC client på PC’en.
4a. Og en VNC client (Mocha VNC Lite) på iPad.
5. Sat Raspberry Pi til at køre med fast IP adresse.
6. Installeret JMRI på Raspberry Pi, samt konfigureret JMRI som beskrevet nedenfor og sat den op til at starte automatisk.
7. Omkonfigureret JMRI på PC’en til at forbinde til mit layout via Loconet Client via TCP i stedet for til IB-COM.
Med disse ret enkle skridt (det tog vel 4 timer at finde ud af 1-7 og yderligere nogle timer for de sidste to punkter), har jeg nu trådløs forbindelse mellem PC og IB-COM. Desuden har jeg mulighed for at køre lidt tog uden at skulle tænde PC’en, for mens jeg nu var i gang, så satte jeg også JMRI på Pi’en til at starte Web server såvel som WifiThrottle, så jeg kan koble mig direkte på Pi’en fra såvel Android som iOS smartphone/iPhone/tablet/iPad.
Her er lidt flere detaljer om, hvordan jeg gjorde:
1. og 2. Installation af Raspian samt kommandolinie forbindelse
Når man køber en Raspberry Pi, kan man købe et Micro SD kort med Noobs pre-installeret. Noobs er et installationsprogram, hvor man kan vælge et operativsystem, som derefter installeres. På selve kortet findes kun Raspian, så vælger man et andet operativsystem skal det først downloades, dvs. at man skal have en Internet forbindelse til sin Pi.
Det er sikkert vældig godt for dem, der føler sig bedst tilpas ved at købe en computer, hvor operativsystemet er fysisk i hånden med det samme. Men jeg kunne bare ikke bruge Noobs, fordi jeg hverken har skærm eller tastatur til min Pi, og fordi Noobs starter op i et lokalt grafisk brugerinterface, som kun virker på netop den lokale skærm.
Så derfor købte jeg i stedet et tomt Micro SD kort på 16 GByte. Derefter dowloadede jeg Raspian her: https://www.raspberrypi.org/downloads/raspbian/ og fulgte denne anvisning: https://www.raspberrypi.org/documentation/installation/installing-images/windows.md som bl.a. indebærer at man downloader og installerer endnu et værktøj på sin PC, nemlig Win32DiskImager. Dette værktøj bruger jeg i øvrigt efterfølgende til at tage backup af min Pi ved ganske enkelt at hive Micro SD kortet ud og sætte ind i kortlæseren i PC’en, hvorefter nævnte program kan læse indholdet fra kortet og gemme det i en ny image fil.
Efter at have gennemført installationen af Raspbian (dvs. skrevet den downloadede image fil ud på memory kortet) er det bare at sætte kortet i Pi’en, forbinde Pi’en til sin router vha. et Ethernet kabel og så ellers sætte strøm på. Den starter op i løbet af få sekunder og er på nettet med det samme.
Som noget nyt (jeg opdagede det 6/5-2017) skal man med de nyere versioner af Raspian skrive en fil ved navn “ssh” ud på SD-kortet, før man tager den ud af PC’en og sætter den ind i sin Raspberry Pi. Ellers kan man ikke forbinde sig via SSH, dvs. via Putty.
Start derefter Putty (installationen giver sig selv – bare brug Google til at finde den officielle version af Putty) og opret en SSH session til din Pi. Du behøver ikke at kende dens IP adresse. Bare brug dens navn på netværket. Den hedder raspberrypi (udelukkende små bogstaver). Log ind med brugernavn pi og password raspberry.
Når du er logget ind skal du konfigurere Pi’en ved at køre kommandoen raspi-config. Se https://www.raspberrypi.org/documentation/configuration/raspi-config.md
Bemærk, at der skal skrives sudo før selve kommandoen. su står for set user. Og helt specifikt betyder det, at kommandoen udføres af root brugeren, dvs. cirka det samme, som når man i Windows vælger run as administrator.
Det vigtigste (tror jeg) er at få udvidet partitionen på Micro SD kortet til at fylde hele kortet.
3. og 4. TightVNC
Nu kører Pi’en og man har allerede forbindelse til den. Det var overraskende nemt. Det har sikkert ikke en gang taget en halv time.
Men vi skal også have en grafisk brugerflade. Det får vi vha. TightVNC. Se https://www.raspberrypi.org/documentation/remote-access/vnc/README.md
Gå hele instruksen igennem, så der startes en VNC server hver gang du tænder din Pi.
Det eneste lidt mærkelige i denne forbindelse er, at man skal opfinde et nyt password til VNC forbindelsen. Husk det password, du vælger. Du får brug for det hver gang, du vil forbinde dig til din Pi via VNC. Jeg har brugt 12345678
Og HUSK så lige, at man connecter til hostname/ip:1 Dvs. HUSK :1.
4a. Mocha VNC Lite på iPad
Der findes flere forskellige VNC klienter til iPad. Den bedste er Mocha VNC. Lite / gratis udgaven er tilstrækkelig.
Konfigurer med IP adresse, et sigende navn og husk at ændre portnummeret fra 5900 til 5901 (port 5900 + display nummer 1).
Slå “Zoom to screen height” fra, så skærmen tilpasser sig i bredden og ikke i højden.
5. Fast IP adresse
Indtil nu har vi kunnet nøjes med at forbinde os til raspberrypi. Men vi får også brug for at have styr på IP adressen. Derfor har jeg omkonfigureret min Pi til at køre med statisk IP adresse. Det gøres sådan her:
http://www.modmypi.com/blog/tutorial-how-to-give-your-raspberry-pi-a-static-ip-address
Bare lige for det tilfælde at dette link skulle blive forældet, så er skridtene sådan:
– udfør kommandoen ifconfig og aflæs herudfra nuværende IP adresse, broadcast adresse og subnet mask.
– udfør kommandoen netstat -nr og aflæs herudfra gateway og destination
– editer /etc/network/interfaces vha. sudo vi /etc/network/interfaces
– erstat linien
iface eth0 inet dhcp
med (hvor adresser m.v. er dem, der blev fundet ovenfor med undtagelse af address, hvor det anbefales at bruge et noget højere tal i sidste led (dog mindre end 250)).
iface eth0 inet static
address 192.168.1.100
netmask 255.255.255.0
network 192.168.1.0
broadcast 192.168.1.255
gateway 192.168.1.254
– Genstart Pi’en (f.eks. med sudo shutdown -r now).
Se flere muligheder for /etc/network/interfaces her: https://wiki.debian.org/NetworkConfiguration
Se her, hvis du vil lave trådløs (WIFI) setup: http://raspberrypihq.com/how-to-add-wifi-to-the-raspberry-pi/
6. Installation og opsætning af JMRI på Raspberry Pi
Med alt det ovenstående skulle Pi’en gerne være fuld funktionsdygtig og klar til at blive sat i arbejde.
JMRI installationen er ikke standard Linux med apt-get o.s.v. I stedet må man ty til Windows-agtige metoder:
– Åbn en VNC forbindelse til din Pi og udfør følgende inde i denne:
– Åbn Web browseren.
– Find JMRI download siden (husk at Google er din ven).
– Klik på nyeste stabile version til Linux, som derefter gerne skulle downloade af sig selv.
– Åbn en kommandolinie enten inde fra VNC vinduet eller vha. Putty.
– Udfør følgende:
– cd (for at være placeret i pi brugerens home directory)
– tar zxvf Download/JMRI.4.0.1-r29956.tgz (eller hvad nyeste version nu end måtte hedde). Dette burde placere hele JMRI i directoriet JMRI direkte under pi brugens home.
Bemærk, at når JMRI startes op, bliver diverse data filer placeret i det skjulte directory .jmri.
Hermed er installationen fuldført. Nu kommer vi til opsætningen.
Start PanelPro ved at skrive ./PanelPro
Herefter sættes JMRI op på vanlig vis til at forbinde sig til lige netop dit layout. I mit tilfælde til Uhlenbrock IB-COM. Desuden har jeg sat den op til at starte Web server og WifiThrottle – begge dele under startup options i setup menuen. Loconet server delen skal derimod initieres via Loconet menuen, hvor man vælger Loconet Server via TCP. Der findes også en Loconet Server uden det med TCP. Men den kunne jeg ikke få til at fungere. Når man har valgt den i menuen kommer der en dialogboks frem. Husk at krydse af, at serveren skal startes automatisk og husk at trykke på gem knappen, før du starter serveren.
Endelig har jeg fundet, at jeg var nødt til at definere samtlige mine sporskifter på Pi’en for at kunne bruge dem fra diverse Android apps. Gem dem i en xml fil, hvor du selv bestemmer navnet. Gå så tilbage til setup dialogen og få den nye xml fil loadet ind ved start.
Nu kan du hoppe til det sidste skridt, nemlig at omkonfigurere JMRI på PC’en og se, om det hele fungerer. Men vi har stadigvæk tilbage at få JMRI til at starte automatisk, når Pi’en tændes.
Det gøres ved at tilføje en linie i filen /etc/rc.local
Linien skal indeholde:
su – pi -c “~pi/JMRI/JmriFaceless &”
En mere rigtig måde at gøre det på er beskrevet her: https://www.debian-administration.org/article/28/Making_scripts_run_at_boot_time_with_Debian
JmriFaceless er en kommandolinieversion af JMRI. Der er intet userinterface. Fejlmeddelelser m.v. kan findes i ~pi/.jmri/log/sessionlog. På den måde skal Pi’en ikke spilde sine sparsomme kræfter på andet end at flytte bits.
7. Omkonfigurering af JMRI på PC
Det eneste, jeg måtte gøre på PC’en var at ændre forbindelsen til mit layout fra Uhlenbrock IB-COM til JMRI Loconet Server via TCP. Et lille problem var, at jeg var nødt til først at slette IB-COM, dernæst genstarte JMRI, så definere Loconet Server og sluttelig genstarte JMRI igen. Ellers kunne jeg ikke få lov til at genbruge L for Loconet.
Ikke overraskende er timingen lidt anderledes (dvs. langsommere), når alle kommandoer og alle meldinger fra feedback moduler skal ind over Raspberry Pi. Det betyder, at de scripts, hvor jeg lader lokomotiverne køre et vist antal milisekunder ind i en blok, for pænt at køre til perron, ikke fungerer helt optimalt længere. Men skidt-pyt. Jeg har indkøbt en ECOS og vil fremadrettet kun bruge IB-COM / Raspberry Pi til signaler, diverse lysstyring m.v. samt til ikke-tidskritiske ting i øvrigt.[:en]Med den nye ECOS behøver jeg ikke længere at have et USB kabel i PC’en. Kommunikationen kan foregå trådløst via WLAN (selvom det ganske vist er trådet LAN mellem ECOS og routeren).
Men jeg vil stadigvæk bruge min IB-COM til at styre signaler m.v. Og så er jeg lige vidt. Den har jo kun USB interface og ikke LAN.
Derfor har jeg nu (september 2015) købt en Raspberry Pi 2 B. Det er en lille ARM baseret computer, lidt større end en tændstikæske. Den er bl.a. udstyret med et Ethernet (LAN) stik og 4 USB stik. Processoren er omtrent på linie med dem, der sidder i en billig smartphone, så uden at det ligefrem er en gaming PC, så kan den faktisk godt flytte et par bits.
Jeg har tænkt mig, at min Raspberry Pi skal bruges udelukkende til det ret enkle job at omsætte mellem USB og Ethernet / LAN.
Rent fysisk ejer jeg hverken skærm, tastatur eller mus, så de eneste stik, der sidder i min Pi er:
1. Strømforsyning (en 2A USB strømforsyning).
2. USB stik med forbindelse til IB-COM.
3. Ethernet stik med forbindelse til min router (via en switch og et Powerlink).
For at sætte det hele op har jeg gjort følgende:
1. Installeret Raspian (standard Linux variant til Raspian Pi) på enheden.
2. Installeret Putty (en SSH client) på min PC.
3. Installeret TightVNC server på Pi samt sat den op til at starte automatisk.
4. Installeret TightVNC client på PC’en.
4a. Og en VNC client (Mocha VNC Lite) på iPad.
5. Sat Raspberry Pi til at køre med fast IP adresse.
6. Installeret JMRI på Raspberry Pi, samt konfigureret JMRI som beskrevet nedenfor og sat den op til at starte automatisk.
7. Omkonfigureret JMRI på PC’en til at forbinde til mit layout via Loconet Client via TCP i stedet for til IB-COM.
Med disse ret enkle skridt (det tog vel 4 timer at finde ud af 1-7 og yderligere nogle timer for de sidste to punkter), har jeg nu trådløs forbindelse mellem PC og IB-COM. Desuden har jeg mulighed for at køre lidt tog uden at skulle tænde PC’en, for mens jeg nu var i gang, så satte jeg også JMRI på Pi’en til at starte Web server såvel som WifiThrottle, så jeg kan koble mig direkte på Pi’en fra såvel Android som iOS smartphone/iPhone/tablet/iPad.
Her er lidt flere detaljer om, hvordan jeg gjorde:
1. og 2. Installation af Raspian samt kommandolinie forbindelse
Når man køber en Raspberry Pi, kan man købe et Micro SD kort med Noobs pre-installeret. Noobs er et installationsprogram, hvor man kan vælge et operativsystem, som derefter installeres. På selve kortet findes kun Raspian, så vælger man et andet operativsystem skal det først downloades, dvs. at man skal have en Internet forbindelse til sin Pi.
Det er sikkert vældig godt for dem, der føler sig bedst tilpas ved at købe en computer, hvor operativsystemet er fysisk i hånden med det samme. Men jeg kunne bare ikke bruge Noobs, fordi jeg hverken har skærm eller tastatur til min Pi, og fordi Noobs starter op i et lokalt grafisk brugerinterface, som kun virker på netop den lokale skærm.
Så derfor købte jeg i stedet et tomt Micro SD kort på 16 GByte. Derefter dowloadede jeg Raspian her: https://www.raspberrypi.org/downloads/raspbian/ og fulgte denne anvisning: https://www.raspberrypi.org/documentation/installation/installing-images/windows.md som bl.a. indebærer at man downloader og installerer endnu et værktøj på sin PC, nemlig Win32DiskImager. Dette værktøj bruger jeg i øvrigt efterfølgende til at tage backup af min Pi ved ganske enkelt at hive Micro SD kortet ud og sætte ind i kortlæseren i PC’en, hvorefter nævnte program kan læse indholdet fra kortet og gemme det i en ny image fil.
Efter at have gennemført installationen af Raspbian (dvs. skrevet den downloadede image fil ud på memory kortet) er det bare at sætte kortet i Pi’en, forbinde Pi’en til sin router vha. et Ethernet kabel og så ellers sætte strøm på. Den starter op i løbet af få sekunder og er på nettet med det samme.
Start derefter Putty (installationen giver sig selv – bare brug Google til at finde den officielle version af Putty) og opret en SSH session til din Pi. Du behøver ikke at kende dens IP adresse. Bare brug dens navn på netværket. Den hedder raspberrypi (udelukkende små bogstaver). Log ind med brugernavn pi og password raspberry.
Når du er logget ind skal du konfigurere Pi’en ved at køre kommandoen raspi-config. Se https://www.raspberrypi.org/documentation/configuration/raspi-config.md
Bemærk, at der skal skrives sudo før selve kommandoen. su står for set user. Og helt specifikt betyder det, at kommandoen udføres af root brugeren, dvs. cirka det samme, som når man i Windows vælger run as administrator.
Det vigtigste (tror jeg) er at få udvidet partitionen på Micro SD kortet til at fylde hele kortet.
3. og 4. TightVNC
Nu kører Pi’en og man har allerede forbindelse til den. Det var overraskende nemt. Det har sikkert ikke en gang taget en halv time.
Men vi skal også have en grafisk brugerflade. Det får vi vha. TightVNC. Se https://www.raspberrypi.org/documentation/remote-access/vnc/README.md
Gå hele instruksen igennem, så der startes en VNC server hver gang du tænder din Pi.
Det eneste lidt mærkelige i denne forbindelse er, at man skal opfinde et nyt password til VNC forbindelsen. Husk det password, du vælger. Du får brug for det hver gang, du vil forbinde dig til din Pi via VNC. Jeg har brugt 12345678
Og HUSK så lige, at man connecter til hostname/ip:1 Dvs. HUSK :1.
4a. Mocha VNC Lite på iPad
Der findes flere forskellige VNC klienter til iPad. Den bedste er Mocha VNC. Lite / gratis udgaven er tilstrækkelig.
Konfigurer med IP adresse, et sigende navn og husk at ændre portnummeret fra 5900 til 5901 (port 5900 + display nummer 1).
Slå “Zoom to screen height” fra, så skærmen tilpasser sig i bredden og ikke i højden.
5. Fast IP adresse
Indtil nu har vi kunnet nøjes med at forbinde os til raspberrypi. Men vi får også brug for at have styr på IP adressen. Derfor har jeg omkonfigureret min Pi til at køre med statisk IP adresse. Det gøres sådan her:
http://www.modmypi.com/blog/tutorial-how-to-give-your-raspberry-pi-a-static-ip-address
Bare lige for det tilfælde at dette link skulle blive forældet, så er skridtene sådan:
– udfør kommandoen ifconfig og aflæs herudfra nuværende IP adresse, broadcast adresse og subnet mask.
– udfør kommandoen netstat -nr og aflæs herudfra gateway og destination
– editer /etc/network/interfaces vha. sudo vi /etc/network/interfaces
– erstat linien
iface eth0 inet dhcp
med (hvor adresser m.v. er dem, der blev fundet ovenfor med undtagelse af address, hvor det anbefales at bruge et noget højere tal i sidste led (dog mindre end 250)).
iface eth0 inet static
address 192.168.1.100
netmask 255.255.255.0
network 192.168.1.0
broadcast 192.168.1.255
gateway 192.168.1.254
– Genstart Pi’en (f.eks. med sudo shutdown -r now).
Se flere muligheder for /etc/network/interfaces her: https://wiki.debian.org/NetworkConfiguration
Se her, hvis du vil lave trådløs (WIFI) setup: http://raspberrypihq.com/how-to-add-wifi-to-the-raspberry-pi/
6. Installation og opsætning af JMRI på Raspberry Pi
Med alt det ovenstående skulle Pi’en gerne være fuld funktionsdygtig og klar til at blive sat i arbejde.
JMRI installationen er ikke standard Linux med apt-get o.s.v. I stedet må man ty til Windows-agtige metoder:
– Åbn en VNC forbindelse til din Pi og udfør følgende inde i denne:
– Åbn Web browseren.
– Find JMRI download siden (husk at Google er din ven).
– Klik på nyeste stabile version til Linux, som derefter gerne skulle downloade af sig selv.
– Åbn en kommandolinie enten inde fra VNC vinduet eller vha. Putty.
– Udfør følgende:
– cd (for at være placeret i pi brugerens home directory)
– tar zxvf Download/JMRI.4.0.1-r29956.tgz (eller hvad nyeste version nu end måtte hedde). Dette burde placere hele JMRI i directoriet JMRI direkte under pi brugens home.
Bemærk, at når JMRI startes op, bliver diverse data filer placeret i det skjulte directory .jmri.
Hermed er installationen fuldført. Nu kommer vi til opsætningen.
Start PanelPro ved at skrive ./PanelPro
Herefter sættes JMRI op på vanlig vis til at forbinde sig til lige netop dit layout. I mit tilfælde til Uhlenbrock IB-COM. Desuden har jeg sat den op til at starte Web server og WifiThrottle – begge dele under startup options i setup menuen. Loconet server delen skal derimod initieres via Loconet menuen, hvor man vælger Loconet Server via TCP. Der findes også en Loconet Server uden det med TCP. Men den kunne jeg ikke få til at fungere. Når man har valgt den i menuen kommer der en dialogboks frem. Husk at krydse af, at serveren skal startes automatisk og husk at trykke på gem knappen, før du starter serveren.
Endelig har jeg fundet, at jeg var nødt til at definere samtlige mine sporskifter på Pi’en for at kunne bruge dem fra diverse Android apps. Gem dem i en xml fil, hvor du selv bestemmer navnet. Gå så tilbage til setup dialogen og få den nye xml fil loadet ind ved start.
Nu kan du hoppe til det sidste skridt, nemlig at omkonfigurere JMRI på PC’en og se, om det hele fungerer. Men vi har stadigvæk tilbage at få JMRI til at starte automatisk, når Pi’en tændes.
Det gøres ved at tilføje en linie i filen /etc/rc.local
Linien skal indeholde:
su – pi -c “~pi/JMRI/JmriFaceless &”
En mere rigtig måde at gøre det på er beskrevet her: https://www.debian-administration.org/article/28/Making_scripts_run_at_boot_time_with_Debian
JmriFaceless er en kommandolinieversion af JMRI. Der er intet userinterface. Fejlmeddelelser m.v. kan findes i ~pi/.jmri/log/sessionlog. På den måde skal Pi’en ikke spilde sine sparsomme kræfter på andet end at flytte bits.
7. Omkonfigurering af JMRI på PC
Det eneste, jeg måtte gøre på PC’en var at ændre forbindelsen til mit layout fra Uhlenbrock IB-COM til JMRI Loconet Server via TCP. Et lille problem var, at jeg var nødt til først at slette IB-COM, dernæst genstarte JMRI, så definere Loconet Server og sluttelig genstarte JMRI igen. Ellers kunne jeg ikke få lov til at genbruge L for Loconet.
Ikke overraskende er timingen lidt anderledes (dvs. langsommere), når alle kommandoer og alle meldinger fra feedback moduler skal ind over Raspberry Pi. Det betyder, at de scripts, hvor jeg lader lokomotiverne køre et vist antal milisekunder ind i en blok, for pænt at køre til perron, ikke fungerer helt optimalt længere. Men skidt-pyt. Jeg har indkøbt en ECOS og vil fremadrettet kun bruge IB-COM / Raspberry Pi til signaler, diverse lysstyring m.v. samt til ikke-tidskritiske ting i øvrigt.