Alles in Ordnung

Alles in Ordnung

Eigentlich sollte es nach Isle of Skye gar nicht so schnell weiter gehen mit diesem Thema. Aber Heute Morgen hat mir mein Kalender entgegen geworfen dass der erste Februar der Robinson-Crusoe-Tag ist, und die Gelegenheit konnte ich mir nicht entgehen lassen. :-)

Robinson Crusoe — Abenteuer auf der verfluchten Insel heißt das Spiel um das es Heute gehen soll mit vollem Namen. Eins der besten Spiele die ich bislang gespielt habe. Kooperativ mit mehreren Spielern, hervorragend für Solo-Partien, deprimierend schwierig und unglaublich thematisch. Es ist auch das komplizierteste Spiel an das ich mich heran getraut habe. Vierzig Seiten ist die Anleitung lang, unsere erste Partie hat über sieben Stunden gedauert — normalerweise ist man nach 90 Minuten fertig. Aber es lohnt sich!

Grabbelkiste

Grabbelkiste

Leider ist auch bei diesem Spiel kein System in der Kiste. Ich habe es gebraucht gekauft, ich nehme an dass die Sortierbox eine Idee des Vorbesitzers war. Abgesehen davon sind im Karton nur Zip-Beutel und Einzelteile. Ein Spiel aufzubauen ist kompliziert genug, den ganzen Kram jedes Mal ein- und auspacken zu müssen macht es nicht einfacher.

Mein Einsatz passt vollständig in den Karton. Ich habe die alte Ausgabe des Spiels, bin mir aber ziemlich sicher dass die Teile aus der 2016er Neuauflage auch rein passen würden. Auch die Sachen aus der Schatzkiste sollten ihren Platz finden, aber das habe ich noch nicht ausprobiert.

Ähnlich wie bei meinen Einsätzen für Smash Up und Isle of Skye gibt es wieder einen Einsatz mit dem man die benötigten Tokens auf den Tisch bringen kann. Das wird kaum jemandem auffallen, aber in die Fächer des Kästchens habe ich Symbole graviert die Auskunft darüber geben dass zum Beispiel ein gelber Würfel eine Banane darstellt.

Ein weiteres Gimmick ist der Jutebeutel den mir die beste aller Frauen für die Geheimnisplättchen genäht hat. Die Dinger lassen sich ansonsten nicht gut mischen, da haben wir uns von dem Beutel in Isle of Skye inspirieren lassen. Und in Jute geht der sogar noch als thematisch durch… :-)

Gelasert habe ich auch diesen Einsatz beim Chaostreff Dortmund, dem somit ein weiteres Mal mein Dank gebührt.

Isle of Skye, ordentlich

Isle of Skye, ordentlich

Ich habe hier ja schon meine selbstgebastelten Organizer-Einsätze für die Brettspiele Smash Up und Dominion gezeigt. Ich habe noch deutlich mehr in Planung. Ein paar habe ich schon fertig, hier ist der nächste. Für das Spiel Isle of Skye, das erst letztes Jahr zum Kennerspiel des Jahres gekürt wurde.

Wenn man das Spiel kauft findet man in der Schachtel einen Stoffbeutel und jede Menge Pappteile. Nicht mal der Versuch, irgendwie Ordnung zu schaffen. Und selbst wenn man die ganzen Landschaftsplättchen in den dafür vorgesehenen Beutel (OK, den beizulegen ist wirklich nett) gepackt hat sind im Kasten immer noch etwa 50 Teile die einfach herumfliegen, und da sind die Münzen noch nicht mal mitgezählt. Ich bin eigentlich nicht unbedingt ein Ordungsfanatiker, aber das jedes Mal auseinander zu sortieren betrachte ich als ernsthaften Hemmschuh das Spiel auf den Tisch zu holen.

Das Spiel an sich ist wirklich gut, also habe ich mich daran gemacht den Einsatz zu bauen den es verdient hat. Und den seht Ihr hier:

Im Organizer ist neben dem großen Fach für besagten Beutel ein spezieller Platz für die Start- und die Wertungsplättchen, das macht den Aufbau einfach. Die Sichtschirme finden ihren speziellen Platz, und unter dem herausnehmbaren Einsatz mit den Münzen — den man während des Spiels auf dem Tisch braucht — findet sich ein Stauraum für Startspielermarker, Tokens und Kleinkram.

Im Gegensatz zu den beiden anderen Spielen haben sich gleich mehrere Leute Gedanken zu Organizern für Isle of Skye gemacht. Dabei ist ElephantCraftsShop erstaunlicherweise fast zu der gleichen Lösung gekommen wie ich. Das Modell von Meeple Realty finde ich interessant, ein Blick auf das System von Rubrand wirkt aber ähnlich verwirrend wie der Blick in den ungeordneten Spielkarton. Da sind interessante Ideen drin, ohne das ausprobiert zu haben wirkt es aber etwas… overengineered.

Mein Dank geht nochmal an den Chaostreff Dortmund, dort steht der Lasercutter mit dem ich das Ding ausgeschnitten habe.

Gerade hat mich jemand auf einen Artikel bei Hackaday aufmerksam gemacht. Do You Miss The Sound Of Your Model M? Nein, den Sound vermisse ich nicht. Was bei modernen Computern falsch ist ist die Haptik. Den Krach brauche ich nicht, aber der kommt halt automatisch. Und vermissen muss ich den Sound eh nicht, ich habe hier mehrere IBM Model M und Verwandte liegen. Teils noch original, teils in verschiedenen Umbaustadien basierend auf meinem Dulcimer-Projekt. Die könnte ich einfach anschliessen und glücklich sein… :-)

Trotzdem habe ich gerade das Projekt Bucklespring installiert und ausprobiert. Der Sound ist wirklich überzeugend. Das ist nicht nur ein Tastenklick, da hat sich tatsächlich jemand die Mühe gemacht, alle Tasten individuell zu samplen. Der Pfeil nach oben klingt also tatsächlich anders als der Pfeil nach unten. Ich bin beeindruckt!

Leider ändert sich dadurch nicht die Haptik. Ich habe das Glück, noch eine wirklich anständige Tastatur in meinem älteren Thinkpad (Lenovo X201) zu haben. Aber ich schaudere schon der Zeit entgegen wenn das Ding mal den Geist aufgibt. Die Tastatur ist der Schwachpunkt an allen aktuelleren Notebooks die mir bislang unter die Finger gekommen sind. :-(

Oder wie es ein Kommentator bei Hackaday formuliert:

As in, it’s not about the sound, may as well play a tape of V8 engine noises in your Nissan Micra and claim you’ve faithfully recreated a muscle car.

Kupfer, ordentlich verpackt

Kupfer, ordentlich verpackt

Diesen Sommer hatte ich irgendwann die spontane Idee, mir selbst einen Sortier-Einsatz für mein Smash Up Spiel zu bauen. Das hat dermaßen gut funktioniert dass ich nicht aufhören konnte das auch für andere Spiele zu planen.

Mittlerweile habe ich das für einige Spiele durchexerziert. Teils sind dabei einfache Kartentrenner herausgekommen, in einem Fall habe ich aber tatsächlich eine ganze Kiste gebaut. Das Vorgehen war immer wie beschrieben, schneiden konnte ich meine Pläne beim Chaostreff Dortmund mit dem dortigen Lasercutter.

Heute stelle ich mal den einfachsten Einsatz vor den ich gebaut habe, für das Kartenspiel Dominion. Im Gegensatz zu vielen anderen Spielen bekommt man hier einen wirklich ordentlichen Einsatz mitgeliefert. Der erfüllt seine Aufgabe gut, da gibt es nicht viel zu meckern. Wenn man allerdings Erweiterungen zu dem Spiel hat — und ich habe fünf — kann man diese nicht im originalen Karton unterbringen.

Sechs Schachteln

Sechs Schachteln

Dadurch stapeln sich nicht nur eine Menge Kartons im Spieleschrank. Speziell bei Dominion lassen sich die Erweiterungen auch sehr gut untereinander mischen. Man spielt dann mit ein paar Karten aus diesem Karton, mit ein paar Karten aus jenem. Je nach Zusammenstellung bedeutet das in meinem Fall also, dass ich tatsächlich das Spielmaterial aus sechs Kartons zusammenklauben muss.

Bei eBay verdienen sich Leute eine goldene Nase indem sie einfache Koffer aus dem Baumarkt verkaufen. Zusammen mit einem Satz Sortierkarten kostet das dann gerne deutlich über 100 Euro. Sortierkarten brauchte ich auch, da habe ich aber im BGG-Forum wirklich gute Vorlagen gefunden. Eiko Wagenknecht hat sich die Mühe gemacht, man findet die Karten auch auf seiner Homepage. Danke! Die musste ich nur auf dickem Papier ausdrucken und ausschneiden.

Ich habe alle meine Karten — samt der Trenner — zusammengelegt und versucht die in einem Karton unterzubringen. Das ging so gut auf dass ich ein kleines Fach konstruieren konnte in dem ich genau das erweiterte Spielmaterial unterbringen konnte das in den verschiedenen Erweiterungen vorhanden ist (Spieler-Tableaus, Münzen, und so weiter). Lediglich auf die Platzhalterkarten musste ich verzichten, aber ehrlich gesagt habe ich nie ganz verstanden wozu ich die brauche. :-)

Hier sieht man den Plan der dann in FreeCAD entstanden ist. Die Wände vorne und hinten verhindern ein seitliches Verrutschen der Karten, das Kästchen hinten in der Mitte hat einen Boden damit keine Kleinteile unter die Spielkarten wandern. Ich konnte keinen kompletten Boden konstruieren, sonst wäre die ganze Geschichte zu hoch für den originalen Karton geworden. Ebenso hätte ich keine Seitenwände einbauen können, das hätte nicht gepasst.

So habe ich jetzt mein komplettes Dominion-Spiel — insgesamt bringt es der Kasten jetzt auf fünf Kilo! — in einem Karton. Mehr als 2.500 Karten sind griffbereit, alphabetisch sortiert. An der cleveren Farbcodierung der Trennkarten kann man trotzdem noch erkennen welche Karten aus welcher Erweiterung stammen. Statt knapp einen halben Meter nimmt das Spiel jetzt nur noch etwa neun Zentimeter Höhe ein. Den frei werdenden Platz konnte ich aber schnell mit neuen spannenden Spielen auffüllen… :-D

War mir nicht bekannt, aber man kann sudo so einstellen dass es einen nach Eingabe eines falschen Passwortes… originell abweist. :-)

Wer nur die Antworten sehen möchte kann das — zumindest auf Ubuntu — so machen:

Vor gut zehn Jahren hatte ich schon mal einen ähnlichen Tipp im Blog, damit bietet dann praktisch jedes Tool in der Shell diesen… Service. :-D

Ich hatte schon öfter was über ungewöhnliche Programmiersprachen geschrieben. Zuletzt über Folders, eine Sprache die ganz ohne Dateien auskommt.

Heute habe ich zwei neue Sprachen kennengelernt. Nein, nicht gelernt. Nur erfahren dass es das gibt. Da wäre zum einen Qalb, eine Sprache in der die Quelltexte (eigentlich auch der Name, aber bei قلب hätte ich noch weniger Ideen zur Aussprache als bei der lateinischen Umschreibung) in arabischer Schrift verfasst werden. Hier gibt es alles was man braucht bei Github. :-D

Die Sprache ist aber schon älter, neuerdings gibt es — ebenfalls bei Github — eine Sprache namens Potaka (wieder eine lateinische Umschreibung, für পতাকা fehlt mir nicht nur eine Idee zur Aussprache sondern sogar die Zeichen im Font). Um die zu beherrschen sollte man bengalische Schrift entziffern können. Wer es versuchen mag: das hier sieht nach einem Spielfeld aus — genau sagen kann ich das aber nicht… ;-)

English English preferred? This way, please.

Grilltemperatur in Zabbix

Grilltemperatur in Zabbix

Leider ist dieses Projekt noch nicht ganz fertig, aber ich berichte trotzdem vom ersten Probelauf. Die Elektronik wollte noch nicht ganz so wie ich wollte, aber man sieht wohin die Reise geht.

Vor knapp zwei Jahren habe ich mal einen Prototypen eines Grillthermometers gebastelt. Den habe ich auch hier vorgestellt, das war wirklich ein ganz krudes Projekt. Seitdem habe ich viel dazu gelernt, und ich will sowas jetzt nochmal in ‚ernsthaft‘ bauen.

Da ich mit dem Ding die Temperatur mehrerer Fleischstücke messen kann war der Name natürlich klar: Multimeater! :-D

Die Hardware

Die Hardware

Basis wird wie bei den letzten Projekten ein ESP8266-Modul, programmiert mit der Arduino-Software. WLAN ist somit vorhanden. Darauf kommt eine Firmware die — ebenfalls wie in mehreren meiner Projekte — auf dem Homie-Framework basiert. Das liefert die Messwerte per MQTT an meinen Broker, von da geht es weiter zu Zabbix. Gemessen wird mit zwei Hochtemperatur-Sensoren die jeweils an einem MAX6675 hängen, sowie vier normalen Einstichthermometern an einem MCP3208.

Sechs Temperaturen? Ja. Der Plan ist, mit zwei Sensoren die Innenraumtemperatur des Grills aufzunehmen. Unter bestimmten Umständen kann die so hoch sein dass die normalen Fleischthermometer das nicht mitmachen würden, also gibt es dafür zwei extra Fühler, jeweils am Ende des Grillraumes (der ist beim Smoker eher länglich, da gibt es tatsächlich ein Temperaturgefälle). Und mit vier Fleischthermometern kann ich die Kerntemperatur von eben bis zu vier Stücken überwachen.

Zabbix ist eigentlich ein Monitoring-System, damit überwacht man eigentlich Serversysteme. Das funktioniert aber nicht nur in großen Rechenzentren, ich erfasse damit zu Hause auch einige… eher ungewöhnliche Daten. ;-)

In diesem Fall habe ich mir damit nur die Temperaturverlaufskurven angesehen, aber wenn ich wirklich mal über Nacht ein Pulled Pork grillen möchte kann Zabbix mich auch aus dem Bett klingeln wenn die Temperaturen nicht so aussehen wie sie sein sollten.

Wie gesagt: das Heute war nur ein Probelauf. Und wie das so ist sind dabei einige Sachen schief gegangen. Ich habe ein Problem mit den Messwerten von den Innenraum-Fühlern gehabt, die waren leider unbrauchbar. Da ich aber eh nur drei Stücke Fleisch hatte konnte ich den vierten Fühler für die Pit-Temperatur benutzen. Der Fühler im Schinkenbraten war erst doof gesteckt, daher sieht die blaue Kurve sehr merkwürdig aus. Und als Krönung hat es zwischenzeitlich heftig geregnet, da der Grill zur Zeit nicht überdacht ist hat es das auch nicht einfacher gemacht.

Alles in allem war das aber schon sehr vielversprechend. Ich bleibe dran, und sobald das Ding wirklich funktioniert stelle ich es natürlich hier vor, mit Schaltplan und Firmware.

Oh, und da die Fragen kommen werden: die technischen Probleme haben dem Grill-Ergebnis keinen Abbruch getan, es hat hervorragend geschmeckt. :-D

Geek Edition ab Werk

Geek Edition ab Werk

Noch ein Post zum Thema Spiele. Dieses Mal geht es um das Kartenspiel Smash Up, genau wie das erwähnte Munchkin aus dem Pegasus-Verlag. Smash Up ist ein Spiel mit einem unbestreitbar hohen Geek-Faktor, und passend dazu verkauft der Verlag eine Kiste namens ‚Geek Edition‘. Eine große Box mit wenig Inhalt, gedacht um das Basisspiel und die Erweiterungen ordentlich aufzubewahren.

Gute Idee, aber die Umsetzung krankt doch sehr an dem merkwürdigen Einsatz der in dem Karton enthalten ist. Der ist offenbar für ein anderes Spiel gemacht worden, für den Einsatz in Verbindung mit Smash Up ist er gelinde gesagt untauglich. Das spiegelt sich entsprechend auch in den vernichtenden Amazon-Rezensionen wider. Die Probleme sind folgende:

  • Karten werden in den Fächern nicht ordentlich gehalten, fallen um.
  • Spielregeln müssen irgendwie in ein Fach geknuffelt werden.
  • Die Basis-Unterlagen sind super, passen aber überhaupt nicht in den Karton.
  • Fächer für Kleinkram (Siegpunkte, Stärkemarker) sind so tief dass ich mit meinen großen Händen kaum an die Kleinteile komme.

Aber die Box an sich ist sinnvoll, und für den Preis habe ich mich mal selbst an einen Hack gemacht…

Meinen Weg dahin habe ich ja schon beschrieben, im Wesentlichen braucht man FreeCAD, ein Plugin dazu und Inkscape. Oh, und einen Lasercutter natürlich, aber den gibt es in vielen Makerspaces, so auch im Chaostreff Dortmund.

Die Planung hat mich — mit Einarbeitung in FreeCAD — etwa einen Tag gekostet. Da ich jetzt weiß wie es geht würde ich für so ein Projekt vermutlich um die vier Stunden brauchen. Der Lasercutter hat etwa eine halbe Stunde gebraucht, danach hatte ich ein großes Holz-Puzzle. Und zu meinem Erstaunen hat das so gut geklappt dass ich beim Zusammenbauen nicht mal Kleber benutzt habe, es hält einfach so durch die Passformen!

Meine Box hat jetzt folgende Features:

  • Platz um meine Smash-Up-Karten einzusortieren, Trenner um zum Beispiel die Munchkin-Variante vom Rest fern zu halten.
  • Platz für Spielanleitungen und Basis-Unterlagen.
  • Kleiner Einsatz für Siegpunkt- und Stärkemarker, kann während des Spiels auf den Tisch gestellt werden.
  • Unter dem kleinen Einsatz ist ein „Geheimfach“ für Sachen die man im Prinzip nicht braucht, bei mir liegen da die Fehldrucke von den Ork-Karten.

Edit: Übrigens ist die Idee, Spiele nachträglich mit solchen Organizern auszustatten nicht neu, die gibt es auch von kommerziellen Anbietern. Unter anderem auch für Smash Up, allerdings nur für die amerikanische Schachtel — nicht für die deutsche Geek Edition.

Alles in allem bin ich extrem zufrieden mit dem Ergebnis. Es hat Spaß gemacht zu planen und zu konstruieren, und ich hätte echt nicht damit gerechnet dass das Ergebnis auf Anhieb so gut funktioniert. Ideen für andere Spiele sind schon in Planung… :-)

Mein Design

Mein Design

Mit einem Lasercutter kann man jede Menge nützliche Sachen herstellen. Vor zwei Jahren habe ich mal ein schickes Raspberry-Gehäuse gefunden, das konnte ich einfach runterladen und mir beim Makerspace meines Vertrauens auslasern lassen. Das Ergebnis ist schick geworden, genau so ist der Raspi jetzt als Medienabspielgerät im Einsatz.

Aber wie komme ich an ein Gehäuse nach Mass, für eigene Projekte?

Das einfachste wird wohl ein kostenloser Online-Generator sein. Davon gibt es einige, mit unterschiedlich vielen aber doch ziemlich überschaubaren Features. Man gibt die gewünschten Masse ein, und bekommt ein PDF oder ein SVG das man direkt an den Cutter verfüttern kann.

Genauso einfach kann man Boxen wohl direkt in Inkscape erstellen. Dazu muss man ein Plugin installieren, das habe ich aber nicht ausprobiert.

Die nächste Stufe dürfte der Boxdesigner sein. Erstmal ist das auch so ein Online-Generator, aber dafür mit einer geradezu überwältigenden Zahl von Funktionen. Nett gemacht, und wer es braucht wird dafür sicher gern die 13 Euro im Jahr bezahlen. Hätte ich auch fast gemacht. Aber nur fast. Was ich gerade bauen will ist etwas zu speziell für den Designer. Mein Plan war, das grundlegende Design da raus zu ziehen, und den Rest in Inkscape

Da das aber auch eine Menge Planung erfordert, und noch dazu sehr fehlerträchtig ist, habe ich mich weiter umgesehen. Und so bin ich zur — für mich — idealen Lösung gekommen:

Schneidvorlage (ein Teil davon)

Schneidvorlage (ein Teil davon)

Mit FreeCAD hatte ich mich vor einiger Zeit schonmal beschäftigt, als ich Bedarf an 3D-Planung hatte. Was ich da nicht wusste ist, dass auch FreeCAD sich durch Plugins erweitern lässt. Und richtig genug: da gibt es eines namens LCInterlocking — auf den zweiten Blick verrät der Name dass man damit Interlocking Designs für den Laser Cutter machen kann. Leider ist die Doku echt dürftig, aber alles was ich wissen musste konnte ich dem Video entnehmen das in der Readme verlinkt ist.

Auch bei dieser Lösung kommt man um Nachbearbeitung in Inkscape nicht herum, aber die komplizierten Sachen sind da schon erledigt.

Man erhält so ein großes SVG mit den Schneidvorlagen. Die Kür besteht jetzt noch darin, die Einzelteile platzsparend aufzuteilen, so dass möglichst wenig Verschnitt anfällt. Das geht manuell, ich habe es einfach mal von SVGnest machen lassen. Dazu habe ich ein Rechteck in das SVG eingefügt das die maximale Arbeitsfläche des Lasers angibt. Das SVG lade ich dann in das Tool, und nach ein paar Klicks sortiert ein Algorithmus alles für minimalen Verschnitt.

Disclaimer: Ob die Vorlage jetzt tatsächlich zum Schneiden taugt muss sich noch rausstellen. Sobald ich das weiß, und sobald ich ein vorzeigbares Ergebnis habe, werde ich auch verraten was ich da gebastelt habe… :-)

Die Augen des Stromzählers

Die Augen des Stromzählers

Gestern habe ich mich mal intensiv mit meinem Stromzähler auseinander gesetzt. Das ist ein ziemlich neumodisches Gerät, ein Iskra MT175. Dieses Modell verfügt über eine Infrarotschnittstelle (nach DIN EN 62056-21) mit der die Zählerstände ausgelesen werden, und das muss natürlich ausprobiert werden.

Zu dem Zweck habe ich mir eine Hardware gebastelt die die Daten auslesen kann. Dazu später mehr, in einem anderen Beitrag. Mein Zähler überträgt etwa alle zwei Sekunden einen Datensatz. Automatisch, ohne dass ich ihn darum bitten müsste. Wenn ich den auslese erhalte ich einen formschönen Haufen Hex-Code, ähnlich diesem:

Wie man unschwer erkennt habe ich private Daten anonymisiert. Lacht nicht! :-D

Nachdem ich da längere Zeit mit verbracht habe weiß ich mittlerweile ziemlich genau was da steht. Und damit andere einen besseren Einstieg finden schreibe ich das mal hier auf.

Die Sprache nennt sich Smart Message Language (SML). Es gibt auch Zähler die die Daten in anderen Formaten, oder direkt im ASCII-Format ausgeben. SML ist aber ein Standard, und wird von vielen Herstellern genutzt. Wie das funktioniert kann man zum Beispiel in der Technischen Richtlinie BSI TR-03109-1 beim Bundesamt für Sicherheit in der Informationstechnik nachlesen. Wenn man das tut kann man den Datensatz da oben tatsächlich lesbar machen:

Die ersten vier Bytes sind einfach eine Markierung für den Anfang der Übertragung, in der zweiten Zeile steht dass wir Version 1 des Protokolls lesen.

Als nächstes müssen wir ein wichtiges Konzept verstehen. Das erste Byte der folgenden Nachricht lautet ’76‘. Man muss das als Nibbles sehen, und bei Hex-Zahlen bedeutet das Ziffer für Ziffer. Das erste Nibble ‚7‘ können wir auf Seite 42 (natürlich ;-) ) des oben verlinkten Dokumentes nachschlagen. Da steht eine Tabelle mit einer Zeile ‚X111LLLL‘. Jetzt matcht das binäre ‚X111‘ auf das erste Nibble, also haben wir es hier mit einer Liste zu tun. Das zweite Nibble gibt die Länge an, wir erwarten also eine Liste mit 6 Elementen.

Das erste Byte der folgenden Zeilen ist jeweils nach dem gleichen Schema aufgebaut. In der Regel steht das erste Nibble für den Datentypen, das zweite für die Länge — merkwürdigerweise bei einfachen Datentypen die Länge inclusive dieses Längen-Bytes. Datentyp 0 in Zeile 4 ist laut Seite 42 ein Octet String. Die 5 sagt dass dieser Teil einschliesslich der Längenangabe 5 Bytes umfasst, wir erwarten nach der Länge also noch vier Bytes. Auf Seite 17 des Dokumentes steht dass hier eine Transaktions-ID kommen muss.

Nachdem das Prinzip klar sein sollte werde ich nicht mehr alles haarklein entschlüsseln. Das heisst: ich habe schon. Aber an dieser Stelle überlasse ich das mal dem geneigten Leser. :-)

Man sieht durch die Einrückung ziemlich deutlich dass man sich den Datensatz gut als Liste von Listen vorstellen kann. Außen wird eine Liste mit sechs Elementen angekündigt (76), darin stehen ein Octet String (beginnt mit 0, Zeile 4), zwei Unsigned Integer (6, Zeilen 5 und 6), eine weitere Liste mit zwei Elementen (72, Zeile 7), ein weiterer Unsigned Integer (6, Zeile 16) mit der Prüfsumme und eine Markierung für das Ende der Nachricht (00, Zeile 17). Die Liste mit den zwei Elementen enthält wiederum einen Unsigned Integer (6, Zeile 8 ) und eine Liste mit sechs Elementen (76, Zeile 9). Die meisten dieser sechs Elemente sind Octet Strings die samt des Längen-Bytes eine Länge von 1 haben (01), also leere Strings. Ein String (Zeile 12) enthält eine File-ID, einer (Zeile 13) die Server-ID. Letztere kann man auch direkt auf dem Gerät lesen, die ist aufgedruckt. Beruhigend. :-)

Jetzt wird es ernst: eine weitere Liste mit sechs Elementen (76), die ersten Zeilen entsprechen dem Block oben:

Enthalten ist eine Liste mit zwei Elementen (72, Zeile 22). Der erste Octet String (Zeile 23) gibt den Typ der Nachricht an, es ist ein getListResponse. Der wiederum besteht auf sieben Elementen (77, Zeile 24). Interessant ist hier vielleicht das vierte Element (72, Zeile 28. An dieser Stelle soll die aktuelle Zeit stehen, und die kann auf verschiedene Weise angegeben werden. Erklärt ist das auf Seite 22 des BSI-Dokumentes, dementsprechend haben wir es hier durch die 01 in Zeile 29 mit einem secIndex zu tun. In Zeile 30 folgt dann der Wert. Die Zahl 0x018A4D15 entspricht in etwa der Zeit die das Gerät hier eingebaut ist, das wird also eine Art Betriebsstundenzähler sein.

Die Liste die in Zeile 31 startet ist das fünfte Element der Liste aus Zeile 24. Und hier kommt der wirklich spannende Teil: die Messdaten. Naja, und ein paar Meta-Daten. Erst das Kürzel des Herstellers Iskra (ASCII-Codes in Zeile 38), dann nochmal die bereits bekannte Server ID. Die nächsten drei Elemente enthalten die verbrauchte Energie (die Kilowattstunden), sowohl als Summe als auch aufgesplittet in zwei Tarife — wenn man denn zwei Tarife hat.

Hier kommen wir übrigens zu einem Teil den ich noch nicht verstanden habe: in Zeile 50 wird ein Status angegeben. Wenn mir jemand sagen kann was der bedeutet: immer her damit! 0x0182 ist dezimal 386, darauf kann ich mir keinen Reim machen.

Die Energiewerte muss man übrigens durch 10.000 teilen um auf die kWh zu kommen die am Gerät angezeigt werden.

In Zeile 78 steht die aktuelle Leistung, also wie viel Watt tatsächlich in diesem Moment verbraucht werden. In Zeile 86 folgt ein ‚public key‘. Der steht auch auf dem Gerät, ich nehme an der ist relevant wenn der Zähler wirklich ’nach Hause telefoniert‘. Die SML-Kommunikation funktioniert nämlich nicht nur über die Infrarot-Schnittstelle, sondern bei Bedarf auch über die Stromleitung. So kann der Anbieter Verbrauchswerte ablesen ohne dass dafür jemand zu Besuch kommen muss.

Die beiden Werte in Zeile 88 und 89 sind optional und vervollständigen so die Liste die in Zeile 24 begonnen wurde.

Oh, noch ein interessanter Punkt zu Zeile 86: das Nibble ‚8‘ ist eigenlich eine 0, also wieder ein Octet String. Da aber das Most Significant Bit gesetzt ist wird daraus eine 8, und das bedeutet dass die Länge der folgenden Daten nicht nur durch das zweite Nibble — die 3 — angegeben wird, sondern zusätzlich durch das folgende Byte. Nützlich, denn mit nur einem Nibble könnte man maximal 15 Bytes ankündigen (nachdem eines für die Länge draufgegangen ist). So kommen wir auf 0x32 == 50 Bytes. Ausreichend also für 48 Bytes Public Key und zwei Bytes Längenangabe.

Es folgen noch eine Prüfsumme und das förmliche Ende der zweiten Nachricht:

Die dritte Nachricht ist einfach nur da um das Ende der Übertragung anzukündigen.

Zu guter Letzt folgt in Zeile 102 nochmal die vom Anfang bekannte Escape-Sequenz, dann 1A um wirklich die Nachricht abzuschließen und nochmal drei Bytes für eine Prüfsumme.

Jetzt noch was in eigener Sache: viele Blogs schließen ihre Artikel grundsätzlich mit einer Frage an die Leser, um Kommentare zu fischen. Ich finde das penetrant, und mache das in der Regel nicht. Aber nach diesem furztrockenen (!) Artikel erlaube ich mir das ausnahmsweise mal: bitte ein Handzeichen von allen die bis hier durchgehalten haben! Muss kein Lob sein, ein Hallo Welt genügt. :-D