mynethome.de

10. Juni 2021

Upgrade to NativeScript 8

ℹ New version of NativeScript CLI is available (8.0.2), run 'npm i -g nativescript' to update.

This is the message you see when you run a ns command at this time when you local installation is outdated.

So, lets see what it means to upgrade an app from running with NativeScript 7.2.1 to the recent 8.0.2.

Of course, there has been an interesting announcement blogpost that contains a short how-to-upgrade section and emphasises many great improvements that motivate for an upgrade. One of them is the great performance boot with webpack 5, another the ios-debug library.

Basically, doing an upgrade boils down to

npm i -g nativescript

ns migrate

Webpack 5 polyfill config missing

After ns migrate, the first attempt to run the app on iOS fails with a couple of error messages:


WARNING in ./node_modules/crypto-js/core.js 43:22-39
Module not found: Error: Can't resolve 'crypto' in '/Users/markus/src/mobile-app/node_modules/crypto-js'

BREAKING CHANGE: webpack < 5 used to include polyfills for node.js core modules by default.
This is no longer the case. Verify if you need this module and configure a polyfill for it.

If you want to include a polyfill, you need to:
    - add a fallback 'resolve.fallback: { "crypto": require.resolve("crypto-browserify") }'
    - install 'crypto-browserify'
If you don't want to include a polyfill, you can use an empty module like this:
    resolve.fallback: { "crypto": false }
 @ ./node_modules/crypto-js/index.js 4:37-54
 @ ./src/app/services/PublicKeyService.ts 3:0-38 57:21-36 57:51-67
 @ ./src/app/app.module.ts 51:0-67 83:8-24 200:20-36
 @ ./src/main.ts 9:0-45 57:46-55

1 warning has detailed information that is not shown.
Use 'stats.errorDetails: true' resp. '--stats-error-details' to show it.

ERROR in ./node_modules/nativescript-zip/zip-worker-ios.js (./node_modules/@nativescript/webpack/dist/loaders/nativescript-worker-loader/index.js!./node_modules/nativescript-zip/zip-worker-ios.js) 62:13-35
Module not found: Error: Can't resolve 'file-system' in '/Users/markus/src/mobile-app/node_modules/nativescript-zip'
 @ ./node_modules/nativescript-zip/zip.ios.js 18:35-89 63:35-89
 @ ./src/app/config/FileTraceWriter.ts 3:0-39 39:14-21
 @ ./src/main.ts 7:0-63 12:24-51

ERROR in ./node_modules/nativescript-fingerprint-auth/fingerprint-auth.ios.js 3:14-53
Module not found: Error: Can't resolve 'tns-core-modules/utils/utils' in '/Users/markus/src/mobile-app/node_modules/nativescript-fingerprint-auth'
 @ ./src/app/services/FingerprintService.ts 3:0-64 8:35-50
 @ ./src/app/app.module.ts 48:0-71 79:8-26 196:20-38
 @ ./src/main.ts 9:0-45 57:46-55

ERROR in ./node_modules/nativescript-secure-storage/secure-storage.common.js 3:26-74
Module not found: Error: Can't resolve 'tns-core-modules/application-settings' in '/Users/markus/src/mobile-app/node_modules/nativescript-secure-storage'
 @ ./node_modules/nativescript-secure-storage/secure-storage.ios.js 3:30-64
 @ ./src/app/services/SecureStorageService.ts 2:0-60 19:33-46
 @ ./src/app/app.module.ts 56:0-75 86:8-28 203:20-40
 @ ./src/main.ts 9:0-45 57:46-55

ERROR in ./node_modules/nativescript-zip/zip.ios.js 3:9-48
Module not found: Error: Can't resolve 'tns-core-modules/file-system' in '/Users/markus/src/mobile-app/node_modules/nativescript-zip'
 @ ./src/app/config/FileTraceWriter.ts 3:0-39 39:14-21
 @ ./src/main.ts 7:0-63 12:24-51

The nativescript-zip error can be fixed by replacing it with the more recently updated @nativescript/zip, but as the API has changed, we need to adjust a little bit of our code.

Also, update packages: @nativescript/fingerprint-auth and @nativescript/secure-storage

In order to fix the error shown at top regarding webpack 5 and polyfills, I need to extend the webpack.config.js to look like this:

const webpack = require("@nativescript/webpack");

module.exports = (env) => {
    webpack.init(env);

    webpack.mergeWebpack({ resolve: {
                                fallback: {
                                    "crypto": require.resolve("crypto-browserify"),
                                    "stream": require.resolve("stream-browserify") 
                                }
                            }
                        })

    return webpack.resolveConfig();
};

And install the two ..-browserify packages named in the config.

SCSS processing problems

After having this solved, I get some error regarding the CSS:

JS: Style: Css styling failed: Error: undefined:2:51: Parse error: Identifier is expected
JS:     1 |var[_ngcontent-c106]   resource[_ngcontent-c106];
JS:     2 | (()[_ngcontent-c106]   =[_ngcontent-c106] >  { // webpackBootstrap
JS: ---------------------------------------------------------^
JS:     3 |     var __webpack_modules__ = ({
JS:     4 |
JS: INFO: SplashScreen constructor
JS: Style: Css styling failed: Error: undefined:2:49: Parse error: Identifier is expected
JS:     1 |var[_ngcontent-c84]   resource[_ngcontent-c84];
JS:     2 | (()[_ngcontent-c84]   =[_ngcontent-c84] >  { // webpackBootstrap
JS: -------------------------------------------------------^
JS:     3 |     var __webpack_modules__ = ({
JS:     4 |
JS: INFO: User does not have PIN code configured, redirect to registration screen
JS: Style: Css styling failed: Error: undefined:2:51: Parse error: Identifier is expected
JS:     1 |var[_ngcontent-c104]   resource[_ngcontent-c104];
JS:     2 | (()[_ngcontent-c104]   =[_ngcontent-c104] >  { // webpackBootstrap
JS: ---------------------------------------------------------^
JS:     3 |     var __webpack_modules__ = ({
JS:     4 |
JS: Style: Css styling failed: Error: undefined:2:49: Parse error: Identifier is expected
JS:     1 |var[_ngcontent-c87]   resource[_ngcontent-c87];
JS:     2 | (()[_ngcontent-c87]   =[_ngcontent-c87] >  { // webpackBootstrap
JS: -------------------------------------------------------^
JS:     3 |     var __webpack_modules__ = ({
JS:     4 |
JS: DEBUG: RegistrationComponent initialized
JS: Error: Could not load CSS from app.css: Error: require's first parameter should be string

Looking at my scss files, I find a lot of imports starting with a ~. With the migration to Webpack 5, this is not required anymore, so we remove all the tildes:

@import "~@nativescript/theme/core";
@import "~@nativescript/theme/default";
@import '~@nativescript/theme/scss/variables';
@import '~@nativescript/theme/scss/variables/blue';

becomes

@import "@nativescript/theme/core";
@import "@nativescript/theme/default";
@import '@nativescript/theme/scss/variables';
@import '@nativescript/theme/scss/variables/blue';

But unfortunately, this does not solve my problem here.

To solve this, it turns out I have to do two things:

  1. follow a hint I got from rigor789 (kudos! :-) ) on the NativeScript slack community that „styleurls must reference files that end with .component.css or .component.scss“ – so I renamed all of them. This limitation is being worked on ATM and should be gone in short time (thus chances are good that this hint will not be relevant to you when reading this ;-) ).
  2. remove the devDependency to node-sass in my package.json as it was outdated and seemed to confuse the whole SCSS processing.

Startup Issue in iOS

Also, while investigating the CSS problem, the apps seems to build fine, but it doesn’t start up on iOS. Using the „Konsole“ app to access the device logs, I get this error:

Process exited: <FBApplicationProcess: 0x131e7a640; mobileapp (de.customer.application); pid: -1> -> <FBApplicationProcessExitContext: 0x2807e0180; exitReason: (none); terminationReason: (none)> {
    stateAtExit = <FBProcessState: 0x2809d82a0; pid: 1936; taskState: Running; visibility: Unknown>;
    terminationRequest = <FBSProcessTerminationRequest: 0x28117f340; label: "watchdog provision violated"; exceptionCode: "Watchdog Violation (0x8BADF00D)"; reportType: CrashLog; explanation: "process-launch watchdog transgression: de.customer.application exhausted real (wall clock) time allowance of 20.00 seconds">;
    watchdogContext = <FBProcessWatchdogEventContext: 0x2807f0390; event: process-launch>;
}

So, the app takes way too long to start up and gets stopped by iOS after 20s.

This turns out to be a side effect of the SCSS issue above – with that solved, the app also starts on iOS as expected.

Refresh / Repaint after navigate()

With NativeScript 8 and Angular 11, we see some view that do not update as expected and thus, e.g. just showing a blank view without text, icons and labels, as shown here:

Along with that, I can find an error in the log telling me CONSOLE WARN: Navigation triggered outside Angular zone, did you forget to call 'ngZone.run()'?. After a short search I stumble upon the issue 2308 in nativescript-angular that seems to document whats going on and provides a workaround using ngZone.run() which works for me.

Upgrade Show on Youtube

While writing this, I realize that Alexander Ziskind and Nathan Walker (both part of the core NativeScript community, and at least Nathan if not both, part of the NativeScript TSC) did a Live-Stream doing a migration from NativeScript 6 to NativeScript 8:

On updated plugins…

As many plugins have been move during the transition to NativeScript 7 and 8, it´s confusing now that many are around under two names, e.g. nativescript-example and @nativescript/example. Also, with this transition, it’s not always clear where an release originates from, as Changelogs and Releasenotes are often not maintained. So look around, check for the scoped plugin names and see if there is an updated version of a plugin in quiestion. Help by providing pull requests to README.md files and other resources to clarify :-).

Angular 12

Finally, Angular 12 is available for NativeScript and the upgrade worked just like a charm for our app – go ahead :)

Have fun with mobile development leveraging your web dev skills :D

2. Juni 2021

Upgrading Plugins for NativeScript 7 and following

In my previous blogpost, I wrote about updating an app from NativeScript 6.5 to 8, taking 7 as the necessary step in between. The app is basically working but major functionality is missing as it crashes as soon it tries to execute functions from an internally maintained plugin.

Must read when upgrading plugins: https://blog.nativescript.org/nativescript-7-for-plugin-authors/

That post offers a 6-step procedure to convert a plugin which I will follow.

Basic steps for migration are the same as for the app: Remove deep imports from core, fix references.d.ts file, etc

Step 3 about @NativeClass decorator needs some more attention as we have implemented quite a lot of the iOS part of the plugin directly in TypeScript.

As with the move to Angular 10, some Angular specific consideration have to be made for plugins as described in that blogpost. But as we did not choose to implement such in our plugin, I´m fine here and do not need to take care of specifics.

To migrate the sample apps, I need to take basically the same steps as I did for the main application.

After I have the demo-apps migrated and get to the point to test the plugin using these, I run into a problem on iOS:

Our iOS specific code (TypeScript using ObjC interfaces) contains static methods and calls to them, e.g. a class

@NativeClass()
export ViewControllerWrapper extends UIViewController {

(...)
    public static initWithOptionsAndStrategy(options: LogicOptions, logicStrategy: LogicStrategy): ViewControllerWrapper {
            (...)

            return wrapper;
        }
(...)
}

and a call to that initializer method:

const view = ViewControllerWrapper.initWithOptionsAndStrategy(...);

The error I get during runtime (build is fine) is CONSOLE LOG: Error: rejected Cannot read property 'initWithOptionsAndStrategy' of undefined. That means that the javascript resulting from the transpilation does not have a valid referenece to my static method.

Also, I get this warning during build

WARNING in /Users/markus/src/plugin/src/ios/ViewControllerWrapper.ts 269:55-91
"export 'ViewControllerWrapper' was not found in './ViewControllerWrapper'
 @ /Users/markus/src/plugin/src/SomeAction.ts
 @ ./app.ts

The solution to this is described in the best-practices articles for @NativeClass in the NativeScript docs. I need to seperate the export from the class declaration as the @NativeClass decorator changes the JS syntax and thus breaks the export.

So, instead of

@NativeClass()
export class CustomClass extends NSObject {}

we need to do

@NativeClass()
class CustomClass extends NSObject {}

export { CustomClass }

On testing my plugin in the app (build & package a tgz locally and reference it from the app´s package.json with file:/path/to/plugin.tgz instead of the version number), I got errors sayint Uncaught ReferenceError: NativeClass is not defined.

Which appeared like an packaging error to me, so I had to revise the webpack.config and ths tsconfig.

It turned out that my tsconfig.json was actually missing the following that takes care for the NativeClass items:

"plugins": [
      {
        "transform": "@nativescript/webpack/transformers/ns-transform-native-classes",
        "type": "raw"
      }
    ],

Finally, I stumbled over a "declaration: false"setting in the plugin´s tsconfig.json – with this set, the generated code in the packaged plugin will not be useable to the app as typescript will not find the expected code to import classes. It has to be set to true.

And with this, the migration of the custom plugins is complete and we have our app migrated to NS 7. 🎉

26. April 2021

Upgrade to NativeScript 7 (prepare for 8)

As NativeScript 8 has been released, I think it might come in handy to document the steps taken to upgrade an app based on NativeScript 6.5 to the recent NativeScript 8.

Before diving into the upgrade, it´s worth to have a look at the node ersion used: It should be at least Node 12. I recommend to use a NVM and have a .nvmrc file in each project folder so you have a defined environment to work with.

It turns out that the „migrate“ command of NativeScript 8 does appearently not behave the same as that of NativeScript 7, we should not do a jump from 6.5 to 8 but instead a step-by-step migration, meaning first migrating to 7 and from there to 8.

Thus, the scope of this article will be to migrate the app to NativeScript 7, going up to 8 will be a fllo-up post. To tackle this, our first input are the upgrade notes from the release-blogpost for NativeScript 7.

That includes:

  • Install the last version of NativeScript 7: npm i -g nativescript@7.2.1
  • run tns migrate

Which runs just fine in our case. Good thing to see it creates a .migration_backup folder for files it changes or deletes, so we do not solely rely in our version control.

So, lets try to run the converted project with a tns run android.

Turns out, the migratedid not automatically convert the platform dependencies, so I had to make sure, these are set with the correct version in devDependencies:

    "@nativescript/android": "7.0.1",
    "@nativescript/ios": "7.2.0",

And after another try running tns run android, I get the following error:

ERROR in The target entry-point "listview-directives" has missing dependencies:
 - nativescript-angular/element-registry
 - nativescript-angular/renderer
 - ./../
 - tns-core-modules/platform
 - tns-core-modules/ui/layouts/layout-base
 - tns-core-modules/data/observable-array
 - tns-core-modules/ui/core/view
 - tns-core-modules/data/observable
 - tns-core-modules/color
 - tns-core-modules/ui/layouts/stack-layout

This reveals that some part of the app if not fully migrated as using „tns-core-modules“ has been deprecated and should be replaced with tns-core-modules.

As I cannot find any in my code base, I check the dependencies and find that there is an updated version of „nativescript-ui-listview“ available; „9.1.0“.

I also need to upgrade the nativescript-localize plugin as the version I was using is not compatible to the changes introduced with NativeScript 7. After some investigation, it turns out that the plugin has moved around a bit and it now community-maintained and available as @nativescript/localize (github, npmjs). Version 5.0.4 seems to be working fine for me.

This help, and now I get complains:

references.d.ts:1:22 - error TS6053: File '/Users/me/src/mobile-app/node_modules/@nativescript/core/tns-core-modules.d.ts' not found.

1 /// <reference path="./node_modules/@nativescript/core/tns-core-modules.d.ts" />
                       ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
references.d.ts:2:22 - error TS6053: File '/Users/me/src/mobile-app/node_modules/tns-platform-declarations/ios.d.ts' not found.

2 /// <reference path="./node_modules/tns-platform-declarations/ios.d.ts" />
                       ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
references.d.ts:3:22 - error TS6053: File '/Users/me/src/mobile-app/node_modules/tns-platform-declarations/android.d.ts' not found.

3 /// <reference path="./node_modules/tns-platform-declarations/android.d.ts" />
                       ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

So I need to udate the references.d.ts file of my project to contain the following as mentioned in the migration blogpost from above.

/// <reference path="./node_modules/@nativescript/types/index.d.ts" />

Now, some „deep import“ references need to get fixed as described in NativeScript 7 import reference, such as:

import * as trace from "@nativescript/core/trace";

to import { Trace } from "@nativescript/core";

or

import * as application from "@nativescript/core/application";

to import { Application, Trace } from "@nativescript/core";

After fixing a lot of those, the app starts up.

It is fully usable up to the point where internally created plugins are used. These have not yet been migrated and will be tackled next.

Stay tuned :)

8. Februar 2021

git magic: personal / local .gitignore

Es kommt immer mal wieder vor, das man in seiner Arbeitskopie zusätzlich zu den in der .gitignore Datei gepflegten, versionierten (und damit mit allen anderen, die am Repository arbeiten, geteilten) Einträgen eigene, Einträge hinzufügen möchte.

Die Lösung dafür ist ein Eintrag in der .git/config Datei der Arbeitskopie:

[core]
    ...
    excludesfile = .local_gitignore
[remote "origin"]
    ... 
[branch "master"]
    ...

Natürlich sollte diese Datei zu allererst den Eintrag .local_gitignore beinhalten, damit git sie nicht immer als neue Datei hinzufügen will ;-)

Happy coding!

31. Januar 2020

Recover corrupted .tar.bzip2 archives

Sometimes one acutally need to access data from backups and archives.

Sometime archives to currupt. Better if one has not need using gzip to compress data as those are not recoverable.

One would be more lucky if she has used a tar archive, maybe compressed with bzip2, as the would be this helpful guid to recover alle the thing that were not within the corrupted block:

https://wiki.bluelightav.org/pages/viewpage.action?pageId=8126784

I was one of the ones today and I worked quit well for me :)

Shell history for later reference:

bzip2recover Archive.tar.bzip2
bzip2 -tv rec*.bz2 > testoutput.log 2>&1
grep [^ok]$ testoutput.log
mkdir recover1
mkdir recover2
(move everything up to the corrupted block to rec1 directory)
mv rec000[1-9]Archive.tar.bzip2.bz2 recover1
cd recover1
bzip2 -dc rec*.bz2 > recovery1.tar
tar tf recovery1.tar
cd ..
(move everthing above the crrupted block to recovery2)
cd recover2
bzip2 -dc rec*.bz2 > recovery2_failing.tar
bunzip2 ~/Downloads/find_tar_headers.pl.bz2
ls
cp ~/Downloads/find_tar_headers.pl ./
less find_tar_headers.pl
chmox +x find_tar_headers.pl
chmod +x find_tar_headers.pl
./findtarheader.pl recovery2_failing.tar | head -n 1
./find_tar_headera.pl recovery2_failing.tar | head -n 1
./find_tar_headers.pl recovery2_failing.tar | head -n 1
tail -c +2529778 recovery2_failing.tar > recovery2_working.tar
tar tf recovery2_working.tar
tar xf recovery2_working.tar
21. September 2019

digitale Souveränität: gefährdet

Da schau an: Gut 1,5 Jahre nachdem ich hier mit dem Link auf die „Microsoft Dilemma“ Reportage darauf aufmerksam machen wollte, das man die Abhängigkeit von (Tech-)Konzernen sehr kritisch im Auge behalten muss, wird dies nun durch eine durch das Bundesinnemindesterium in Auftrag gegebene Studie bestätigt. Dort sieht man die „die digitale Souveränität des Staates gefährdet“.

Natürlich gibt es dazu einen gut zusammengefassten Artikel bei heise: Marktanalyse: Microsoft-Abhängigkeit führt zu „Schmerzpunkten“ beim Bund

In der Studie wird „OpenSource“ als Lösung genannt, doch da muss man vorsichtig sein – das Produkte unter OpenSource Lizenzen bereitgestellt werden schließt die als problematisch erkannten Punkte – Anbieterabhängigkeit wird nicht allein durch die Änderung der Lizenz ausgeräumt.

Auch das der bitkom in seinem Open Source Monitor 2019 bescheinigt das Open Source mittlerweile auch in der deutschen Wirtschaft angekommen ist, ist das nur ein Anfang und bis man sich auf die Schulter klopfen kann muss noch viel passieren. Insbesondere in Bezug auf die Finanzierung von Open Source Projekten, und da steht diametral entgegen das der genannte Open Source Monitor einmal mehr belegt, das die Mehrzahl der Unternehmen „Open Source“ vor allem als Kostensparmodell verstehen und sich um die Vorteile, die sich bei einem vollständigen Adaption des Modells ergeben, nicht scheren und sich damit auch nicht um den langfristigen bestand der Projekte aus denen sie Nutzen ziehen kümmern wollen.

„Open Source“ ist nicht das Gegenteil von „Kommerziell“. Ich hoffe stark (und arbeite daran mit ;-) ) das es nicht nochmal 30 Jahre dauert (`89 ist die GPL entstanden) bis das auch in der deutschen Wirtschaft verstanden wurde.

2. September 2019

Images auf SD-Cards flashen

..kann man mit der Kommandozeile.

sudo dd bs=1m if=path_of_your_image.img of=/dev/rdiskn conv=sync

Wobei man sich halt sicher sein muss, das rdiskn das richtige Device ist, das Laufwerk nicht eingebunden ist, etc….

Oder mit balenaEtcher – falls man sich die dd-Befehle immer noch nicht gemerkt hat oder man das Aufspielen neuer SD-Card images jemandem zeigen will der nicht so gut mit der Kommandozeile vertraut ist ;-)

23. Mai 2019

Mails später verschicken

Gerade habe ich mich mal wieder gefragt, ob es nicht eine Möglichkeit gibt, Mails nicht nur „später“ aka „beim nächsten Mal wenn das Mailprogramm Mails versendet“ zu verschicken, sondern zu einem vorab definieren Zeitpunkt. Also äquivalent zum „geplanten Post“ zu einem spätern Datum im WordPress.

Kurze Suche, kurze Antwort: Es geht. In Outlook (leider für die meisten der Standard) genauso wie in Thunderbird (per Addon). Knackpunkt ist in beiden Fällen, das das EMailprogramm selbst das versenden vornimmt, nicht der Server. Der eigene Rechner muss als eingeschaltet und am Netz sein.

Gibts dafür nicht auch was serverseitiges? :)

20. Mai 2019

Ender-3: Druck mit OctoPrint

Nach meinem einigermaßen erfolgreichen ersten Druck will ich natürlich mehr – und brauche auch einen zweiten Druck, um den Fehler besser zu verstehen bzw. zu reproduzieren. Aber einfach nochmal den Hund oder „jetzt schon“ das Schiff 3DBenchy zu drucken ist doch langweilig, also direkt eines der Improvment-Parts. Meine Wahl fällt auf die Lüfterabdeckung.

Außerdem bin ich neugierig auf OctoPrint, das mir als sehr angenehme Variante, Druckdaten auf den Drucker zu bringen und den Drucker zu steuern, angepriesen wurde.

OctoPrint hat eine Weboberfläche und lässt damit die Abfrage der Druckerzustandsdaten und Steuerung von praktisch überall zu. Bei mir dann eher überall im lokalen Netz, da ich nicht vorhabe die WebUI im öffentlichen Internet verfügbar zu machen – wovor OctoPrint auch eindringlich warnt. Aber das reicht ja auch. Dann muss man immer zum Drucker laufen um zu gucken wie es ihm geht. :)

So kann ich es also nicht lassen, direkt zwei Dinge auszuprobieren – OctoPrint und einen „eigenen Druck“ (zu dem ich die gcode Datei selbst erzeuge und nicht mitgeliefert bekommen habe).

OctoPrint auf Pi geflasht (dabei das erste Mal unter Linux nicht dd sondern Etcher benutzt – als AppImage :) ) und eingerichtet. Parameter:

Printer settings

Form factor: Rectangular
Origin: Lower Left
Heated Bed: Yes (checked)
Width: 220mm
Depth: 220mm
Height: 250mm
Axes: Default**
Custom Bounding Box: No (unchecked)
Nozzle Diameter: 0.4mm
Number of Extruders: 1

Connection settings

Serial Port: /dev/ttyUSB0
Baudrate: AUTO

(aus diesem Artikel übernommen).

USB Kabel verbunden und Ender eingeschaltet. Die Verbindung klappt auf anhieb und Sensordaten sind auf dem WebUI sichtbar. Wunderbar 🤩

Nun also zu der Frage, wie ich zu Druckdaten komme. Die *.stl Dateien von Thingyverse kann ich nicht direkt verwenden. Weder auf dem Drucker noch im OctoPi. Man muss eine *.gcode Datei erzeugen und das meist genannte Mittel dazu heisst Cura, genauer Ultimaker Cura und ist für alle Plattformen kostenlos verfügbar. In Cura gibt es auch ein default-Setting für den Ender-3, sodass ich dieses wähle, die .stl Datei lade und mit „Slice“ die .gcode Datei erzeugen kann ohne mich in der Tiefe mit den möglichen Einstellungen dort auseinanderzusetzen.

Diese .gcode Datei kann ich über das OctoPrint WebUI an den Ender-3 schicken und auch den Druck starten. Ich bin gespannt ob das klappt :)

Also, der Druck ist gestartet und OctoPrint heizt das Bett und die Düse auf und visualisiert diesen Vorgang chic in einem Graphen. Nach erreichen der gewünschten Temperaturen legt der Drucker dann los – ich bin auf das Ergebnis gespannt :)

Und siehe da, dieser Druck klappt wunderbar, ohne „krausen Haare“:

Das Problem ist also nicht unmittelbar reproduzierbar und ich habe eine neue Lüfterabdeckung als erstes Upgrade für meinen Drucker :D

17. Mai 2019

Einstieg in 3D Druck mit einem Creality Ender 3

Ich habe mich das ein Abenteuer eingelassen in die Welt des 3D Druck einzutauchen. Hier ein paar nützliche Links und das ein oder andere Update zu meinen Fortschritten.

Ein Paar Links und Videos:

Sehr Hilfreiches Video zum Aufbau:

Leveling und Inbetriebnahme:

Beim Leveling, dem Einstellen des Druck-Betts (es muss möglichst nahe an der Druckdüse und absolut gerade sein) habe ich die Erfahrung gemacht, das es wichtig ist, sich Zeit zu lassen und ein normales DIN A4 Blatt zu nehmen – nicht wie im Aufbau Video ein Stück von der Anleitung, das Papier ist zu dick.

Denn: Nach dem ersten Anlauf das Druckbett einzustellen und anschliessendem Start habe ich ein Foto von der ersten gedruckten Schicht an einen 3D-Druck erfahrenden Freund geschickt. Dank das geübten Auges auf der Gegenseite bekam ich prompt die Diagnose:

Hinten zu weit weg
Überall zu weit weg
Der Kopf muss näher ran

Also praktisch den Tipp, den Druck abzubrechen und nach einem entsprechendem Re-Leveling (mit 80g Papier) neu zu starten. Vielen Dank nochmal auf diesem Weg dafür :)

Und mit Hilfe der Infos aus diesen beiden Videos und dem sehr wichtigen Experten Tipp kam ich dann auch zum ersten Probedruck:

Größtenteils erfolgreich 🤩
Warum der Drucker zum Schluss kreativ wurde und statt der normalen Schädeldecke dem Hund eine Wuschel-Frisur gemacht hat, habe ich noch nicht herausgefunden. Ein erster check eines Troubleshooting Guide hat eider keine Antwort gegeben.
Ich bin dennoch sehr zufrieden mit dem Ergebnis :D

mynethome.de wird erstellt mit WordPress
Beiträge (RSS) und Kommentare (RSS)

(c) 2005 - 2015 Markus Schlichting