Archive for the ‘Linux’ Category.

FHEM: Flugdaten mit py1090 loggen

Nun kann ich ja Flugdaten mit Hilfe von Jonas Lieb’s py1090 und adsbox in FHEM aufzeichnen. Dies wollte ich immer um die Aufzeichnung des aktuellen Geräuschpegels erweitern. Das Ergebnis sind Erweiterungen der py1090 Klassen und bessere python Ausgaben der aktuellen Daten.

Angefangen habe ich mit einfachen print-Anweisungen und einer seriellen Verbindung zu einem Arduino Nano, der als ADC Wandler für den Geräuschpegel diente. Nun läuft ein nodeMCU mit espEasy. Dadurch (wireless) kann ich den Geräuschpegel ‘Sensor’ unabhängig positionieren. Die Daten lese ich in Python über json vom espEasy. Die aktuellen ‘Lärm’-Daten werden alle x Minuten über einen Python Telnet Client Code an FHEM übermittelt.

Aufbau

Geräuschpegel-Sensor => nodeMCU mit ESPeasy =(WLAN)=> Python Script => FHEM-Logfile + Telnet FHEM

Anfangs habe ich versucht den ‘Sender’-Code direkt in LUA auf dem nodeMCU zu schreiben. Man stösst aber sehr schnell an Speichergrenzen und der Code läuft sehr unzuverlässig. Dagegen ist ESPeasy total einfach einzurichten und bietet direkt einen ADC Sensor. Nun kann man den Wert via MQTT weiterverarbeiten. Da ich aber den Geräuschpegel zusammen mit dem aktuell ‘nächsten’ Flugzeug versenden will, lese ich die Daten via JSON von ESPeasy in Python und versende sie dann zusammen mit den Flugzeugdaten via Telnet an FHEM.

Das erste Python Script verwendet nur einfache Print-Ausgaben für die aktuellen Aktivitäten. Der Inhalt scrollt ständig über den Bildschirm und man hat keine Übersicht.

dump1090

Daher habe ich den Python-Code so geändert, dass er zur Ausgabe curses verwendet:

dump1090term

Leider ‘zerschiesst’ es ab und an den Bildschirm und die Hervorhebung für das ‘nächste’ Flugzeug erstreckt sich dann auch mal über andere Zeilen. Ausserdem kann man das Terminal Fenster nicht in der Größe ändern. Meistens bricht dann der Curses Code und das Python Script ab.

Dann habe ich es noch mit der Python blessings Erweiterung versucht:

dump1090term_blessings

Nun kann man das Terminalfenster zwar im laufenden Betrieb in der Größe ändern, allerdings muß ich die Ausgabe noch besser anpassen (Kopfzeilen).

Ich habe in diesem Python Projekt möglichst mit Klassen und externen Modulen zu arbeiten. Dadurch kann man das Ganze leicht erweitern und anpassen.

Source Code

fhem: Lampe (220V) mit sonoff über WiFi schalten

itead hat mit dem sonoff Modul einen sehr günstigen ESP-8266 basierten WLAN Stromschalter im Programm. Kostet derzeit bei itead unter 5$, allerdings mit ca. 8$ Versand. Wenn man aber gleich vier davon bestellt, lohnt sich das gegenüber anderen China-Versendern, die diese Modul für ca. 10$ verkaufen.

sonoff_wifi_wireless_smart_switch_4__1

Das Ding lässt sich wunderbar mit einer eigenen Firmware flashen, wenn man einen 4-Pin Header einlötet und einen USB-TTL Konverter mit 3.3V hat.

Image635909899921896626_thumb

Continue reading ‘fhem: Lampe (220V) mit sonoff über WiFi schalten’ »

rtl-sdr as flight radar receiver

Last week I got my rtl-sdr usb dongle by http://www.rtl-sdr.com/buy-rtl-sdr-dvb-t-dongles/. I ordered the “RTL-SDR Blog R820T2 RTL2832U 1PPM TCXO SMA Software Defined Radio with 2x Telescopic Antennas”.

Installation of the driver on the Debian Jessie system worked flawless I also first insalled and tested on a Raspberry Pi 2 B without hassles. But as I wanted to use the dongle alos as a radio scanner, I went over two the larger system.

After trying different Linux compatible software for Radio reception I went over to ADS reception. First I started with dump1090, which runs fine without any problems but I missed the flightradar24.com similar display on a google map and airplane details. So I tried ADSbox. After getting the sqlite3 source and placing it nearby the adsbox directory, the compilation went fine and I now can watch some airplanes around my location.

ADSBox - Pale Moon_081

and, some time later (therefor different planes):

ADSBox - Pale Moon_083

Please know that the noise made by these airplanes is loud, even if they are 30000ft high and some kilometres away.

Now, I know which planes are there making the noise and where they are. Frustrating…I can not do anything against the noise but going indoor.

FHEM alle Batterie Zustände auf einmal

Um alle Batterien von Sensoren in einer Gruppe anzuzeigen habe ich folgendes in meiner fhem.cfg:

#Batteriestatus aller Devices im Raum Zentral anzeigen
define ZE.Batterie readingsGroup .*:[Bb]attery\
.*:[Bb]atteryLevel
attr ZE.Batterie notime 1
attr ZE.Batterie room Zentral
attr ZE.Batterie valueFormat {return "0" if( $VALUE eq "low" );; return "100" if( $VALUE eq "ok" );; return "25" if( $VALUE < 2.1 );; return "50" if( $VALUE < 2.3 );; return "75" if( $VALUE < 2.5 );; return "100"}
attr ZE.Batterie valueIcon {'battery.0' => 'measure_battery_0@red','battery.100' => 'measure_battery_100@green','Battery.0' => 'measure_battery_0@red','Battery.100' => 'measure_battery_100@green','batteryLevel.0' => 'measure_battery_0@red','batteryLevel.25' => 'measure_battery_25@red','batteryLevel.50' => 'measure_battery_50@orange','batteryLevel.75' => 'measure_battery_75@green','batteryLevel.100' => 'measure_battery_100@green'}

Selection_075