Scratch

Scratch (link) is een omgeving voor kinderen om kennis te maken met programmeren.Het is een visuele programmeertaal waar je doormiddel van het slepen, en aan elkaar koppelen van allerlei blokjes een programma kan maken. Bijvoorbeeld om een animatie te besturen, of een eenvoudig spelletje te maken. Scratch draait in een webbrowser (geen extra software nodig), maar kan ook als een offline programma draaien.

Scratch is leuk, maar het wordt pas helemaal leuk als je vanuit je scratch programma kan samenwerken met dingen buiten je computer:  een website, een robot, een thermometer, noem maar op. De offline versie van Scratch heeft voor dit doel de HTTP extensie waardoor het mogelijk wordt om speciale blokjes te maken die informatie uitwisselen met websites.

Omdat de HTTP extensie experimenteel is in de huidige versie van Scratch, en deze daarom nogal verborgen zit in de software beschrijf ik hierbij hoe een HTTP extensie kan worden gemaakt.

De HTTP extensie bestaat uit een JSON document waarin de nieuwe blokjes worden gedefinieerd, en de locatie van de webserver wordt opgegeven. Bijvoorbeeld:

{ 
  "extensionName": "Mijn module",
  "useHTTP":true,
  "host": "192.168.1.44",
  "extensionPort": 1880,
  "blockSpecs": [
    [" ", "Sonos %s", "scratchSonos", "Hallo Scratch"]
  ]
}

Een meer gedetailleerde specificatie is ook beschikbaar (link). In het kort is de betekenis dat het gaat om een extensie met de naam ‘Mijn module’. Het is een HTTP extensie (useHTTP is true), die beschikbaar is op ip adres 192.168.1.44, en poort 1880. In blockSpecs staat een lijst van blokjes, met per blokje een lijstje parameters per blokje. Achtereenvolgens zijn dat type, format, functie, gevolgd door 0 of meer default waarden.

Op het moment dat Scratch dit blokje gaat uitvoeren wordt een HTTP GET call gedaan naar adres:

http://192.168.1.44:1880/scratchSonos/Hallo%20Scratch

De JSON extensie kan in de offline versie van Scratch worden geladen door het menu ‘Bestand’ te klikken terwijl de linker shift-toets is ingedrukt. Door het indrukken van de linker shift-toets verschijnt de extra menu optie ‘Import experimental HTTP extension’ die dan ook moet worden gekozen.  Selecteer nu het JSON bestand, en klik op OK. Onder ‘Meer blokken’ is nu het nieuwe blok te vinden. Zie bijgevoegde screenshots.

scratch1
Klikken op Bestand met de linker shift toets ingedrukt geeft de extra optie ‘import external scratch extension’ waarmee het mogelijk wordt om een HTTP extensie te laden.
Na het succesvol laden van de HTTP extensie zijn nieuwe blokjes zichtbaar in de categorie 'Meer blokken'
Na het succesvol laden van de HTTP extensie zijn nieuwe blokjes zichtbaar in de categorie ‘Meer blokken’

Een snelle voorbeeld scratch applicatie is die waar door klikken op de ‘kat’ wordt gevraagd om je naam in te vullen. De ingevulde naam wordt vervolgens via de HTTP extensie naar een text-to-speech engine gestuurd die via Sonos (een draadloos speakersysteem) de tekst weer uitspreekt. Dit laatste is niet beschreven in deze post, dat komt vast een andere keer.

scratch3
Een scratch programma waarin een blokje uit de HTTP extensie wordt gebruikt.

 

 

 

Geef een reactie

Het e-mailadres wordt niet gepubliceerd. Vereiste velden zijn gemarkeerd met *