Archiv der Kategorie: Raspberry Pi

Isc-dhcp-server startet nicht

Ein Kollege brachte mir seinen Raspberry Pi vorbei, auf dem er raspbmc installiert hatte. Zusätzlich richtete er ihn als Access point ein, jedoch hatte seit kurzem das Problem, das der isc-dhcp-server nicht mehr startete.

Beim manuellen starten über die Kommandozeile kam folgendes:
/etc/init.d/isc-dhcp-server start
[FAIL] Starting ISC DHCP server: dhcpd[....] check syslog for diagnostics. ... failed!
failed!

Zunächst schaute ich in die /var/log/syslog

Nov 16 20:42:19 raspbmc dhcpd: For info, please visit https://www.isc.org/softw>
Nov 16 20:42:19 raspbmc dhcpd: Wrote 2 leases to leases file.
Nov 16 20:42:19 raspbmc dhcpd:.
Nov 16 20:42:19 raspbmc dhcpd: No subnet declaration for wlan1 (no IPv4 address>
Nov 16 20:42:19 raspbmc dhcpd: ** Ignoring requests on wlan1. If this is not w>
Nov 16 20:42:19 raspbmc dhcpd: you want, please write a subnet declaration
Nov 16 20:42:19 raspbmc dhcpd: in your dhcpd.conf file for the network segme>
Nov 16 20:42:19 raspbmc dhcpd: to which interface wlan1 is attached. **
Nov 16 20:42:19 raspbmc dhcpd:.
Nov 16 20:42:19 raspbmc dhcpd:.
Nov 16 20:42:19 raspbmc dhcpd: Not configured to listen on any interfaces!

Um einen Fehler in der Konfiguration auszuschließen, überprüfte ich die /etc/default/isc-dhcp-server, die /etc/network/interfaces und /etc/dhcp/dhcpd.conf.
Einen Fehler konnte ich nicht finden.
Bei ifconfig fiel mir jedoch auf, das das WLAN interface nicht die zugewiesene IP Adresse bekommen hatte.
Nach einem /etc/init.d/network restart auf der Kommandozeile, war die konfigurierte IP Adresse zugewiesen und auch der DHCP Server konnte gestartet werden.

Workaround

Nach einer Recherche im Internet fand ich heraus, das ich nicht der einzigste war der das Problem hatte. In einem Forum stieß ich auf einen Eintrag, das beim Hochfahren des Systems sich die interfaces und der DHCP Server in die quere kommen. Eine konkrete Lösung für das Problem fand ich jedoch nicht, also habe ich als workaround folgendes in der /etc/rc.local vor exit 0 eingetragen.

ifdown wlan1
ifup wlan1
sleep 20
service isc-dhcp-server start

Falls jemand eine andere Lösung hat, immer her damit.

[Fhem] am Wochenende bleibt die Lampe aus

Um am frühen Morgen geweckt zu werden gibt es Wecker, Radios, Handys, Kinder oder ein Aufwachlicht. Jedoch möchte der ein oder Andere am Wochenende gerne länger schlafen.

Wenn ein Aktor am Wochenende (Samstag/Sonntag) zu einer anderen Zeit beziehungsweise gar nicht geschaltet werden soll, kann über die Variable $we eine entsprechende Abfrage erstellt werden. Am Wochenende hat die Variable den Wert 1, unter der Woche den Wert 0.

Folgende Zeile schaltet die Lampe um 6:30 ein, jedoch nicht am Wochenende:


define Licht_SchlafzimmerAn at *06:30 { if ((!$we)) { fhem "set Licht_Schlafzimmer on" } }

Temperatursensoren in FHEM einbinden

Die OneWire Temperatursensoren kann ich wie hier beschrieben, bereits über die Kommandozeile auslesen. Um die Sensoren in fhem einzubinden würde man normalerweise OWFS nutzen, jedoch kann OWFS keine Sensoren direkt am GPIO Port auslesen. Möchte man auf OWFS nicht verzichten, müßten die Dallas Sensoren über ein DS 2482-100S ausgelesen werden.

Eine Alternative wäre ein Shellscript, welches die Temperatur ausliest und in fhem eingebunden werden kann.

Ich habe mich jedoch für das Modul 58_GPIO4.pm entschieden, welches man hier runterladen kann:
https://github.com/mhop/fhem-mirror/blob/master/contrib/58_GPIO4.pm

Das Modul muss in dem Ordner FHEM abgelegt und fhem neugestartet werden.

In der fhem.cfg reicht dann folgendes aus, damit die Werte über die Weboberfläche ausgegeben werden:


# Sensor definieren
define FlurTemp GPIO4 28-000004b91510
# Model des Sensors angeben
attr FlurTemp model DS18B20
# ensprechendes Icon setzen
attr FlurTemp icon icoKLIMA
# Raum zuweisen
attr FlurTemp room Flur

Temperatursensor in fhem

Temperatursensor in fhem

[Fhem] wenn sunset zu spät ist

Wie ich hier bereits geschrieben habe, kann man die Funksteckdosen nach Sonnenaufgang (sunrise) und Sonnenuntergang(sunset) schalten.

Nur leider ist es bereits dunkel, wenn die Steckdose und die damit verbundene Lampe eingeschaltet wird. Bis dahin bin ich entweder über einen der Hunde, Kinderspielzeug oder die eigenen Füße gefallen. Obwohl ich glaube, das bei den eigenen Füßen auch nicht das Licht hilft.

Auf jeden Fall ist es ganz einfach, die Steckdose vor dem Sonnenuntergang zu schalten.

define LampeFlurAn at *{sunset(-3600,"17:00","22:00")} set LampeFlur on

Mit der Angabe -3600 (Zeitangabe in Sekunden) wird die Steckdose, in diesem Fall eine Stunde, vor dem Sonnenuntergang eingeschaltet.

[Raspberry Pi] Temperatur Sensor auslesen

Nachdem die Funksteckdosen in FHEM eingerichtet sind, wollte ich nun die Temperatur in den einzelnen Zimmern messen.
Hierfür hatte ich mir gleich mehrere OneWire Sensoren des Typs Dallas 18B20 zugelegt.

Das Problem bei der Variante über den OneWire Sensor ist die Verbindung zwischen dem Raspberry Pi und den Sensoren herzustellen. Ich hatte Glück das wir vor einigen Jahren gebaut haben und ich nun auf die Netzwerkverkabelung zurückgreifen konnte.
Auf einer Lochrasterplatine habe ich RJ 45 Buchsen gelötet und die Sensoren an RJ 45 Stecker.

OneWire Sensor

RJ45

Die Pins des OneWire Sensors werden wie folgt belegt:

Pin 1: Masse
Pin 2: GPIO4
Pin 3: 3.3V

Pin Belegung
Zwischen Pin 2 und 3 habe ich noch einen 4,7 KOhm Widerstand gesetzt.

Damit der Raspberry Pi in der Lage ist die Sensoren auszulesen, müssen zwei Module geladen werden.


sudo modprobe w1-gpio
sudo modprobe w1-therm

Um sich das händische laden der Module nach jedem Neustart zu sparen, können die Module in der /etc/modules eingetragen werden.

Unter /sys/bus/w1/devices/ findet man dann den Sensor, in meinem Fall ist es 28-000004b84990.
Ein cat 28-000004b84990/w1_slave liefert folgendes:
7f 01 4b 46 7f ff 01 10 33 : crc=33 YES
7f 01 4b 46 7f ff 01 10 33 t=23937

t=23937 gibt die Temperatur an, hier 23,937 Grad.