Archiv des Autor: Carsten

Thermal Runaway beim 3D-Drucker

…oder warum es so wichtig ist, dass die THERMAL RUNAWAY PROTECTION auch wirklich aktiv ist.

Die Meldung, dass der eigene 3D Drucker in einen THERMAL RUNAWAY hineingelaufen ist, ist die Meldung, die man als Anwender am wenigsten sehen möchte. Immerhin sind dadurch oft mehrere Stunden Druckzeit sinnlos gewesen und das Filament hat sich von einem Moment zum anderen in Edelschrott verwendelt. In diesem Artikel wird kurz beschrieben, wie es zu einem Thermal Runaway kommen kann, wo eigentlich die Gefahren liegen und wie man die Ursache finden kann.

Was ist ein Thermal Runaway?

Ein Thermal Runaway ist ersteinmal ein Fehlerzustand des Druckers. Der würde gerne den Extruder oder das Druckbett auf eine bestimmte Temperatur bringen (aufheizen). Doch aus irgendeinem Grund wird die Zielemperatur nicht erreicht oder kann nicht gehalten werden. Nehmen wir mal an, der Drucker weiss, dass er das Bett um 0.25K/s aufheizen kann, dann erwartet er, dass das Initale Aufheizen von 20°C auf 60°C höchstens 160 Sekunden dauert. Ist aber nach 160+x Sekunden die gemessene Temperatur noch nicht erreicht, hat der Drucker ein Problem. Das Verhalten lässt sich bei Marlin beispielsweise über die Config-Optionen THERMAL_PROTECTION_*, WATCH_TEMP_ und WATCH_BED_* konfigurieren. einstellen.

Was können Ursachen sein und was ist daran gefährlich?

Weiter lesen

Mehrere Datenbanken unter Symfony

In einem Projekt bestand die Notwendigkeit, die applikationsspezifische Datenbank (MariaDB) und eine externen Datenbank (MS-SQL) gleichzeitig zu verwenden. An der Datenbankstruktur war nichts zu drehen, da die MS-SQL Datenbank in anderen Projekten ebenfalls im Produktivbetrieb verwendet wurde. Somit bestand das Problem, zwei Datenbankverbindungen parallel offen zu halten und je nach Entity-Klasse die richtige Datenbank zu verwenden.

Wie man sich unter Linux mit einer MS-SQL Datenbank verbindet, habe ich bereits im Artikel MS-SQL mit Symfony unter Linux im Detail beschrieben. In diesem Artikel geht es vornehmlich um den gleichzeitigen Betrieb zweier Datenbank und die automatische Auswahl der korrekten Datenbankverbindung.

Zwei Datenbanken parallel betreiben

Hierfür habe ich zur einfacheren Übersicht in den Verzeichnissen src/Entity und src/Repository ein Unterverzeichnis MsSql angelegt, in welche die Klassen der externen Datenbank gelegt werden. Dieser Schritt erhöht lediglich die Übersicht für menschliche Betrachter; Symfony/Doctrine ist das egal.

Somit ergeben sich die Verzeichnisse

Verzeichnis Verwendung
src/Entity Entity-Klassen der MariaDB-Datenbank
src/Entity/MsSql Entity-Klassen der MS-SQL-Datenbank
src/Repository Repository-Klassen der MariaDB-Datenbank
src/Repository/MsSql Repository-Klassen der MS-SQL-Datenbank

Zudem habe ich in der Datei doctrine.yaml zwei Verbindungen und zwei Entity-Manager definiert:

doctrine:
    dbal:
        default_connection:       default
        connections:
            default:
                driver: pdo_mysql
                dbname:           "%env(resolve:DATABASE_DB)%"
                user:             "%env(resolve:DATABASE_USER)%"
                password:         "%env(resolve:DATABASE_PASS)%"
                host:             "%env(resolve:DATABASE_HOST)%"
                port: 3306
                schema_filter: ~^(?!tt[a-z]{4}[0-9]{6})~  # Ignore Mssql tables
            mssql:
                # IMPORTANT: this configuration requires FreeTDS installed!
Weiter lesen

MS-SQL mit Symfony unter Linux nutzen

In manchen Fällen möchte man von seiner Symfony-Applikation, die auf einem Linux-Server läuft, auf einen Microsoft SQL-Server zugreifen. In meinem konkreten Anwendungsfall lief die eigentliche Symfony-Applikation auf einem aktuellen Debian mit Doctrine auf MariaDB und sollte aus einem anderen System zusätzliche Informationen holen. Dieses System besaß weder eine nutzbare API noch einfach auswertbare Webseiten/JSON-Antworten sodass nur der unschöne direkte Weg über die Datenbank ging.

Als Entwickler ist man meist naiv…

…denn man geht davon aus, dass ein so weit verbreiteter Server auch eine vernünftige Unterstützung hat. Grade jetzt, wo Microsoft in Windows 10/11 ein Linux-Subsystem einsetzt und sich Open Source ganz groß auf die Fahne schreibt. Erste Recherchen zeigten, dass Microsoft zu Zeiten von PHP 5.5 mal einen Datenbanktreiber erstellt hatte. Doctrine kann diesen auch mit dem Datenbanktypen mssql (alias pdo_sqlsrv) verwenden.

Sucht man nun den pdo_sqlsrv, landet man unter Microsoft SQL Server Functions (PDO_SQLSRV) auf php.net auf der Installstionsseite, die einen direkt ersteinmal aufklärt

The PDO_SQLSRV extension is only compatible with PHP running on Windows.

Leider wurder der Treiber nach PHP5.5 (Juni 2013) nur noch unter Windows weiterentwickelt. Darunter wird jedoch auf eine Alternative verwiesen. Den Microsoft ODBC-Treiber für Linux….zuletzt aktualisiert 2012. Man kann sich schon denken, wohin das führt, ein Blick in die README bestätigt dies aber:

This driver is only supported on 64-bit Red Hat Enterprise Linux 5 or 64-bit Red Hat Enterprise Linux 6.

Weiter lesen

Piep-Show im Vogelhaus

Die heimischen Vögel sind im Frühjahr immer wieder imposant zu beobachten. Schon früh morgens um 5 beginnen sie mit ihrem Gesang (andere nennen es unerträgliches Geplärr) und flattern den ganzen Tag von Busch zu Baum zu Hecke zu Zaun und zurück. Da es bei uns in der Umgebung relativ wenig Nistmöglichkeiten gibt, kam die Idee auf, ein Vogelhaus im Garten anzubringen. Natürlich ein richtiges Maker-Vogelhaus mit Kamera für die Piep-Show. Herzstück des Vogelhauses ist ein ESP32-CAM Modul, das WLAN, eine Kamera im Megapixel-Bereich und einen programmierbaren Mikrocontroller mitbringt.

Mehr»

Englische Zeitenübersicht

Wer glaubt, englische Zeitformen sind ein Buch mit sieben Siegeln, darf sich hier eines Besseren belehren lassen. Denn vieles ist einfacher und logischer als es auf den ersten Blick scheint.
Daher haben wir uns einmal die Zeit genommen und eine Übersicht über alle englischen Zeiten erstellt.

Das Dokument ist als CC BY-NC-SA 3.0 zur persönlichen Verwendung kostenlos und darf beliebig weitergegeben werden.


Englische Zeitenübersicht

Wie funktioniert ein Computer?

Wenn man mal wissen will, wie eigentlich ein Computer funktioniert, kann man sich ausgiebig mit langatmiger Fachliteratur beschäftigen, die in epischer Breite alle Aspekte eines Prozessors beschreibt. Man muss aber nicht.

Man kann auch den spielerischen Ansatz nehmen. Das Browsergame NandGame startet bei einem einzelnen NAND-Gatter. Hieraus baut man sich nach und nach alle notwendigen Komponenten für einen modernen Mikroprozessor zusammen und kommt einem echten Prozessor immer näher. Dabei lernt man einiges über Prozessoren und ihre Funktionsweise. Probiers doch einfach mal aus auf http://nandgame.com/.

Javascript, Typescript, Webpack und neues im Web

Während man sich in den letzten Jahren auf Webseiten meist mit JavaScript in einer sehr einfachen Art begnügte, sind in der letzten Zeit unheimlich potente (und meist damit auch komplexe) Erweiterungen erschienen. Beginnend mit dem Angular-Framework, das manche mögen und andere hassen, hat sich die Webseiten-Programmierung immer weiter der klassischen Softwareentwicklung angenähert. Der erste Schritt waren die Module, die beispielsweise via AMD oder RequireJS geladen wurden und eine Kapselung hinsichtlich der Daten und des Programmcodes ermöglichten. Dann kam Webpack, das mit dem Tool „babel“ die Möglichkeit bot, neueste Programmiertechniken bei der Entwicklung zu verwenden und es ähnlich wie bei einem Compiler zu einem kleinsten gemeinsamen Nenner zu „transpilen“. Zuletzt hat die Einführung von Typescript die Möglichkeit einer Statischen Codeanalyse eröffnet, damit Fehler schon zur Entwicklungszeit und nicht erst anhand von Meldungen in der Error-Console aufgedeckt werden können.

Ich werde in der nächsten Zeit zu all diesen Themen ein wenig schreiben und dies mit ganz vielen Codebeispielen ergänzen. Dabei gehe ich wenig bis gar nicht auf Dinge wie HTML5, klassisches JavaScript, Programmier-Basics und Webserver-Konfiguration ein, denn zu diesen Themen gibt es mehr als genug Quellen im Netz. Mir geht es eher darum, wie jemand, der bereits die klassische Webentwicklung kennt, möglichst schnell in diese neue Welt eintauchen kann und sie sich zu Nutze machen kann. Weiter lesen

Prototyp fertig

img_20161119_172203 Nachdem alle Bauteile hier eingetrudelt sind, hat Tom nun den ersten Prototyp fertig aufgebaut. Die Software ist ebenfalls fertig und verfügt über ein nahezu unerschöpfliches Repertoire von Weihnachtsliedern. Am 3. Dezember findet vermutlich das kollektive Zusammenlöten der restlichen Bäume statt.

Apropos restliche Bäume: Die zweite Ladung von Platinen ist auch inzwischen hier eingetroffen. Qualitativ sind die naja, aber für die Bäume reichts allemal. Trotzdem werde ich den ersten Lieferanten in Zukunft nehmen, denn da waren Welten dazwischen.
img_9834r

Platinen eingetroffen

Heute ist die erste Ladung von 10 Platinen eingetroffen. Auf Grund der regen Nachfrage auf der Arbeit befindet sich aber derzeit eine weitere Ladung in Produktion und wird Ende November eintreffen. Nach erster Begutachtung sehen die Platinen trotz der geringen Produktionskosten sehr ordentlich aus und können durchaus mit WE Direkt mithalten. Der Bestückungsdruck ist offensichtlich per Siebdruck auf die Platine gekommen (man achte auf den extrem hohen Auftrag beim QR-Code), der Code wird aber problemlos erkannt.
img_20161014_162436