Blog

JavaScript Bindings für Browser/Node.js und Authentifizierung

Wir haben soeben ein großes neues Release veröffentlicht. Dieses besteht aus JavaScript Bindings für Node.js und JavaScript Bindings für Browser sowie die Unterstützung von Authentifizierung. Dazu gibt es einen neuen Brick Daemon, Brick Viewer und eine neue Master Brick Firmware Version, sowie eine neue Version aller Bindings.

JavaScript für Node.js

https://www.tinkerforge.com/static/img/_stuff/logo_nodejs.png

Node.js ist eine Plattform die JavaScript serverseitig ausführt. Somit ist nun eine Steuerung von Bricks und Bricklets über serverseitiges JavaScript möglich. Das Auslesen der Helligkeit von einem Ambient Light Bricklet sieht z.B. wie folgt aus:

Die JavaScript Bindings für Node.js funktionieren hierbei nach dem gleichen Funktionsprinzip wie alle anderen Bindings auch. Es wird eine TCP/IP Verbindung zum Brick Daemon oder zur WIFI/Ethernet Extension über normale Sockets aufgebaut, die Funktionalität dafür bietet Node.js. JavaScript welches in einem Browser ausgeführt wird, kann leider keine normalen Sockets öffnen, daher gibt es für die JavaScript Bindings eine zusätzlich Variante für den Browser.

JavaScript für Browser

https://www.tinkerforge.com/static/img/_stuff/html5_websocket.png

Die JavaScript Bindings für den Browser basieren auf WebSockets. Dazu implementieren die neuesten Versionen des Brick Daemon sowie der Master Brick Firmware einen kleinen Webserver mit WebSocket-Unterstützung. In der aktuellen Master Brick Version funktionieren Websockets nur mit der Ethernet Extension. Die Unterstützung für die WIFI Extension folgt später.

Warum ist das in der Praxis so phantastisch, dass wir dafür diesen riesigen Aufwand getrieben haben? Die JavaScript Bindings für den Browser erlauben es, Bricks und Bricklets direkt aus jedem Browser zu steuern der moderne Webstandards unterstützt. So können z.B. die Daten des Starterkit: Wetterstation mit wenigen Zeilen HTML und JavaScript ausgelesen und auf einer Webseite dargestellt werden. Diese Webseite kann entweder auf einem Server liegen oder auch lokal aufgerufen werden. Es spielt dabei keine Rolle da das JavaScript immer lokal ausgeführt wird.

D.h. eine App für Android oder IPhone zur Darstellung von Wetterdaten oder zur Steuerung des Remote Switch Bricklets kann in wenigen Zeilen HTML + JavaScript gebaut werden, es ist nicht mehr nötig eine aufwendige native App in Java oder Objective-C zu schreiben!

Das auslesen der Helligkeit von einem Ambient Light Bricklet sieht z.B. wie folgt aus:

Die JavaScript Bindings für den Browser eröffnen eine große Menge neuer Möglichkeiten im Bereich Internet der Dinge. Um dies zu demonstrieren werden wir bereits nächste Woche eine komplexe Webapplikation (komplett Open Source) welches eines unserer Bricklets steuern kann in Form eines neuen Starterkits veröffentlichen.

Um möglichen Angriffen (aus dem Internet) über den Browser auf die Bricks/Bricklets entgegenzuwirken, veröffentlichen wir zusätzlich zu den neuen JavaScript Bindings auch noch eine Möglichkeit zur Authentifizierung.

Authentifizierung

Standardmäßig wird auf der TCP/IP Schnittstelle des Brick Daemons und der Ethernet/WIFI Extension keine Zugriffskontrolle durchgeführt. Jeder der eine TCP/IP Verbindung herstellen kann, kann auch die Bricks und Bricklets kontrollieren. Mit den neuen JavaScript Bindings wird es nun für einenn Angreifer vereinfacht Zugriff auf das lokale TCP/IP Netzwerk zu bekommen (über den Browser), dafür haben wir Authentifizierung eingeführt. Wenn Authentifizierung aktiviert ist können Brick und Bricklets nur noch von Teilnehmer kontrolliert werden, die das Authentifizierungsgeheimnis kennen.

Authentifizierung kann für den Brick Daemon sowie für die Ethernet/WIFI Extension aktiviert werden. Zusätzlich gibt es ein Authentifizierungs-Tutorial um den Einstieg in die Authentifizierung zu vereinfachen. Um ein bestehendes Programm um Authentifizierung zu erweitern, muss lediglich eine weitere Zeile eingefügt werden welche das Authentifizierungsgeheimnis setzt.

Um die Authentifizierung durchzuführen, setzen wir intern das HMAC-SHA1 Verfahren ein. Das gleiche Verfahren wird z.B. auch von Amazon verwendet um Zugriff auf Amazon S3 zu authentifizieren.

NI LabVIEW Bindings fertig

Die NI LabVIEW Bindings sind jetzt verfügbar für Windows!

https://www.tinkerforge.com/static/img/_stuff/labview_logo.png

Unter Windows kann LabVIEW .NET Bibliotheken verwenden. Dies erlaubt es mit den existierenden C# Bindings Bricks and Bricklets in LabVIEW zu verwenden. Um dies zu demonstrieren stehen gesondert Beispielcode und Dokumentation zur Verfügung.

Beispiel Live-Graph eines Temperature Bricklet:

https://www.tinkerforge.com/en/doc/_images/Screenshots/labview_example_frontpanel.jpg

Dazugehöriges Blockdiagramm:

https://www.tinkerforge.com/en/doc/_images/Screenshots/labview_example_blockdiagram_small.png

Falls ihr Bugs findet, bitte im generator git melden: https://github.com/Tinkerforge/generators

Wiederverkäufer in der Schweiz

https://www.tinkerforge.com/static/images/resellers/playzone-logo.jpg

Gute Nachrichten für Bastler aus der Schweiz! Mit PLAY-ZONE haben wir einen bekannten Schweizer Shop für Open Source Produkte gefunden. PLAY-ZONE verfügt über ein Versand- und Abhollager für Elektronische Produkte, und ist vorwiegend im Bereich Open Source Hardware, Mikroprozessoren, DIY-Elektronik, Sensorik und Robotik tätig.

Tinkerforge goes Stand-Alone aka RED Brick

Die Planungen das Tinkerforge Baukastensystem “standalone” fähig zu machen gab es seit Beginn des Baukastensystems. Ursprünglich wollten wir eine C-API bieten, die genutzt werden kann um eine eigene Firmware für die Bricks zu schreiben. Dies bezeichneten wir als “On Device API”. Der Vorteil unserer “High-Level” API mit einer starken Abstraktion von der Hardware wäre damit verloren gewesen. Viele Nutzer des Baukastensystems wären gezwungen gewesen C zu lernen, wollten Sie denn die Bricks direkt programmieren.

Leider können wir nicht alles auf einmal entwickeln, aus diesem Grund haben wir vor einiger Zeit beschlossen an dem “High-Level” Ansatz festzuhalten. Wir möchten Jedermann die Möglichkeit bieten, auf eine einfache Art und Weise, schnell und flexibel auch Standalone-Anwendungen zu entwickeln. Eine gut Möglichkeit hierfür sind Embedded-PCs, wie das Raspberry Pi, die von vielen zur Steuerung von Bricks und Bricklets genutzt werden.

Mit dem RED Brick (RED = Rapid Embedded Development) greifen wir diesen Ansatz auf und möchten einen Embedded-PC für das Tinkerforge Baukastensystem entwickeln. Im Forum haben wir euch gefragt, wie eure Ideen hierzu sind und wie dieses RED Brick aussehen sollte. Es hatte sich herausgestellt, dass es wie auch die anderen Bricks ein 40x40mm Board sein sollte.

Nach einiger Entwicklungszeit und einigem Fluchen (auf 4x4cm ist wirklich wenig Platz) freuen wir uns euch die ersten Screenshots vom Layout zu zeigen:

https://www.tinkerforge.com/static/img/_stuff/red_layers.jpg

Das 6-lagiges Platinendesign ist noch nicht ganz fertig. Es müssen noch ein paar Signale geroutet werden, Optimierungen und Flächen fehlen noch. Wir sind zuversichtlich, dass wir die ersten Prototypen nächste Woche bestellen können.

https://www.tinkerforge.com/static/img/_stuff/red_front.jpg

Auf der Oberseite ist ein A10s Prozessor von Allwinner untergebracht. Dieser ist ein Cortex A8, der mit 1GHz getaktet wird. Direkt daneben befindet sich der 512MB DDR3 RAM Baustein. Die Entscheidung für den Prozessor war nicht ganz einfach. Möchte man ein bezahlbares Produkt entwickeln, so stellen Blind-Vias (Durchkontaktierungen die nur zwischen bestimmten Lagen verbindet) keine Option dar. Somit müssen RAM und CPU auf eine Seite gebracht werden, wodurch der Platz für die CPU sehr beschränkt ist.

Zusätzlich sind auf der Oberseite folgende Anschlüsse vorhanden:

  • USB Host zum Anschließen von USB geräten wie USB-Sticks, WIFI-Sticks, Festplatten, Tastatur, Maus etc.

  • Micro HDMI zum Anschließen von Monitoren oder Fernsehern

  • Mini USB als serielle Konsole oder zur Konfiguration

https://www.tinkerforge.com/static/img/_stuff/red_back.jpg

Auf der Unterseite befinden sich:

  • Micro SD Karten Slot als Speichermedium für das Betriebssystem, eigenen Programmen etc.

  • General-Purpose Anschluss für Flachbandkabel. Verschiedene Schnittstellen liegen auf diesem Anschluss. Eine Nutzung ist noch nicht geplant.

Kurze Hardware Spec:

  • CPU: Allwinner A10s

  • Takt: 1 GHz

  • Anzahl Cores: Single Core

  • RAM: DDR3, 512MB

  • Schnittstellen: Stapel, Micro HDMI, USB Host, Mini USB, General Purpose

  • Speicher: per MicroSD Karte

Wir halten euch mit weiteren Blogeinträgen auf dem Laufenden. Drückt uns die Daumen, dass der Prototyp wie erhofft funktioniert :-).

Stay tuned!

Neues Starterkit: Blinkenlights

Nachdem wir Ende November ein kleines Preview veröffentlicht haben, ist es nun soweit. Das Starterkit: Blinkenlights ist jetzt offiziell im Shop erhältlich.

200 RGB LED Pixel sind, angeordnet in einer 20x10 Matrix, in einer schwarzen Kunstoffplatte verbaut. Diese Pixel können somit als Display genutzt werden. Viele Anwendungen wirken schöner, wenn eine zusätzliche Frontplatte vor die LEDs gesetzt wird. Wie für Starterkits üblich haben wir diverse Beispielanwendungen programmiert und euch zur Verfügung gestellt. Besonders die Spiele-Demos: Pong und Tetris haben unter uns zu regelrechten Wettkämpfen geführt, aber seht selbst:

Das Kit hängt bei uns jetzt im Besprechungsraum, so dass sicherlich der eine oder andere Vertreter mal in den Genuß kommt Tetris oder Pong zu spielen ;-).