Blog

RED Brick Image 1.11: Große Leistungssteigerung

Das RED Brick Image Version 1.11 ist jetzt Verfügbar: http://download.tinkerforge.com/red_images/full/

Im RED Brick Image 1.10 hatten wir eine große Menge signifikanter Änderungen im Vergleich zu 1.9. Neben anderen Dingen haben wir den Linux Kernel von 3.4 auf 4.13 aktualisiert. Das war eine Menge Arbeit, wir mussten Treiber portieren, unseren SPI-Kommunikations-Code anpassen etc. Dadurch konnten wir einige notwendige Sicherheitsaktualisierungen einpflegen (z.B. der Fix für KRACK WPA) und neuen Treibersupport hinzufügen (z.B. für Bluetooth 5.0). Auf Grund der Sicherheitslücken im 3.4er Kernel war das Kernelupdate aus unserer Sicht alternativlos.

Leider gab es durch das Update einen Rückschritt in der Performance. Diese Regression kam hauptsächlich zustande durch Änderungen am Linux Kernel für Multi-Core Prozessoren (z.B. Busy Waiting auf IO in Interrupts). Diese Änderungen erhöhen die Performance in Multi-Core Systemen, wir hatten allerdings eine Verringerung der Performance des RED Bricks (ein Single-Core System). Der Performanceverlust war bei hohen IO-Belastungen besonders auffällig.

Da wir immernoch viele RED Bricks verkaufen und das Feedback durchgängig sehr positiv ist, haben wir uns dazu entschieden das "Großprojekt" anzugehen die Performance für die nächste Image Version wieder zu verbessern.

Unter anderem haben wir

Um diese Änderungen zu machen und vernünftig zu testen mussten wir zwei Monate Arbeit investieren. Es benötigte eine Menge "trial-and-error" um die eigentlichen Performance-Flaschenhälse ausfindig zu machen.

Wir haben mti drei verschiedenen Benchmakrs getestet:

Benchmark 1: CPU-Bound

Für die CPU-Bound Performance-Tests haben wir sysbench mit den Parametern "--test=cpu --cpu-max-prime=4096 run" genutzt.

Der governor (wenn zutreffend) war auf "performance" gestellt und die Verbindung zum RED Brick wurde über SSH durch die Ethernet Extension hergestellt.

Die durchschnittliche Ausführungszeit konnte von Version 1.10 auf 1.11 um 5,4ms verringert werden. Das entspricht einem Leistungsanstieg von 25%. Die Performance ist zusätzlich auch etwas besser als in dem 1.9 Image mit 3.4 Kernel.

Benchmark 2: IO-Bound

Für die IO-Bound Performance-Tests haben wir iper3 mit den Parametern "-c ishraq-tinkerforge -N -t 120" genutzt.

Der governor (wenn zutreffend) war auf "performance" gestellt und die Verbindung zum RED Brick wurde über SSH durch die Ethernet Extension hergestellt.

Wir haben mit und ohne Stapel getestet. In den Tests mit Stapel haben wir einen Master Brick mit Thermal Imaging Bricklet genutzt. Das Thermal Imaging Bricklet ist gut geeignet, da es hinreichend viele Daten generieren kann um die Stapel-Kommunikation zu saturieren.

Der Graph spricht für sich selbst. Wir konnten konnten einen Leistungsanstieg von 220% verglichen zu 1.10 und 23% verglichen zu 1.9 messen!

Benchmark 3: Stapel-Kommunikation

Zusätzlich haben wir auch noch Tests zur reinen Stapel-Kommunikation durchgeführt. In diesem Test nutzen wir ein Python-Script welches auf dem RED Brick ausgeführt wird und Daten vom Thermal Imaging Bricklet mit Getter/Callback sammelt und diese ohne zusätzliche CPU-Last zu erzeugen verwirft. Dabei berechnen wir die Bilder pro Sekunde (FPS).

In diesem Test konnten wir die Performance im Verglich zu 1.10 steigern, haben allerdings immer noch eine kleine Regression verglichen zu 1.9. Allerdings läuft die CPU im 1.9er Image in diesem Test bereits am Limit, während im neuen 1.11er Image noch CPU-Zeit für Berechnungen übrig ist. Das lässt sich auch gut im IO-Bound Test beobachten, dort wird CPU-Last hinzugefügt durch das zusätzliche Senden der Daten zum PC.

Insgesamt sind wir mit dem erreichten Kompromiss aus Stapel-Kommunikations-Durchsatz und verfügbarer CPU-Zeit sehr zufrieden. Wir sind zuversichtlich das die Performance in Image 1.11 in echten Anwendungen im Vergleich zu 1.10 erheblich und im Vergleich zu 1.9 moderat verbessert wurde.

Neue Bricklets Februar 2018 Teil 2: Outdoor Weather Bricklet und mehr

Im letzten Blogeintrag haben wir euch das Remote Switch Bricklet 2.0, Motion Detector Bricklet 2.0, Analog In Bricklet 3.0 und das NFC Bricklet vorgestellt.

Im heutigen Teil stellen wir euch das Outdoor Weather, Temperature IR Bricklet 2.0, Rotary Encoder Bricklet 2.0 und das Solid State Bricklet 2.0 vor.

Wie bereits im vorherigen Blogeintrag erwähnt, werden auch diese Bricklets mit dem 7-Pol Anschluss ausgestattet.

Outdoor Weather Bricklet

Wir mussten immer wieder feststellen dass es eine große Hürde ist ein eigenes sprtizwassergeschütztes Gehäuse zum Messen von Umweltdaten mit dem Baukastensystems zu bauen. Um dieses Problem zu umgehen bieten wir jetzt das Outdoor Weather Bricklet an. Das Bricklet dient als Funkempfänger für die Außen-Wetterstation WS-6147 sowie den Temperatur/Luftfeuchte Sensor TH-6148.

Über den eingebauten 433MHz Empfänger kann das Bricklet Messdaten von bis zu 255 Außen-Wetterstationen und zusätzlich von bis zu 255 Sensoren empfangen. Dabei bekommt jeder Sensor beim ersten Start automatisch eine eindeutige ID, damit die Daten einzeln ausgewertet werden können.

Die Außen-Wetterstationen WS6147 ist einfach aufzubauen und führt verschiedenste Messungen durch. Neben Temperatur, Windgeschwindigkeit und Windrichtung, misst es zusätzlich die Luftfeuchtigkeit und den Niederschlag und überträgt diese Werte kabellos im 45 Sekunden Takt an das Bricklet. Zusätzlich haben wir noch den Temperatur/Luftfeuchte Sensor TH-6148 mit in unser Sortiment aufgenommen. Der Sensor misst Temperatur in °C sowie die Luftfeuchtigkeit in %RH.

Das Outdoor Weather Bricklet in Kombination mit der Außen-Wetterstationen und/oder dem Temperatur/Luftfeuchte Sensor ist die perfekte Lösung um das Starter Kit: Wetterstation mit Außen-Umweltdaten zu erweitern.


Temperature IR, Solid State Relay und Rotary Encoder Bricklet 2.0


Das Temperature IR Bricklet, Solid State Relay Bricklet sowie das Rotary Encoder Bricklet haben ein Update auf Hardware-Version 2.0 bekommen. In der neuen Version haben die drei Bricklets jetzt eine einstellbare Status LED sowie den neuen 7-Pol Stecker. Zusätzlich nutzen das Temperature IR Bricklet 2.0 sowie das Rotary Encoder Bricklet 2.0 jetzt die neue verbesserte Callback API. Mit der Verwendung des Co-Prozessors konnten wir beim Rotary Encoder die Abtastrate signifikant erhöhen, so dass es jetzt nahezu unmöglich ist Schritte zu verlieren.

Ansonsten ist die technische Spezifikation der drei Bricklets im wesentlichen gleich geblieben. Das Temperature IR Bricklet 2.0 erlaubt Infrarot-Temperatur-Messungen im Bereich von -70°C bis zu 380°C, mit dem Solid State Relay Bricklet 2.0 können Solid State Relais mit Leistungen von bis zu 380V/25A AC oder 50V/80A DC geschaltet werden und das Rotary Encoder Bricklet 2.0 ist um 360° drehbar und hat insgesamt 24 Einzelschritte.

Außensensor für Wetterstationen, neues NFC Bricklet, Produktupdates

Es ist wieder an der Zeit euch neue Bricklets vorzustellen. Seit gestern sind acht neue Bricklets im Shop. Teilweise handelt es sich um Weiterentwicklungen bestehender Bricklets, teilweise sind es aber auch komplette Neuentwicklungen.

Folgende Bricklets nehmen wir neu in unser Sortiment auf:

Damit wir euch alle acht Bricklets ausführlich vorstellen können, wird dieser Blogeintrag ein 2-Teiler werden. Im ersten Teil erfahrt ihr die wichtigsten Neuigkeiten zum Remote Switch 2.0, Motion Detector 2.0, Analog In 3.0 und NFC Bricklet. Im zweiten Teil behandeln wir dann das neue Temperature IR 2.0, Rotary Encoder 2.0, Solid State Relay 2.0 und das neue Outdoor Weather Bricklet.

Wie bereits beschrieben lösen die neuen Bricklets die alten ab. Alle neuen Bricklets besitzen einen Co-Prozessor und sind daher auch mit dem 7-Pol Stecker ausgestattet, der bereits hier Ausblick auf 2017 genauer beschrieben wurde.

Da wir von den Vorgänger Versionen noch zum Teil Module auf Lager haben verkaufen wir diese mit 30% Rabatt. Solange der Vorrat reicht! Also nicht lange überlegen und zuschlagen.

Remote Switch Bricklet 2.0

Das Remote Switch Bricklet 2.0 wird das aktuelle Remote Switch Bricklet ersetzen. Das neue Bricklet vereint die bekannten Eigenschaften des alten Bricklets mit neuer Technik. Das Bricklet ist weiterhin optimal für die Hausautomatisierung geeignet und besitzt weiterhin ein 433MHz Funkmodul mit der passenden SMA Antenne. Dadurch kann das Bricklet, wie bereits beim Vorgängermodell, in Verbindung mit einem Brick alle Funksteckdosen (mit PT2262 oder HX2262) steuern. Im Gegensatz zum Vorgängermodell kann das Remote Switch Bricklet 2.0 aber auch als Empfänger für die Funksteckdosen-Fernbedienungen genutzt werden.

Motion Detector Bricklet 2.0

Das Motion Detector Bricklet wird vom Motion Detector Bricklet 2.0 abgelöst. Das neue Bricklet hält einige Verbesserungen parat. Es wird kein fertiges Modul mehr verwendet sondern eine komplette Eigenentwicklung. Dadurch ist das Bricklet kompakter und besitzt einen erweiterten Erfassungswinkel von 120° im Gegensatz zu den bisherigen 100°. Der Erfassungsbereich und bietet damit neue Anwendungsmöglichkeiten. Beim Motion Detector Bricklet 2.0 ist darüberhinaus die Empfindlichkeit per API einstellbar. Somit kann das Bricklet auf den jeweiligen Anwendungsbereich angepasst werden und die Detektionsreichweite eingestellt werden. Ein besonderes Gimick ist die blaue Beleuchtung der Fresnel Linse. Diese ist per API dimmbar und kann zum Beispiel zur Anzeige einer Bewegungserkennung genutzt werden. Da die Hintergrundbeleuchtung aus drei einzeln dimmbaren LEDs besteht können auch kleine Animationen angezeigt werden!

Hintergrundbeleuchting im Einsatz:

Analog In Bricklet 3.0


Das Analog In Bricklet 3.0 wird das Analog In Bricklet 2.0 ablösen. Technisch ist dieses mit der Vorgängerversion vergleichbar, besitzt aber den Vorteil, dass das analoge Messsignal nun nicht mehr über das Brickletkabel übertragen wird. Die Spannungsmessung wird direkt vom Prozessor auf dem Bricklet durchgeführt und dann digital übertragen. Zusätzlich bietet die API mehr Möglichkeiten zur Mittelwertbildung.

NFC Bricklet

Der Nachfolger vom NFC/RFID Bricklet trägt den Namen NFC Bricklet. Rein technisch ist die 13.56MHz NFC-Frequenz Teil von RFID, daher der alte Name. Allerdings haben einige Kunden fälschlicherweise gedacht dass das Bricklet auch kompatibel zur 125-134kHz RFID-Frequenz ist. Um dort keine Verwirrung mehr zu stiften haben wir "RFID" einfach aus dem Namen entfernt. Daher müssen wir bei diesem neuen Bricklet auch kein "2.0" anhängen.

Das Bricklet wird weiterhin im Stande sein NFC Forum Typ 1 und 2 sowie Mifare Classic Tags zu lesen und zu schreiben. Das neue Bricklet ist nun zusätzlich auch mit NFC Forum Typ 3 und 4 kompatibel inklusive Verschlüsselung. Außerdem unterstützt es NFC P2P sowie Kartenemulations-Betriebsmodi. Es gibt auch direkte Unterstützung für das Schreiben und Lesen von NDEF Datensätze. Dadurch wird das Bricklet deutlich vielseitiger einsetzbar und über die neue API auch deutlich einfacher zu benutzen.

Zum Zeitpunkt des schreibens dieses Blogeintrags haben wir bereits 41 der neuen NFC Bricklets verkauft (es ist seit gestern im Shop bereits verfügbar), obwohl es noch gar keine offizielle Ankündigung gab. Es besteht also offensichtlich ein großes Interesse an diesem Bricklet. An dieser Stelle nochmal Entschuldigung für die lange Wartezeit die es gab bei der Umstellung vom NFC/RFID Bricklet auf das neue NFC Bricklet.