PHP: Binärdaten als Float interpretieren

Aktuell arbeite ich daran Binärdaten einer Steuerung für ein Logging-System zu übersetzen. Die Daten werden – mit verschiedenen Formaten – per TCP angeliefert und kommen in etwas ungewöhnlichen Formaten (MSB/LSB, Füllbits, etc) herein. Die erste Aufgabe meines Scriptes besteht entsprechend darin die Daten in Binärform aufzubereiten. Das meiste sind ASCII-Werte, welche per chr() schnell übersetzt sind. Auch das Zusammensetzen von vorzeichenlosen Integern ist mit etwas Shiften kein Problem.

Gegen die Wand lief ich dann allerdings bei Kommawerten. Zwar nutzt sowohl die Steuerung als auch PHP Gleitkommazahlen nach IEEE754, allerdings lässt sich PHP mit dem üblichen Type-juggling/casting nicht dazu überreden die Binärdaten als Float zu interpretieren. Die Lösung fand sich (wie üblich) auf Stackoverflow: pack/unpack.

$input = 0xbf9e0419;
var_dump(unpack('f', pack('i', $input)));

Und schon weiß auch PHP, dass 0xbf9e0419 eine -1.2345 ist. Commence logging.

BitBastelei #186 – Servernetzteil-Innenleben

BitBastelei #186 - Servernetzteil-Innenleben

(286.9 MB) 00:23:56

2016-02-28 11:00 🛈

Vor Kurzem ist hier mit etwas Krach ein Servernetzteil ausgefallen. Bevor dieses seinen Weg in den Elektroschrott antritt schauen wir noch, wie so ein „professionelles“ Netzteil aufgebaut und wo genau der dauerhafte Schaden aufgetreten ist.

Die Netzteile kosteten bei der Einführung 2008 ca. 200€

BitBastelei #185 – Windows Server 2012 R2: Grundinstallation/Domäne

BitBastelei #185 - Windows Server 2012 R2: Grundinstallation/Domäne

(19.6 MB) 00:16:20

2016-02-21 11:00 🛈

Wenn ein Netzwerk auf Windows-Basis eingerichtet werden soll ist als zentrale Stelle häufig der Windows Server anzutreffen. Aktuell ist die Version 2012 R2 die neueste, welche offiziell Verfügbar ist. Hier gibt es eine Kombination aus Installation des Servers, Konfiguration als Domänencontroller und diversen Abschweifungen. Das fertige Konstrukt kann als Startpunkt für weitere Einrichtungen dienen.

Download: https://www.microsoft.com/de-de/evalcenter/evaluate-windows-server-2012-r2

BitBastelei #184 – Der Leitungsschutzschalter – Wie funktioniert eine Sicherung?

BitBastelei #184 - Der Leitungsschutzschalter - Wie funktioniert eine Sicherung?

(166.7 MB) 00:18:21

2016-02-14 11:00 🛈

Jeder kennt sie: Sicherungsautomaten. Doch warum brauchen wir überhaupt diese „Leitunsschutzschalter“ und wie funktionieren sie?

BitBastelei #183 – Wavemaster 240 Reparatur

BitBastelei #183 - Wavemaster 240 Reparatur

(29.5 MB) 00:04:44

2016-02-07 11:00 🛈

Den hatten wir schon öftern: Das Aktivboxensystem „Wavemaster 240“ erledigt nach wie vor in meiner Bastelecke seinen Dienst. Naja, erledigte, denn ein Kurzschluss hat für Ruhe gesorgt. Leider war die Reparatur deutlich einfacher als erwartet.

BitBastelei #182 – Variac / Autotransformator

BitBastelei #182 - Variac / Autotransformator

(140.2 MB) 00:27:25

2016-01-31 11:00 🛈

Einstellbare Autotransformatoren, auch bekannt als „Variac“, erlauben es die Netzspannung anzupassen ohne hierbei den Netzsinus sonderlich zu verzerren. Man könnte sie auch als „Labornetzteile für AC-Anwendungen“ bezeichnen.

00:13 Unboxing / Was ist ein Variac?
02:33 Anschluss / Ringkerbschuhe, Aderendhülsen, …
14:56 Funktionstest
16:42 Autotransformator ? Trenntransformator
19:37 Aufbau eines Variac
21:44 Anwendungsbeispiele
26:10 Variac-Sinus

Ergänzungen:

  • Bei 0.75mm² sind laut Tabelle 10A-Sicherungen vorgesehen
  • Die Schutzleitermessung ergab bei 12V/300mA ~55m? – erlaubt müssten 300m? sein

BitBastelei #181 – FRITZ!Box 7390 Reset / Gebastel

BitBastelei #181 - FRITZ!Box 7390 Reset / Gebastel

(116.7 MB) 00:19:35

2016-01-24 11:00 🛈

Modem der Backupleitung kaputt? Kein Problem: In der Restekiste lag ein alter 1&1 Homeserver, aka die FRITZ!Box 7390. Ich würde sagen: Werkseinstellungen und schnell drangeklemmt. Wenn es denn so einfach wäre…

Der Rücksetzcode für Telefon lautet #991*15901590*

Script: Automatisches LetsEncrypt-Renewal

In BitBastelei #178 hatte ich schon das Anfordern von Zertifikaten über LetsEncrypt gezeigt. Leider konnte ich bisher keine vernünftige Möglichkeit finden Zertifikaten automatisch erneuern zu können. Glücklicherweise hilft hier ein Bash-Script von Stefan Beckers weiter: Es sucht die installierten Zertifikate, prüft welche bald ablaufen und erneuert diese. Guter Startpunkt, aber nicht ganz für meine Anforderungen geeignet: Im Script wird letsencrypt-auto verwendet, welches in meinem System nicht installiert ist. Auch die Syntax des Clients scheint sich geändert zu haben. Weiterhin ist das Script stark auf Debian fixiert.

Etwas Bash-Foo selbst ist alles auf meine Bedürfnisse angepasst: Pfade & Binaries lassen sich einfacher ändern, die Syntax ist aktuell wieder lauffähig und es lässt sich pro Domain angeben welche Dienste bei einem Renew neu gestartet werden müssen. Nicht groß getestet, bisher scheinen aber noch keine Katzen geplatzt zu sein. Vielleicht hifts ja…

BitBastelei #180d – Rad1o SDR – Antennenbuchse nachrüsten

BitBastelei #180d - Rad1o SDR - Antennenbuchse nachrüsten

(63.4 MB) 00:03:31

2016-01-17 14:00 🛈

Wichtig für ein Software Defined Radio (SDR) wie dem Rad1o: Eine gute Antenne. Zwar ist das Board bereits mit einer Antenne für ~2.5GHz ausgestattet, eine „richtige“ Antenne kann – besonders bei abweichenden Frequenzen – jedoch ein deutlich besseres Signal erlauben. Zeit eine passende Antennenbuchse nachzurüsten.

BitBastelei #180c – Rad1o SDR – WS2812B-LEDs

BitBastelei #180c - Rad1o SDR - WS2812B-LEDs

(126.3 MB) 00:06:22

2016-01-17 13:00 🛈

Funktionierendes SDR ist gut, Blinkenlights sind besser. LEDs des Typs WS2812b lassen sich über einen Datenbus einzel ansteuern. Auf dem Rad1o sind bereits einige Stellen vorgesehen, an denen solche LEDs für gemütliches Geblinke sorgen können.

Nerd Inside