Ausgegraute Farben bei einem neuem Intel NUC 10

Heute habe ich meinen neuen Intel NUC 10 in Betrieb genommen. Verbaut ist eine “Intel UHD Graphics”. Ich verwende zwei Full HD Monitore von NEC.

Der eine ist über HDMI angeschlossen und der zweite mit einem USB-C auf DisplayPort Kabel. Dann viel mir auf, dass auf dem Monitor am HDMI Ausgang das Schwarz eher grau war. Ein deutlicher Unterschied zu dem Monitor der an USB-C angeschlossen ist.

Nach kurzem Suchen war klar, dass es daran liegt, dass der Farbraum auf dem HDMI-Port begrenzt wird. Der Bereich geht nicht von 0 bis 255, sondern nur von 16-235. Dadurch wird schwarz grau und die Farben wirken nicht so satt.

Für die Lösung habe ich deutlich länger gebraucht. Intel hat schon vor über zwei Jahren die Option aus dem Control Center raus geschmissen, den Farbraum auf “Full RGB” zu setzen. Aber der Treiber beherrscht es.

Über den Registrierungseditor (regedit) kann man es dem Treiber dann doch noch mitteilen:

Man sucht den Schlüssel:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\{4D36E968-E325-11CE-BFC1-08002BE10318}\0000

Dort erzeugt man einen DWORD-Wert mit dem Namen “EnableRGBFullRange” und setzt ihn auf 1.

Neustart und fertig…

OpenHAB Logo

OpenHAB auf RaspberryPI installieren

Heute ist es so weit. Ich habe keine Lust mehr, meine Homematic Geräte über die nahezu unbrauchbare Weboberfläche der CCU3 zu bedienen. Auf dem Smartphone ist das Verstellen der Raumtemperatur eine echte Qual.

Bei mir steht in vielen Räumen ein Google Home. Also habe ich nach einer Möglichkeit gesucht, die CCU3 an den Google Assistant und somit auch an Google Home zu koppeln.

Neben einigen Bezahl-Lösungen stieß ich auf die kostenlose Variante von OpenHAB. Den RaspberryPI mit einem aktuellen Raspbian habe ich eh im Heimnetz.

Also los…
(Ich bin root und verzichte auf sudo / zusätzlich benötige Pakete installiere ich natürlich mit)

Die Java Alternative Zulu

OpenHAB hätte gerne Zulu in Version 8. Also bitte nicht die 9 installieren.

apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 0x219BD9C9
echo 'deb http://repos.azulsystems.com/debian stable main' > /etc/apt/sources.list.d/zulu.list
apt-get update
apt-get install zulu-embedded-8

OpenHAB installieren

wget -qO - 'https://bintray.com/user/downloadSubjectPublicKey?username=openhab' | sudo apt-key add -
apt-get update
apt-get install openhab2 openhab2-addons apt-transport-https
systemctl enable openhab2.service
service openhab2 start

Danach zeigt der Befehl openhab-cli info, ob der Service läuft und unter welcher URL er zu erreichen ist.

Problem accessing /start/index. Reason:

Probleme

Bei mir kam es dann beim Aufruf der URL zu einer Fehlermeldung:

Problem accessing /start/index. Reason: Not Found

Um das Problem zu lösen meldet man sich an der Konsole von openHAB an:

ssh -p 8101 openhab@localhost

Das Passwort ist: habopen

Danach führt man in der openHAB Konsole folgenden befehl aus:

feature:install openhab-ui-paper
logout

Danach sollte es funktionieren.

Viel Erfolg!

HOWTO: SeedDMS installieren

Wer versucht SeedDMS (Document Management System) zu installieren wird schnell feststellen, dass es keinen Installationsleitfaden gibt. Ohne ein wenig Linux Kenntnisse gestaltet sich die Installation recht schwierig.

Aus diesem Grund habe ich meine Installation auf einem frisch aufgesetzten Ubuntu 16.04 dokumentiert. Ich arbeite als root und lasse deshalb das sudo vor jedem Befehl weg. Die Versionsnummern der Installationspakete müssen selbstverständlich mit der Zeit angepasst werden, wenn neuere Versionen zum Download bereit stehen.

Wir beginnen mit den benötigten Paketen für Ubuntu:

apt-get update
apt-get install apache2 php7.0 mysql-server libapache2-mod-php7.0 php7.0-xml php7.0-gd php7.0-mbstring php7.0-mysql php-pear 
apt-get install zend-framework imagemagick id3 poppler-utils catdoc docx2txt
pear install Log
pear install channel://pear.php.net/HTTP_WebDAV_Server-1.0.0RC8
pear install Mail
pear install Net_SMTP

Um die Sicherheit zu erhöhen, führen wir folgendes Script aus:

mysql_secure_installation

Installation von SeedDMS (https://sourceforge.net/projects/seeddms/files):

cd /var/www
wget https://sourceforge.net/projects/seeddms/files/seeddms-5.1.6/seeddms-5.1.6.tar.gz/download
mv download seeddms-5.1.6.tar.gz
tar -xzf seeddms-5.1.6.tar.gz
rm seeddms-5.1.6.tar.gz
mv seeddms-5.1.6 dms
touch /var/www/dms/conf/ENABLE_INSTALL_TOOL
cp /var/www/dms/conf/settings.xml.template /var/www/dms/conf/settings.xml
chown -R www-data:www-data /var/www/dms

Verzeichnisse für die Daten anlegen:

mkdir /var/dms /var/dms/data /var/dms/data/lucene /var/dms/data/staging/ /var/dms/data/cache/
chown -R www-data:www-data /var/dms

Weitere dazugehörige Dateien mit wget von Sourceforge in temporären Ordner herunterladen und installieren:

pear install SeedDMS_Core-5.1.6.tgz
pear install SeedDMS_Lucene-1.1.12.tgz
pear install SeedDMS_SQLiteFTS-1.0.9.tgz
pear install SeedDMS_Preview-1.2.8.tgz

In der Datei settings.xml muss die Zeile dbDriver angepasst werden:

dbDriver = "mysql"

Anlegen der Datenbank. ‘Passwort’ sollte natürlich geändert werden:

mysql -u root -p
CREATE USER 'dms'@'localhost' IDENTIFIED WITH mysql_native_password AS 'Passwort';
SET PASSWORD FOR 'dms'@'localhost' = PASSWORD('Passwort');
GRANT USAGE ON *.* TO 'dms'@'localhost' REQUIRE NONE WITH MAX_QUERIES_PER_HOUR 0 MAX_CONNECTIONS_PER_HOUR 0 MAX_UPDATES_PER_HOUR 0 MAX_USER_CONNECTIONS 0;
CREATE DATABASE IF NOT EXISTS `dms`;
GRANT ALL PRIVILEGES ON `dms`.* TO 'dms'@'localhost';
quit

Anlegen der Apache-Config:

nano /etc/apache2/sites-available/dms.conf

mit dem Innhalt:

<VirtualHost *:80>
        ServerName dms.musterser.ver
        ServerAdmin abuse@musterser.ver
        DocumentRoot /var/www/dms
        ErrorLog ${APACHE_LOG_DIR}/error.log
        CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

Anschließend notwendige Module und die Konfiguration aktivieren:

ln -s /etc/apache2/sites-available/dms.conf /etc/apache2/sites-enabled/
a2enmod rewrite
service apache2 restart

Nun sind wir so weit und können über die Weboberfläche die Konfiguration fortsetzen, indem wir die Seite http://dms.musterser.ver/install/install.php aufrufen.
Dort sollte die SeedDMS Installationsseite kommen. Hier sind nun die gewünschten Verzeichnisse und die Daten der Datenbankanbindung zu vergeben.

Root directory: /var/www/dms/
Http Root: /
Content directory: /var/dms/data/
Directory for full text index: /var/dms/data/lucene/
Directory for partial uploads: /var/dms/data/staging/
Cache directory: /var/dms/data/cache/

Database Type: mysql
Server name: localhost
Database: dms
Username: dms
Password: Passwort
Create database tables: Unbedingt auswählen

Danach kommt man mit Benutzer und Passwort ‘admin’ auf die Einstellung-Seite. Ab hier können die gewünschten Einstellungen über die Website vorgenommen werden.

Abschließend möchte ich noch darauf hinweisen, dass man so ein System im produktiven Umfeld nicht ohne Verschlüsselung (SSL/HTTPs) laufen lassen sollte. Aber wie man Apache2 absichert beschreiben diverse andere HOWTOs im Netz. Darum gehe ich hier nicht mehr darauf ein.

Ich hoffe das kurze HOWTO ist hilfreich. Ich freue mich über Kommentare 😉

Zahnstein beim Hund ohne Vollnarkose entfernen

Vor einigen Wochen war ich mit Balko bei unserem Tierarzt für den jährlichen Gesundheitscheck. Es kam genau so, wie ich es erwartet hatte: Der Hund ist gesund, das Gewicht noch gerade so okay, aber der Zahnstein muss runter.

Balko ist inzwischen knapp neun Jahre alt und genau wie alle anderen Hundebesitzern zucke auch ich zusammen, wenn ich das Wort Vollnarkose höre. Der Tierarzt hat also auf meinen Wunsch hin Blut abgenommen, um ganz sicher zu gehen, dass Balko keine anderen Krankheiten hat und die Narkose gut überstehen wird. Das Blut kam ins Labor und ich hatte ein paar Tage Zeit nach Alternativen zu suchen.

Also habe ich am nächsten Tag erst mal Google befragt. Dabei bin ich auf zwei Möglichkeiten gestoßen, die von vielen Hundebesitzern mit viel Erfolg genutzt werden. Zumindest sieht es so in den Bewertungen aus. Das eine ist die Emmi-Pet Ultraschall-Zahnbürste für Haustiere samt dazugehöriger Emmi-Pet Zahnpasta. Aber mit 199 Euro ist das ein stolzer Preis.

Viel günstiger ist da eine unscheinbare Tinktur mit dem Namen FORTAN Zahnpflege, die man für deutlich unter zehn Euro kaufen kann. Bevor ich also fast zweihundert Euro für etwas ausgebe, bei dem ich mir nicht sicher bin, ob es funktioniert, bestelle ich mir doch lieber erst mal das günstige Produkt.

Zwei Tage später war die FORTAN Zahnpflege da und die Blutergebnisse auch. Balko ist fit und es spricht nichts gegen eine Narkose. Egal! Ich will keine Narkose für Balko, wenn es nicht unbedingt sein muss.

Also legten wir los. Ein Fingerling, den wir noch zu Hause hatten, wurde mit der Tinktur befeuchtet. Anschließend haben wir die Flüssigkeit mit dem Fingerling auf die Zähne aufgetragen. An den Stellen, an den viel Zahnstein vorhanden war, haben wir auch etwas länger geputzt. Da die Zahnpflege leicht süßlich riecht, hat Balko die Prozedur auch mit wenig Gegenwehr über sich ergehen lassen.

Nach einer Woche täglicher Anwendung hatte sich optisch nicht viel getan. Aber Balko wusste schon, wenn der Fingerling kam, dass es jetzt wieder los geht. Begeisterung sieht bei ihm anders aus, aber es scheint erträglich zu sein, denn er hat auch nicht versucht, sich zu verdrücken.

Nach knapp zwei Wochen wurde ich ungeduldig und bin mit meinem Daumennagel an einen Eckzahn gegangen. Ich wollte sehen, ob sich der Zahnstein vielleicht zumindest ein bisschen gelöst hat. Knack! Es löste sich eine kleine Platte Zahnstein in der Größe von ca. 2×2 mm. Also schnell weiter. So war es überall. Ich konnte den Zahnstein ohne Probleme mit den Fingernägeln von Balkos Zähnen kratzen. Nach ca. 5 Minuten hatte ich einen genervten Hund ohne sichtbaren Zahnstein. Aber der Zweck heiligt eben doch die Mittel.

Die Falsche FORTAN Zahnpflege ist auch nach den zwei Wochen täglicher Benutzung noch zu dreiviertel gefüllt. Es ist also auch noch sehr sparsam. Nachdem der Zahnstein entfernt ist, soll man das Produkt weiterhin 1-2 mal pro Woche anwenden um die Neuentstehung von Zahnstein zu verhindern.

Jetzt überlege ich, ob ich das Zeug mal an mir selber ausprobiere. Vielleicht kann ich mir damit sogar die PZR beim Zahnarzt sparen 😉 (Nicht so ernst gemeint)

Zum Schluss noch die vorher-nachher Bilder von Balko. Es liegen, wie beschrieben, ca. zwei Wochen zwischen den Aufnahmen:

Aufnahmen von Balkos Zähnen im Abstand von zwei Wochen
© Sebastian Gerlach

Aufnahmen von Balkos Zähnen im Abstand von zwei Wochen
© Sebastian Gerlach

WordPress durch Cronjob beschleunigen

Kurz dokumentiert:

Es gibt eine einfache Möglichkeit, die Antwortzeiten von WordPress zu beschleunigen. In einer Standard-Installation wird bei jedem einzelnen Seitenaufruf zusätzlich die wp-cron.php ausgeführt.

Wenn ihr Zugriff auf die Cronjobs des Webservers habt, kann man dieses Verhalten abschalten und die wp-cron.php mittels Cronjob in regelmäßigen Abständen ausführen. Für den Besucher verbessern sich dadurch die Zugriffszeiten und der Traffic sinkt.

Es sind nur zwei Schritte erforderlich:
1) In der Datei wp-config.php tragt ihr folgende Zeile direkt unterhalb von ‘define(‘DB_COLLATE’, ”);’ ein:

define('DISABLE_WP_CRON', true);

2) In der Crontab wir folgende Zeile ergänzt:

59 * * * * www-data /usr/bin/php -f /var/www/<Pfad zur WP-Installation>/wp-cron.php

In meinem Beispiel führt nun der User www-data jede Stunde in der 59 Minute den Cronjob aus. In den meißten Fällen wird eine stündliche Ausführung genügen.