Dieses Blog durchsuchen

Mittwoch, 1. Dezember 2021

Delock 11827 - Tasmota firmware upgrade

Today my two Delock 11827 "WLAN Power Socket Switch"es arrived and after I successfully configured them for my WiFi, I checked the installed tasmota version, which identified itself as 6.5.0. So it was quite old and deserves an update.

At the time of writing this, version 10.0.0 was the current release (http://ota.tasmota.com/tasmota/release/)

tasmota follows a strict upgrade-flow when doing upgrades over several major versions. The ususal upgrade-flow will not work straight with the plug, as due to limited flash-memory we have to take the long road by flashing the minimal versions before upgrading to the full version. The flow will look like this:

6.5.0 --> 6.7.1 --> 8.5.1 (minimal) --> 8.5.1 --> 9.1.0 (minimal) --> 9.1.0* --> 10.0.0** (minimal) --> 10.0.0**

You'll find the releases on the tasmota github: https://tasmota.github.io/docs/Download/

* I did not use the intermediate release 9.3.1, as it did not install properly
** The current version of tasmota does not have the version number in the filename

Use the "bin"-versions for minimal and full (example for current version). Simply copy the respective OTA-URL and paste it to the OTA-field in the firmware upgrade webinterface of the plug.

As I did a intermediate upgrade with updated firmware provided by Delock (see below), I startet the flow with the version 8.5.1.

1. Update with the latest Delock firmware

Delock provides the firmware for the 11827 on their webserver. As I was not able to find a link on their entire website, I put it here: https://www.delock.de/download/firmware/11827de.bin

The filename does not indicate a version, but actually it contained an upgrade to 7.2.0 to the original 6.5.0.

I downloaded the file and flashed the first plug via the webinterface, not using the OTA option. The second one I did with the OTA upgrade using the same link. Both worked fine.

After the upgrade, the tasmota version was reported as 7.2.0 and the plug identified itself as "AplicWDP303075 Modul" in the webinterface. I ignore this for now.

Don't be alarmed, that the firmware-language up to this step still is in German. We will use the english upgrade files in the following steps, so the language of the interface will switch.

2. Start the upgrade-flow

As stated above, I now start with the step-by-step upgrade to the target version, beginning with version 8.5.1.

Reset the plug

First I did a "reset 3" and after that a "reset 6" in the console ("Konsole") of the Delock plug:



The reset-commands take a few seconds to execute after hitting Enter. The console logs some output and refreshes. Take care to execute both commands!

Flash minimal version first

Now you are ready to flash the minimal version via the "Firmware Upgrade" button in the main menu.  I use the version 8.5.1 in this example, but it will repeat with any other version in the same way. 
Use the OTA option in the plugs webinterface and enter the URL to the 8.5.1-minimal firmware file (http://ota.tasmota.com/tasmota/release-8.5.1/tasmota-minmal.bin)


This takes a moment and the web-interface will become unresponsive in a time. After it comes back, the screen shows a warning about the minimal-firmware-version:


Flash the full version

You should now immediately flash to the full-version of the same release.
If you want to use another language than english, please use the URL for the tasmota-file with the correct locale indicated when flashing the full version. It is sufficient to do this only once with the target release file (i.e. DE=German, PT=Portugese etc.).


After some moments, the plug comes back to life with the full 8.5.1 version. Please be patient and do not unplug it from the socket if the interface does not come back. Try reloading and check the correct IP-address in the browser. Unplugging it too early from the socket may result in bricking the device.

Repeat steps until you upgraded to target version

Repeat the steps following the upgrade-path (see above) until you successfully reach the current target release. I'd recommend to always use the "reset 3" and "reset 6" commands (see above), before stepping to the next release version. If you do so, you might find the plug at some point to report itself as "Sonoff Basic". You can ignore this for now.

Final step - make the plug work again

With reaching the target version, you are almost done. 
There still is one thing to do, as you might have noticed, that clicking the "Toggle"-button in the webinterface or even pressing the pysical button on the plug does not work after resetting and upgrading. We have to tell the plug, how it should work by applying an appropriate template.
Go to the "Configuration" page and click on "Configure Other".
Copy the template-string found here https://templates.blakadder.com/delock_11827.html

{"NAME":"Delock 11827","GPIO":[0,0,0,17,133,132,0,0,131,158,21,0,0],"FLAG":0,"BASE":53}

to the "Template"-field and activate the checkbox.
If you want to activate MQTT or the default Belkin WeMo emulation, you can do this even before hitting "Save" on that page.
The plug will restart and should now work as intended.

Sonntag, 20. September 2020

Reinigen und neu Ölen von Sinterlagern mit Hausmitteln

Der interne Querstromlüfter an meinem Backofen hat nach nur knapp 20 Jahren Betrieb seinen Geist aufgegeben und ist festgelaufen. Ersatz gibt es keinen, bzw. nur gebrauchte Teile zu hohen Preisen und mit der Garantie, dass auch diese bald ausfallen dürften.
Nach kurzer Untersuchung war klar, dass die beiden kleinen Bronze-Sinterlager auf der Motorseite die Übeltäter sind. Hohe Temperaturen und langer Betrieb haben diese austrocknen lassen und vom Schmiermittel war keine Spur mehr vorhanden bzw. die vorhandenen Spuren waren durch Verharzung bestimmt die Auslöser des Ausfalls.
Diese Lager gibt es nicht als Ersatz, also wagen wir einen Versuch, diese wieder fit zu machen. Da sie nicht ausgeschlagen waren, ging es also um Reinigung und neues Schmieren. Einfach nur Fett auf Welle und Lager aufzutragen schien mir nicht der richtige Weg, da dieses sich wahrscheinlich schnell über die ganze Welle verteilen und damit auch wieder schnell von den Schmierstellen verflüchtigen würde.
Im Ergebnis läuft der Lüfter nun wieder top und ich bin gespannt, ob die Reparatur auch von Dauer ist.

So bin ich dabei vorgegangen:

Außenreinigung

Mit Aceton das Lager soweit möglich äußerlich und an der Gleitfläche reinigen. Die Welle, die in dem Lager läuft, habe ich mit ganz feiner Stahlwolle von Öl-/Harz-Resten befreit und damit auch gleich etwas poliert.

Reinigung des Sintermaterials

Das Lagermaterial selbst wird mit einem Vakuum gereinigt.

Zu Reinigung wird ein Gefäß oder besser eine Spritze verwendet, in die das Lager hinenpasst.

Das Gefäß wird mit Aceton gefüllt, so dass das Lager vollständig bedeckt ist. Dann wird soweit möglich die Luft entfernt (bei der Spritze mit dem Kolben).

Jetzt ein möglichst großes und langanhaltendes Vakuum erzeugen, in dem z.B. der Kolben der Spritze bei zugehaltener Öffnung zurückgezogen wird. Es entweicht sichtbar Luft aus dem Lagermaterial. Den Unterdruck halten und mehrfach wiederholen. Je häufiger, desto besser. Idealerweise wird sichtbar Schmutz aus dem Lager gezogen und in dem Aceton gelöst. Irgendwann wird die austretende Luft deutlich weniger - das Lager ist scheinbar mit Aceton geflutet.

Entfernen des Acetons

Erneut das Lager äußerlich reinigen, danach gut belüftet das Aceton verdunsten lassen. Erwärmen des Lagers im Ofen für 1-2h bei ca. 90 Grad beschleunigt diesen Vorgang deutlich. Leider läßt sich nicht genau feststellen, wann das Aceton vollständig verdunstet ist, es sollte deshalb auch bei erwärmtem Lager mind. 24h gewartet werden.

Lager wieder neu ölen

Das "befüllen" des Lagers mit Öl geschieht analog zum Reinigen: Wieder zusammen mit dem frischen Öl in ein Gefäß/Spritze legen und mit Vakuum das Öl einbringen. Beim Erzeugen des Vakuums solltet ihr wieder Luft aus dem Material entweichen sehen. Auch dieses Vakuum lange halten und häufig wiederholen.
Bei jedem Druckausgleich verschwinden die Luftblasen am Lager schlagartig und das Öl zieht dabei in das Sintermaterial ein. Irgendwann treten keine Luftblasen mehr aus, das Lager sollte wieder gefüllt sein.

Mit professionellem Equipment und hohem Unterdruck wird sicher noch mehr Öl einpressbar sein, aber mehr bekommt man mit Hausmitteln wahrscheinlich nicht hin.

Ich habe sehr dünnflüssiges (Silikon-)Öl verwendet und noch nicht probiert, ob es auch mit zäheren Ölen genau so gut funktioniert. Das Silikonöl habe ich verwendet, da die zwei kleinen Sinterlager an meinem Backofenlüfter bei hohen Temperaturen laufen. Alle anderen Öle, die ich im Zugriff hatte, waren nur bis ca. 110°C tauglich, das Silikonöl bis ca. 200°C.

Sonntag, 6. September 2020

ssh: Plötzlich keine Verbindung mehr zu meinem raspberrypi

ssh Zugriff auf remote server wird mit Fehlermeldung: "Warning: the ECDSA host key for 'myserver' differs from the key for the IP address '192.168.0.3'" abgelehnt.
Der ssh-server ist für Passwort authentication konfiguriert.

Eine Verbindung mit ssh -v bringt z.B. folgende Erkenntnisse:

user@local_machine:~$ ssh user@raspberrypi -v
OpenSSH_7.6p1 Ubuntu-4ubuntu0.3, OpenSSL 1.0.2n 7 Dec 2017
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: /etc/ssh/ssh_config line 19: Applying options for *
debug1: Connecting to raspberrypi [ip_v6_adress] port 22.
debug1: connect to address [ip_v6_adress] port 22: Connection refused
debug1: Connecting to raspberrypi [192.168.0.3] port 22.
debug1: Connection established.
debug1: identity file /home/user/.ssh/id_rsa type 0
debug1: key_load_public: No such file or directory
debug1: identity file /home/user/.ssh/id_rsa-cert type -1
debug1: key_load_public: No such file or directory
debug1: identity file /home/user/.ssh/id_dsa type -1
debug1: key_load_public: No such file or directory
debug1: identity file /home/user/.ssh/id_dsa-cert type -1
debug1: key_load_public: No such file or directory
debug1: identity file /home/user/.ssh/id_ecdsa type -1
debug1: key_load_public: No such file or directory
debug1: identity file /home/user/.ssh/id_ecdsa-cert type -1
debug1: key_load_public: No such file or directory
debug1: identity file /home/user/.ssh/id_ed25519 type -1
debug1: key_load_public: No such file or directory
debug1: identity file /home/user/.ssh/id_ed25519-cert type -1
debug1: Local version string SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.3
ssh_exchange_identification: read: Connection reset by peer

Lösung in diesem Fall war, den ssh-Key auf dem lokalen Rechner zu löschen, so dass der Austausch beim nächsten Login erneut stattfindet und der Key gecached wird:

ssh-keygen -R 192.168.1.123

Ich vermute aber, dass das noch nicht die endgültige Lösung ist. Update folgt, wenn der Fehler wieder auftritt.

Samstag, 28. Dezember 2019

W-Lan unter Linux Mint 19.3 (Ubuntu 18.04 Bionic) mit Intel Centrino Advanced-N 6205 langsam
(Slow Wifi with Linux Mint 19.3 (Ubuntu 18.04 Bionic) with Intel Centrino Advanced-N 6205)


Nachdem ich meinen DSL-Anschluss auf 100/40 MBit aufgerüstet habe, konnte ich die volle Geschwindigkeit auf meinem Windows Rechner nutzen. Nur mein Lenovo 430 unter Linux blieb im Maximum bei ca. 25 MBit im Download hängen. Verbaut ist der Intel Centrino Advanced-N 6205, zu dem ich für ältere Ubuntu-basierte Linuxe dazu einige Bugreports finden konnte. Erstaunlicherweise scheint der Fehler immernoch zu bestehen, da eine der vorgeschlagenen Lösungen auch bei mir auf Anhieb funktioniert hat.

Das Einfügen von "options iwlwifi 11n_disable=8" in /etc/modprobe.d/iwlwifi.conf und ein Reboot haben das Problem glöst.

Montag, 24. April 2017


Externe USB-Festplatte oder Stick / Flashdrive unter Linux verschüsseln

Ziel: Der Datenträger soll "transparent" verschlüsselt werden, d.h. sobald er einmal mit der richtigen Passphrase eingehängt worden ist, greifen alle Datenoperationen "ganz normal" darauf zu (lesen und schreiben), ohne dass irgendeine Usersoftware etwas von der Verschlüsselung merkt.

So habe ich es gemacht: Zuerst cryptsetup installieren. Zumindest bei allen neueren Ubuntu (Debian) Versionen sollte das in den standard Paketquellen verfügbar sein.

Der schnelle und einfach Weg ist nun das script "luksformat" zu verwenden, das mit cryptsetup installiert worden ist. Der lange und vollständige Weg ist unten in den beiden Links zu finden.

Syntax: luksformat [-t fstype] device

Also z. B.: luksformat -t ext4 /dev/sdc1 formatiert das device /dev/sdc1 mit ext4 als Dateisystem und verschlüsselt es. Das Skript fragt eine Passphrase zwei mal ab. Gestartet werden muss es in der Regel mit root-Rechten, d.h. es muss noch ein "sudo" davor.

Vorsicht: Wie bei allen schreibenden Operationen die direkt auf ein Device gehen (im Beispiel /dev/sdc1) vorher sehr gründlich kontrollieren, ob es auch das richtige Device ist. Da man in der Regel als root arbeitet, schreibt Linux gnadenlos auch auf Boot oder Datenpartitionen mit dem Effekt, dass Linux zerschossen ist, oder im schlimmsten Fall Daten futsch sind.

Die Platte ist nun verschlüsselt. Jedes Mal beim anschliessen fragt Linux einmal nach der Passphrase und mounted dann die Platte / den Stick transparent ins Dateisystem.

Mehr Infos und Details:
und natürlich hier

Montag, 27. Juni 2016

Ubuntu: gnome-desktop Fenster-Buttons auf die richtige Seite (nach rechts)

gsettings set org.gnome.desktop.wm.preferences button-layout 'menu:minimize,maximize,close'

Sonntag, 10. Januar 2016

3D - Text in DesignSpark hinzufügen

DesignSpark (DS) in der freien Version von RS-Components kann keine Texte erzeugen und in Designs einfügen.
Schriftzüge müssen deshalb extern erzeugt und dann in DS importiert werden.
Nach einigenVersuchen, passende Texte mit anderer Software zu erzeugen (u.a. 123Design, FreeCad, SketchUp), die entweder an den wenigen Importformaten von DS gescheitert sind, oder aber zu unflexibel in der Anwendung waren, bin ich (wieder mal) bei OpenSCAD gelandet, mit dem ich auch schon sehr erfolgreich parametrisierte Schrauben und Mutten, sowie Legosteine berechnet habe.
Neben einfachen Texten auf einer Ebene, will ich auch Texte auf die Oberflächen von Körper legen (Zylinder, Kugeln etc.) können.
Mit OpenSCAD sind hier eine ganze Menge Dinge möglich, allerdings kann man in DS nicht alle Körper nach dem Import in beliebiger Weise weiterverwenden:
  • Das "Auflegen" von 3D-Texten auf Körper, die in DS erzeugt werden (also erhabenen Text auf einem Körper) funktioniert gut. Dazu muß der Text schon in OpenSCAD in den richtigen Dimensionen erzeugt werden, in DS importiert und passend aufgelegt werden.
  • Ausgestanzter Text lässt sich so nicht erzeugen, da DS den importierten Text nicht ziehen und damit in einen Volumenkörper drücken kann. Soll Text in einen Körper gestanzt sein, so wird der Körper mit Text bereits in OpenSCAD erzeugt und dann als STL-Datei in DS importiert.
Die OpenSCAD-Library text_on erlaubt relativ einfach die passende Texterzeugung in OpenSCAD, weshalb ich inzwischen jede Art von Text auf Körpern (erhaben oder ausgestanzt) komplett in OpenSCAD erzeuge und dann in DS importiere.

Die Anwendung ist einfach:
use <text_on/text_on.scad>
translate([0,0,0])
{
text_on_cylinder(t="Demo text goes here! [äöüÄÖÜß]",locn_vec=[0,0,0],r=30,h=1,font="Liberation Mono:style=Bold",direction="ltr",spacing=1,size=5,extrusion_height=1);
}
Dieses Beispiel erzeugt einen Text und legt diesen auf eine (unsichtsichtbare) Zylinderoberfläche mit dem Radius 30:

Die Fonts, die in OpenSCAD verwendbar sind, lassen sich über das Menü "Hilfe --> Fontliste" abrufen und dort in der richtigen Bezeichnung kopieren und in das Script einsetzen.
Im Beispiel verwende ich einen monospaced Font (unter Windows).
Bei der Benutzung von proportionalen Schriften (z. B. Arial) konnte ich beobachten, daß über den Text verteilt unschöne Unterschiede in den Abständen der Buchstaben untereinander entstehen. Hier ist mir noch nicht klar, ob das irgendwie zu verhindern ist.
Der angegebene Radius (im Beispiel 30) liegt genau in der Mitte der Höhe (extrusion_height) der Buchstaben.

Um den fertigen Text in DS weiterzuverwenden benutze ich folgenden Workflow:
  • Schriftzug in OpenSCAD erzeugen und rendern (mit dem richtigen Radius, um hinterher nicht skalieren zu müssen, was wahrscheinlich nicht zu einem guten Ergebnis führt)
  • In OpenSCAD als STL-Datei abspeichern
  • In DS eine neue Zeichenfläche erzeugen und auf dieser die STL-Datei importieren.
    Im Beispiel hier habe ich vorher einen Kreis mit Durchmesser 60 in DS erzeugt.
  • Im Strukturbaum das Konstruktionsnetz des importiertern Texts mit Rechtsklick in einen Volumenkörper umwandeln
  • Der Text ist in DS wie ein regulärer Volumenkörper handhabbar. Im Beispiel unten auf der Mantelfläche des zum Zylinder extrudierten Kreises


Hier noch ein Beispiel für die Erzeugung von verschiedenen geometrischen Körpern mit unterschiedlichen Textausprägungen, die man einzeln erzeugen und als STL-Exporte in DS ganz gut weiterverwenden kann. Das Beispiel ist in OpenSCAD unter Windows erzeugt, in Linux (und wahrscheinlich auch auf dem Mac) heissen die Schriftarten anders und müssen ggfls. angepasst werden:


//Demo for rendering text on 3d-shapes in OpenSCAD using the "on_text" library by brodykenrick on github.com/brodykenrick/text_on_OpenSCAD
use <text_on/text_on.scad>
    translate([0,0,0])
    {
    difference()  //Alle erzeugten Körper werden aus dem ersten erzeugten ausgeschnitten
      {
        $fn=100;  //facetten des Zylinders  
        cylinder(r=30,h=8, center=true);   
        text_on_cylinder(t="Demo cylinder",locn_vec=[0,0,0],r=30,h=1,font="Liberation Mono:style=Bold",direction="ltr",spacing=1,size=5,extrusion_height=4);
      }
     
    translate([0,0,10])
    {
        non_cubic_dimensions=[40,10,8];  //Werte für einen Quader (||Würfel)
        cube (non_cubic_dimensions,center=true);
        color("red");
        text_on_cube("Demo out",locn_vec=[0,0,0],cube_size=non_cubic_dimensions,font="Liberation Mono:style=Bold",face="front",updown=0,rightleft=0,direction="ltr",spacing=1,size=5,extrusion_height=2);
    }
    }
   
    translate([0,0,20])
    {
    difference()  //Alle erzeugten Körper werden aus dem ersten erzeugten ausgeschnitten
      {
        non_cubic_dimensions=[40,10,8];
        cube (non_cubic_dimensions,center=true);    
        text_on_cube("Demo in",locn_vec=[0,0,0],cube_size=non_cubic_dimensions,font="Liberation Mono:style=Bold",face="front",updown=0,rightleft=0,direction="ltr",spacing=1,size=5,extrusion_height=2);
      }
    }
       
    translate([0,0,40])
    {
    difference()  //Alle erzeugten Körper werden aus dem ersten erzeugten ausgeschnitten
      {
        $fn=300; //Anzahl der erzeugten Facetten der Kugel
        sphere(15);
        text_on_sphere("Demo sphere",r=15,font="Liberation Mono:style=Bold",extrusion_height=2,spin=0,northsouth=0,rotate=0,east=10,size=5,rounded=false);
      }
    }