KategorieUncategorized

Gosund EP2, Teckin 22, Tuya Geräte ohne China Cloud und ohne flashen

Nachdem man leider die “flashbaren” Wlan-Steckdosen von Gosund SP111 nicht mehr bei Amazon bekommt ist es schwierig diese in Home Assistant zu integrieren. Schließlich bin ich auf die Component “localtuya” gestoßen. Zwar braucht man trotzdem einmalig die Tuya-App für die Einrichtung, dannach ist man aber von der China-Cloud befreit. In meiner Firewall habe ich auch den Zugriff für die Tuya Geräte auf der Internet geblockt.

Um nun die notwendigen Device-Ids und Keys zu bekommen muss man zunächst einen Account auf https://iot.tuya.com anlegen.

Im Anschluss erzeugt man unter “Cloud Develoment” eine neue App.

Im Anschluss daran müsst ihr eine App unter “App Services –> App SDK” anlegen.

Zum Abschluss müsst ihr noch die App aus dem AppSDK in der App in Cloud Development hinzufügen. Eine detailierte Beschreibung gibt es hier.

Nachdem das soweit erledigt ist, und Ihr nun Access ID/Client ID und Access Secret habt, braucht ihr ein Linux System (beispielsweise eine Raspberry).

Aus dem System installiert ihr nun npm mit folgendem Befehl:

apt install -y npm

Sobald alles durch ist, müsst ihr die tuya-cli installieren. Dies macht ihr mit folgendem Command:

npm i @tuyapi/cli -g

Beachtet bitte Schritte 1-4 von Github.

Nun solltet ihr erfolgreich die Device-Id’s eurer Geräte ausgelesen haben.

Zum Schluss muss noch der Ordner custom_components/localtuya aus disem Git nach custom_components/localtuya in euer Home Assistant Konfiguration kopiert werden.

Mit dieser Konfiguration für Home Assistent kann man nun aus HA ohne die Tuya Cloud auf die Geräte zugreifen.

localtuya:
  - host: 192.168.1.x
    device_id: xxxxx
    local_key: xxxxx
    friendly_name: Tuya Device
    protocol_version: "3.3"
    entities:
      - platform: binary_sensor
        friendly_name: Plug Status
        id: 1
        device_class: power
        state_on: "true" # Optional
        state_off: "false" # Optional

      - platform: cover
        friendly_name: Device Cover
        id: 2
        open_close_cmds: ["on_off","open_close"] # Optional, default: "on_off"
        positioning_mode: ["none","position","fake"] # Optional, default: "none"
        currpos_dps: 3 # Optional, required only for "position" mode
        setpos_dps: 4  # Optional, required only for "position" mode
        span_time: 25  # Full movement time: Optional, required only for "fake" mode
        
      - platform: fan
        friendly_name: Device Fan
        id: 3

      - platform: light
        friendly_name: Device Light
        id: 4 # Usually 1 or 20
        color_mode: 21 # Optional, usually 2 or 21, default: "none"
        brightness: 22 # Optional, usually 3 or 22, default: "none"
        color_temp: 23 # Optional, usually 4 or 23, default: "none"
        color: 24 # Optional, usually 5 (RGB_HSV) or 24(HSV), default: "none"
        brightness_lower: 29 # Optional, usually 0 or 29, default: 29
        brightness_upper: 1000 # Optional, usually 255 or 1000, default: 1000
        color_temp_min_kelvin: 2700 # Optional, default: 2700
        color_temp_max_kelvin: 6500 # Optional, default: 6500


      - platform: sensor
        friendly_name: Plug Voltage
        id: 20
        scaling: 0.1 # Optional
        device_class: voltage # Optional
        unit_of_measurement: "V" # Optional

      - platform: switch
        friendly_name: Plug
        id: 1
        current: 18 # Optional
        current_consumption: 19 # Optional
        voltage: 20 # Optional

Postfix: Reprozessieren der Queue erzwingen

Postflix ist ein MTA. Manchmal ist es aus veschiedenen Gründen notwendig die Mailqueue zu reprozessieren.

Die Mailqueue kann man einfach mit “mailq” oder “postqueue -p” abfragen.

Um die Mailqueue zu reprozessieren einfach folgenden Befehl ausführen:

postqueue -f

In den Logs könnt Ihr den Fortschritt verfolgen:

tail -f /var/log/mail.log

Proxmox LXC Root Disk verkleinern

Wo es bei Proxmox einfach möglich ist, eine disc zu vergößern ist es schwieriger eine “große” Disc wieder zu verklenern. Im prinzip besteht die Prozedur aus folgenden Schritten:

  1. Container stoppen
  2. Backup Erstellen
  3. Container löschen
  4. Backup wiederherstellen mit verkleinerter Disk
pct stop 106
pct destroy 106
vzdump 106 -storage local -compress lzo
pct restore 106 /var/lib/vz/dump/vzdump-lxc-106-*.tar.zst --rootfs local:10

Im Beispiel oben gibt die local:10 die Größe der neuen Disk in GB an.

Docker OpenVPN Client Container für jDownloader, Torrent usw.

Um Dockercontainer über einen VPN Container zu routen muss man nicht viel konfigurieren. Am Beispiel von NordVPN erkläre ich wie ihr andere Container, beispielsweise jDownloader über ein VPN Netzwerk routen könnt.

docker run -ti --cap-add=NET_ADMIN --device /dev/net/tun --name vpn -e RECREATE_VPN_CRON="5 */3 * * *" -e RANDOM_TOP=10 -e USER=<username> -e PASS=<password> -d azinchen/nordvpn

Bei dem obigen aufruf ist es wichtig den Name des Containers zu setzen. In meinem Beispiel “vpn”.

Im Anschluss kann man nun jeden belibigen Container and den VPN Client binden. Im folgenden Beispiel verknüpfe ich einen Debian Container mit dem VPN Client. Hier ist es wichtig –net=container:vpn anzugeben.

docker run -it --net=container:vpn -d debian

Startet man ein traceroute im Debian Container sieht man nun, dass Pakete über den VPN tunnel geroutet werden. Jeder Container kann so über den Tunnel geroutet werden.

MySQL/MariaDB – Tabellen von MyISAM nach InnoDB konvertieren

Manchmal ist es notwendig Datenbank/Tabellen zu konvertieren. Kürzlich stand ich vor dem Problem eine Datenbank reparieren zu müssen.

Table 'tablename' is marked as crashed and should be repaired 

Hier die Queries, welche die notwendigen ALTER statements generieren.

InnoDB nach MyISAM


SELECT CONCAT('ALTER TABLE ', TABLE_SCHEMA, '.', TABLE_NAME, ' engine=MyISAM;') 
FROM information_schema.TABLES WHERE ENGINE = 'InnoDB';

MyISAM nach InnoDB

SELECT CONCAT('ALTER TABLE ', TABLE_SCHEMA, '.', TABLE_NAME, ' engine=InnoDB;') 
FROM information_schema.TABLES WHERE ENGINE = 'MyISAM';

MotionEye oder Synology Survilance Station

Kürzlich stand ich vor dem Problem mehr als zwei Kameras in einer Überwachungssoftware zu betreiben. Synology bietet mit der Survilance Stattion ein sehr gutes und einfach zu administrierendes Tool an. Leider schlagen die Lizenzen deutlich zu Buche. Aus diesem Grund habe ich mich entschieden eine OpenSouce zu nutzen.

Auf der suche stieß ich auf MotionEye. Ebenso gibt es docker als auch native Versionen. Ich entschied mich, die Last von meinen Server zu “off-loaden” und nahm eine Raspberry Pi 3, die sowieso im Schrank rum lag.

Zum Einsatz kam nun das fertige Image von Github und dre ganze Prozess, vom Download, Image-Schreiben bis zum booten dauert nur wenige Minuten.

Nun noch die Initiale Konfiguration durchführen und schon ist die kostenlose Survilance Station mit MotionEye online.

[HowTo] Passwortschutz in Hiawatha

Möchtet ihr ein Verzeichnis mit einem Passwortschutz versehen, geht das wie folgt.

  1. User:Passwort Kombination erzeugen
  2. In Datei speichern
  3. Referenze in Konfig herstellen
  4. Hiawantha neu starten

Nun die Schritte im Detail

  1. Passwort erzeugen
root@server:~# wigwam -b USERNAME

Enter password:
USERNAME:$1$NgPZr/kS$AoYOt7e1.hKk5g99EjkX3

2. Ergebnis in Datei Speichern

echo "USERNAME:$1$NgPZr/kS$AoYOt7e1.hKk5g99EjkX3" > /pathToFolder/.password

3. In Konfig einfügen (/etc/hiawatha/hiawatha.com)

# Add this to vHost or folder to protect

PasswordFile = basic:/pathToFolder/.passwords

4. Neustarten des Webservers

/etc/init.d/hiawatha restart

 

Windows Fax via SIP

Kürzlich stand ich vor dem Problem, mehrere Seiten per Fax (ja es gibt noch Leute die das benutzen) zu verschicken. Leider gibt es im Netz zwar freie Dienste (google berühren) aber leider habe ich keinen gefunden, welche mehr als 5 Seiten zulässt.

Unter Linux gibt es natürlich die Möglichkeit mittels Asterisk und Hylafax ein fax via SIP zu verschicken, jedoch ist das etwas mit Kanonen auf Spatzen geschossen. Es gibt auch die Möglichkeit mittels Fritz!Fax zu faxen, aber bei mir war die Software nicht zum Laufen zu bringen. Also musste ich etwas im Netz recherchieren. Dabei bin ich auf einen virtuellen Modem Treiber gestoßen, welche ein SIP <–> Modem Verbindung herstellst und das ganze auch noch als Freeware.

Der Anbieter Trialware bietet einen solchen Treiber hier an.

http://www.faxback.com/Products/FreeMSFaxDownload.aspx

Low Memory LLMP auf VPS oder Raspberry

Günstige kleine virtuelle Server gibt es für schmales Geld. Bereits für 1,29€ gibts hier das Einsteiger Model.

Mit diesem kleinem HowTo könnt Ihr auf der Raspberry PI oder einem VPS einen voll funktionsfähigen LLMP (Linux, Lighttpd, MySQL, PHP) installieren.

Dieses HowTo basiert auf Raspian bzw. Debian Wheezy.
Zuerst bringen wird das System auf einen akutellen Stand:

# apt-get update && apt-get upgrade

Nachdem jetzt das System up2date ist, fangen wir mit dem Web-Server an:

# apt-get install lighttpd

Wenn wir nun mehrere Webseiten hosten möchten machen wir e uns einfach und nutzen das module simple_vhost. Dieser Mod ermöglicht uns, indem wir eine gewisses Fromat bei der Ordnerstruktur einhalten, dass wir ohne weiter konfiguration mehrere vHosts betreiben können.

 

# lighttpd-enable-mod simple-vhost

Nachdem nun das Modul aktiviert ist, müssen wir die Konfiguration noch anpassen:

# nano /etc/lighttpd/conf-enabled/10-simple-vhost.conf

Hier ändern wir die Datei wie folgt:

# /usr/share/doc/lighttpd/simple-vhost.txt

server.modules += ( "mod_simple_vhost" )

## The document root of a virtual host is document-root =
##   simple-vhost.server-root + $HTTP["host"] + simple-vhost.document-root
simple-vhost.server-root         = "/var/www/"
simple-vhost.document-root       = "html"

## the default host if no host is sent
simple-vhost.default-host        = "server2.tschoerner.eu"

Jetzt legen wir einen vHost an, und zwar im folder /var/www

# mkdir -p /var/www/test.server2.tschoerner.eu/html
# echo '<h1>Lighttpd on Linux Rocks!</h1>' > /var/www/test.server2.tschoerner.eu/html/index.html

/etc/init.d/lighttpd force-reload

Wenn Ihr jetzt auf den Server zugreift, wird euch “Lighttpd on Linux Rocks!” präsentiert.

WordPress installieren

Zuerst brauchen wir php und mysql, dann können wir weitermachen.

# apt-get install bsdutils
# apt-get install mysql-server php5-cgi php5-mysql

Jetzt aktivieren wir php für alle unsere vHosts

# nano /etc/lighttpd/conf-enabled/10-cgi-php.conf

und fügen folgendes ein

server.modules += ("mod_cgi")
cgi.assign = (".php" => "/usr/bin/php5-cgi")

Lighttpd neu starten, so dass die Config geladen wird

# /etc/init.d/lighttpd force-reload

Wir testen ob php geparst wird:

echo '<?php phpinfo(); ?>' > /var/www/test.server2.tschoerner.eu/html/phpinfo.php

MySql Stuff (User anlegen & Datenbank)

# mysqladmin -uroot -p create blog
# wget http://wordpress.org/latest.tar.gz
# tar xvzf latest.tar.gz -C /var/www/test.server2.tschoerner.eu/html
# cd /var/www/test.server2.tschoerner.eu/html
# mv wordpress/wp-config-sample.php wordpress/wp-config.php
# nano wordpress/wp-config.php

Jetzt noch Lighttpd die Permalink struktur beibringen

# cat > /etc/lighttpd/conf-enabled/my.conf
$HTTP["host"] == "test.lowendbox.com" {
    $HTTP["url"] =~ "^/blog/" {
        server.error-handler-404 = "/blog/index.php"
    }
}

# /etc/init.d/lighttpd force-reload

Und jetzt noch einige optionale Tweaks um Speicher zu sparen

# apt-get install dash
# dpkg-reconfigure dash
# /etc/init.d/mysql restart

# apt-get install syslog-ng && dpkg --purge rsyslog

# apt-get remove --purge portmap

Das was schon. Nach 10 Minuten zum Low Memory LLMP