Kategorie: Persönliches

  • Waschmaschinen-Status in Node-RED visualisieren

    Waschmaschinen-Status in Node-RED visualisieren

    So baust du eine intelligente Statusanzeige mit Homematic, Node-RED und Dashboard

    In diesem Beitrag zeige ich dir, wie du mit Node-RED und einer Homematic-Messsteckdose den Status deiner Waschmaschine automatisch ausliest, zuverlässig zwischen „Aus“,„Pause“ und „Fertig“ unterscheidest und den aktuellen Zustand übersichtlich im Dashboard anzeigst. Das Projekt ist ideal, wenn du wissen möchtest, wann deine Wäsche wirklich fertig ist – und nicht nur, ob die Maschine gerade Strom verbraucht.

    1. Ausgangslage und Ziel

    Viele Waschmaschinen machen am Ende des Programms eine längere Pause oder verbrauchen im Leerlauf noch etwas Strom. Einfache Auswertungen (z.B. „unter 4 Watt = fertig“) führen daher oft zu Fehlalarmen.

    Das Ziel:

    • Status „Wäscht“, „Pause“, „Fertig“ und „Aus“ unterscheiden
    • Status im Node-RED Dashboard farbig anzeigen
    • Status automatisch erkennen – auch nach längeren Pausen

    2. Hardware und Voraussetzungen

    • Messsteckdose. Bei mir Homematic-Messsteckdose und Homematic-CCU
    • Node-RED

    3. Funktionsweise im Überblick

    • Die Messsteckdose liefert regelmäßig den aktuellen Stromverbrauch der Waschmaschine.
    • Ein Node-RED Flow wertet die Werte aus:
      • > 4 Watt: Die Maschine läuft („Wäscht“)
      • 1–4 Watt: Entweder Pause oder fertig – das entscheidet die Zeitdauer
      • < 1 Watt:Aus
      • Bleibt der Wert länger als 2 Minuten im Bereich 1–4 Watt, gilt die Maschine als „Fertig“.
      • Das Ergebnis wird im Dashboard farbig und mit Symbolen angezeigt.

    4. Schritt-für-Schritt-Anleitung zum Nachbauen

    4.1 Stromverbrauch einlesen

    Nutze den `ccu-value` Node, um die Messwerte deiner Homematic-Steckdose abzurufen. Stelle sicher, dass der richtige Kanal und Datenpunkt (`POWER`) ausgewählt ist.

    4.2 Logik zur Statusbestimmung

    Eine Function-Node übernimmt die Auswertung und speichert Pausenbeginn und -dauer im Kontext. Hier das zentrale Script:

    //aus = 0
    //wäscht = 1
    //Pause = 2
    //Fertig = 3    
    
    //Konfiguration:
    const fertigWartezeit = 2 * 60 * 1000; //Zeit größer als maximale Waschpause
    const geraetePrefix= "WM";
    
    
    let pauseStart = context.get(geraetePrefix+'pauseStart') || null;
    let isPause = context.get(geraetePrefix+'isPause') || false;
    
    
    if (msg.payload > 4) {
        context.set(geraetePrefix+'pauseStart', null);
        context.set(geraetePrefix+'isPause', false);
        msg.payload = 1; //WÄSCHT
        return msg;
    }
    
    if (msg.payload >= 1 && msg.payload <= 4) {
        if (!isPause) {
            context.set(geraetePrefix+'pauseStart', Date.now());
            context.set(geraetePrefix+'isPause', true);
        } else {
            let pauseDuration = Date.now() - context.get(geraetePrefix+'pauseStart');
            if (pauseDuration > fertigWartezeit) { // 2 Minuten
                msg.payload = 3; //FERTIG
                return msg;
            } else {
                msg.payload = 2; //PAUSE
                return msg;
            }
        }
    }
    
    if (msg.payload < 1) {
        context.set(geraetePrefix+'pauseStart', null);
        context.set(geraetePrefix+'isPause', false);
        msg.payload = 0; // AUS
        return msg;
    }
    return null;
    
    

    Das Script erkennt, ob die Pause länger als 2 Minuten dauert und setzt dann den Status auf „Fertig“.

    4.3 Status farbig und mit Symbolen anzeigen

    Eine zweite Function-Node setzt die passende Farbe für das Dashboard je nach Status. – Mit dem `ui_led` Node wird der Status als farbiger Kreis angezeigt (z.B. Grün = „Fertig“, Rot = „Wäscht“ usw.). Zusätzlich zeigt ein `ui_text` Node den Status als Text mit Symbol an (z.B. ✅ Fertig, 🚿 Wäscht, 💤 Pause, Aus).

    4.4 Sichtbarkeit im Dashboard steuern

    Mit einem `switch` Node und `ui_control` kannst du z.B. die Statusanzeige im Dashboard ein- oder ausblenden, je nachdem, ob die Maschine gerade läuft.

    5. Flow-Übersicht

    So ist der Flow aufgebaut:

    1. Datenquelle: `ccu-value` Node liest den Stromverbrauch der Waschmaschine ein.

    2. Status-Logik: Function-Node wertet den Verbrauch aus und bestimmt den Status (Aus, Wäscht, Pause, Fertig).

    3. Visualisierung: `ui_led` zeigt den Status farbig an. – `ui_text` gibt den Status als Text mit Symbol aus.

    4. Dashboard-Steuerung: Mit `switch` und `ui_control` wird die Statusanzeige im Dashboard dynamisch ein- oder ausgeblendet.

    6. Tipps zum Nachbauen

    – Passe die Schwellenwerte (1 Watt, 4 Watt, 2 Minuten) ggf. an deine Waschmaschine an.

    – Die Context-Variablen (`context.get`, `context.set`) funktionieren direkt in der Function-Node – für dauerhafte Speicherung kannst du in den Node-RED Einstellungen die Persistenz aktivieren.

    – Das Dashboard kannst du nach Belieben gestalten und z.B. Benachrichtigungen ergänzen.

    NodeRed ExportFile

    Screenshot aus Nodered mit dem Ablauf.

    Hier des komplette NodeRed Export File:

    [
        {
            "id": "7468c89c.1ade48",
            "type": "ui_led",
            "z": "bad75d9.4aa3d2",
            "order": 1,
            "group": "804512e2.d68c78",
            "width": 0,
            "height": 0,
            "label": "Waschmaschine Status",
            "labelPlacement": "left",
            "labelAlignment": "left",
            "colorForValue": [
                {
                    "color": "#000000",
                    "value": "0",
                    "valueType": "num"
                },
                {
                    "color": "#ff0000",
                    "value": "1",
                    "valueType": "num"
                },
                {
                    "color": "#008000",
                    "value": "4",
                    "valueType": "num"
                },
                {
                    "color": "#ffff00",
                    "value": "3",
                    "valueType": "num"
                }
            ],
            "allowColorForValueInMessage": false,
            "shape": "circle",
            "showGlow": true,
            "name": "",
            "x": 770,
            "y": 720,
            "wires": []
        },
        {
            "id": "30d60409.e9cbf4",
            "type": "ccu-value",
            "z": "bad75d9.4aa3d2",
            "name": "",
            "iface": "HmIP-RF",
            "channel": "0001DD89973D01:6 Waschmaschine Messwerte",
            "datapoint": "POWER",
            "mode": "",
            "start": true,
            "change": true,
            "cache": true,
            "queue": true,
            "on": 0,
            "onType": "undefined",
            "ramp": 0,
            "rampType": "undefined",
            "working": false,
            "ccuConfig": "38263145.35ea0e",
            "topic": "${CCU}/${Interface}/${channel}/${datapoint}",
            "x": 170,
            "y": 800,
            "wires": [
                [
                    "2f8e95d3.efcc12",
                    "38b915d0.e2e612",
                    "1af2f084.d28617",
                    "93e9e08c.743e3"
                ]
            ]
        },
        {
            "id": "aff7bd59.1cc148",
            "type": "ccu-sysvar",
            "z": "bad75d9.4aa3d2",
            "name": "Waschmaschinen",
            "ccuConfig": "38263145.35ea0e",
            "topic": "ReGaHSS/${Name}",
            "change": true,
            "cache": true,
            "x": 810,
            "y": 840,
            "wires": [
                []
            ]
        },
        {
            "id": "5ecf759a.3b5cec",
            "type": "switch",
            "z": "bad75d9.4aa3d2",
            "name": "",
            "property": "payload",
            "propertyType": "msg",
            "rules": [
                {
                    "t": "eq",
                    "v": "0",
                    "vt": "num"
                },
                {
                    "t": "neq",
                    "v": "0",
                    "vt": "num"
                }
            ],
            "checkall": "true",
            "repair": false,
            "outputs": 2,
            "x": 770,
            "y": 800,
            "wires": [
                [
                    "6ce3799b.fcee4"
                ],
                [
                    "e7f5082f.5b766"
                ]
            ]
        },
        {
            "id": "9a6b6dc2.f90e9",
            "type": "ui_ui_control",
            "z": "bad75d9.4aa3d2",
            "name": "",
            "events": "all",
            "x": 1400,
            "y": 820,
            "wires": [
                []
            ]
        },
        {
            "id": "e7f5082f.5b766",
            "type": "change",
            "z": "bad75d9.4aa3d2",
            "name": "",
            "rules": [
                {
                    "t": "set",
                    "p": "payload",
                    "pt": "msg",
                    "to": "{\"group\":{\"show\":[\"Übersicht_Waschmaschine\"]}}",
                    "tot": "json"
                }
            ],
            "action": "",
            "property": "",
            "from": "",
            "to": "",
            "reg": false,
            "x": 1200,
            "y": 840,
            "wires": [
                [
                    "9a6b6dc2.f90e9"
                ]
            ]
        },
        {
            "id": "6ce3799b.fcee4",
            "type": "change",
            "z": "bad75d9.4aa3d2",
            "name": "",
            "rules": [
                {
                    "t": "set",
                    "p": "payload",
                    "pt": "msg",
                    "to": "{\"group\":{\"hide\":[\"Übersicht_Waschmaschine\"]}}",
                    "tot": "json"
                }
            ],
            "action": "",
            "property": "",
            "from": "",
            "to": "",
            "reg": false,
            "x": 1200,
            "y": 800,
            "wires": [
                [
                    "9a6b6dc2.f90e9"
                ]
            ]
        },
        {
            "id": "5779e7d7.bdc",
            "type": "function",
            "z": "bad75d9.4aa3d2",
            "name": "Color",
            "func": "//aus = 0\n//wäscht = 1\n//Pause = 2\n//Fertig = 3  \n\nif (msg.payload == 0) {\n        msg.color = \"black\";\n    } else if (msg.payload == 1) {\n        msg.color = \"red\";\n    } else if (msg.payload == 2) {\n        msg.color = \"yellow\";\n    } else if (msg.payload == 3) {\n        msg.color = \"green\";\n    } else {\n        \n    }\nreturn msg;",
            "outputs": 1,
            "noerr": 0,
            "initialize": "",
            "finalize": "",
            "x": 770,
            "y": 760,
            "wires": [
                [
                    "30bbff38.105e28"
                ]
            ]
        },
        {
            "id": "30bbff38.105e28",
            "type": "change",
            "z": "bad75d9.4aa3d2",
            "name": "Auf/Zu",
            "rules": [
                {
                    "t": "change",
                    "p": "payload",
                    "pt": "msg",
                    "from": "1",
                    "fromt": "num",
                    "to": "🚿 Wäscht",
                    "tot": "str"
                },
                {
                    "t": "change",
                    "p": "payload",
                    "pt": "msg",
                    "from": "0",
                    "fromt": "num",
                    "to": "Aus",
                    "tot": "str"
                },
                {
                    "t": "change",
                    "p": "payload",
                    "pt": "msg",
                    "from": "3",
                    "fromt": "num",
                    "to": "✅ Fertig",
                    "tot": "str"
                },
                {
                    "t": "change",
                    "p": "payload",
                    "pt": "msg",
                    "from": "2",
                    "fromt": "num",
                    "to": "💤 Pause",
                    "tot": "str"
                }
            ],
            "action": "",
            "property": "",
            "from": "",
            "to": "",
            "reg": false,
            "x": 980,
            "y": 760,
            "wires": [
                [
                    "cb85db23.4db7f"
                ]
            ]
        },
        {
            "id": "cb85db23.4db7f",
            "type": "ui_text",
            "z": "bad75d9.4aa3d2",
            "group": "c9559968.740fd8",
            "order": 0,
            "width": 0,
            "height": 0,
            "name": "Waschmaschine - Übersicht",
            "label": "🧼 Waschmaschine",
            "format": "<font color=\"{{msg.color}}\"> {{msg.payload}}</font>",
            "layout": "row-spread",
            "x": 1236.5500030517578,
            "y": 758.5499877929688,
            "wires": []
        },
        {
            "id": "2f8e95d3.efcc12",
            "type": "function",
            "z": "bad75d9.4aa3d2",
            "name": "",
            "func": "//aus = 0\n//wäscht = 1\n//Pause = 2\n//Fertig = 3    \n\n//Konfiguration:\nconst fertigWartezeit = 2 * 60 * 1000; //Zeit größer als maximale Waschpause\nconst geraetePrefix= \"WM\";\n\n\nlet pauseStart = context.get(geraetePrefix+'pauseStart') || null;\nlet isPause = context.get(geraetePrefix+'isPause') || false;\n\n\nif (msg.payload > 4) {\n    context.set(geraetePrefix+'pauseStart', null);\n    context.set(geraetePrefix+'isPause', false);\n    msg.payload = 1; //WÄSCHT\n    return msg;\n}\n\nif (msg.payload >= 1 && msg.payload <= 4) {\n    if (!isPause) {\n        context.set(geraetePrefix+'pauseStart', Date.now());\n        context.set(geraetePrefix+'isPause', true);\n    } else {\n        let pauseDuration = Date.now() - context.get(geraetePrefix+'pauseStart');\n        if (pauseDuration > fertigWartezeit) { // 2 Minuten\n            msg.payload = 3; //FERTIG\n            return msg;\n        } else {\n            msg.payload = 2; //PAUSE\n            return msg;\n        }\n    }\n}\n\nif (msg.payload < 1) {\n    context.set(geraetePrefix+'pauseStart', null);\n    context.set(geraetePrefix+'isPause', false);\n    msg.payload = 0; // AUS\n    return msg;\n}\nreturn null;\n",
            "outputs": 1,
            "noerr": 0,
            "initialize": "",
            "finalize": "",
            "x": 460,
            "y": 800,
            "wires": [
                [
                    "5ecf759a.3b5cec",
                    "5779e7d7.bdc",
                    "7468c89c.1ade48",
                    "aff7bd59.1cc148"
                ]
            ]
        },
        {
            "id": "804512e2.d68c78",
            "type": "ui_group",
            "name": "Waschmaschine",
            "tab": "f2ef0293.ecfaa",
            "order": 3,
            "disp": true,
            "width": "6",
            "collapse": false
        },
        {
            "id": "38263145.35ea0e",
            "type": "ccu-connection",
            "name": "localhost",
            "host": "localhost",
            "regaEnabled": true,
            "bcrfEnabled": true,
            "iprfEnabled": true,
            "virtEnabled": true,
            "bcwiEnabled": false,
            "cuxdEnabled": false,
            "regaPoll": true,
            "regaInterval": "30",
            "rpcPingTimeout": "60",
            "rpcInitAddress": "127.0.0.1",
            "rpcServerHost": "127.0.0.1",
            "rpcBinPort": "2047",
            "rpcXmlPort": "2048"
        },
        {
            "id": "c9559968.740fd8",
            "type": "ui_group",
            "name": "Waschmaschine",
            "tab": "b6d53ae.0a35fc8",
            "order": 5,
            "disp": false,
            "width": "6",
            "collapse": false
        },
        {
            "id": "f2ef0293.ecfaa",
            "type": "ui_tab",
            "name": "Hausgeräte",
            "icon": "filter_vintage",
            "order": 9,
            "disabled": false,
            "hidden": false
        },
        {
            "id": "b6d53ae.0a35fc8",
            "type": "ui_tab",
            "name": "Übersicht",
            "icon": "home",
            "order": 1,
            "disabled": false,
            "hidden": false
        }
    ]
    

    7. Fazit

    Mit diesem Node-RED Flow weißt du immer genau, wann deine Waschmaschine wirklich fertig ist – auch wenn sie am Ende noch eine Weile „herumtrödelt“. Das System ist flexibel, einfach nachzubauen und lässt sich auch für andere Geräte anpassen.

  • Microsoft Visio 2016 mit WINE installieren

    Wie man Microsoft Visio 2016 unter Linux mit Wine installiert.

    Wine etc. installieren.

    # sudo apt install wine-stable winbind winetricks

    Wine Umgebung im Verzeichnis „~/.wine-visio“ erstellen.

    # WINEPREFIX="$HOME/.wine-visio" WINEARCH=win32 wineboot -i

    # WINEPREFIX="$HOME/.wine-visio" WINEARCH=win32 winecfg

    Erweiterungen installieren:

    # WINEPREFIX="$HOME/.wine-visio" WINEARCH=win32 winetricks dotnet20 gdiplus msxml6 riched20 corefonts vcrun2017

    Microsoft Visio 2016 installieren:

    # WINEPREFIX="$HOME/.wine-visio" WINEARCH=win32 wine ~/Downloads/Setup.x86.de-DE_VisioProRetail_XXXXX-XXXXX-XXXXX-XXXXX-XXXXX_TX_PR_.exe

    Die Dateien AppvIsvSubsystems32.dll und C2R32.dll von /Program Files/Common Files/Microsoft Shared/ClickToRun/ nach /Program Files/Microsoft Office/root/Office16/ kopieren.

    Visio das erste mal starten:

    # WINEPREFIX="$HOME/.wine-visio" WINEARCH=win32 wine ~/.wine-visio/drive_c/Program\ Files/Microsoft\ Office/root/Office16/VISIO.EXE

    Backup vom installierten und aktivierten Visio erstellen
    # tar -cvjSf Visio-Wine-Aktiviert-32.tar.bz2 .wine-visio

  • Veracrypt, UEFI, Windows 10 und der Bootloop

    Veracrypt, UEFI, Windows 10 und der Bootloop

    Veracrypt ist ein Programm zum Verschlüsseln von Festplatten. Es legt bei der Installation einen Booteintrag „VeraCrypt BootLoader (DcsBoot)“ im UEFI (früher BIOS) an. Dieser muss als Standard-Booteintrag markiert werden, damit Veracrypt die Festplatte für den Bootvorgang entschlüsseln kann.

    Die Fehlermeldung lautet: „Automatic Repair
    Automatic Repair couldn't repair your PC
    Press "Advanced options" to try other options to repair your PC or "Shut down" to turn off your PC.
    Log file: C:\WINDOWS\System32\Logfiles\Srt\SrtTrail.txt

    UEFI-Passwort schützt Veracrypt vor Windows

    Ist Veracrypt korrekt eingerichtet, versucht Windows immer wieder die UEFI Einträge zu „reparieren“ ohne den Anwender zu fragen. Dies geschieht spätestens bei größeren Updates.
    Richtet man ein UEFI-Administrator-Passwort ein, so kann das Betriebssystem nicht mehr die UEFI Einträge oder ihre Reihenfolge ändern. 1234 als Passwort ist hier vollkommen ausreichend. Verwendet man Veracrypt und Windows 10 ist es Pflicht ein UEFI-Admin-Kennwort zu setzen.

    Wenn Windows mit Veracrypt nicht mehr bootet.

    Bootet Windows mit Veracrypt nicht, liegt dies oft an fehlerhaften UEFI-Boot-Einträgen. Diese können durch Windows-Reperaturversuche verursacht worden sein. Eine weitere Ursache können BIOS-Updates/UEFI-Updates sein, die zu einer BIOS-Amnesie in Sachen UEFI-Einträge führen.

    UEFI-Booteintrag von Hand erstellen

    In dem UEFI von manchen Herstellern wie z.B. Dell kann man diese von Hand erstellen. Der Original-Eintrag von Veracrypt lautet: „VeraCrypt BootLoader (DcsBoot)“ und zeigt auf die Datei „\EFI\VERACRYPT\DCSBOOT.EFI“.
    Bei Dell findet man die Einstellung unter: Settings → General → Boot Sequence → Boot List Option, wenn man UEFI anklickt.

    Mit EFI-Shell von Hand booten

    Andere Hersteller wie MSI unterstützen das neue Anlegen von UEFI-Einträgen nicht. Es gibt dafür Zugriff auf eine UEFI-Konsole. Über diese kann man per Kommandozeile von Hand den Veracrypt-Bootloader laden, womit Windows jeweils einmal hochfährt. In die UEFI-Konsole von MSI kommt man über den „Advanded“ Modus. Dann „Settings“ → „Speicher & Verlassen“ → „UEFI: Built-in EFI-Shell“. Der Syntax erinnert an eine DOS-Kommandozeile. Man bekommt zu Beginn alle Laufwerke angezeigt. Das Laufwerk wechselt man indem man den Namen und dann einen Doppelpunkt eingibt. Also:

    Shell> hd12a65535a2:

    Es folgt die Bestätigung:

    hd12a65535a2:\>

    Mit

    cd EFI\VeraCrypt

    wechselt man in das Verzeichnis des Veracrypt Bootloaders.
    Mit

    DcsBootefi

    führt man ihn aus. Es folgt die Passwortabfrage von Veracrypt.

    Veracrypt Booteintrag reparieren

    Es gibt viele Windows Tools mit denen man UEFI-Einträge ändern kann.

    1. bcdedit: Ein Windowseigenes Tool. Man führt es über die Windows Kommandozeile (CMD) aus (Als Administrator ausführen)bcdedit /set {bootmgr} path \EFI\VERACRYPT\DCSBOOT.EFI
    2. BOOTICE

    Bei mir führte jeglicher Versuch einer Änderung zu einem Bluescreen mit dem Stop Code: ATTEMPTED_EXECUTE_OF_NOEXECUTE_MEMORY
    Kann man den Rechner noch booten, z.B. über die EFI-Shell ist die einfachste und sicherste Lösung ein funktionierendes System zu erhalten,

    1. die Festplatte einmal komplett von Veracrypt entschlüsseln zu lassen.
    2. Dann den Rechner ohne Veracrypt neu starten
    3. Die Systemfestplatte neu verschlüsseln. Dabei den freien Speicher von Veracrypt einmal überschreiben lassen.
    4. UEFI-Administrator Passwort setzen, damit Windows die Einträge nicht „reparieren“ kann.
    5. Sich vor BIOS/UEFI-Updates überlegen, wie man danach den Rechner wieder bootet.

    Schnellere Lösungen, die nicht zu empfehlen sind:

    Es gibt andere Lösungen, die empfehlen den Windows Bootmanager durch den Veracrypt Bootmanager zu ersetzen und ein Backup unter anderem Namen von Veracrypt laden zu lassen. Dies funktioniert genau so lange bis Windows seinen Bootmanager repariert. Anders als die UEFI-Einträge, lässt sich das Laufwerk mit BootManager und Bootloader nicht gegen Veränderungen schützen, so dass diese Lösung nur kurz zum Erfolg führt. Schlimmer noch: Wird das Systemlaufwerk entschlüsselt, fährt Windows nicht mehr hoch, weil der Veracrypt Bootmanager nicht korrekt deinstalliert wird.

  • Backup & Restore bei Android ohne Root mit ADB

    Backup & Restore bei Android ohne Root mit ADB

    Wer ein Android Smartphone hat, möchte ggf. seine Daten sichern. Wenn man sein Gerät nicht Rooten möchte, um dies zu tun, kann man es mit dem Google Kommandozeilentool adb tun.
    (mehr …)

  • Sonnenuntergang über Rapsfeld bei Geschendorf

    Sonnenuntergang über Rapsfeld bei Geschendorf

    Ich am 1.Mai ein paar Belichtungsreihen gemacht und diese in das HDR Efex Pro aus der Nik Collection geworfen. Das Ergebnis sieht so aus.

    Die volle Auflösung gibt es, wenn du auf das Foto clickst.

    2016-05-01-Sonnenuntergang-Rapsfeld-Geschendorf1

    2016-05-01-Sonnenuntergang-Rapsfeld-Geschendorf2

    2016-05-01-Sonnenuntergang-Rapsfeld-Geschendorf3

    2016-05-01-Sonnenuntergang-Rapsfeld-Geschendorf4

  • Skylake unter Linux zum laufen kriegen am Beispiel eines Dell Latitude E7270

    Skylake unter Linux zum laufen kriegen am Beispiel eines Dell Latitude E7270

    Versucht man einen Skylake Prozessor mit entsprechendem Chipsatz unter Ubuntu 15.10 zum laufen zu bekommen erhält man Fehlermeldungen wie diese, wenn man den Rechner an eine Dell Dockingstation anschließt:

    [drm:intel_dp_start_link_train [i915]] *ERROR* too many voltage retries, give up
    [drm:indel_dp_complete_link_train [i915]] *ERROR* Timed out waiting for DP idle patterns
    Kernel panic - not syncing: Timeout: Not all CPUs entered broadcast exception handler
    Shutting down spus with NMI
    Kernel Offset: disabled
    Rebooting in 30 seconds..
    ACPI MEMORY or I/O RESET_REG

    Die Lösung:

    1. Bios Update durchführen: Quelle für Dell E7270 A03. Achtung. ggf. gibt es eine neuere Version. Installation geht ohne OS.
    2. Ubuntu 16.04 installieren (AMD64).
    3. neusten Kernel (AMD64, generic) mit Intel Treiber installieren.
      # cd /tmp
      # wget http://kernel.ubuntu.com/~kernel-ppa/mainline/drm-intel-next/current/linux-headers-4.5.X-XXX-generic_4.5.0-XXX.ZEISTEMPEL_amd64.deb
      # wget http://kernel.ubuntu.com/~kernel-ppa/mainline/drm-intel-next/current/linux-headers-4.5.X-XXX_4.5.0-XXX.ZEITSTEMPEL_all.deb
      # wget http://kernel.ubuntu.com/~kernel-ppa/mainline/drm-intel-next/current/linux-image-4.5.X-XXX-generic_4.5.X-XXX.ZEITSTEMPEL_amd64.deb
      # sudo dpkg -i *.deb && rm *.deb
      

      Achtung: Kernel wird alle 14 Tage unter der URL geupdated.

    4. Intel Skylake Firmware installieren.
      Download firmware
      # cd /tmp tar xf skylake-guc-X.X.tar.bz2
      # cd skylake-guc-X.X
      # sudo sh install.sh
    5. Neustarten

    Ergebnis:

    Bis auf das eindocken in eine Dockingstation während ein Benutzer angemeldet ist, scheint alles zu funktionieren. Eindocken führt auch nicht mehr zu einem Absturz. Es wird nur der Bildschirm an der Dockingstation fehlerhaft erkannt. Dies lässt sich durch ab- und wieder anmelden des Benutzers oder reboot in der Dockingstation beheben.

  • Datenschutz außerhalb von Sozialen Netzwerken – Wie verhindere ich, dass Facebook auch was ich ihm nicht sage?

    Loggt man sich mit dem Browser in einer Sozialen Netzwerk Seite (SNS) wie Facebook, Google Plus oder Twitter ein, verrät man diesem seine Identität. Das ist OK, weil man sicher als Nutzer eines SNS bewusst dafür Entscheidet dies zu tun.

    Was eher überraschend ist: mit dem Login auf in dem SNS, wird man auch bei dem Aufruf von vielen anderen Webseiten identifiziert.

    Wie funktioniert das?

    Die Anbieter der SNS haben Instrumente geschaffen um klassische Webseiten mit sozialen Medien einzubinden. Diese findet man auf zahlreichen Webseiten in Form von „+1“ „Like“ oder „Tweet“ Buttons.
    Social-Media-Buttons

    Wenn wir eine Webseite mit einem solchen Button aufgerufen, stellt der Browser eine Verbindung zu dem SNS um den Button zu laden. Dabei werden die Cookies des Browsers und einige andere Informationen an das SNS übermittelt. So weiß z.B. Facebook, welchen Artikel ich bei Spiegel-Online lese. Durch das laden eines solchen Buttons wird beliebiger Programmcode des SNS auf der Webseite ausgeführt. Das kann Analysefunktionen beinhalten,

    • wie lange ich eine Webseite betrachtet habe,
    • wann ich wohin gescrollt habe,
    • Mausbewegungen,
    • Markierungen,
    • Tastatureingaben.

    Daraus lässt sich sehr genau schließen, welche Inhalte den Nutzer interessieren, was seine Vorlieben sind etc.. Das wahllose Öffnen von Webseiten und Artikeln als Ablenkungsmanöver hilft hier nicht, da sich über Maus und Scrollbewegungen sehr genau nachvollziehen lässt, welcher Teil eines Artikels gelesen wurde.

    Darüber hinaus sind auch jegliche Manipulationen an den Inhalten der Webseite denkbar.

    Inhalte von dritten, wie Buttons von SNS stellen also ein massives Risiko für die Privatsphäre da. Es geht sogar noch weiter. Sie bedrohen die Integrität und Authentizität der Inhalte.

    Manipulationen sind aus SNS-Anbieter Sicht einfach. Er versendet einfach bei einer anfrage durch einen Browser einen anderen Programmcode (Javascript), und der Browser führt diesen aus. Der Webseitenbetreiber, der den SNS-Button eingebunden hat, bekommt von diesen Änderungen nichts mit. Aus Nutzersicht ist es theoretisch zwar möglich Änderungen zu erkennen, in der Praxis bleibt dies aber IT-Profis mit zu viel Freizeit vorbehalten.

    Der SNS-Anbieter kann also bei jedem Aufruf einer Webseite anderen Code mitsenden, abhängig davon, wer aufruft und was er aufruft.

    Gegenmaßnahmen

    Es gibt eine ganze Reihe von Maßnahmen, um dem Browser gegen Ausspähungen abzuschirmen. Alle diese Maßnahmen haben eines Gemeinsam: Mehr Sicherheit und Datenschutz bedeutet fast immer weniger Komfort und Benutzbarkeit. Die Maßnahmen unterscheiden sich in Sachen Sicherheitsgewinn, und Benutztbarkeitsverlust. Es gibt durchaus Maßnahmen, die die Sicherheit deutlich erhöhen, und die Benutzbarkeit nur wenig einschränken.

    1. Den Browser aufrüsten.

    Die meisten dieser Maßnahmen verbessern den Datenschutz im Browser im allgemeinen. Dieser Abschnitt konzentriert sich auf den Mozilla Firefox, weil er wesentlich einfacher Datenschutz freundlich zu konfigurieren ist, als Chrom[ium] und Opera. Apple Safari und Microsoft Internet Explorer wurden nicht betrachtet, weil sie auf dem Computer des Autors nicht funktionieren. Anzumerken ist hier, dass der Internet Explorer in seinen neuen Versionen deutliche Fortschritte in Sachen Datenschutzfreundlichkeit gemacht (DNT etc.).

    1.1. Daten bei schließen des Browsers löschen – Bordmittel sinnvoll einsetzen

    Der Browser sammelt bei einer Surfsession viele Informationen. Darunter sind Cookies, Offline Webseiten Daten, Historie, Zwischengespeicherte Daten, Aktive Logins und Formulardaten.

    Im FirefoxFirefox Logo geht dies unter Einstellungen → Datenschutz:

    • →[x] Websites mitteilen, meine Aktivitäten nicht zu verfolgen
    • →[x] Cookies akzeptieren
    • →Behalten, bis „Firefox geschlossen wird“
    • →[x] Die Chronik löschen, wenn Firefox geschlossen wird [Einstellungen]

    Firefox-Datenschutz-Fenster

    Unter [Einstellungen] findet sich ein weiteres Fenster, dass wie folgt konfiguriert werden sollte.

    Auf Passwörter und Webseiteneinstellungen können die Webseiten nicht direkt zugreifen, daher ist es kein Problem aus diese zu speichern. Wenn Passwörter gespeichert werden, ist es wichtig den Rechner zu Sperren, wenn man nicht vor ihm Sitzt.

    Firefox-Datenschutz-Fenster2

    Chrome[ium] hat KEINE Funktion die Surfe Historie automatisch beim schließen zu löschen.

    1.2 Erweiterung: GhosteryGhoster

    Ghostery ist in der Lage SNS-Buttons zu deaktivieren.

    Download: https://addons.mozilla.org/firefox/addon/ghostery/

    Nach der Installation startet ein Assistent. Ich empfehle folgende Einstellung:

    • Ghostrank: NEIN
    • Warnfeld: JA
    • Tracker → Alles auswählen
    • Cookies → Alles auswählen

    2. Dedizierte Social Media Browser

    Das wohl effektivste Mittel um die Sozialen Medien aus dem Normalen Surfen heraus zu halten ist ein extra Browser nur für Soziale Netzwerke. Ich empfehle hier den Firefox für das Normale Web, da er sich über diverse Erweiterungen gut abschotten lässt und den Chrome[ium] Browser für Soziale Netzwerke. Chrome[ium] ist für SNS eher geeignet da er mit Google-Diensten schon sehr eng verheiratetet ist. Diese Nähe ist nur mit viel Aufwand auszutreiben, daher sollte man es gleich bleiben lassen – im Zweifelsfall ändert sich beim nächsten Update eh wieder alles.

    So ruft man SNS nur noch mit dem Chrom[ium]-Browser auf. Die Cookies, und andere Identifikatoren mit denen man über die SNS identifiziert wird, sammeln sich im Chrom[ium]-Browser. Der Firefox weiß jedoch nichts von diesen Cookies, wenn man mit ihm Spiegel Online aufruft und übermittelt sie folglich auch nicht. Es wird erheblich schwerer – jedoch nicht unmöglich – einen einzelnen Nutzer zu verfolgen. Der Verkettende Element des Browsers ist ausgeschaltet.

    2.1 Social Media Browser Konfigurierenchromium-logo

    In diesem Beispiel für eine Konfiguration zum SNS-Browser wird der Chrome[ium]-Browser verwendet. Der Browser wird mit einer Datenschutzfreundlichen Suchmaschine ausgestattet, weil dies einfacher ist, als die Suchfunktion zu deaktivieren. Außerdem wird er so konfiguriert, dass Inhalte nur noch von ausgewählten SNS geladen werden. Führt ein Link von einem SNS auf eine Seite außerhalb des SNS, so wird die Seite nur noch im Textmodus geladen. Alle aktiven Komponenten der Webseite werden, wie Plugins, Programcode usw. aber auch Trackingpixel von Drittanbietern werden ignoriert.

    Möchte man einen Link aus einer SNS-Seite extern aufrufen, muss man die denk Link über die Zwischenablage kopieren und in den Normalen Browser einfügen.

    2.1.1 Datenschutzfreundliche Suchmaschine Auswählen:startpage_logo

    Startingpage liefert die Google Suchergebnisse, ohne das Google weiß, wer gesucht hat. Die Seite wird von ixQuick betrieben und wurde vom EuroPrise Gütesiegel (ULD), zertifiziert. Das Siegel wurde von dem Europäischen Datenschutzbeauftragten Peter Hustinx verliehen.

    https://startpage.com/deu/download-startpage-plugin.html

    Auf den „HTTPS“ Button klicken um Startingpage als Suchmaschine zu installieren.

    Menu → Einstellungen:

    Chromium-Einstellungen

    • „Suchen“
      • [Suchemaschinen verwalten]
        Chromium-Suchmaschinen
      • Hier im unteren Fenster unter „Andere Suchmaschinen“ Startingpage als Standard festlegen.
        Chromium-Startingpage

    2.1.2 Damit die SNS-Seite schnell geladen werden, können sie alle gleichzeitig als Startseite eingerichtet werden:

    • „Beim Start“
      • [x] Bestimmte Seite oder Seiten öffnen
      • Unter dem Punkt Seiten festlegen“ Kann man alle Sozialen Netzwerke, die man regelmäßig nutzt als Startseiten in extra Tabs anlegen, sodass diese beim Start des SMS-Browsers automatisch aufgerufen werden.
        Chromium-Startseite1
        Chromium-Startseite-2

    2.1.3 Browser so modifizieren, dass nur noch Inhalte von Sozialen Netzwerken geladen werden:

    Menu → Einstellungen:

    • Ganz unten: „Erweiterte Einstellungen“ klicken. Daraufhin wird das Konfigurationsfenster deutlich länger.
      Chromium-Erweiterte-Einstellungen
    • „Datenschutz“
      • [Inhaltseinstellungen]
        • „Cookies“
          • [o] Speicherung von Daten für alle Websites blockieren
          • [x] Drittanbieter-Cookies und Websitedaten blockieren
          • [Ausnahmen verwalten] →
            Chromium-Cookies-Ausnahmen

            • Hier die SNS-Seiten eintragen, auf denen man sich einloggen möchte.
            • Beispiel:
              • https://[*.]t.co:443 (Twitter)
              • https://[*.]facebook.com:443
              • https://[*.]joindiaspora.com:443
              • https://[*.]google.com:443
              • https://[*.]google.de:443
              • https://[*.]youtube.com:443
              • https://[*.]twitter.com:443
        • „Bilder“
          • [o] Keine Bilder Anzeigen
          • Auf [Ausnahmen Verwalten] klicken.
            • Hier die SNS-Seiten eintragen, auf denen man sich einloggen möchte. Zum Beispiel:
              • https://[*.]t.co:443 (Twitter)
              • https://[*.]facebook.com:443
              • https://[*.]joindiaspora.com:443
              • https://[*.]google.com:443
              • https://[*.]google.de:443
              • https://[*.]youtube.com:443
              • https://[*.]twitter.com:443
        • „Javascript“
          • [o] Ausführung von Javascript für keine Website zulassen
          • Auf [Ausnahmen Verwalten] klicken.
            • Hier die SNS-Seiten eintragen, auf denen man sich einloggen möchte. Zum Beispiel:
              • https://[*.]t.co:443 (Twitter)
              • https://[*.]facebook.com:443
              • https://[*.]joindiaspora.com:443
              • https://[*.]google.com:443
              • https://[*.]google.de:443
              • https://[*.]youtube.com:443
              • https://[*.]twitter.com:443
        • „Handler“
          • [o] Verarbeitung von Protokollen für keine Website zulassen.
        • „Plug-ins“
          • [o] Standartmäßig blockieren
          • Auf [Ausnahmen Verwalten] klicken. – Dies ist nicht nötig, kann aber dazu führen, dass z.B. Videos in Facebook nicht abgespielt werden können.
            • Hier die SNS-Seiten eintragen, auf denen man sich einloggen möchte. Zum Beispiel:
              • https://[*.]facebook.com:443
              • https://[*.]joindiaspora.com:443
              • https://[*.]google.com:443
              • https://[*.]google.de:443
              • https://[*.]youtube.com:443
              • https://[*.]twitter.com:443
        • „Standort“
          • Abrufen des physischen Standorts für keine Website zulassen.
    • Unter Datenschutz alle Haken entfernen, bis auf:
    • [x] Mit Browserzugriffen eine „Do Not Track“-Anforderung senden
      Chromium-DNT
  • Frostige Kieler Förde

    Frostige Kieler Förde

    Foto von der Blücherbrücke in der Kieler Förde mit Blick Richtung HDW.

  • Frost in Düsternbrook

    Frost in Düsternbrook

    Foto von Kiel Düsternbrook bei Minustemperaturen.

    54,3380792, 10,1541205d

  • Metal Playlist zu Weihnachten für Deezer und Spotify

    Metal Playlist zu Weihnachten für Deezer und Spotify

    Zur Weihnachtszeit hier eine etwas untypische Musikzusammenstellungen. Prima für Metalheads oder einfach nur um die Schwiegereltern zu schocken. ;)

    Hier die Metal Playlist für Deezer oder Spotify:

    Deezer Spotify

    Wenn ihr noch weitere Vorschläge für die Playlist habt, freue ich mich über Hinweise.

    Die einzelnen Alben:

    (mehr …)