Posts tagged ‘FHEM’

fhem: Flugdaten aufzeichnen mit adsbox und python

Ich wollte gerne die Flugzeug-Aktivitäten, die ich in adsbox mit meinem RTL-SDR empfange aufzeichnen und visualisieren.

Dazu habe ich zuerst TWFlug gefunden. Leider ist das Programm sehr beschränkt und der Quellcode nicht verfügbar. Erschwerend kommt hinzu, dass es ein Java Programm ist. Jedenfalls war es für meine Zwecke unbrauchbar und anhand der unvollständigen Beschreibungen nicht zum Laufen zu bekommen.

Dann habe ich py1090 von Jonas Lieb gefunden. Der Autor hat den Quelltext unter MIT Lizenz freigegeben. Also habe ich den Code unter meinem Github Account kopiert und angepasst. Mein py1090_2 liest die ads-b Nachrichten über Port 30003 von adsbox und schreibt eine Logdatei in einem für fhem tauglichen Format auf demselben Server (Linux Debian 8). Mein Code bereinigt die gesammelten Flugzeuge regelmäßig und berechnet noch absolute Sicht-Entfernungen. Ausserdem kann man festlegen, in welchem Umkreis um eine Position Flugzeuge aufgezeichnet werden. Wenn einem zum Beispiel nur Flugzeuge im Umkreis von 30km interessieren. Das Ganze kann man dann schön aufbereitet in FHEM anzeigen lassen (oben die Anzahl der Flugzeuge und unten die niedrigste Höhe):

fhem-flugdaten

Zudem habe ich den Code so vorbereitet, dass ich später noch Daten zur Laustärke und zum nächst sichtbaren Flugzeug zu FHEM übertrage (via Telnet).

fhem-fluglaerm1

Zuerst einmal die Definition der extern befüllten Logdatei in der fhem.cfg:

Continue reading ‘fhem: Flugdaten aufzeichnen mit adsbox und python’ »

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’ »

fhem: Lampe und Temperatur mit ESPeasy

Ich brauche eine einfache WLAN Steckdose und möchte nicht 30 und mehr Euro dafür ausgeben. Ausserdem soll nur eine minimale Anzahl an Bauteilen verwwendet werden. Da ich noch einen ESP-01 hier habe, wollte ich diesen als WLAN Schalter verwenden. Dazu braucht es nur noch einen Transistor, ein Relais (5V, 220V/10A), ein paar Widerstände und Kondensatoren, einen 3.3V Spannungsregler und ein 5V Netzteil (habe hier noch eins rumliegen).

Als Software habe ich ESPeasy gewählt (siehe auch FHEM Forum). ESPeasy ein MQTT Publisher und kann über einfache http Posts auch GPIO schalten. Das Web-Interface und die HTTP Schnittstelle sind einfach zu bedienen und das Web GUI wird später gar nicht gebraucht.

Selection_087

Continue reading ‘fhem: Lampe und Temperatur mit ESPeasy’ »

fhem rss layout update Wochentag

Im vorherigen Post habe ich uner anderem eine Visualisierung von Abfallterminen beschrieben. Leider konnte ich da noch keine Wochentage als Text darstellen. Nun habe ich die 99_MyUtils.pm erweitert um für einen wday Wert den Wochentag Namen zu bekommen:

package main;

use strict;
use warnings;
use POSIX;

sub
myUtils_Initialize($$)
{
  my ($hash) = @_;
  my $NewMailtime = time;
}
# Enter you functions below _this_ line.
######## Wochentag
sub wochentag($){
   my $wd=shift;
   if($wd > 6){
     $wd=$wd % 7;
   }
   my @Wochentage = qw(Sonntag Montag Dienstag Mittwoch Donnerstag Freitag Samstag);
   return $Wochentage[$wd];
}

######## Wochentag kurz
sub wochentagkurz($){
   my $wd=shift;
   if($wd > 6){
     $wd=$wd % 7;
   }
   my @Wochentage = qw(So Mo Di Mi Do Fr Sa);
   return $Wochentage[$wd];
}
...
1;

Nun kann man dies Funktionen nach einem Neustart von fhem verwenden. In meiner rss.layout steht nun für die Abfalltermine folgendes:

text 400 60 { 'Abfalltermine 5 Tage:' }
text 410 75 { sprintf('%s', wochentagkurz($wday)) }
text 435 75 { sprintf('%s', wochentagkurz($wday+1)) }
text 460 75 { wochentagkurz($wday+2) }
text 485 75 { wochentagkurz($wday+3) }
text 510 75 { wochentagkurz($wday+4) }
text 535 75 { wochentagkurz($wday+5) }

img 410 80 0.2 png file { '/opt/fhem/www/images/tonne_'. fhem('get abfall days 0') .'.png' }
img 435 80 0.2 png file { '/opt/fhem/www/images/tonne_'. fhem('get abfall days 1') .'.png' }
img 460 80 0.2 png file { '/opt/fhem/www/images/tonne_'. fhem('get abfall days 2') .'.png' }
img 485 80 0.2 png file { '/opt/fhem/www/images/tonne_'. fhem('get abfall days 3') .'.png' }
img 510 80 0.2 png file { '/opt/fhem/www/images/tonne_'. fhem('get abfall days 4') .'.png' }
img 535 80 0.2 png file { '/opt/fhem/www/images/tonne_'. fhem('get abfall days 5') .'.png' }

und so siehts dann aus:

Abfalltermine rss

Die Bilder tonne_grau.png, tonne_gelb.png, tonne_papier.png, tonne_buendel.png, tonne_braun.png, tonne_none.png habe ich alle aus einem Bild generiert indem ich die Tonne in GIMP jeweils anders eingefärbt habe.