Smartphone del 3

Godt. Da vi slap føljetonen sidst, havde jeg udbredt mig om at drejeskiven sendte pulser. Det er lidt mere kompliceret.

Drejeskiven er en såkaldt Normal-On kontakt. Det vil sige, at når vi påvirker den, så slutter kontakten. Der er forbindelse gennem ledningerne. Hvis man drejer 3 på skiven, så afbrydes forbindelsen tre gange. Det er altså ikke tre pulser hvor der pludselig er strøm vi skal tælle. Men tre tilfælde af at “nu-er-der-ikke-strøm-længere” vi skal tælle.

Det kan man naturligvis programmere sig ud af. Men det forekommer ulogisk. I stedet laver vi et lille kredsløb.

Det ser sådan i grove træk sådan ud.

rotphon

Vi ser kredsløbet i den situation hvor drejeskiven har nået et af de punkter hvor forbindelsen afbrydes. D7 er den pin på Arduinoen jeg ønsker at læse pulser på. Der går nu 5V ind i kredsløbet, det kan ikke komme til jord, så de går til D7. Som Arduinoen læser som HIGH. hvis vi slutter kontakten – det er altså drejeskiven når den er mellem pulser, er der mindre modstand til jord end gennem modstanden før D7. Og dermed ikke megen spænding på D7. Og dermed går den LOW. Når der drejes 3 på drejeskiven, og forbindelsen gennem drejeskiven derfor afbrydes 3 gange, kommer der tre “HIGH” pulser på D7. Dem kan vi tælle.

Det vender vi tilbage til.

Jeg skylder at nævne at inspirationen er fundet på denne side hos Instructables.

Smartphone del 2

OK. Så låget kom af, der blev målt igennem. Og jeg opgav at bruge røret til noget. (Det sidste passer ikke helt, det var først senere, men det her er et indlæg der samler op på et par ugers arbejde med den).

Som man kan se, er der ikke meget elektronik i sådan en telefon. De fleste der er lidt ældre end 30 har set sådan en grå drejeskivetelefon. Det var den første model der for alvor fik seriøs udbredelse i Danmark. Og i virkeligheden i resten af verden. Før da var der ikke mange der havde telefon. Og mange delte dem. Der er en udmærket side her, der omtaler telefonsystemet tilbage i 60’erne og 70’erne. Før min mor begyndte at læse til hospitalslaborant, var hun faktisk beskæftiget som telefonist. Jeg tror stadig hun har sin gamle kittel et sted derhjemme. Længere tid siden er det faktisk ikke.

Den model telefon jeg har gang i her, blev fremstillet af Kirk i Danmark, på licens fra Ericsson – de lavede engang mobiltelefoner. Det går ikke så godt i dag. Men dengang var de store. Telefoner var ved at få deres gennembrud, og der skulle fremstilles millioner af telefoner til en voksende middelklasse i hele den vestlige verden. I mange hjem – rigtigt mange hjem – var det den første telefon der kom i hus. Så svenskerne var grundige. Telefonen var gennemdesignet, der var sågar tænkt over hvor meget lys der slap ind i telefonen – det betyder nemlig noget for hvor mange insekter der kan finde på at kravle ind i den. Og insekter i nærheden af elektromekanik er en dårlig ide.

Med andre ord, det er rigtigt godt og solidt kram, der stadig virker. Nerdgasm!

Måden det fungerede på var, kort fortalt, at telefonen, ved bevægelse af drejeskiven, sendte et antal elektriske pulser til centralen. Hver puls bevægede et elektromekanisk relæ. Når centralen havde fået 8 pulser, var relæet skiftet til position 8. Så drejede man det næste ciffer, eksempelvis 4. Centralen modtog 4 elektriske pulser, og skiftede det næste relæ til 4. Og når man havde drejet nok cifre, var der forbindelse.

Det betyder, at drejeskiven giver et antal pulser på et par af de tre ledninger der går fra selve drejeskiven. Det er dem der er skruet løs på billedet her:

telefon

Kan man nu på en eller anden måde forbinde de ledninger til en Arduino kan man få den til at tælle pulserne. Og så har man det tal der blev drejet.

Det vender vi tilbage til.

Gammeldags smartphone

Jeg faldt over en drejeskivetelefon i den lokale genbrugsbiks. 75 kr for en gammel Kirk model F68. Hm. Den må kunne bruges til noget.

Indtil videre har den kunnet bruges til at skille ad. Men planen er følgende:

  • Drej et tal på skiven
  • Få en Arduino til at læse hvilket tal der drejes.
  • Send tallet/tallene til en Raspberry Pi
  • Få hindbærtærten til at gøre noget med omgivelserne, baseret på tallet.

Første udfordring var at få låget af. Som man kan se herunder, lykkedes det. Inde under røret er der et greb med noget klar plast. Der er et hul, og inde bag ved er der en skrue. I første omgang var jeg sikker på at den justerede et eller andet. Hvor højt telefonen ringede eksempelvis. Det gjorde den ikke. Det var den der holdt huset.

telefonHer er telefonen med låget af. Det skal nævnes at det allerførste jeg gjorde var, at pille drejeskiven af. Det skal man passe på med. Der sidder et lille blikhus på drejedimmeren. Og derinde er der en fjeder. Piller man låget af huset, flyver fjederen imponerende langt. Og så skal man bøvle med at få den tilbage. Det kan man. Det er bare ikke helt let.

Man kan se på billedet at der er 8 skrueterminaler, hvor der er monteret ledninger (på nogen af dem). Jeg har skruet nogle af dem af, mere præcist de ledninger der fører til drejeskiven. Det er nemlig det signal jeg i første omgang vil have fat i.

Samtlige kombinationer af skrueterminaler blev målt parvist med et multimeter, både med røret af og på, og med og uden påvirkning af drejeskiven. Det giver 15*16*2*2 = 960 målinger. Det tog lidt mere end et par aftener. Heldigvis spiller min forlovede World of arcraft, så når opvasken er taget, det værste rod jævnet, og støvsugeren har kørt en lille tur, er der god tid.

Ideen var at finde præcist de terminaler som kunne bruges til også at holde styr på om røret var af eller på. Det så lovende ud, men det lykkedes ikke. Det kan muligvis lade sig gøre hvis man er en bedre programmør end jeg er. Så det bliver ikke lige med det første. Anyway, det kan komme til at fungere fint uden at røret spiller en rolle.

Det var første trin. For at det her ikke skal blive alt for meget Wall of Text, splitter jeg det op i flere indlæg. Så vend tilbage, og følg eventyret hvor en gammeldags drejeskivetelefon forvandles til en smartphone!

 

E-bøger. Online. Med Calibre. På en hindbærtærte

Jeg har tydeligvis et problem med at afslutte projekter. Og absolut intet problem med at sætte nye i verden.

Anyway, vi har et ganske betydeligt antal e-bøger derhjemme. Liggende spredt rundt på harddiske, formentlig ihvertfald fire forskellige.

Det er noget rod. Vi aner ikke hvad vi har, vi aner ikke hvor vi kan finde det, og der er ikke let adgang til noget som helst. Det må der gøres noget ved.

Nu skal vi i forvejen have en Raspberry Pi kørende stort set hele tiden. Den skal styre belysningen af en LEGO-bil. Og lyset i barskabet. Og tage imod kommandoer fra en Arduino koblet til en gammeldags drejeskivetelefon. Og meget andet. Fælles for det hele er, at det er relativt små Python-scripts der skal styre det altsammen, og at der ikke er mange af tingene der for alvor behøver at have en responstid der måles i mere end et par håndfulde millisekunder. Med andre ord, der skulle være rigeligt med regnekraft at trække på, specielt når hindbærtærten skal køre headless (altså uden skærm, og uden at der kører en grafisk brugergrænseflade).

Hvorfor så ikke sætte den op som ebogsserver? Det er vist endda ret let – for det suverænt bedste program til at holde styr på ens ebøger hedder Calibre, og den har funktionaliteten indbygget. Det er med andre ord blot et spørgsmål om at få koblet en ekstern harddisk på dyret, og så sætte Calibre op. Så er der ebogsserver i huset. Der er en beskrivelse af hvordan det kan gøres her.

Well. Det bliver næste projekt. Når jeg er kommet lidt længere med de andre… I første omgang tror jeg vi får etableret en kategori her på siden til projekter. Og underkategorier til hvert enkelt projekt. Det kan forhåbentligt hjælpe til at holde styr på dem.

Nummerplader

Jeg har fundet den måske mest nørdede (*) hjemmeside på dansk. Ever.

Vidste du at de firecifrede nummerplader til biler i perioden 1. oktober 1930 til 30. juni 1950 var på 11 gange 34,5 cm? Og at tallene var 8 cm høje, mens bogstaverne var 2½ cm lavere?

Det kan man finde ud af på denne side: www.nrpl.dk. Der er også en oversigt over de højest observerede nummerplader i de forskellige serier.

(*) Det er positivt. Der er intet negativt ved at være nørd.

Mer Python og WordPress

Glemte lige – man skal have fat i dokumentationen for WordPress API. Den findes her.

Anyways. Når der så skal trækkes data fra WordPress gør man følgende:

import datetime, xmlrpclib

wp_url = “http://www.geekhome.dk/xmlrpc.php”
wp_username = “Her står brugernavnet”
wp_password = “Nej, jeg skriver nok ikke mit password her…”
wp_blogid = “47”

server = xmlrpclib.ServerProxy(wp_url)

post_data = server.metaWeblog.getPost(wp_blogid, wp_username, wp_password)

Og så er der data i variablen post_data.

De to mest interessante er disse:

post_data[‘title’] og

post_data[‘description’]

De andre er sikkert også interessante. Bare ikke lige til mine formål.

Standard pastaopskrift

Det er ulvetimen. Det skal gå hurtigt. Arbejdet har været hæsligt og trukket ud igen. Vi har godt nok ikke børn der skal hentes og fodres, men derfor skal aftensmaden klares i en ruf alligevel.

Standardopskriften i de situationer er:

Ingredienser:

  • ½ kg frisk pasta
  • 1/4 l madlavningsfløde, eller flødesubstitut. Evt. rigtig fløde hvis det skal være godt.
  • 2 store håndfulde friskrevet parmasan
  • 250-300 g lakserester, hakket ko, chorizo, kyllingestykker eller andet protein
  • Salt, peber, evt. basilikum, timian, hvidløg eller hvad der nu passer. Og olivenolie til at stege.

Fremgangsmåde:

  • Steg dyret på stor, dyb pande (jeg har en kobber sauterpande. Den er dyr, men den er god) i olien sammen med krydderierne.
  • Kog imens pastaen. Husk salt.
  • Rør ost og flødetingen sammen. Husk, at hvis du er syndig og det er rigtig fløde, så skal der ret meget salt i.
  • Når pastaen er kogt, løftes den over i panden til dyret, og der blandes godt. Hæld oste/fløde blandingen over,  og bland endnu mere.
  • Og her er det hemmelige trick: Hæld en kop eller to af kogevandet fra pastaen i. Det får sovsen til at creme, og gør det hele ekstra lækkert!
  • Server med brød og/eller salat. Og gerne lidt ekstra parmasanost.

Beslutninger, stress og kognitivt overskud

Når man har været på arbejde hele dagen, og skulle løse problemer og træffe beslutninger og prioritere og alt det man nu skal når man har en lederstilling. Typisk med udgangspunkt i ufuldstændig viden.

Og man også skulle det i går. Og hver dag i sidste uge. Og i forrige uge. Og ugen før da.

Så er der ikke overskud til også at tage stilling til om aftensmaden skal være forloren hare eller biksemad. Det kan faktisk vælte læsset. Det var hvad jeg fik at vide af en erfaren vicedirektør centralt i hierarkiet på arbejdet. Hun havde ret.

Når man derefter skal hjælpe sin mor med at tage stilling til om tal A er større end tal B. Når størrelsen af tal B vel at mærke ikke er kendt.

Så kan man altså her omkring klokken halv ni om aftenen ikke længere overskue hvordan man hægter en transistor og to modstande sammen så man får det ønskede resultat.

Beklager.

Det er lidt belastende at alle mulige andre omkring en trækker så store veksler på ens overskud, at der ikke er noget tilbage til en selv.

Pasta – i en gryde

Jeg har en standardopskrift på pasta når det skal gå hurtigt. Kobber-sauterpanden kommer i brug. Den store gryde bruges til pastaen. Og så er der en skål og et piskeris, og en tang, og en pastaske der også bliver beskidt. Og det er før vi får maden på tallerkenerne.

Det er hurtigt, det er (som regel) godt, og det er godt når det er mig der står for maden, og arbejdsugen (igen) har sneget sig op på 43 timer.

Men det er også mig der står for opvasken (grrrr). Så hvis nu man kunne minimere opvasken.

Martha Stewart har en opskrift på pasta i en enkelt gryde. Og det er hurtigt. Med danske mål, til fire personer:

  • 350 gram pasta
  • 350 gram cherrytomater, halveret
  • 1 løg, skåret i tynde skiver
  • 4 fed hvidløg, skåret i tynde skiver
  • ½ tsk basilikum
  • 2 spsk olivenolie
  • Salt, peber
  • 1,1 l vand

Det hele hældes i en gryde, bringes i kog ved høj varme. Der røres hyppigt, indtil pastaen er al dente, og næsten alt vandet er kogt væk. Ca. 9 minutter.

Jeg tror ikke helt på de 9 minutter. Uanset hvad de skriver på pakkerne, tager det altid længere. Men det skal ikke afholde mig fra at prøve opskriften ved lejlighed.

I aften står den dog på fritter og fiskefileter. Vi skal have ryddet ud i fryseren, og der skal ikke eksperimenteres med nye opskrifter når jeg samtidig skal tage opvasken fra i søndags.

Python og WordPress

The Nusse Conglomerate har behov for at kunne automatisere hvad der ligger på en given side.

Mere præcist, jeg har brug for at lade diverse scripts, af typen internet-of-things, uploade data til nettet, og trække det ned igen.

Det kan gøres på mange måder, men af ideosynkratiske årsager, ønsker jeg at det skal spille sammen med WordPress. Så det kommer det til, come hell or high water.

Jeg er nået til at få uploadet data. Og efterfølgende også redigere det. Det gøres således:

import datetime, xmlrpclib
wp_url = “http://www.geekhome.dk/xmlrpc.php”
wp_username = “Her står brugernavnet”
wp_password = “Nej, jeg skriver nok ikke mit password her…”
wp_blogid = “”
status_draft = 0
status_published = 1
post_type=’page’

server = xmlrpclib.ServerProxy(wp_url)

title = “Title with spaces”
content = “Nu voldsomt redigeret”
#date_created = xmlrpclib.DateTime(datetime.datetime.strptime(“2011-10-20 21:08”, “%Y-%m-%d %H:%M”))
categories = [“category here”]
tags = [“sometag”, “othertag”]
data = {‘title’: title, ‘description’: content, ‘categories’: categories, ‘mt_keywords’: tags, ‘post_type’: post_type}

post_id = server.metaWeblog.editPost(wp_blogid, wp_username, wp_password, data, status_published)

Godt så. Det her er måden at redigere det på. Det kræver at man lige fortæller hvilket ID siden har (post_type fortæller at det er en page). Vi kunne kalde den for 42.

Skal siden derimod oprettes, er det newPost der skal stå i serverkaldet. Og er det et blogindlæg kan man fjerne post_type helt – det er som standard blogindlæg der oprettes på denne måde. Datoen er her udkommenteret. Den kan også sættes. Det er formentlig muligt at sætte hvad som helst.

Det var første trin, jeg kan nu få et pythonscript til at oprette og ændre i en side på wordpress. Næste trin er at få trukket data ud af en given side.