Pihole Update mit PHP8 schlägt fehl

Posted by quark007 | Posted in Computer & IT, Programmieren / Coden | Posted on 16-04-2021-05-2008

0

beim heutigen Update meiner PiHole Installation kam es zu folgendem Fehler

package 'php8.0-json' has no installation candidate

DAs ist soweit auch in Ordnung, da PHP8 das JSON Modul mittlerweile mitbringt. Aber die PiHole Installation ist mit PHP7.4 zur Zeit freigegeben (da das auch die unterstützte Version von Debian 10 “Buster”) ist.

Bei mir läuft aber die DietPI Distro und die hat mir PHP8 installiert beim Update.

Es gibt aber eine Möglichkeit zwischen installierten PHP-Versionen zu wechseln. Daher habe ich zunächst wieder PHP7.4 installiert (kann man sich sparen, wenn es noch installiert ist).

Anschließend konnte die Version mit dem folgenden Befehl ausgewählt werden (gefunden hier):

sudo update-alternatives --config php

Im sich zeigen Auswahldialog kann nun die zu aktivierende PHP Version ausgewählt werden. Nach Eingabe der Nummer und bestätigen mit Enter funktioniert das PiHole Update (pihole -up) einwandfrei.

Ob ein nachträgliches Wechseln auf PHP8.0 dann wieder funktioniert, habe ich noch nicht ausprobiert.

CaptivePortal Check mit PiHole

Posted by quark007 | Posted in Computer & IT, Smartphone & Android | Posted on 05-04-2021-05-2008

0

Schon vor langer Zeit hatte ich mit den Artikel von Kuketz-Blog vorgenommen und bei meinen Smartphones den Captiveportal Check umgestellt. Doch bei einem Smartphone ging das nicht und ich hatte keine Idee wieso. Egal was ich eingestellt hatte, es wurde immer noch der check auf google/gstatic/android gelaufen ist.

Da mein PiHole ja sowieso läuft und von Hausaus einen Webserver mitbringt, sollte sich das doch lokal einstellen lassen. Seit der neuesten Version von PiHole gibt es auch die Möglichkeit DNSrecords direkt einzugeben. Damit können also die CaptivePortal Adressen direkt auch auf das PiHole selbst geleitet werden ohne umwege über die hosts-datei.

Zunächst habe ich für captiveportal eine eigenen lighttpd vhost angelegt:

$HTTP["host"] =~ "connectivitycheck" {
        server.document-root = "/var/www/captiveportal/"
        include "/var/www/captiveportal/rewrite.conf"
}
$HTTP["host"] =~ "msftconnecttest.com" {
    server.document-root = "/var/www/captiveportal/"
    $HTTP["url"] =~ "^/connecttest.txt$" {
        url.redirect = ( "" => "index.php" )
        url.redirect-code = 302
    }
    $HTTP["url"] =~ "^/redirect$" {
        url.redirect = ( "" => "index.php" )
        url.redirect-code = 302
    }
}

Anschließend musste noch die index.php angelegt werden, die nichts anders macht als den Status-Code 204 zurückzugeben.

<?php header("HTTP/1.0 204 No Content"); ?>

Ein Problem gibt es noch: von einigen Android-Versionen wird die folgende URL aufgerufen: connectivitycheck.gstatic.com/generate_204 (ohne Slash am Ende). Anfangs hatte ich versucht über eine 301 Weiterleitung den 204 Status auszugeben, was aber nicht funktioniert hat (da Android für diesen Check der Weiterleitung nicht folgt).

Ich habe mich dafür dann dem mod-rewrite Modul bedient und folgende Regel erstellt:

url.rewrite-if-not-file = (
    "^/(.+)/?$" => "/index.php"
)

Dieses Regel-File ist in der Seiten-Konfiguration (siehe oben) schon enthalten (mittels include). Es leitet einfach jede Anfrage auf die index.php um, wenn es die Datei nicht gibt.

Damit erhalte ich nun endlich nicht mehr die nervigen Benachrichtigungen, dass ich mich im Netzwerk anmelden müsste. Das lässt sich auch ganze einfach prüfen, indem im Browser die URL connectivitycheck.gstatic.com/generate_204 (mit und ohne Slash) aufgerufen wird und über die Entwicklerwerkzeuge der Rückgabe-Statuscode geprüft wird. Es darf dort NUR 204 stehen und zu jeder Anfrage auch nur eine Verbindung geben (sonst hätte man wieder die Weiterleitung per 301, die für diesen Zweck nicht funktioniert).

An dieser Stelle sei auch auf die wirklich guten Beitrag zu weiteren Möglichkeiten mit dem PiHole verweisen.

Tasmota Dimmen mit Fernbedienung

Posted by quark007 | Posted in Computer & IT | Posted on 14-02-2021-05-2008

0

Mein SmartHome ist um einige Rafinessen erweitert worden. Auf Grund des Lockdowns hatte ich mehr Zeit mich mal wieder um was Neues zu kümmern.

Da war zunächst ein gedimmter LED-Streifen als Nachtlicht im Schlafzimmer. Mit einem Wemos D1 mini und einem MOSFET lässt sich über Tasmota der 5V LED Streifen super dimmen und gleichzeitig ins SmartHome integrieren.

Da sowieso bei Ikea etwas bestellt / abgeholt werden sollte, kamen gleich auch noch 2 Tradfri Dimmer ins Haus. Mit diesen sollte sich der LED-Streifen steuern lassen.

Mit Zigbee2MQTT und einem CC2531 ließen sich die Tradfri Geräte super einfach einbinden und per MQTT in OpenHab integrieren (das nervtötende LED Leuchten kann auch deaktiviert werden). Soweit so gut, der Dimmer liefert bei einfachem Druck “On” oder “Off”. Da es ein Dimmer ist, liefert er bei längerem Druck “brightness_up” bzw. “brightness_down” und beim Loslassen “brightness_stop”.

Leider hat Tasmota keine automatische Dimming Funktion (analog Hue), an welches “INCREASE / DECREASE” geschickt werden kann und das Dimmen so lange läuft, bis “STOP” geschickt wird. Daher musste das in OpenHab realisiert werden. Ich habe mich dabei an einem Artikel aus dem Internet orientiert. Meine Regel dazu sieht wie folgt aus:

var Timer DimTimer = null //Timer zum anwenden der nächsten Dimmstufe
var Number DimDir = 0 //Dimm Richtung (+ oder -)

//Rule to simulate dimming to Tasmota device
rule "MFDimmer Dimming Rule"
when
    Item MQTT_MFDimmer_Dimming changed to ON
then
    DimTimer?.cancel
    DimTimer = createTimer(now.plusMillis(10),[|
        val Number DimmerState = (MQTT_MFDimmer_brightness.state as Number)

        if(DimmerState == 0 || DimmerState == 100 || MQTT_MFDimmer_Dimming.state == OFF)
        {
            MQTT_MFDimmer_Dimming.sendCommand(OFF)
            DimDir = 0
            DimTimer?.cancel
        }

        if(MQTT_MFDimmer_Dimming.state == ON && DimmerState > 0 && DimmerState < 100) 
        {          
            MQTT_MFDimmer_brightness.sendCommand(DimmerState + (DimDir * 2)) 
            DimTimer.reschedule(now.plusMillis(500))
			//logInfo("MFDimmer Dimming", "Dimming to " + (DimmerState + (DimDir * 2)))
        }
    ])
end

Dazu muss ein Dummy-Switch angelegt werden:

Switch MQTT_MFDimmer_Dimming "Dimming active [%s]" (mqtt)

Sobald nun dieses Item aktiviert wird, wird in 0.5 Sekunden Schritten die Helligkeit jeweils um 2% erhöht bzw. erniedrigt, jenachdem welcher Wert für DimDir beim Tastendruck angegeben wird. Das geschieht hier:

rule "Tradfri Dimmer1"
when
    Item z2m_remote_dimmer1_button received update
then
	//logInfo("RemoteRuleDimer1", "Tradfri Dimmer1 Input: " + z2m_remote_dimmer1_button.state)
	
	var String RemoteCmd = z2m_remote_dimmer1_button.state
	switch (RemoteCmd){
    case "on":
		{
			MQTT_MFDimmer_switch.sendCommand(ON)
			MQTT_MFDimmer_switch.postUpdate(ON)
		}
    case "off":
		{
			MQTT_MFDimmer_switch.sendCommand(OFF)
			MQTT_MFDimmer_switch.postUpdate(OFF)
			MQTT_MFDimmer_Dimming.postUpdate(OFF)
			DimTimer?.cancel
		}
	case "brightness_up":
		{
			if(MQTT_MFDimmer_switch.state == ON) {
				MQTT_MFDimmer_Dimming.postUpdate(ON)
				DimDir = 1
			} else {
				zwave_device_[id]_node15_blinds_control.sendCommand(0)
				zwave_device_[id]_node15_blinds_control.postUpdate(0)
			}
		}
	case "brightness_down":
		{
			if(MQTT_MFDimmer_switch.state == ON) {
				MQTT_MFDimmer_Dimming.postUpdate(ON)
				DimDir = -1
			} else {
				zwave_device_[id]_node15_blinds_control.sendCommand(100)
				zwave_device_[id]_node15_blinds_control.postUpdate(100)
			}
		}
	case "brightness_stop":
		{
			if(MQTT_MFDimmer_switch.state == ON) {
				MQTT_MFDimmer_Dimming.postUpdate(OFF) 
				DimTimer?.cancel
			} else {
				zwave_device_[id]_node15_blinds_control.sendCommand("STOP")
				zwave_device_[id]_node15_blinds_control.postUpdate("STOP")
			}
		}
	}
end

Dabei ist parallel noch integriert, dass die Rollläden gesteuert werden können, sofern der LED-Streifen nicht angeschaltet ist.

Ich bin mir sicher, dass das auch in Tasmota selber abbildbar ist. Mit Rules geht es aber (soweit ich das überblicken kann) nicht, außer man aktiviert das Math-Paket. Das ist mir jedoch eine ExtraWurst zu viel. Oder aber mit Scripting, was für mich aus dem gleichen Grund ausscheidet.

Für jeden Hinweis, wie ich meine SmartHome Regeln entschlacken kann, bin ich aber sehr dankbar.

Hackair Sensor Station

Posted by quark007 | Posted in Uncategorized | Posted on 13-08-2020-05-2008

0

Mich hat das Konzept von HackAIR schon lange fasziniert, ich kam jedoch nie dazu es wirklich in Betrieb zu nehmen. Jetzt hat sich die Zeit ergeben und einige dabei zu umschiffende Probleme möchte ich euch gerne mitgeben.

In der Zwischenzeit ist das Projekt hackAIR ausgelaufen. Über die Platform https://opensensemap.org können die Daten aus den hackAIR Sensoren weiterhin abgeliefert werden.  Der Code enthält diese option bereits.

Meine Einkaufsliste sieht wie folgt aus:

  • Wemos D1 mini
  • Nova SDS011 Sensor
  • DHT22 Shield
  • BHM1750 Brightness sensor (geplant zur Steuerung von Rolläden über OpenHab)
  • Regensensor (geplant zur Steuerung des Mähroboters über OpenHab)

Zunächst sollte erstmal alles so laufen wie es das HackAir Projekt vorsah. Die Aufbauanleitung und der Code (ich habe den hackAIR advanced Code verwendet) findet sich auf der Hackair Homepage.

Problem1: DHT22-Shield liefert keine Werte

Ich hatte zunächst nur den WEMOS D1 mini und das DHT22-Shield gelötet und verbunden (entsprechend der Anleitung auf der hackAIR webseite). Doch nach uploaden des Projekts konnte nie ein Wert für Luftfeuchte und Temperatur ermittelt werden. Ich ging zunächst von einem Hardware defekt aus, doch da die Dispute-Phase über Aliexpress schon vorbei war, hat mich der Ergeiz gepackt es doch nochmal genauer zu untersuchen.

Über ein Breadboard mit verschiedenen Pin-Anschlüssen hat sich rausgestellt, dass das DHT22 Shield es nicht mag, sowohl über 3,3V als auch über 5V versorgt zu werden.

Lösung: ich habe den 5V Pin einfach abgezwickt und der DHT22 lief. (erstmal, siehe Problem4)

Problem2: Nova SDS011 schläft ein, wacht aber nicht mehr auf

Im hackAIR code steht lediglich die Codezeile:

sensor.turnOn();

Nach einigem Lesen auf mehreren Seiten stellte sich heraus, dass es dem Sensor angeblich genügen würde irgend ein Commando zu bekommen um wieder aufzuwachen.

Nach etwas weiterem Lesen bin ich über diesen Post gestolpert, der etwas anderes behauptet: es ist doch eine konkrete Byte-Folge notwendig, um den Sensor aufzuwecken.

Also habe ich die hackair.cpp in den libraries entsprechend angepasst. Die turnOn(); Funktion sah dann für mich so aus:

void hackAIR::turnOn() {
	static const byte WAKECMD[19] = {
	0xAA,	// head
	0xB4,	// command id
	0x06,	// data byte 1
	0x01,	// data byte 2 (set mode)
	0x01,	// data byte 3 (wake up)
	0x00,	// data byte 4
	0x00,	// data byte 5
	0x00,	// data byte 6
	0x00,	// data byte 7
	0x00,	// data byte 8
	0x00,	// data byte 9
	0x00,	// data byte 10
	0x00,	// data byte 11
	0x00,	// data byte 12
	0x00,	// data byte 13
	0xFF,	// data byte 14 (device id byte 1)
	0xFF,	// data byte 15 (device id byte 2)
	0x06,	// checksum
	0xAB	// tail
	};
	
    // SDS011 uses the built-in power saving function
    if (_sensorType == SENSOR_SDS011) {
        // Send anything to wake up the sensor
        //_serial.write(0x01);
		for (uint8_t i = 0; i < 19; i++) {
			_serial.write(WAKECMD[i]);
		}
        delay(2000);
    } else {
#ifndef ESP8266
        digitalWrite(A2, HIGH);
#endif
    }
}

Das Projekt neu kompiliert und hochgeladen und siehe da, der SDS011 ist wirklich wieder aufgewacht.

Problem3: Übertragen der Daten per MQTT an OpenHAB

Ein großteil meiner Datensammlung läuft über einen MQTT-Broker (Temperatur und Feuchte Sensoren in jedem Zimmer ; Steuerung des Mähroboters über die LandroidBridge …..). Also sollten auch diese Daten im Smarthome verfügbar sein.

Zunächst war ich der Annahme ich könnte die AdafruitMQTT-Libraries verwenden. Nach viel Rumprobieren hat sich das aber als Fehler herausgestellt. ich habe es nicht geschafft eine Verbindung zu einem normalen Mosquitto Server aufzunehmen. (Offensichtlich ist die Adafruit-Implementierung etwas anders).

Aus meinem Projekt mit den Zimmer-Sensoren habe ich mir Struktur des MQTT-Clients (PubSubClient) übernommen. In auszügen sieht das dann wie folgt aus:

#include <PubSubClient.h>         // MQTT CLIENT FOR OPENHAB

// MQTT

#define MQTT_ENABLE "1"           // set this to 1 to enable MQTT
#define MQTT_BROKER "192.168.178.XX" // MQTT Broker IP
#define MQTT_USER "openhab"          // MQTT user
#define MQTT_PASS "openhab"          // MQTT password

[...]
// Create a Wifi client for MQTT connection
WiFiClient espClient; //Only for MQTT
PubSubClient MQTTclient(espClient);

void setup() {
  // MQTT Initialisation
  MQTTclient.setServer(MQTT_BROKER, 1883);
[....]
}

void loop() {
[...]
  //DHT READ
  float env_temp = dht.readTemperature();
  float env_hum = dht.readHumidity();

  // Send error message if DHT22 values could not be read
  if(isnan(env_hum) || isnan(env_temp)){
    Serial.print("Temp: ");
    Serial.print(env_temp);
    Serial.print(" | Hum: ");
    Serial.println(env_hum);
    MQTTreconnect();
    MQTTclient.publish("tele/hackair/state", "ERROR Temp/Hum");
  }
[...]
  if (MQTT_ENABLE == "1") {
     if (!MQTTclient.connected()) {
        MQTTreconnect();
    }
      String dataMQTT = "{\"data\":{\"PM25\":\""; // PM25 ist eingfacher über openhab abzurufen als PM2.5
        dataMQTT += data.pm25;
        dataMQTT += "\",\"PM10\":\"";
        dataMQTT += data.pm10;
        dataMQTT += "\",\"temp\":\"";
        dataMQTT += env_temp;
        dataMQTT += "\",\"hum\":\"";
        dataMQTT += env_hum;
//        dataMQTT += "\",\"rain_d\":\""; //noch nicht implementiert
//        dataMQTT += env_rain_d; //noch nicht implementiert
//        dataMQTT += "\",\"rain_a\":\""; //noch nicht implementiert
//        dataMQTT += env_rain_a; //noch nicht implementiert
//        dataMQTT += "\",\"lux\":\""; //noch nicht implementiert
//        dataMQTT += env_lux; //noch nicht implementiert
        dataMQTT += "\"},\"battery\":\"";
        dataMQTT += vdd;
        dataMQTT += "\",\"tamper\":\"";
        dataMQTT += "0";
        dataMQTT += "\",\"error\":\"";
        dataMQTT += data.error;
        dataMQTT += "\"}";
        
    if (MQTTclient.publish("tele/hackair/SENSOR", (char*) dataMQTT.c_str()) && DEBUG == "1") {
      Serial.print("MQTT Publish successful: ");
      Serial.println(dataMQTT);
    } else if (DEBUG == "1") {
      Serial.print("MQTT Publish failed");
      Serial.println(MQTTclient.state());
    }
  }
[...]

// define functions
void MQTTreconnect() {
    // Loop until we're reconnected
    while (!MQTTclient.connected()) {
      Serial.print("Attempting MQTT connection...");
      
      // Create a random client ID
      String clientId = "Hackair-";
      clientId += String(random(0xffff), HEX);
      
      // Attempt to connect
      if (MQTTclient.connect(clientId.c_str(), MQTT_USER, MQTT_PASS)) {
        Serial.println(" connected");
        MQTTclient.publish("tele/hackair/LWT", "Online", false); //ohne hat er die Verbindung nicht behalten.
      } else {
        Serial.print("failed, rc=");
        Serial.print(MQTTclient.state());
        Serial.println(" try again in 5 seconds");
        // Wait 5 seconds before retrying
        delay(5000);
      }
    }
  MQTTclient.loop();
}

Mit ein wenig Konfiguration in openHAB sieht das Ergebnis dann wie folgt aus:

Problem4: Instabiler Neustart des Wemos D1 mini

Beim Neustart des Wemos D1 mini kommt es wiederholt (schon fast regelmäßig) vor, dass entweder die Ausgabe über die Serielle Schnittstelle nicht funktioniert oder aber das Auslesen der DHT22 Messwerte. Diese liefern dann nur nan zurück und somit ist eine Feuchtigkeits-Korrektur der Partikelmessung nicht mehr möglich.

Nach einem Upload eines Sketches auf den ESP funktioniert die Serielle Ausgabe ohne Neustart, jedoch der DHT22 nicht.

Nach dem ersten hard reset (Strom trennen und wieder verbinden) geht fast immer die Serielle Schnittstelle nicht.

Nach einem weiteren hard reset geht ab und an das Auslesen der DHT-Werte schief. Egal wie oft die Reset-Taste am ESP gedrückt wird.

Eine Lösung für das DHT22 Problem konnte ich hier finden: https://blog.zs64.net/2018/02/fixing-the-wemos-d1-mini-dht22-shield/
Es hat sich gezeigt, dass der D4-Port, den das DHT22 Shield verwendet, auch für die LED-Steuerung verwendet wird. Beim Start kann es also dazu kommen dass sich Sensor-Initialisieren und LED-Steuern in die Quere kommen.

Quelle: https://blog.zs64.net/2018/02/fixing-the-wemos-d1-mini-dht22-shield/

Übers Breadboard mit umlegen auf den D3-Pin läuft es nun stabil wie nie!!! Damit hatte ich dann auch deutlich weniger Probleme mit einer nicht funktionierenden Seriellen Verbindung.

Edit: beim Programmieren eines weiteren DHT22 Shields kam ich wieder nicht weiter. Sowohl das umlegen des D-Pins, als auch der Spannungsversorgungs-hack hat nicht geholfen. Nach viel googlen bin ich dem Problem auf den Grund gekommen: die DHT-Library funktioniert mit meinen DHT22 nur bis Version 1.2.0. Mit allen neueren geht es nicht (hier der Bug-Eintrag dazu).

Gehäuse

Damit alles schön verpackt in den Außenbereich kann, habe ich nach einem Gehäuse gesucht. Auf thingivers.com bin ich bei der “Dust Sensor Box” fündig geworden.
Auf meinem Ender3 habe ich das ganze aus weißem PLA mit 15% Infill gedruckt (195°C Düse und 48°C Druckbett Temperatur).

Da das Projekt aber für einen Nodemcu v2 amica vorgesehen ist, habe ich den Wemos D1 mit dem DHT22 Shield einfach reingelegt. Durch die relativ geringe Höhe und den leicht abstehenden DHT22 Sensor klemmt das ganze eigentlich ganz gut.

Montiert wurde die Box anschließend unter den selbstgebauten Hochbeeten (an der Querverbindung zur Stabilisierung des Mörtelwannenbodens).

Datenübertragung an opensensemap und luftdaten.info

Zusätzlich zu dem bereits unterstützten opensensemap.org wollte ich auch luftdaten.info mit einbinden. Dazu gibt es schon ein Script. Das habe ich als Vorlage verwendet, um den Code von hackair entsprechend anzupassen.

Es hat sich bei mir noch ein anderes Problem gezeigt: auch auf opensensemap konnten die Daten nicht hochgeladen werden. Nach viel herumprobieren und optimieren des Codes bin ich zu der im Code befindlichen Lösung gekommen.

TODO

Hier gibt es noch eine Info, wenn das Uploaden des Sketchs fehlschlägt (bei meinen neuen WEMOS D1 mini war das fast immer der Fall): https://github.com/esp8266/Arduino/issues/2604#issuecomment-294970016

Es kommt bei mir öfter vor, dass HackAIR an irgend einem Punkt hängen bleibt. Er macht dann nicht weiter und liefert auch keine Werte. Ich habe die Vermutung, dass es in der SDS011 ein Problem gibt. Die Serielle Schnittstelle so lange angeschlossen zu lassen, schaffe ich nicht (hackAIR hängt unter einem Hochbeet auf der Terasse). Daher habeich mich damit abgefunden und über openHAB eine Regel erstellt, die den Strom 20 Sekunden trennt und danach wieder anschaltet.

Roborock S50 mit Valetudo in openHAB

Posted by quark007 | Posted in Uncategorized | Posted on 15-03-2020-05-2008

0

Nach langem Zögern habe ich mich doch entschieden meinen Robi mit einer Custom-Firmware füttern. Insbesondere die Xiaomi App hat mich mit den ganzen Verbindungen nach China genervt.

Schon länger hatte ich die Dustcloud entdeckt, jedoch nie zum Laufen bekommen. Bei der Suche dazu, bin ich über Valetudo gestolpert. Nach viel lesen dazu, habe ich mich entschieden es zu probieren.

Die Anleitung basiert auf einem Linux System. Zum Glück habe ich gerade mein altes Netbook mit Linux Mint aufgesetzt.

Installation

Die Anleitung dazu ist nicht sonderlich ausführlich aber voll ausreichend.

Direkt anschließend habe ich wie in den FAQ beschrieben noch die Sprachdatei installiert (das geht aber auch über die Valetudo WebUI).

Der Web über die WebUI funktioniert, war mir aber nicht bequem genug. Im Wiki gibt’s auch einen Artikel zur Homeassistant Integration. So habe ich den Robi direkt in openHAB eingebunden. Die thing Definition sieht bei mir so aus (eigens aus den MQTT-Nachrichten erstellt):

Thing topic valetudo "MQTT Roborock S50" @ "Indoor" {
Channels:
Type string : state "Status" [ stateTopic="valetudo/rockrobo/state", transformationPattern="JSONPATH:$.state" ]
Type number : battery "Battery" [ stateTopic="valetudo/rockrobo/state", transformationPattern="JSONPATH:$.battery_level" ]
Type string : speed "Fan Speed" [ stateTopic="valetudo/rockrobo/state", commandTopic="valetudo/rockrobo/set_fan_speed", transformationPattern="JSONPATH:$.fan_speed" ]
Type number : cleanTime "Clean Time" [ stateTopic="valetudo/rockrobo/attributes", transformationPattern="JSONPATH:$.cleanTime" ]
Type number : cleanArea "Clean Area" [ stateTopic="valetudo/rockrobo/attributes", transformationPattern="JSONPATH:$.cleanArea" ]
Type number : cleanCount "Clean Count" [ stateTopic="valetudo/rockrobo/attributes", transformationPattern="JSONPATH:$.cleanCount" ]
Type number : wareMain "Verschleiss Hauptbürste" [ stateTopic="valetudo/rockrobo/attributes", transformationPattern="JSONPATH:$.mainBrush" ]
Type number : wareSide "Verschleiss Seitbürste" [ stateTopic="valetudo/rockrobo/attributes", transformationPattern="JSONPATH:$.sideBrush" ]
Type number : wareFilter "Verschleiss Filter" [ stateTopic="valetudo/rockrobo/attributes", transformationPattern="JSONPATH:$.filter" ]
Type number : wareSensor "Verschleiss Sensoren" [ stateTopic="valetudo/rockrobo/attributes", transformationPattern="JSONPATH:$.sensor" ]
Type string : state2 "Status 2" [ stateTopic="valetudo/rockrobo/attributes", transformationPattern="JSONPATH:$.state" ]
Type string : lastRun "LastRun" [ stateTopic="valetudo/rockrobo/attributes" ]
Type string : command "Command" [ stateTopic="valetudo/rockrobo/state", commandTopic="valetudo/rockrobo/command", transformationPattern="JSONPATH:$.state" ]
}

Die Items habe ich wie folgt definiert:

Group valetudo "Roborock S50"

String mqtt_vale_state "Status [MAP(valetudo_status.map):%s]" <roborock> (valetudo,mqtt) { channel="mqtt:topic:mosquitto:valetudo:state", channel="mqtt:topic:mosquitto:valetudo:state2" }
Number mqtt_vale_battery "Batterie [%s]" <battery> (valetudo,mqtt) { channel="mqtt:topic:mosquitto:valetudo:battery" }
String mqtt_vale_speed "Saugstufe [MAP(valetudo_speed.map):%s]" <heating> (valetudo,mqtt) { channel="mqtt:topic:mosquitto:valetudo:speed" }

Number mqtt_vale_cleanTime "Gesamt Laufzeit [%.1f h]" <time> (valetudo,mqtt) { channel="mqtt:topic:mosquitto:valetudo:cleanTime" }
Number mqtt_vale_cleanArea "Gesamt Fläche [%d m²]" <text> (valetudo,mqtt) { channel="mqtt:topic:mosquitto:valetudo:cleanArea" }
Number mqtt_vale_cleanCount "Gesamt Vorgänge [%d]" <text> (valetudo,mqtt) { channel="mqtt:topic:mosquitto:valetudo:cleanCount" }
Number mqtt_vale_WareMainBrush "Restlaufzeit Hauptbürste [%d h]" <text> (valetudo,mqtt) { channel="mqtt:topic:mosquitto:valetudo:wareMain" }
Number mqtt_vale_WareSideBrush "Restlaufzeit Seitenbürste [%d h]" <text> (valetudo,mqtt) { channel="mqtt:topic:mosquitto:valetudo:wareSide" }
Number mqtt_vale_WareFilter "Restlaufzeit Filter [%d h]" <text> (valetudo,mqtt) { channel="mqtt:topic:mosquitto:valetudo:wareFilter" }
Number mqtt_vale_WareSensors "Restlaufzeit Sensoren [%d h]" <text> (valetudo,mqtt) { channel="mqtt:topic:mosquitto:valetudo:wareSensor" }
String mqtt_vale_state2 "Status2 [MAP(valetudo_status.map):%s]" <roborock> (valetudo,mqtt) { channel="mqtt:topic:mosquitto:valetudo:state2" }

String mqtt_vale_lastrunstats "LastRunStatsCache" { channel="mqtt:topic:mosquitto:valetudo:lastRun" }
Number mqtt_vale_LastStart "Letzte Reinigung Start [%d]" <time> (valetudo,mqtt)
DateTime mqtt_vale_LastStartTime "Letzte Reinigung Start [%1$tA, %1$td.%1$tm.%1$tY %1$tH:%1$tM]" <time> (valetudo,mqtt)
Number mqtt_vale_LastEnd "Letzte Reinigung Ende [%d]" <time> (valetudo,mqtt)
DateTime mqtt_vale_LastEndTime "Letzte Reinigung Ende [%1$tA, %1$td.%1$tm.%1$tY %1$tH:%1$tM]" <time> (valetudo,mqtt)
Number mqtt_vale_LastDuration "Letzte Reinigung Dauer [JS(timeConvert2.js):%s]" <time> (valetudo,mqtt)
Number mqtt_vale_LastArea "Letzte Reinigung Fläche [%.1f m²]" <text> (valetudo,mqtt)
String mqtt_vale_LastState "Letzte Reinigung Beendet [%s]" <text> (valetudo,mqtt)
String mqtt_vale_SendCommand "Valetudo Command Item []" <movecontrol> (valetudo,mqtt) { channel="mqtt:topic:mosquitto:valetudo:command" }

Ohne Map ist doch doof

Das Problem mit der Karte ist aber geblieben: die gibt es nur über die WebUI. Da die Map Daten auch über mqtt übertragen werden, kann man von einem extra Server eine PNG Karte erstellen lassen. Das Projekt dazu nennt sich ICantBelieveItsNotValetudo.

Nach clonen, installieren und konfigurieren lief alles auf Anhieb. Nun noch den Server als Dienst registrieren:

Die Datei /lib/systemd/system/valetudo-map.service erstellen und folgenden Inhalt einfügen:

[Unit]
Description=valetudo map service
Documentation=https://github.com/weweave/landroid-bridge
After=network.target

[Service]
ExecStart=/usr/bin/node /root/ICantBelieveItsNotValetudo/app.js
WorkingDirectory=/root/ICantBelieveItsNotValetudo
Restart=on-failure
RestartSec=10
StandardOutput=syslog
StandardError=syslog
SyslogIdentifier=valetudo-map
#User=pi
#Group=username
Environment=NODE_ENV=production PORT=3003

[Install]
WantedBy=multi-user.target

Anschließend mit

systemctl daemon-reload

registrieren und mit

systemtl enable valetudo-map

zum Autostart hinzufügen. Jetzt ist unter der Adresse

http://[IP]/api/lib/image

das Bild abzurufen und mit der URL in die openHAB Sitemap integrieren:

Image url="http://[IP]:3003/api/map/image"label="Roborock Map" refresh=5000

Obi Steckdose mit Tasmota flashen

Posted by quark007 | Posted in Computer & IT, Programmieren / Coden | Posted on 20-03-2018-05-2008

6

Zugegeben, ich bin etwas blau-äugig an die Sache heran gegangen. Ich dachte mit ein wenig Erfahrung im Löten, mit RF433 Spielereien auf den GPIO des RaspberryPi wäre ich einigermaßen ausgestattet. Im Endeffekt hat es super geklappt, aber ich kam mir nie sicher vor, was ich machen (beim Flashen). Eigentlich ist es aber auch gar nicht so schwer, wenn man den Weg kennt. Daher hier eine kurze Anleitung (die englische allgemeine Version gibt es hier und Infos zu dem Obi-Stecker hier).

Was man benötigt:

  • Obi Wifi Steckdose
  • USB UART TTL 3.3V Converter/Programmer (e.g. CP2102, CH340G, FT232, PL2303)
  • Schraubenzieher (Kreuzschlitz und 3-fach Kreutschlitz)
  • Steckverbinderleiste (altenativ Chip-Sockel mit langen Pins) oder Kabel zum fest-anlöten
  • ev. ein 3.3V Netzgerät

Damit kann es losgehen

1. Vorbereiten des Steckers

Mit dem 3-Flügel Schraubenzieher die beiden Schrauben am Gehäuse öffnen. Anschließend mit einem leichten Drucke die Gehäuse-Ober- von der Unterseite abnehmen und mit einem Kreuzschlitzschraubenzieher die Platine vom Gehäuse lösen. Anschließend kann man die Platine vorsichtig, dass keine Kabel abreißen oder Elektronikbauteile beschädigt werden, herausnehmen. Dann sieht man auch schon wunderbar die Lötstellen für unsere Steckerleiste.

Wie man lötet brauche ich hoffentlich nicht erklären. Nun lötet man 7 Steckstifte an die entsprechenden Kontakte. Da man die Lötstelle schlecht einsehen kann, ist dies eine schöne Fehlerquelle, falls das Flashen nicht klappt. Dann nochmal nachlöten.

2. Vorbereiten der Firmware

Zunächst Arduino IDE herunterladen. Anschließend in ein Verzeichnis entpacken und vor dem ersten Start direkt dort einen neuen Ordner mit dem Namen “portable” anlegen. Damit arbeitet Arduino IDE automatisch immer in seinem eigenen Ordner (User-unabhängig). Nun kann Arduino IDE gestartet werden. Wir müssen ihm nun alle Infos zu dem ESP8266 beibringen. Dazu auf “File->Preferences” / “Datei->Voreinstellungen” gehen und in “Additional Bookmarks Manager URLs” folgende Quelle einfügen (ich habe zusätzlich die Sprache auf Englisch umgestellt um mit den GitHub Angaben arbeiten zu können) und mit “ok” bestätigen.

http://arduino.esp8266.com/stable/package_esp8266com_index.json

Dann gehen wir auf “Tools->Board->Boardmanager” und suchen in der Liste den ESP8266 und installieren die neueste Version. Danach wählen wir unter “Tools->Board” den ESP8266 aus. Die Einstellungen sollten wie auf dem Bild aussehen. Wichtig ist noch der Com-Port. Der muss auf die Nummer eures UART-TTL-Boards eingestellt werden (kann man im Gerätemanager nachschauen).

Arudino IDE schließen. Von GitHub die neueste Tasmota-Firmware herunterladen und in den “portable/sketchbook/” Ordner entpacken. Anschließend aus dem Tasmota Ordner den Inhalt des Lib-Ordners in “portable/sketchbook/libraries” verschieben.

Nun öffnet Arduino IDE wieder und wählt über File/Datei das Sketchbook “Sonoff” aus. Über den Pfeil ganz rechts die Datei “user_config.h” auswählen. Darin folgende Änderungen vornehmen und speichern:

– CFG_HOLDER auf den heutigen Tag setzen (z.B. 0x20180318)

– WiFi Gateway, DNS,

– Wlan SSID und Key (macht das konfigurieren einfacher, wenn das Gerät direkt im WLan ist)

– Wenn man möchte kann man auch gleich den MQTT Zugang konfigueren (funktioniert über die Web-Oberfläche am Ende aber auch sehr gut)

Mit “Sketch -> Verify/Compile” die Firmware einmal kompilieren und prüfen ob alle Abhängigkeiten erfüllt sind.

3. Vorbereiten und Flashen der Hardware

Vor dem ersten Einstecken des UART-TTL die Treiber von der Hersteller Homepage herunterladen und installieren. Anschließend einstecken und zunächst mit einem Multimeter prüfen, ob zwischen dem 3.3V Pin und Ground wirklich nur 3.3V anliegen (sonst geht der ESP ganz schnell kaputt).

Jetzt verbinden wir UART-TTL und die Wifi-Steckdose. Manchmal, wenn das Flashen nicht funktioniert, kann man probieren RXD und TXD auf einer Seite zu tauschen (bei neuen Sonoffs ist das manchmal der Fall).

  • UART            Obi-Steckdose
  • 3.3V               VCC
  • RXD              TXD
  • TXD              RXD
  • GND             GND

Den 3.3V Pin am UART lasse ich erst einmal nicht verbunden (Überspannung beim Anstecken). Um den ESP in den Flash-Modus zu bekommen, müssen wir den GPIO0 mit GND kurzschließen (entweder mit einem extra GPIO-Kabel oder einfach mit einem Krokodilklemmen-Kabel). Jetzt den 3.3V Pin anschließen und nach 2-5 Sekunden wieder entfernen (die blaue LED leuchtet dann ganz leicht).

Jetzt installieren wir die neue Firmware über “Sketch -> Upload”. Ist der Upload bei 100% ohne Fehler durchgelaufen, trennen wir die Spannung wieder (ziehen den Stecker also vom UART ab).
Bei mir tauchte beim Upload anfangs öfter ein Fehler auf, dass der Sync nicht funktioniert hat. Bei mir war das ein Kontakt-Problem der Stiftleiste durchs löten. Nocheinmal erwärmt und neues Lötzinn hat Abhilfe geschaffen.

Als nächstes ändern wir in der user_config.h den CFG_HOLDER zurück auf “0x20161209” und flaschen das ganze nochmal (natürlich wieder im Flash-Modus). Das Vorgehen ist dabei das gleiche wie eben.

Wenn das alles ohne Fehler funktioniert hat, schließen wir die 3.3V wieder an, diesmal nicht im Flash-Modus. Jetzt kann man im Router nach der IP-Adresse Ausschau halten. Diese ruft man dann im Browser auf und kann alles weitere konfigurieren.

4. Steckdose konfigurieren

In der Oberfläche (siehe Bild) geht man auf “Configuration” und “Configure Modul”. Dort wählt man “18 Generic” aus und klickt auf “Save”. Das Modul startet neu und man geht nochmal auf die gleiche Konfigurations-Seite. Dort muss man dann folgende Einstellungen vornehmen:

Nocheinmal speichern und den 3.3V Pin wieder trennen.

Von jetzt an kann man den Stecker direkt in eine Schuko-Steckdose stecken und betreiben. Einstellungen kann man auch jetzt immernoch vornehmen.

 

 

5. Einbinden in OpenHAB2 über MQTT

Für das Einbinden in OpenHAB braucht man erstmal einen Mosquitto (MQTT)-Server. Den kann man auf dem gleichen Gerät installieren wie openHAB auch. Wichtig ist, dass man einen Anmeldenamen und ein Passwort für den Server vergibt. Die sind bei Tasmota nämlich Pflicht (wäre auch blöd, wenn irgendjemand einfach alle MQTT-Geräte steuern könnte). Eventuell die Firewall prüfen, dass Verbindungen auch erlaubt sind.

In OpenHAB nun das MQTT Plugin installieren. In dem Conf-Ordner unter “services” die mqtt.cfg entsprechend eures MQTT-Servers anpassen. Es hilft hier OpenHAB einmal neu zu starten. Jetzt kann man die Items für die Steckdose anlegen. Ich habe mich zunächst auf das An-Aus-Schalten beschränkt. Dafür in einer .items-Datei folgende Zeile anlegen:

Switch item_id "Item Name" <light> (LivingRoom,Light) { mqtt=">[mqttbroker:cmnd/mqtt_plug_name/power:command:*:default],
                                                              <[mqttbroker:stat/mqtt_plug_name/POWER:state:default]" }

Anschließend in der sitemap den Schalter hinzufügen. Bei mir hat es damit einwandfrei funktioniert, direkt vom Start weg.

 

Für Fragen, Anregungen und Fehler bin ich immer zu haben. Ich versuche noch am gleichen Tag zu antworten.

 

Hier eine Liste meiner Quellen:

https://smarthome.schimmer-media.de/forum/index.php?thread/535-obi-wlan-steckdose-mit-esp8266/ (Hat mich erst auf den Geschmack gebracht)

https://forum.iobroker.net/viewtopic.php?f=34&t=12125 (der erste Versuch der funktioniert hat ; leider not wenige Möglichkeiten)

https://github.com/arendst/Sonoff-Tasmota/issues/1988 (Obi-Plug Einstellungen ; doppeltes Flashen)

https://github.com/arendst/Sonoff-Tasmota/wiki/Arduino-IDE (Arduiono IDE Vorgehen)

https://community.openhab.org/t/itead-sonoff-switches-and-sockets-cheap-esp8266-wifi-mqtt-hardware/15024 (OpenHAB Integration)

Connman WLan Verbindung

Posted by quark007 | Posted in Computer & IT, Programmieren / Coden | Posted on 22-12-2017-05-2008

0

Nach einiger Zeit habe ich mein altes RaspberryPi mit OSMC-Installation herausgekramt. Eigentlich nur um mein 433MHz Sender-Modul zu testen. Beim Anschließen, hat allerdings das WLan nicht funktioniert. Das hat mich gefuchst und ich habe versucht es neu einzurichten.

Ich hatte in der Zwischenzeit mein WPA2-Key geändert, da einige Geräte mit einem “=” in der Passphrase nicht klar kamen. Also habe ich versucht es über die Oberfläche von OSMC zu ändern. Doch das schlug immer fehl (Ich weiß nicht ob es an Fehlern der Eingabe oder an einem falschen Tastatur-Layout gelegen hat).

Nachdem Login per SSH (im LAN) habe ich versucht es über Connman mit dem WLan zu verbinden (wie hier beschrieben). Doch es hat nicht geklappt. Keine Meldung, dass die Verbindung korrekt hergestellt werden konnte.

osmc@rpi2:~$ connmanctl
connmanctl> enable wifi
    Enabled wifi
connmanctl> scan wifi
    Scan completed for wifi
connmanctl> services
    *AO Wired ethernet_b827ebd04564_cable
    wifi_e894f6191023_hidden_managed_psk
    VM420130-2G wifi_e894f6191023_564d1235f53035302d3247_managed_psk
connmanctl> agent on
    Agent registered
connmanctl> connect wifi_e894f6191023_564d1235f53035302d3247_managed_psk
connmanctl>

Nach dem Connect kam keine Abfrage des WPA-Keys. Eine neue Verbindung mit meinem Gast-WLan hat jedoch funktioniert wie beschrieben.

Ich habe dann rausgefunden, dass in dem Ordner /var/lib/connmann/ die Configurationen der einzelnen Verbindungen gespeichert wurden. Dort habe ich den Ordner meines WLans gelöscht und das ganze nochmal über die connmanctl probiert: es hat geklappt:

connmanctl> connect wifi_e894f6191023_564d1235f53035302d3247_managed_psk

Agent RequestInput wifi_e894f6191023_564d1235f53035302d3247_managed_psk
 Passphrase = [ Type=psk, Requirement=mandatory, Alternates=[ WPS ] ]
 WPS = [ Type=wpspin, Requirement=alternate ]
 Passphrase? xxxxxxxx

Connected wifi_e894f6191023_564d1235f53035302d3247_managed_psk

Vielleicht kann jemand den Hinweis ja gebrauchen 😉

Batch Script Sammlung

Posted by quark007 | Posted in Computer & IT, Programmieren / Coden | Posted on 06-05-2016-05-2008

1

Wie oft ist es schon vorgekommen, dass ich einfach schnell z.B. alle Dateien in einem Ordner als Text-File versenden wollte. Dann fängt jedes mal die Suche nach dem richtigen Skript wieder von vorne an. Daher möchte ich hier eine kleine Sammlung aller meiner verwendeten Scripte anlegen. Vielleicht hilft es ja auch dem ein oder anderen weiter.

Dateien eines Ordner als Text-File [source]

dir /a /b /-p /o:gen >filelist.txt

USB-Scans umbenennen (rekursiv) (Datum+Uhrzeit)

@echo off
FOR /r %%V IN (*.pdf) DO FOR /F "tokens=1-5 delims=./: " %%J IN ("%%~tV") DO IF EXIST "%%L-%%K-%%J %%M-%%N%%~xV" (ECHO rename "%%V" "%%L-%%K-%%J %%M-%%N_1%%~xV" & rename "%%V" "%%L-%%K-%%J %%M-%%N%%~xV") ELSE (rename "%%V" "%%L-%%K-%%J %%M-%%N%%~xV")
pause

 

Bildschirmhelligkeit festlegen Win10DE (hier für EN)

@echo OFF
for /f "tokens=*" %%i in ('powercfg -q ^| find "GUID des Energieschemas"') do set pwrSchm=%%i
set pwrSchm=%pwrSchm:~25,38%

for /f "tokens=*" %%i in ('powercfg -q ^| find "(Bildschirm)"') do set dsply=%%i
set dsply=%dsply:~22,36%

for /f "tokens=*" %%i in ('powercfg -q ^| find "(Bildschirmhelligkeit)"') do set brtnss=%%i
set brtnss=%brtnss:~29,37%

Echo Bildschirmhelligkeit von 0-100% eingeben
set /P brightness= % brightness:  %=%

powercfg -SetDcValueIndex %pwrSchm% %dsply% %brtnss% %brightness%
powercfg -S %pwrSchm%

Aktuell wird der zu setztende Wert abgefragt. Soll es jedoch ein fester Wert sein, dann in der Zeile “set /P brightness=” alles dahinter löschen und einen fixen Prozentwert 0-100 einsetzen

Microsoft SurfaceBook: Review, Tipps und Tricks zum Einrichten

Posted by quark007 | Posted in Computer & IT | Posted on 30-04-2016-05-2008

0

SurfaceBook_01Vergangene Woche ist nun endlich mein heiß ersehntes Surfacebook gekommen. Leider wurde es mit UPS geliefert und somit nicht bei einen meiner zuverlässigen Nachbarn abgegeben. Also musste ich mich bis heute gedulden, bis ich das Gerät an einem UPS-Standort abholen konnte. Aber die Wartezeit hat sich gelohnt. Unboxing Videos gibt es zu Hauf, daher erspare ich mir das. Einige Worte zu dem Gerät möchte ich aber dennoch loswerden.

SurfaceBook_02

Beim Aufladen des Gerätes ist mir gleich das sehr kurze Kabel vom Stromstecker zum Netzgerät aufgefallen. Bei Steckdosen in Lichtschalter-Höhe hängt die gesamte Last des Ladegerätes an dem Stecker in der Steckdose. Das wird das Gerät sicher nicht lange mitmachen. Daher am besten bodennah eine Steckdose zum laden suchen.
Etwas störend empfinde ich auch den proprietären Stecker des Surfacebooks. Dieser sehr an Apples 30Pin erinnernde Surface Connect Schnittstelle ist in meinen Augen unnötig und eine simple USB 3.0 Dose hätte es auch getan.SurfaceBook_03

Ganz so schlimm, wie in einigen Artikeln ([1] [2] Anfang des Jahres beschrieben, finde ich die angesprochenen Punkte nicht. Mein Display rastet tadellos ein, einzig Grafikfehler beim Browsen mit dem Firefox sind bis heute (20.04.2016) nicht behoben. Wobei ich eben einen Beitrag über bevorstehende Updates gelesen habe. Vielleicht werden damit die Probleme bald behoben. Leider sind die Updates für Deutschland noch nicht freigegeben, also über den Updater noch nicht verfügbar.

SurfaceBook_04Ein Punkt ist mir dann aber doch negativ aufgefallen: es gibt keine FN-Tasten, mit der man direkt die Bildschirmhelligkeit anpassen kann. Klar geht das auch automatisch, aber das Niveau ist mir deutlich zu hell. Außerdem ist die FN-Taste komisch belegt: Standardmäßig sind die FN-Tasten aktiviert. Will man sie zu den F-Tasten umschalten, leutet an der Umschalttaste durchgehend eine LED: Ich hätte es lieber andersherum gehabt: F-Tasten = Normalzustand (LED AUS) und FN-Tasten = Umschaltzustand (LED AN).

Was mir eben aufgefallen ist: nachdem ich ein Konto für den Microsoft Store angelegt habe und diese bestätigt habe, sind die letzten Tage 2 E-Mails eingegangen zum Thema Windows 10. Leider konnte ich im Profil keine Möglichkeit finden, den Versand der E-Mails zu widersprechen und auch in den Mails selber war kein dafür. Am besten also eine Spam-Adresse verwenden und einen Filter einrichten, der MS Nachrichten direkt aussortiert.

Entfernen von Microsoft-Apps

Jeder kennt die sogenannte BloatWare, die im Auslieferungszustand eines Gerätes meistens vorhanden ist. Beim SurfaceBook hält sie sich echt in Grenzen, ich habe jedoch lieber ein Systeme, das nur das enthält was ich möchte. Beim Versuch diese zu entfernen (hauptsächlich ging es mir um die XBox-, die GrooveMusic- und die OneDrive App) kam es jedoch danach zu einigen Problemen. Ich bin nach der Anleitung in diesem Beitrag vorgegangen und habe alle unerwünschten Apps so deinstalliert.
Doch danach war es mir nicht mehr möglich mich im MircosoftStore anzumelden. Außerdem wurden im Startmenu einige AppNamen kryptisch dargestellt. Auch der Versuch nach derselben Anleitung die Apps wieder zu installieren ist fehlgeschlagen. Mir blieb wenig anderes übrig, als das gesamte Gerät zurückzusetzen. Bis man die Option gefunden hat (Start -> Einstellungen -> Update und Sicherheit -> Wiederherstellung) hat es einige Zeit gedauert, zumal es über die Wiederherstellungsoption in der Systemsteuer nicht ging (kein Systemwiederherstellungspunkt vorhanden).

Also vom deaktivieren dieser Apps über die PowerShell kann ich nur abraten. Weiter unten habe ich ein Programm gefunden, mit dem es jedoch komfortabel funktioniert hat.

Ändern der hosts-Datei

Leider macht es Microsoft einem nicht einfach Änderungen an der hosts-Datei vorzunehmen. Beim Öffnen z.B. mit dem Notepad++ wird im Verzeichnis C:\Windows\System32\drivers der Ordner etc gar nicht angezeigt. So empfielt es sich

  • zunächst per Explorer in den Pfad C:\Windows\System32\drivers\etc\ zu gehen (in der Adresszeile dieses Ziel einfügen und bestätigen)
  • mit Rechtsklick die Eigenschaften des Datei hosts aufrufen
  • auf den Reiter “Sicherheit” gehen
  • auf den Knopf “Bearbeiten” klicken
  • Anschließend den Benutzer oder die Administratoren Gruppe auswählen und ein auf das Kästchen bei Vollzugriff klicken.
  • Alles speichern und schließen

Jetzt kann die Datei mit jedem Editor geöffnet und angepasst werden. Damit habe ich die Routen für mein NAS fest eingetragen und gleichzeitig auch noch einige bekannte Tracking- und Werbedienste ausgesperrt. Dazu habe ich diese Sperrliste verwendet.

Thunderbird und “Lokale Ordner”

das ist eigentlich eine Geschichte zum heulen. Ich habe vor einiger Zeit alle E-Mail Konten auf IMAP umgestellt. Um aber die E-Mails von überall aus immer zugänglich zu haben ohne die Postfächer überquillen zu lassen, habe ich sozusagen ein Archiv angelegt (Lokalen Ordner), den ich auf mein NAS gelegt habe. Das hat super funktioniert auch mit mehreren Computern gleichzeitig (XPS13, NC10, Desktop Rechner). Also sollte es auch mit dem Surface Book funktionieren.

Thunderbird und alle anderen Programme wurden ganz einfach mit ninite installiert. Zunächst dachte ich, dass ich das gesamte Thunderbird-Profil auf dem Server liegen habe und dieses bei der Einrichtung auch als Ordner angegeben. Danach waren aber die Lokalen Ordner nicht da. Also brach ich den Versuch ab und habe mir mein TB-Profil von einem der anderen Rechner kopiert. Die in den NAS-Order hinzugefügten Dateien habe ich vorsorglich aus dem Ordner in eine Sicherungskopie überführt. Als ich das neue Profil nun gestartet habe, waren die Ordner immer noch nicht da. Also auf die Einstellungen der Lokalen Ordner gegangen und den Ort auf dem NAS nochmal ausgewählt, doch immer noch keine Ordner da. Nach einem Blick in den entsprechenden Datei-Ordner war mir klar wieso: Thunderbird hat dort einen neuen Lokalen Ordner angelegt und alle vormals darin enthaltenen Dateien gelöscht.

Eine Wiederherstellung war auf Grund des RAID1 für mich nicht machbar und ich habe es nach knapp drei Stunden aufgegeben. Im Nachhinein ist es vielleicht gar nicht so schlecht. So sind viele Altlasten entsorgt und die Zugangsdaten sind eh in der KeyPass-Datenbank gespeichert, wie auch viele ProduktKeys, Gutscheine usw.

Damit mir so etwas aber nicht noch ein mal passiert, habe ich in Openmediavault gleich ein RSnapshot eingerichtet um in Zukunft wenigstens ein Backup zu haben.

Thunderbird + KeePass

Mit der neuesten Thunderbird Version hat mein Keepass auf einmal nicht mehr funktioniert. Ich habe auch alle Passwörter und Verbindungen zurückgesetzt, das Addon neu installiert usw. Aber alles hat nichts geholfen. Im Endeffekt bin ich auf eine ältere Thunderbird-Version zurück gegangen (38.7.2) mit KeeFox (1.6.0) und KeePass (2.32) funktioniert nun alles wieder.
Ein weiteres komisches Phänomen: Thunderbird sagte mir, dass Lightning nicht mehr kompatibel wäre. Es wurde daher deaktiviert. Ein Update dafür lag leider auch nicht vor. Ich habe dann die Version 4.0.5.2 manuell installiert (also die xpi herunter geladen und über “AddOn aus Datei installieren” eingespielt) und diese war auf einmal kompatibel. Komisches Phänomen, aber ich hoffe, dass es in Zukunft über die Updates einfacher gehen wird.

Nutzung von DoNotSpy10 und Remove Windows 10 Spying Features

SurfaceBook_01Jeder, der Interesse an der Sicherheit seiner Daten und Vorlieben ist, wird über kurz oder lang bei einem dieser beiden Programme landen. Doch man muss durchaus vorsichtig sein, was diese Programme tun. Doch die Möglichkeiten insbesondere von Windows 10 Spying Features die Microsoft-StandardApps entfernen zu können, hat mich dazu bewegt es auszuprobieren. Eigentlich haben auch beide einen guten Job gemacht.

Bei der Nutzung von DoNotSpy10 habe ich mir anfangs keine großen Gedanken gemacht und prompt bin ich in eine Falle getapt. Der letzte Menüpunkt “Sensoren deaktivieren” klingt zunächst einmal sinnvoll: kein Bluetooth, keine Ortung, kein NFC usw. Doch dabei wird auch der Lage-Sensor deaktiviert. Nach einem Neustart ist dann die Option der Display-Ausrichtung in den Einstellungen nicht mehr da.
Bei der Suche bin ich glücklicherweise über einen Beitrag gestolpert, der mich auf den richtigen Weg gebracht hat. Der Link zum Microsoft Support hat mein Problem dann gelöst.

  • DoNotSpy10 nochmal starten
  • den letzten Punkt (Sensoren deaktivieren) muss abgewählt werden
  • die Änderungen anwenden
  • Neustart durchführen

Klick und ziehen aktivieren

Was mich am Anfang sehr gestört hat, weil ich es von meinen bisherigen Geräten gewohnt war, ist das Klick und ziehen z.B. um per Touchpad Symbole zu verschieben. Diese Einstellung ist leider standardmäßig deaktiviert und muss über
Start -> Einstellungen -> Geräte -> Maus und Touchpad -> “Doppeltippen und ziehen”
aktiviert werden. Danach funtkioniert das Touchpad ohne Probleme, sehr reaktiv und präzise.

Sperrbildschirm deaktiveren

  • Win + S und dort regedit eingeben und mit Enter bestätigen
  • In den Baum HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows wechseln
  • Ein neuen DWORD (32-Bit) mit dem Namen NoLockScreen anlegen
  • Mit einem Doppelklick den Wert öffnen und auf 1 setzen

Grafikfehler in Firefox und Thunderbird

Grafikfehler_02Direkt nach dem Installieren aller mir wichtigen Programme, ist mir beim Firefox aufgefallen, dass sich in einigen Situationen (leider nicht reproduzierbar) Grafikfehler gezeigt haben (siehe Abbildung). Ich habe mich deswegen auch schon an den Microsoft-Support gewendet, der mir daraufhin versicherte, dass es ein Hardwarefehler sei und ich das Gerät bitte zurückgeben sollte (Er hat mir sogar 150€ Rabatt angeboten).
Nach etwas Recherche im Internet bin ich auf einen Topic gestoßen, der sich mit Grafikfehler in Firefox befasst. Bis dahin hatte ich nur in Verbindung mit Windows10 gesucht. Darin wird behauptet, dass es mit der Hardware-Beschläunigung von Firefox zusammenhängt. Diese lässt ich wie folgt deaktivieren:

  • Firefox öffnen und in die Adresszeile about:config eingeben
  • nach “gfx.direct2d.disabled” suchen
  • und per Doppelklick den Wert auf deaktiviert setzten
  • Firefox neu starten

Das hat bei mir das Problem behoben und die Freude an dem Gerät deutlich erhöht.
Im Thunderbird muss man die about:config über Extras -> Einstellungen -> Erweitert -> Allgemein -> “Konfiguration bearbeiten” aufrufen. Ansonsten ist das Prozedere genau das gleiche (Neustart nicht vergessen).

Keyboard-Shortcut für die Displayhelligkeit

SurfaceBook_03Die Displayhelligkeit lässt sich im Aktionsmenü leider nur in 25%-Stufen anpassen. Wenn man es genauer haben möchte, muss man über die Energieeinstellungen gehen, was für den täglichen Gebrauch zu umständlich ist. Stattdessen habe ich auf einer Seite

  • Fn + Entf/Del (heller)
  • Fn + Backspace (dunkler)

Auch wenn es auf den Tasten nicht selber angezeigt ist, kann man sich die Kombination gut merken und zumindest mit verbundenem TypeCover schnell die Helligkeit anpassen. Ohne Tastatur muss man das Aktionsmenü oder halt die Energieeinstellungen verwenden.

Außerdem habe ich ein Skript gefunden, dass die Displayhelligkeit ändert. Dieses habe ich für deutsches Windows10 umgeschrieben (hier zu finden). Damit ist es möglich per Batch-Datei die Helligkeit festzulegen.
Jetzt fehlt nur noch, dass es automatisch beim Wechsel in den Tablet-Modus läuft. Gestern ist es mir nämlich passiert, dass ich die Helligkeit ganz unten hatte und im TabletModus nichts mehr sehen konnte. Würde das Skript beim Abdocken laufen, wäre z.B. immer 50% Helligkeit eingestellt und ich würde immer etwas sehen. Mit Tastatur geht es über die Tastenkombination einfach einzustellen, im Tabletmodus ist es erheblich komplizierter wenn man nichts sieht.

Portable Programme in Start (Alle Apps) hinzufügen

SurfaceBook_02Leider ist es in Windows 10 erheblich komplizierter geworden eigene Links in Start bzw Alle Apps hinzu zu fügen. Mit Ziehen und Ablegen ist es nicht mehr möglich und mit Rechtklick -> “Zu Start hinzufügen” wird es nur in den Metro-Bereich übernommen und ist mit der Suche nicht aufrufbar (zumindest bei mir). Dann habe ich viel im Internet gesucht und bin auf folgende Ordner gestoßen:

  • C:\Users\[USER]\AppData\Roaming\Microsoft\Windows\Start Menu\Programs
  • C:\Users\default\AppData\Roaming\Microsoft\Windows\Start Menu\Programs
  • C:\ProgramData\Microsoft\Windows\Start Menu\Programs

Dort kann man auch wirklich Links ablegen. Doch bei mir wurden Sie in den Apps nicht angezeigt. Auch mehrmaliges Neustarten hat nichts gebracht.

Bei mir hat es schlussendlich mit dem ersten Pfad funktioniert. Es scheint jedoch so als würden die Ordner nur bei Änderungen neu eingelesen werden. Ich habe mir dann ein einfaches Programm gesucht, das ich sowieso installieren wollte (in meinem Fall Mp3Gain). Diese legt auch sehr wenige Dateien, RegistryEinträge etc an. Wenn ich dieses Programm zweimal installiert habe (ja das geht, da es unter Windows nicht in den installierten Programmen auftritt), wurden meine Links registriert und angezeigt und waren auch über die Suche zu finden.

Es gäbe sicher auch die Möglichkeit dieses “Neu-Einlesen” über eine Bat-Datei oder einen Installer, der nichts installiert sondern nur die Endprozedur aufruft, zu bewerkstelligen. Da ich aber keine Lust mehr habe weiter zu suchen, bleibe ich erstmal bei meiner jetzigen Lösung. Wer einen einfacheren funktionierenden Vorschlag hat darf sich gerne per Kommentar bei mir melden. Ich werde den Beitrag dann ergänzen.

Zugang zum BIOS

Um in das Bios des SurfaceBook zu gelangen, muss man wie folgt vorgehen:

  • Herunterfahren des Computers
  • Den Lauter-Knopf gedrückt halten und den Power-Kopf betätigen
  • Wenn das Surface-Logo erscheint, kann auch der Lauter-Knopf wieder losgelassen werden.

Viel kann man in dem BIOS zwar nicht einstellen, aber immerhin die Kameras, Bluetooth, WLan und einige andere Geräte deaktivieren.

DesktopSymbole ordnen sich nach Restart neu an

wer lieber mit dem Startmenu arbeitet hat damit wohl kein Problem. Ich habe aber meine wichtigsten Programme gerne auf dem Desktop liegen. Da stört es schon, wenn diese sich nach jedem Neustart wieder links automatisch ausrichten. Oft wird im Internet das Programm DesktopOK vorgeschlagen, doch es geht auch anders, wie es hier beschrieben wurde:

  • den Registry-Editor starten
  • unter HKEY_CLASSES_ROOT\CLSID\{42aedc87-2188-41fd-b9a3-0c966feabec1}\InProcServer32\ Rechtsklick auf „InProcServer32 und die Berechtigung des Schlüssels übernehmen
  • Doppelklick im linken Fenster Standard
  • Unter Wert %SystemRoot%\system32\windows.storage.dll eintragen / ersetzen und mit OK bestätigen.

Leider war der Wert bei mir schon entsprechend gesetzt und ich bin weiter auf der Suche nach einer Lösung.

Firefox als StandardBrowser einrichten

Lange habe ich damit gekämpft, dass bei jedem Klick auf einen Link der Edge-Browser anstelle meines Firefox geöffnet wurde. Über das “Einstellungen”-Menü -> System -> Standard-Apps wird bei Browser zwar der Firefox angezeigt, wenn ich ihn auswählen wollte, bin ich immer wieder zurück gekommen und das Feld war weiter leer, wie wenn nichts hinterlegt wäre.
Auch die Option im Firefox den Browser als Standard festzulegen hat nicht funktioniert.

Funktioniert hat es letztendlich über die immer noch existente Systemsteuerung. Einfach in die Suche eingeben und dort die Standardprogramme auswählen. Auf den ersten Punkt “Standardprogramme festlegen” klicken und den Firefox auswählen. Anschließend ganz unten auf “Dieses Programm als Standard festlegen” klicken. Dann werden automatisch alle Webseitentypen Firefox zugeordnet.

Weitere hilfreiche Links

Wie schon bei der Einrichtung des XPS13 gibt es auch beim SurfaceBook ähnliche mich störende Eigenschaften von Windows. Einige werden doppelt sein, doch bei Win10 hat sich der Pfad möglicherweise geändert.

Entfernen der Schnellverknüpfungen zu Dokumente, Downloads, Videos, Musik, Bilder und dem Desktop
http://www.deskmodder.de/wiki/index.php/Dieser_PC_Ordner_entfernen_Windows_10

OneDrive dauerhaft deaktivieren und entfernen des Symbols in der Laufwerksanzeige
http://www.win-10-forum.de/artikel-windows-10-tipps-tricks/80-windows-10-onedrive-dauerhaft-deaktivieren-aktivieren.html
http://www.howtogeek.com/225973/how-to-disable-onedrive-and-remove-it-from-file-explorer-on-windows-10/

Kalender und Kontakte aus OwnCloud in Windows10 integrieren
https://decatec.de/home-server/owncloud-unter-windows-10-optimal-nutzen/

Chronologie von Fehlern:

15.05.2016: Gerät kam per UPS an.
Beim Browsen mit dem Firefox zeigen sich einige Darstellungsfehler (schwarze Streifen statt Schrift). Außerhalb vom Firefox ist mir das noch nicht aufgefallen. Daher vermutlich kein Microsoft Problem. Behoben, siehe oben

23.04.2016: wie häufig, kleine Darstellungsprobleme bei Firefox: nach wechseln von Tabs wird die Darstellung von der Grafikeinheit neu berechnet und die Fehler sind weg.
Wie oben beschrieben hat sich das Problem mit einer einfachen Einstellung in Firefox und Thunderbird beheben lassen

Etwas schwerer wiegte da der Fehler gerade eben: Die Maus und die Tastatur waren eingefroren. Das Gerät hat also weder auf Strg+Alt+Entf noch auf Maustasteneingaben reagiert. Mit einem Abdocken des Displays (die Taste funktionierte noch) und erneutem Andocken, haben Maus und Tastatur jedoch wieder funktioniert.

06.05.2016: das gleiche Problem wie im April: das Touchpad hat nicht mehr reagiert und ich musste das Gerät abdocken und erneut einstecken. Danach hat es wieder funktioniert. Dennoch ein leidiges Thema

14.05.2016: ein etwas komisches Problem trat heute auf: die Displayhelligkeit war auf einmal sehr niedrig und ich wollte sie hoch stellen. Komischer weise stand sie bereits bei 50%. Normalerweise ist es dann hell genug um bei normalem Tageslicht zu arbeiten. Diesmal jedoch nicht. Wenn ich die Helligkeitseinstellung weiter reduziert habe, hat sich an der Bildschirmhelligkeit jedoch nichts mehr geändert. Von ~45% bis 0% blieb sie einfach konstant.
Nach einem Neustart war das Problem dann verschwunden.

SurfaceBook_0429.05.2016: gerade eben konnte ich das gleiche Phänomen beobachten wie auch schon beim XPS13: das Touchpad hat die Klicks nicht mehr richtig registriert: ein Links-Klick war nicht mehr möglich. Die Touchpad-Tasten haben jedoch noch funktioniert. So konnte ich meinen User abmelden und beim wieder Anmelden hat sich das Problem erledigt. Für mich klingt das daher sehr nach einem Treiberproblem, das sich auf den “Plug’n’Play”-Treiber für Touchpads von Microsoft. In der Ereignisanzeige konnte ich nur eine Information finden (siehe Bild). In jedem Fall handelt es sich um ein Softwarefehler.

Dazu muss ich noch erwähnen, dass ich das Gerät seit etwa 2 Wochen nicht neugestartet sondern immer nur aus dem Ruhezustand oder StandBy wieder aufgeweckt habe.

05.06.2016: Diesmal trifft es wieder den Firefox: jedes mal wenn ich Ihn schließen will erhalte ich die Meldung: “Ungültiger Hostname”. Wenn ich sie weg klicke kann ich den Firefox aber genauso beenden wie immer.
Auf dieser Seite habe ich gefunden, dass es mit dem Addon CookieMonster zusammenhängt, die ich verwende. Wenn man in die about:config geht und nach dem Wert extensions.cookiemonster.tempcookie sucht, sieht man einen Eintrag mit allen temporär zugelassenen Seiten. Darin hat sich ein Fehler eingeschlichen. Löscht man den Wert (also den Inhalt entfernen) funktioniert wieder alles wie vorher (die Lösung habe ich hier gefunden)

Inaktivität bei Simyo und die Folgen

Posted by quark007 | Posted in Uncategorized | Posted on 10-04-2016-05-2008

0

Simyo-LogoManchmal muss man seinem Ärger freien Lauf lassen und heute ist es mal wieder so weit. Diesmal hat mich Simyo geärgert und anschließend eine derart inkompetente Serviceleistung abgeliefert, dass ich mich jetzt hier etwas befreien muss.

Alles fing am vergangenen Freitag an. Ich hatte das letzte Wochenende zwei neue Tagesgeldkonten eröffnet, um dem Zinstief wenigstens ein wenig aus dem Weg gehen zu können. Wie bei Tagesgeldkonten üblich wird dort das SMS-Tan Verfahren verwendet und wie immer habe ich meine alte Simyo Sim-Karte dafür verwendet. Diese steckt noch in einem Unsmartphone, welches nur zum Empfang der TANs angeschaltet wird (sonst ist es immer leer).

Am Freitag kamen dann endlich die Zugangsdaten und ich wollte mich bei den Banken einloggen. Bei der ersten sollte ich meine Daten gleich mit einer TAN verifizieren. Als ich das Mobiltelefon dann angeschaltet habe, steht auf dem Displax nur “Inaktive Sim”. Ich habe mir zunächst nicht viel dabei gedacht und wollte mich bei Simyo einloggen, doch dort war eine Anmeldung nicht mehr möglich. Also den Service angerufen (natürlich kostenpflichtig, sogar eine Mobilnummer). Dieser teilte mir dann mit, dass meine Aktivitätszeit (12 Monate ab 15€ Aufladung) aufgebraucht gewesen sei und nach mehreren Benachrichtigungsmails und SMS ohne nochmaliges Aufladen die Karte deaktiviert worden sei. Die Karte könnte auch nicht wieder aktiviert werden. Mir wäre es nur möglich das Restguthaben auszahlen zu lassen.

Ich viel aus allen Wolken, denn weder E-Mails noch SMS habe ich empfangen, wobei der Kontakt zum Simyo-Service per Mail einwandfrei funktioniert hat. Also kann es kaum an einem Spam-Filter noch an einer gesperrten Mailadresse liegen. Und die SMS kam bei mir auch nicht an, obwohl ich 7 Tage vor der Abschaltung noch eine SMS-TAN empfangen habe. Also schrieb ich nochmal eine E-Mail an den Service, der zunächst nur mir Standard-Textbausteinen antwortete. Ok, also bei Simyo ließ sich also nichts mehr machen: SIM ist tot und SMS-TAN auch…..

Da wurde mir erst bewusst, dass fast alle Online-Konten nicht mehr konfigurierbar waren. Ein Girokonto lauft zum Glück noch auf iTAN-Liste, über den Rest kann ich aktuell nicht verfügen. Und die bestehenden Tagesgeldkonten haben als Referenzkonto jeweils mein Mobil-TAN Girokonto. Ändern lässt sich das Referenzkonto auch häufig nur per SMS-TAN (auch bei MoneYou) oder aber Überweisungsüberprüfung (die Bank überweist einen Minibetrag, der anschließend zurücküberwiesen werden muss). Bis das geändert wäre, würde also auch fast eine Woche vergehen. Somit bin ich zur Untätigkeit verpflichtet 🙁

netzclubAuf der Suche nach einem neuen Prepaid Anbieter ist mir meine Netzclub-SIM-Karte eingefallen, die seitdem wir das 3G-Tablet verliehen haben, bei mir ungenutzt rumliegt. Das schöne daran: bei netzclub gibt es keine Aktivitätssperre. Das heißt auch ohne, dass Geld aufgeladen wird/ist, bleibt die SIM aktiv. Die Werbe-Nachrichten lasse ich per E-Mail kommen und mit einem Spam-Filter direkt löschen. So läuft die Karte nun schon seit Jahren ohne Probleme oder Sperrungen. Für mich daher die Ideallösung für ein MobilTan-Handy.

Also habe ich gleich eine Rufnummerübertragung beantragt, die nun aber leider zwei Wochen dauert. Diese Zeit bin ich noch voll und ganz auf meine Reserven angewiesen. Die schönen Zinsen auf den Tagesgeldkonten lohnen sich jetzt leider kaum noch. War natürlich doppeltes Pech, dass sich das gerade mit der Abschaltung der SIMkarte überschnitten hat, dennoch hat es mich ins grübeln gebracht, ob das MobilTAN Verfahren wirklich das beste ist. Am liebsten hätte ich immer noch eine iTAN-Liste (auch wenn ich die immer mitnehmen muss). Von wo anders als am Computer zu Hause würde ich sowieso kein OnlineBanking machen. Leider bieten immer weniger Banken das iTAN-Verfahren noch an.