Blogger Thomas Huulbæk Titanium

Thomas Huulbæk Titanium har stiftet Parlamentet.dk. I bloggen fortæller han fortrinsvis om udviklingen af sitet og foreningen - men også om alt muligt andet, han kan komme i tanke om.

Hvad ellers?
Thomas er udvikler i sikkerheds- og supportvirksomheden, Sikker.net ApS. Han er født i 1976.

Tidligere skrevet

December 2017

14: Mens vi venter


Oktober 2016

5: Katte på forsiden


August 2015

18: Knappen med de gode historier


Juni 2015

17: Dagen før dagen


April 2015

4: Hvem skal jeg stemme på?


September 2014

9: Aarhusianske middage og medborgerskaber


August 2014

22: Et par bæredygtige kurser


Juni 2014

10: Underskriv din vælgererklæring


Maj 2014

21: Patentdomstolen - ja eller nej?


April 2014

10: Hvad NemID har kostet mig?


Marts 2014

10: Mandatometeret


Februar 2014

17: Pind og giraffen


Januar 2014

22: Tidsmaskinen


November 2013

19: Lidt om erfaringer med SKAT og Nets

11: Folketingets dummeste eller klogeste politiker


Oktober 2013

28: Hvem skal jeg stemme på?

16: Om hvordan tal læses op

4: Hvis jeg nu var Uffe Elbæk


September 2013

4: Folketingets dummeste politiker

3: Folketinget og åbne data


August 2013

4: Lidt om folketingsåret 2012-13


April 2013

30: Sommertid = kursustid

17: Statistik 101

6: Ret til… hvad?


Januar 2013

22: Det skal kunne betale sig at arbejde


Oktober 2012

12: Lidt om valgsvindel


August 2012

3: Det er fredag og jeg ringer til Duracell


Juli 2012

4: Summerschool, anyone?


Maj 2012

24: Om at vælge et valgsystem


Marts 2012

23: Modeller og andet godt


Februar 2012

16: At kontakte Socialdemokratiet

8: Vi er snart klar med NemID


Januar 2012

10: Konsensus, clearingsaftaler, grundloven og den sociale kontrakt

4: Forslag fra borgerne til politikerne - en kort status


December 2011

9: Hvad har afstemninger med Folketingets logo at gøre?


November 2011

11: Løftebrud, kontraktpolitik, newspeak & spin

2: Vil ministeren garantere… ?


Oktober 2011

28: Du skal ikke forvente svar fra dine ansatte

26: Min blog er nok lidt for meget brok

4: Man skal da læse regeringsgrundlaget?

3: Borgernes egne forslag til Folketinget


September 2011

16: Regeringen er død - længe leve regeringen

14: Folketingsvalget i 2011


August 2011

19: Har ministeren en holdning til… ?

11: Ytringsfriheden versus Markedsføringsloven

5: Mens vi venter…


Juni 2011

29: Parlamentet.dk på kampagnesporet

27: Sagde Rasmus Jarlov virkelig det?

18: Der går lige et par dage ...


Maj 2011

19: Blok, blok og atter brok

3: Historien om gebyret og andre glidebaner


April 2011

6: Lidt om Folketingets arbejde


Marts 2011

25: Mener ministeren, at… ?

11: Hvor enig jeg er med medlemmerne af Folketinget


Februar 2011

18: Den hundrede abe og andre historier


Januar 2011

29: 10 dages parlamentarisk arbejde

19: Udvikling, udvikling, udvikling

6: Blandede udviklingsbolscher


December 2010

31: Årets sidste spadestik

21: Lidt mere udvikling + design

17: Roder med afstemningssystemet

16: Søgning, blogs og teknik

15: Sygdom og flere undskyldninger

13: Hvad sker der, Thomas?!

2: De sidste par dage…


November 2010

28: Doven søndag

27: Min personlige blog

Den Personlige

af Thomas Huulbæk Titanium den 18. August 2015
Læst 2050 gange

Knappen med de gode historier

For en uges tid siden købte jeg to knapper. Knapperne er store og røde og de kræver batterier og internet og derefter bestemmer man selv, hvad er skal ske.

Det virker bare som en fantastisk idé: Én stor rød panik-knap; verdens simpleste brugerflade - alle kan finde ud af at bruge den. Og så har den forbindelse til omverdenen via WiFi eller mobildata.


Knappen bt.tn i den røde udgave. Projektet blev finansieret via Indiegogo. Andre tænker i samme baner.


Lidt af interfacet fra bt.tn's website.

Knapperne kan via websitet programmeres til forskellige handlinger. Fx sende en email, hvis der bliver trykket. Eller sende en email. hvis der ikke bliver trykket. Eller kontakte andre websites, sende SMS'er eller integrere med IFTTT.

Da knapperne ankom til Kontoret tænkte jeg, at man fx kunne lave en konkurrence, hvor det gælder om at trykke på den ene først og så den anden bagefter hurtigst. Og så selvfølgelig måle tidsforskellen. Indtil videre er den endt med at generere tal mellem 0 og 100, som så vises på storskærmen - hvem skal hente frokost og hvad skal vi ha'?

Derhjemme tænkte jeg først og fremmest, at den kunne bruges af min søn på fem. Vi bor på 3. sal og idéen var, at vi kunne gå i haven og drikke hvidvin og Marvin kunne så trykke, hvis yngste søn vågnede. Det ville så få knappen til at sende en SMS. Jeg har brugt det et par gange, og det fungerer rigtigt godt.

Jeg havde tidligere overvejet, om jeg kunne få mit Sonos til at tale. Det er der heldigvis også andre, der har tænkt på, og det kan fx lade sig gøre via Google Text-to-Speech. Det er en behagelig, autorativ robotkvinde, som mine børn af en eller anden årsag lytter mere til end deres forældre. Jeg startede først med at sende "sjove" opdragende beskeder ud via Sonos ala Terkel og Marvin skal snart i seng og de glæder sig til at sove eller I dag bliver verdens bedste dag.

Jeg ledte lidt efter gode beskeder, som jeg kunne genbruge, men jeg fandt aldrig rigtigt noget zen-agtigt. Derfor endte jeg med at falde for Verdens Bedste Nyheder. Her er der kun gode nyheder, så når man kommer træt og sur og frustreret hjem fra arbejde / skole / børnehavne, så kan man klikke på knappen og få læst en rigtig god nyhed op. Det fungerer på den måde, at Knappen kontakter min router, der derefter retter henvendelse til nyhederne, som så får Google til at lave dem om til lyd, som derefter afspilles over Sonos.

Du kan høre, hvordan det lyder i det lille videoklip her på siden. Hvis man vil undgå den metalliske stemme, kan man måske overveje at bruge bedre tjenester som fx Loquendo TTS. Eller bare gøre knappen til en Tom Waits knap, som en god ven foreslog.

Det tekniske

Min router kan køre en variant af Linux, der kan bruge Entware til at installere pakker. Det betyder blandt andet, at man kan have en fuldt fungerende web server kørende på routeren.

Jeg ledte efter en Sonos-integration og stødte først på SoCo, der kunne styre Sonos via Python. Det virkede fint, men Python eksekverer ekstremt langsomt på min router, så der var altid minimum to sekunders ventetid. 

Jeg fandt derefter et library til PHP, som også kan styre Sonos, men jeg fik det aldrig rigtig til at fungere ordentligt. Jeg endte derfor med et andet stykke software til styring af Sonos via PHP. Det tog mig lidt tid at få det installeret på min router, fordi PHP på routeren ikke understøtter PHAR og dermed kunne software ikke bruges via Composer. Det skulle gøres manuelt.

Men derefter var det nemt at få op at køre. Du kan se hele PHP scriptet herunder.

 $intmax) {
  			$string_cut = substr($string, 0, $intmax);
  			$last_space = strrpos($string_cut, " ");
  			$strings[$i] = substr($string, 0, $last_space);
  			$string = substr($string, $last_space, strlen($string));
  			$i++;
  		}
  		$strings[$i] = $string;
  		return $strings;
  	}

  function http_get_contents($url) {
	$ch = curl_init();
	curl_setopt($ch, CURLOPT_TIMEOUT, 1);
	curl_setopt($ch, CURLOPT_URL, $url);
	curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
	if (FALSE === ($retval = curl_exec($ch))) {
	 	error_log(curl_error($ch));
	} 
	else {
		return $retval;
	}
  }

  $BLOGURL    = "http://verdensbedstenyheder.dk/feed/?post_type=news";
  $NUMITEMS   = 10;
  $TIMEFORMAT = "j F Y, g:ia";
  $CACHEFILE  = "/opt/tmp/" . md5($BLOGURL);
  $CACHETIME  = 1;
  $rand = rand(0,9);

  if (!file_exists($CACHEFILE) || ((time() - filemtime($CACHEFILE)) > 3600 * $CACHETIME)) {
    if ($feed_contents = http_get_contents($BLOGURL)) {
		$fp = fopen($CACHEFILE, 'w');
		fwrite($fp, $feed_contents);
		fclose($fp);
    }
  }

  include "./class.myrssparser.php";
  $rss_parser = new myRSSParser($CACHEFILE);
  $feeddata = $rss_parser->getRawOutput();
  extract($feeddata['RSS']['CHANNEL'][0], EXTR_PREFIX_ALL, 'rss');
  
  $text = $rss_ITEM[$rand]['TITLE'].". ".$rss_ITEM[$rand]['DESCRIPTION'];
  $lang = "da";

  $text = CutString($text, 100);

  for ($i = 0; $i < count($text); $i++) {
      $url = "http://translate.google.com/translate_tts?ie=UTF-8&tl=da&q=".urlencode($text[$i])."&client=sonoscrm";
      $ch = curl_init();
      curl_setopt($ch, CURLOPT_URL, $url);
      curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
      curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1)");
      curl_setopt($ch, CURLOPT_TIMEOUT, 60);
      $return[$i] = curl_exec($ch);
      curl_close($ch);
  }
  file_put_contents("/media/USB_DISK/nas/tts/speech.mp3", $return);


  require_once "vendor/autoload.php";
  use duncan3dc\Sonos\Network;
  $sonos = new Network;

  /*
    192.168.1.204 = Hallway
    192.168.1.96  = Living Room2
    192.168.1.157 = Living Room
  */

  $localPath = "/media/USB_DISK/nas";
  $hostname = "RT-N56U";
  $smb = "{$hostname}/USB_DISK/nas";

  $directory = new duncan3dc\Sonos\Directory($localPath, $smb, "tts");

  use duncan3dc\Sonos\Tracks\Track;

  $track = new Track("x-file-cifs://RT-N56U/USB_DISK/nas/tts/speech.mp3");

  $living = $sonos->getControllerByIp("192.168.1.204");
  $living->interrupt($track);
?>

Emneord: udvikling spild af tid verdens bedste nyheder

Relateret indhold:

22.01.2014
 Tidsmaskinen

03.08.2012
 Det er fredag og jeg ringer til Duracell

Der er endnu ingen kommentarer...

Du burde være logget ind for at kommentere...



Skriv indlæg


Informér om nye indlæg i denne debat?