wget

Mit wget lassen sich einfach Dateien und sogar komplette Internetseiten herunterladen. Der folgende Aufruf lädt eine Datei runter: 1 wget http://www.server.com/grossedatei.tar.gz Wir können das Downloaden der Datei an einem beliebigen Zeitpunkt unterbrechen (z.B. mit CTRL+C) und dann mit dem -c-Switch an derselben Stelle wieder fortfahren. Wollen wir aus irgend einem Grunde die maximale Downlloadgeschwindigkeit runtersetzen, können wir dies mit –limit-rate tun. Folgender Aufruf setzt das herunterladen einer Datei mit 20 KByte/s fort: ...

ssh

Fast jeder kennt ssh. Mit ssh kann man zu entfernten Rechnern Verbindungen aufbauen: 1 ssh user@host Weniger bekannt ist, dass man mit ssh auch verschlüsselte Tunnels erstellen kann. Als einfaches Beispiel nehme ich eine komplett unverschlüsselte Telnet Verbindung zu einem netcat-Server. Rufen wir auf dem Server netcat auf mit: 1 nc -lp 2000 bzw. bei einigen Versionen: 1 nc -l 2000 Nebenbei starte ich noch den Sniffer ngrep, welcher mir alle Daten schön anzeigt und verbinde mich vom Server auf den Client mit: ...

Beispielhafter Bassshaker- bzw. Bodyshaker-Aufbau

Vor einiger Zeit wurde ich gefragt, wie denn eigentlich mein damaliger Bassshaker bzw. Bodyshaker-Aufbau aussah und welche Komponenten ich dazu verwendet hatte. Dem komme ich natürlich gerne nach, der hier beschriebene Stand ist von Ende August 2011. Der Beitrag ist unterteilt in die Beschreibung der verschiedenen Komponenten, vielleicht hilft es ja noch jemandem ;) Shaker In der L-Couch waren 9 Bassshaker von Pollin  verbaut, von denen jeder rund ~1,5KG Schwingen Lässt (Dank Shaker-Tuning). Diese werden von einer 400W Mono-Endstufe angetrieben und erhalten ihren Ton von meinem Verstärker durch ein Effektgerät über eine Frequenzweiche. Die Position der Shaker sieht man hier: ...

Deep-Sleep des ESP-01 (ESP8266) mit 78 microAmpere

Seit einiger Zeit beschäftige ich mich mit dem ESP8266 für einige Anwendungen rund um meine Heimautomation (mittels FHEM). Um die Wifi-Module so sparsam wie möglich zu betrieben, gibt es die Möglichkeit den Chip in den Deep-Sleep zu versetzen, wo dann nur noch 78 μA verbraucht werden ( Siehe Pin-Belegung des Chips, genauer des ‘post-sleep-reset-pin’ XPD_DCDC hier  ). ...

Export einer Gerätedefinition aus FHEM

Wenn man eine Gerätedefinition komplett mit allen Kommandos aus FHEM ziehen will, bekommt man meist gesagt, dass man doch list [DEVICE] dazu verwenden kann. Was ja auch ganz nett ist, aber leider halt nicht mit “define…” beginnt. Per Zufall bin ich heute über ein Kommando der configdb gestolpert, was genau das kann (bedingt natürlich, dass man configdb nutzt): 1 configdb list [DEVICE] Funktioniert super und endlich kann ich meine Devices einfach verbloggen :)

Mein Batteriewächter für FHEM

Ich wurde vor kurzem gefragt, wie denn eigentlich meine Batteriewarnung innerhalb von FHEM aussieht. Daher hier der Codeschnipsel. Ich verwende das msg modul für Benachrichtigungen, unten muss daher der Name des Empfängers unter Umständen angepasst werden. Es ist eine 300 Sekunden Zeit eingebaut, welche die Meldung “entprellt”, um sozusagen nicht hunderte Mails oder Pushes zu bekommen, wenn ein Schalter mal über 20 Sekunden langsam hoch dimmt und dabei “battery: low” sendet. ...

Setzen des Hostname eines ESP8266

Der ESP8266 meldet sich standardmäßig im WLAN mit dem Namen ESP_… wobei die letzten Stellen aus der MAC berechnet werden. Um aber nun den Namen des Moduls manuell zu setzen, muss man sich einer Hilfsfunktion bemühen. So sieht das dann aus: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 #include <ESP8266WiFi.h> extern "C" { #include "user_interface.h" } // WIFI WiFiClient client; const char* wifiSSID = "<SSID>"; const char* wifiPassword = "<PASSWORD>"; char wiFiHostname[ ] = "ESPonTheRocks"; #define wifiMaxTries 30 #define wifiRepeatInterval 360 int wifiConnectCounter; void setup() { WiFi.begin(wifiSSID, wifiPassword); wifi_station_set_auto_connect(true); wifi_station_set_hostname(wiFiHostname); wifiConnectCounter = 1; while (WiFi.status() != WL_CONNECTED) { delay(wifiRepeatInterval); wifiConnectCounter++; if (wifiConnectCounter > wifiMaxTries) { delay(wifiRepeatInterval * 1000 * 1000); wifiConnectCounter = 0; } } } void loop() { // Do something }

9223372036854775807

Wer schon mal über die Zahl 9223372036854775807 gestolpert ist, wird sich fragen was sich dahinter verbirgt. Eigentlich einfach: Es ist der maximale Wert eines 64 Bit signed integer (2^63 -1), meistens auch als “long” oder “bigint” bezeichnet. Wenn dieser auftaucht, kann man meist von einem Überlauf oder Programmierfehler ausgehen. Und genau letzteres ist bei mir aufgetreten ;)

MQTT für FHEM einrichten

Vor ein paar Tagen wollte ich mir MQTT auf meinem Raspberry (mit Debian) einrichten und in FHEM einbinden. Dazu hatte ich ein bisschen Mühe die Anleitung zusammen zustellen, daher hier meine Kurzreferenz für das eben erwähnte Debian. Richte das Repository für Mosquitto nach der Anleitung  ein. Installiere dann die fehlenden Perl Module: ...

Umwandlung von Int zu Fload im Arduino Code

Vor kurzem habe ich mit dem SI7021 an meinem ESP8266 gespielt und dabei festgestellt, dass die verwendete Bibliothek  die Temperatur ohne Komma oder Punkt ausgibt. Also 2495 statt 24,95°C. Soweit nicht so wild, aber für die Übergabe an MQTT war es notwendig einen Float-Wert für die Temperatur auszugeben. ...