Direkt zum Hauptinhalt

Nous A1T mit Tasmota Firmware

Mit dem Nous A1T lässt sich kostengünstig über einen Zwischenstecker die Stromversorgung von Ressourcen einschalten. Durch die Tasmota Firmware kann auch die Software angepasst werden.

nousa1tp.jpg

Wichtig ist, dass es sich bei dem Nous um die Tasmota-Variante handelt, da nur diese ohne externe Cloud funktioniert.

Tasmota Schaltsteckdose einbinden - HowTo

Diese Anleitung basiert auf https://nous.technology/product/a1t/de.html

Schaltsteckdose einstecken und Web Interface öffnen

  1. Diese Dose öffnet nach kurzer Zeit einen eigenen Access Point. Wir verbinden uns mit dieser SSID und rufen das Web Interface http://192.168.4.1 (HTTPS nicht von Haus aus unterstützt!) vom Nous auf. In der Regel ist die IP-Adresse folglich 192.168.4.1. Siehe auch https://nous.technology/product/a1t/de.html

Mit Wifi SSID verbinden

Wir suchen unsere lokale Werkstatt-SSID aus und verbinden das Modul:

grafik.png grafik.png

Nach der Kopplung findet sich die Schaltsteckdose nun im Netzwerk eingebunden wieder. Wir verwenden die im Beispiel angegebene IP-Adresse 192.168.188.39 und rufen erneut das Web Interface auf: http://192.168.188.39. Damit sind wir in der Lage alle weiteren Einstellungen vorzunehmenvorzunehmen.

Tipp: Wir empfehlen das Gerät nach dem Einbinden sinnvoll in der Netzwerkübersicht des Routers/Access Points zu benennen.

Modul konfigurieren

Folgende Configs sind - ausgehend von den Werkseinstellungen - je Steckdose zu ändern. Alle hier nicht angegebenen Einstellungen können beim Standard belassen werden.

  • Configuration → Configure MQTT
    • Host (Die IP-Adresse oder Hostname des FabAccess Servers)
    • Port (Standard 1883)
    • Benutzername
    • Passwort
  • Configuration → Configure Other
    • Web Admin Password setzen (Der Nutzername ist admin)
    • Device Name
    • Friendly Name 1
    • HTTP API deaktivieren
  • PowerOnState anpassen. Die Steckdose kann so konfiguriert werden, dass sie immer den letzten gespeicherten Zustand einnimmt (d.h. wenn die Dose vorher aus war, wird sie beim nächsten Einstecken auch aus sein). Das Setzen erfolgt in diesem fall über die Console durch Ausführen von PowerOnState 1 (Bestätigen mit Enter)
  • Kalibrierung der Stromwerte (Netzspannung) für korrektes Monitoring/Reporting → https://tasmota.github.io/docs/Power-Monitoring-Calibration/#setup
  • Firmware Upgrade / Flash custom TLS enabled Firmware. Diese erlaubt die (fast) automatische Nutzung des Lets Encrypt Root Zertifikats ohne sämtliche weitere Konfiguration auf dem Modul. Lediglich mosquitto und BFFH müssen Lets Encrypt verwenden

tasmota.png

Der Screenshot zeigt ein paar der obigen Einstellungen

Bekannte Probleme

Achtung: Nutzer können die Admins ärgern:

  • Nutzer können FabAccess umgehen, wenn sie die Steckdosen auf Werkseinstellung zurücksetzen und die Tasmota Schaltsteckdose umkonfigurierenUm die Smart-Steckdose auf die Werkseinstellungen zurückzusetzen, benötigen Sie: Stecken Sie das Gerät sechsmal ein und aus und lassen Sie es das siebte Mal eingeschaltet. Die LED sollte zu blinken beginnen. Dies bedeutet, dass die Steckdose wieder angeschlossen werden kann.

Erweitertes Setup

Über die unverschlüsselte Standardvariante mit MQTT lässt sich auch eine MQTTS-Verbindung herstellen, sofern Tasmota entsprechend dafür ausgestattet ist

TLS-Verschlüsselung verwenden

Standard ist:

  • Host: 192.168.1.192
  • Port: 1883

Angepasst ist:

  • Host: fabaccess.fablabchemnitz.de
  • Port: 8883

tasmota_tls.png

Prüfen, ob der DNS-Eintrag klappt und der Port offen ist. Sonst kann keine MQTTS Verbindung aufgebaut werden:

Der DNS-Eintrag ist aktuell im public DNS eingetragen (neycerha) und zeigt auf 192.168.1.192 → das funktioniert nicht, weil wir das DNS der Fritzbox nicht überschreiben können

Für ein LAN wird ein eigener DNS-Server gebraucht, z.B. Unifi DreamMachine oder ein pi-hole.

dig fabaccess.fablabchemnitz.de +short
dig @ns2.fablabchemnitz.de fabaccess.fablabchemnitz.de +short
dig @8.8.8.8 fabaccess.fablabchemnitz.de +short
 
#private DNS Server zuhause
dig @76.76.2.2 fabaccess.fablabchemnitz.de +short
dig @76.76.10.2 fabaccess.fablabchemnitz.de +short
dig @2606:1a40::2 fabaccess.fablabchemnitz.de +short
dig @2606:1a40:1::2 fabaccess.fablabchemnitz.de +short
dig @192.168.1.22 -> empty. Warum? Weil die FritzBox mit einem eigenen Eintrag bereits 192.168.1.192 inne hält und sich nicht überschreiben lässt #fritzbox
 
telnet fabaccess.fablabchemnitz.de 8883

In Tasmota Console:
https://tasmota.github.io/docs/Commands/#setoptions

#setzen
SetOption103 1
SetOption132 0
 
#output prüfen:
SetOption103
SetOption132
 
#DNS Server 1 "IPAddress4" verändern (testweise)
IPAddress4 192.168.1.22 #default
IPAddress4 8.8.8.8 restart 1
 
#DNS Server 2 "IPAddress5" verändern (testweise)
IPAddress5 0.0.0.0 #default
IPAddress5 8.8.4.4
IPAddress5 45.136.31.74 restart 1
 
#mDNS enablen - nur testweise
SetOption55 1
Deprecated Fingerprint Methode

Fingerprint erzeugen: https://github.com/issacg/tasmota-fingerprint/releases

cd /opt/
wget https://github.com/issacg/tasmota-fingerprint/releases/download/v1.0.0/tasmota-fingerprint_1.0.0_Linux_armv7.gz
gunzip tasmota-fingerprint_1.0.0_Linux_armv7.gz
chmod +x tasmota-fingerprint_1.0.0_Linux_armv7
./tasmota-fingerprint_1.0.0_Linux_armv7 /etc/ssl/certs/ISRG_Root_X1.pem

 TLS Fingerprint eintragen und TLS aktivieren (In Tasmota Console):

#setzen
SetOption103 1
SetOption132 1
MqttFingerprint F4 EA FC 42 1A 8B 2D 2D 2E 1F 65 21 58 BF D7 3B 35 3F 90 4E
 
#output prüfen:
SetOption103
SetOption132
MqttFingerprint
 
#reset Fingerprint:
MqttFingerprint 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
 
#allow all (Warnung: nicht epfohlen):
MqttFingerprint FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF

 PowerOnState

  • 0 = keep power(s) OFF after power up → empfohlen, damit es als Wiederanlaufschutz fungiert
  • 1 = turn power(s) ON after power up
  • 2 = toggle power(s) from last saved state 
  • 3 = switch power(s) to their last saved state (default)
  • 4 = turn power(s) ON and disable further power control
  • 5 = after a PulseTime period turn power(s) ON (acts as inverted PulseTime mode)

Tasmota Actor für BFFH installieren

Zum Koppeln der Schaltsteckdose mit FabAccess wird einerseits die Wifi-Verbindung zwischen Steckdose und Netzwerk benötigt, andererseits auch eine Datenverbindung per MQTT-Protokoll. FabAccess bietet über Aktoren-Schnittstellen die passenden Möglichkeiten, um per Python Script eine entsprechende Verbindung aufzubauen.

cd /opt/fabinfra/
git clone https://gitlab.com/fabinfra/fabaccess/actors/tasmota.git adapters/tasmota
chmod +x adapters/tasmota/main.py
chown -R bffh:bffh /opt/fabinfra/adapters/tasmota

python3 -m venv env
. env/bin/activate #activate venv
pip install -r requirements.txt

Achtung: in main.py sind einige Angabe statisch. Das Topic "tasmota_" wird vorrangestellt, sodass in die bffh Konfiguration nur noch die ID eingetragen werden muss. Hier im Beispiel "F0AC9D"

tasmota-id.png

Das Script kann manuell (unabhängig von bffh) getestet werden:werden, um auszuschließen, dass es Probleme mit dem Server an sich gibt:

# Grunsätzlicher Syntax:
/opt/fabinfra/adapters/tasmota/env/bin/python3 /opt/fabinfra/adapters/tasmota/main.py

usage: main.py [-h] --host HOST [--port [PORT]] [--user USER] [--password PASSWORD] --tasmota TASMOTA name {free,inuse,tocheck,blocked,disabled,reserved,raw} ...
main.py: error: the following arguments are required: --host, --tasmota, name, state

#--user USER = Nutzer des MQTT Servers
#--password PASSWORD = Passwort des MQTT Servers
#TASMOTA name = Device Name, aber ohne führendes "tasmota_"
#userid = FabAccess Nutzer (users.toml)

#Gerät "tasmota_1" als "admin" user nutzen (aktivieren)
/opt/fabinfra/adapters/tasmota/env/bin/python3 /opt/fabinfra/adapters/tasmota/main.py --host localhost --user fablabcfabinfra101 --password PASSWORDfablocal --tasmota F0AC9D1 state inuse adminAdmin
 
#Gerät "tasmota_1" wieder freigeben (ausschalten)
/opt/fabinfra/adapters/tasmota/env/bin/python3 /opt/fabinfra/adapters/tasmota/main.py --host localhost --user fablabcfabinfra101 --password PASSWORDfablocal --tasmota F0AC9D1 state free

Es ist ratsam dabei den Log Output von Mosquitto zu prüfen:

sudo journalctl -f -u mosquitto.service

Custom Tasmota Firmware mit TLS-Support

https://tasmota.github.io/docs/Create-your-own-Firmware-Build-without-IDE/#build-the-firmware

Umgebung aufsetzen

dnf install python python-virtualenv
pip install --upgrade pip
 
cd /home/tomate/FabInfra
 
virtualenv platformio-core
cd platformio-core
. bin/activate
pip install -U platformio
pip install --upgrade pip
cd /home/tomate/FabInfra
git clone https://github.com/arendst/Tasmota.git

Anpassungen vornehmen

vim platform.ini
; uncomment the following to enable TLS with 4096 RSA certificates
-DUSE_4K_RSA
#ganz oben
lib_extra_dirs              =
                              ${common.lib_extra_dirs}
                              lib/lib_ssl
vim tasmota/user_config_override.h
#ifndef _USER_CONFIG_OVERRIDE_H_
#define _USER_CONFIG_OVERRIDE_H_
 
#ifndef USE_MQTT_TLS
#define USE_MQTT_TLS                             // Use TLS for MQTT connection (+34.5k code, +7.0k mem and +4.8k additional during connection handshake)
#define MQTT_TLS_ENABLED       true              // [SetOption103] Enable TLS mode (requires TLS version)
#define USE_MQTT_TLS_CA_CERT                   // Force full CA validation instead of fingerprints, slower, but simpler to use.  (+2.2k code, +1.9k mem during connection handshake)
                                                  // This includes the LetsEncrypt CA in tasmota_ca.ino for verifying server certificates
//  #define USE_MQTT_TLS_FORCE_EC_CIPHER           // Force Elliptic Curve cipher (higher security) required by some servers (automatically enabled with USE_MQTT_AWS_IOT) (+11.4k code, +0.4k mem)
#endif
 
#endif  // _USER_CONFIG_OVERRIDE_H_

Flashen

Für das Flashen zuerst http://ota.tasmota.com/tasmota/tasmota-minimal.bin.gz aufspielen, dann das custom kompilierte tasmota.bin.gz

flash1.png  flash2.png flash3.png

3D-Druck Einhausung vom MakerSpace Gütersloh

gitlab.com/igami/nous-a1-safebox

Falko Richter von 35 Services e.V. Berlin erklärt grundlegende Schritte und demonstriert, wie man Nous A1T Schaltsteckdosen mit Tasmota Firmware verwendet.