SchlagwortDebain

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

Lebensdauer von Flashdrives unter Debian/Raspbian/Openmediavault verbessern

Nachdem ich mittlerweile etliche Flashdrives, SSDS & SD-Karten in meinen PIs & Server verschlissen habe, dachte ich mir nun, dass es wohl Sinn macht, mich dem Thema mal etwas genauer anzunehmen.

Nach einigen Recherchen im Internet, gibt es grundsätzlich 2 verschiedene Ansätze. Zum einen den, das Haupt OS generell schreibgeschützt aufzusetzen, oder den, verschiedene Verzeichnisse nur in eine Ramdisk zu legen. Ich habe mich für den 2ten Weg entschieden. Und mein OpenMediaVault dementsprechenden gemoddet.

Ich setzte dabei das Paket fs2ram ein. Dieses ist ähnlich der fstab aufgebaut. Im Gegensatz zu einem normal tmpfs mount, können hier Struktur & Daten gesichert werden. Das Paket ist nicht im Standard Repository, und muss manuell geladen und installiert werden.

Für /tmp sollte der Eintrag in /etc/fstab wie folgt schon vorhanden sein, wenn nicht einfach einfügen zudem auch noch das „defaults,noatime“ bei dem Root-Device einrichten:

/dev/mmcblk0p2  /               ext4    defaults,noatime  0       1
tmpfs          /tmp           tmpfs      defaults,noatime            0     0

Installation von fs2Ram auf allen Platformen (ARM, X32 & X64)

wget --no-check-certificate "https://miami.tschoerner.eu/deb/all/fs2ram_0.3.12_all.deb" -O fs2ram_0.3.12_all.deb
sudo dpkg -i fs2ram_0.3.12_all.deb

Dies ist meine fs2ram.conf von OpenMediaVault:

#
# In case you want to make /var/lock or /tmp available as ram
# filesystems, it is preferable to set the variables RAMTMP, RAMLOCK
# from /etc/default/tmpfs.
#
#<file system>  <mount point>   <script>                <script option> <type>  <options>
#tmpfs            /var/log        keep_file_content       -               tmpfs
#tmpfs            /var/cache      keep_file_content       -               tmpfs
#tmpfs            /var/tmp        keep_file_content       -               tmpfs
tmpfs            /var/log        keep_file_content       -               tmpfs
tmpfs            /var/cache      keep_file_content       -               tmpfs
tmpfs            /var/tmp        keep_file_content       -               tmpfs
tmpfs           /var/lib/openmediavault/rrd     keep_file_content       -               tmpfs
tmpfs           /var/spool                      keep_file_content       -               tmpfs
tmpfs           /var/lib/rrdcached/             keep_file_content       -               tmpfs
tmpfs           /var/lib/monit                  keep_file_content       -               tmpfs
tmpfs           /var/lib/php5                   keep_folder_structure   -               tmpfs

Nach den Änderungen sollte man das System einmal durchstarten.

Falls Ihr eine Disk im System als Root-Disk habt, könnt Ihr noch mit „hdparm“ herumspielen.

#aktuelle Disk status
root@London:~# hdparm -C /dev/sdc

/dev/sdc:
 drive state is:  active/idle

#Disk schlafen schicken
root@London:~# hdparm -y /dev/sdc

/dev/sdc:
 issuing standby command

#status prüfen
root@London:~# hdparm -C /dev/sdc

/dev/sdc:
 drive state is:  standby

#Disk nach 5 Minuten automatisch herunterfahren
root@London:~# hdparm -S 60 /dev/sdc