RasperyPi, CCD und Aluminiumplatte als Zentrale

Begonnen von svenr, 09 Februar 2014, 15:22:28

Vorheriges Thema - Nächstes Thema

svenr

Hallo,

ich habe mich in den letzten Wochen mit FHEM beschäftigt und eine kleine Zentrale zusammengebaut. Vielleicht ist das auch für andere interessant.

Hardware:
FHEM läuft bei mir auf einem Raspberry Pi.
Zur Ansteuerung von Homematic-Komponenten setze ich den Homematic LAN-Adapter (HM-CFG-LAN) ein. Für die FS20-Komponenten habe ich mich für das CCD von busware entschieden. Dieses bietet neben den Transceiver ein LCD Display (2,8 Zoll, 320x240 Pixel) mit einem Touchpanel sowie einen IR Receiver.
Die Netzwerkanbindung erfolgt über einen WLAN-Stick am Raspberry Pi.

Gehäuse / Frontplatte:
Der Raspberry Pi steckt in einem normalen Gehäuse. Für das Display habe ich im Gehäuseoberteil eine entsprechende Aussparung ausgefräst.
Um das Ganze auch im Wohnzimmer anbringen zu können, habe ich mir noch eine Frontplatte aus Aluminium bauen lassen. Es gibt verschiedene Anbieter dazu im Internet. Ich habe meine bei Schaeffer bestellt. Hierzu gibt es einen einfachen Designer, mit welchem die Frontplatte designed und dann online bestellt werden kann.
Meine Frontplatte hat die Maße 190 x 140 x 3 mm und ist aus silbernen Aluminium eloxiert. In der Mitte ist eine entsprechende Aussparung für das Display, 4 Löcher zur Befestigung an der Wand (mit Hilfe von 4 Edelstahlhülsen) und an der Rückseite 4 Buchsen zur Befestigung des Raspberry Pi Gehäuses.
Um das ganze etwas zu verschönern, habe ich einen Schriftzug, eine Umrandung sowie 2 Elemente (Sonne und Haus) mit fräsen lassen.

Software / Darstellung:
Das Display sowie Touchpad werden von Linux unterstützt. Es kann im Prinzip eine FHEM-Oberfläche angezeigt und bedient werden. Aufgrund der geringen Größe müsste die Standardansicht aber angepasst werden. Die Bedienung wird etwas schwierig sein. Ich habe mich daher vorerst für eine reine Anzeige entschieden.
Dazu verwende ich das RSS-Modul. Per cronjob wird alle 10 Minuten ein aktueller Status dargestellt (als Vorlage diente mir das hier: http://forum.fhem.de/index.php/topic,14156.msg118637.html#msg118637). Neben einer Wettervorhersage wird der Status der Heizungssteuerung angezeigt.

Ich habe ein paar Bilder angehängt.

Spezialtrick

Hallo,

deine Lösung gefällt mir sehr gut. Sieht sehr professionell aus. :) So etwas in der Art plane ich auch für meine Fhem Zentrale.

Was hast du für die Frontplatte bezahlt? Könntest du den Inhalt deiner layout.txt Datei posten?
FHEM - Debmatic - Zigbee2MQTT - Homekit

svenr

Hallo,

die Frontplatte hat 59 € gekostet. Sofern man auf Schrift oder Symbole verzichten würde, liegt der Preis niedriger.

Und hier meine layout.txt (die Geräte und Pfade müssen angepasst werden):


font /usr/share/fonts/truetype/freefont/FreeSansBold.ttf # TrueType Schriftart
rgb "ffffff"
pt 17 # Schriftgroesse
date 0.15 0.09
time 0.55 0.09 # Uhrzeit
text 0.75 0.09 "Uhr"
line 5 25 315 25

#Wetter vonnetatmo Station sowie yahoo
halign "center"
#aktuelles Wetter icon von yahoo
img 40 27 0.45 png file { "/opt/fhem/www/images/default/weather/" . ReadingsVal("Wetter","icon","") . ".png" }
#aktuelle Temperatur von netatmo Wetterstation
text 0.12 0.42 { ReadingsVal("NETATMO_AUSSEN","temperature","?")."°" }
#Vorhersage von yahoo
img 120 27 0.45 png file { "/opt/fhem/www/images/default/weather/" . ReadingsVal("Wetter","fc1_icon","") . ".png" }
text 0.36 0.42 { ReadingsVal("Wetter","fc1_low_c","?")." / ".ReadingsVal("Wetter","fc1_high_c","?") }
img 200 27 0.45 png file { "/opt/fhem/www/images/default/weather/" . ReadingsVal("Wetter","fc2_icon","") . ".png" }
text 0.62 0.42 { ReadingsVal("Wetter","fc2_low_c","?")." / ".ReadingsVal("Wetter","fc2_high_c","?") }
img 280 27 0.45 png file { "/opt/fhem/www/images/default/weather/" . ReadingsVal("Wetter","fc3_icon","") . ".png" }
text 0.88 0.42 { ReadingsVal("Wetter","fc3_low_c","?")." / ".ReadingsVal("Wetter","fc3_high_c","?") }

line 10 109 310 109

halign "left"
#Heizung temps
#oben
text 0.04 0.58 "Erik"
text 0.04 0.69 "Flur"
text 0.50 0.58 "Bad"
text 0.50 0.69 "Schla"
text 0.20 0.58 { ReadingsVal("HM_Erik_Thermostat","measured-temp","?")."°" }
text 0.20 0.69 { ReadingsVal("HM_FlurOben_Thermostat","measured-temp","?")."°" }
text 0.71 0.58 { ReadingsVal("HM_BadOben_Thermostat","measured-temp","?")."°" }
text 0.71 0.69 { ReadingsVal("HM_SchlZi_Thermostat","measured-temp","?")."°" }
#Heizungsschalter icons
img 125 117 0.8 png file { "/opt/fhem/www/images/heizung_" . ReadingsVal("HM_Heizung_Erik","state","error") . ".png" }
img 125 144 0.8 png file { "/opt/fhem/www/images/heizung_" . ReadingsVal("HM_Heizung_FlurOben","state","error") . ".png" }
img 286 117 0.8 png file { "/opt/fhem/www/images/heizung_" . ReadingsVal("HM_Heizung_BadOben","state","error") . ".png" }
img 286 144 0.8 png file { "/opt/fhem/www/images/heizung_" . ReadingsVal("HM_Heizung_SchlZi","state","error") . ".png" }

line 10 178 310 178

#unten
text 0.04 0.87 "Bad"
text 0.04 0.98 "WZ"
text 0.50 0.87 "Malte"
text 0.50 0.98 "Flur"
text 0.20 0.87 { ReadingsVal("HM_Bad_Thermostat","measured-temp","?")."°" }
text 0.20 0.98 { ReadingsVal("HM_WZ_Thermostat","measured-temp","?")."°" }
text 0.71 0.87 { ReadingsVal("HM_Malte_Thermostat","measured-temp","?")."°" }
text 0.71 0.98 { ReadingsVal("HM_Flur_Thermostat","measured-temp","?")."°" }
#heizungsschalter icons
img 125 186 0.8 png file { "/opt/fhem/www/images/heizung_" . ReadingsVal("HM_Heizung_Bad","state","error") . ".png" }
img 125 213 0.8 png file { "/opt/fhem/www/images/heizung_" . ReadingsVal("HM_Heizung_WZ","state","error") . ".png" }
img 286 186 0.8 png file { "/opt/fhem/www/images/heizung_" . ReadingsVal("HM_Heizung_Malte","state","error") . ".png" }
img 286 213 0.8 png file { "/opt/fhem/www/images/heizung_" . ReadingsVal("HM_Heizung_Flur","state","error") . ".png" }


Viele Grüße
Sven

nocomment


Alaska

Spitzending!!!!!

Sieht verdammt gut aus....schick aber nicht aufdringlich.... Respekt.

Mitch

Sehr schönes Projekt, danke fürs vorstellen.

Werde dies wahrscheinlöich nachbauen ;D
FHEM im Proxmox Container

kabakakao

sehr schönes Projekt.
Das Display habe ich auch und bin auch schon mit RSS am spielen.
Die Krönung wäre jetzt noch, wenn man mit Swype Bewegungen die Räume "durchscrollen"
könnte und mit Hilfe des Touchscreens Befehle absetzen könnte.

Ein Ansatz dafür wäre "evtest". Bin aber leider nicht so fit im Programmieren  :'(

weiter so

Rince

Wer zu meinen Posts eine Frage schreibt und auf eine Antwort wartet, ist hiermit herzlich eingeladen mich per PN darauf aufmerksam zu machen. (Bitte mit Link zum betreffenden Thread)

MegaData

Hi !
Sorry das ichs nochmal hoch hole, aber so viele scheint es nicht zu geben die das Display gekauft haben... Könntest du vielleicht nochmal genauer beschreiben wie du den Bildschirm so hinbekommen hast ? Einfach als Phone deklarieren und dann die CSS anpassen ?
Hast du die gelbe blinkende LED irgendwie abschalten können ? Die nervt extrem find ich...
Lässt du den Bildschirm Tag und Nacht an ? Gibts da eine Möglichkeit das mit FHEM zu verbinden ?!

Ansonsten: sieht sehr geil aus...

Grüße

svenr

Hallo,

ich habe nicht die Webansicht verwendet. Ich habe das RSS-Modul (Link und Config sh. oben) verwendet. Das RSS-Modul stellt ein Bild (jpg, png) bereit, welches über Linux mit fbi direkt über das Display angezeigt werden kann. Es muss kein X oder ein Browser laufen. Damit hat man natürlich nur eine Anzeige und keine Möglichkeit, auch Befehle darüber zu senden. Der Befehl lautet:

fbi -d /dev/fb1 -T 1 -noverbose -a http://<url:port>/fhem/rss/FrameRSS.png

Ich rufe den Befehl alle 10 Minuten auf, um die Werte zu aktualisieren.

Meine Config für das RSS-Modul:
1. RSS

#RSS fuer Bildgenerierung
define FrameRSS RSS jpg <ip-adresse fhem> /opt/fhem/rss_layout.cfg
attr FrameRSS size 320x240
attr FrameRSS tmin 5


2. layout.cfg
Siehe hier: http://forum.fhem.de/index.php/topic,19975.msg136154.html#msg136154

3. cronjob

*/10 6-22 * * * if sudo pidof fbi; then sudo killall -q fbi && sudo fbi -d /dev/fb1 -T 1 -noverbose -a http://<ip:port>/fhem/rss/FrameRSS.jpg; else sudo fbi -d /dev/fb1 -T 1 -noverbose -a http://<ip:port>/fhem/rss/FrameRSS.jpg; fi; >> /dev/null 2>&1

Das killall -q fbi ist dafür da, dass die alten Prozesse von fbi beendet werden. <ip:port> musst Du noch anpassen.


Die LED kann man abschalten. Ich bin mir nicht mehr ganz sicher, aber der Befehl sollte wie folgt sein (sh. hier: http://forum.fhem.de/index.php?topic=14626.0):

set CCD raw l00

(CCD musst Du evtl. anpassen)

Ich schalte das Display nachts ab (per cronjob). Der Befehl lautet (je nach verwendetem Modul, "echo 0" schaltet wieder ein):
echo 1 > /sys/class/backlight/ili9341fb/bl_power
oder
echo 1 > /sys/class/backlight/fb_ili9341/bl_power
Die cronjob-Einstellung lautet wie folgt (22:30 aus, 6:30 wieder an):

30 22 * * * echo 1 > /sys/class/backlight/fb_ili9341/bl_power
30 6 * * * echo 0 > /sys/class/backlight/fb_ili9341/bl_power


Hilft das weiter?

Viele Grüße
Sven

MegaData

Hi !

Vielen Dank, das hat schon mal sehr weiter geholfen und ist ein guter Einstieg... Wetter, Uhrzeit und erste Temperaturen bekomme ich auch schon angezeigt, jetzt heißts ein bissel rumprobieren... Ich habe gelesen mit anderen Displays kann man auch einen Schalter im FHEM definieren um die Displaybeleuchtung zu steuern und kann somit auf die umständlichen Crontabs verzichten. Das scheint ja bei uns nicht so einfach zu gehen ? Ich muss den Befehl jedes mal als Root ausführen... Habe auch schon mal probiert den User Fhem Root werden zu lassen, aber der Befehl lässt sich partout nicht aus Fhem ausführen - immer nur Permission Denied... Ansonsten könnte man ja theoretisch auch mehrere Bildschirme pollen lassen um verschiedene Infos anzuzeigen... Noch besser wäre natürlich eine Steuerung. Ich denke über nen Floorplan müsste sich das doch auch regeln lassen... ?

svenr

Hallo,

das Display kann auch per FHEM ein-/ausgeschaltet werden. Hier ein Beispiel-Code per dummy:


define Display_aus dummy
attr Display_aus room 00_test
attr Display_aus webCmd aus
define Display_aus_notify notify Display_aus:aus "echo 1 | sudo tee /sys/class/backlight/fb_ili9341/bl_power"
define Display_an dummy
attr Display_an room 00_test
attr Display_an webCmd an
define Display_an_notify notify Display_an:an "echo 0 | sudo tee /sys/class/backlight/fb_ili9341/bl_power"


Der fhem User benötigt noch entsprechende sudo-Rechte. In der /etc/sudoers entsprechend konfigurieren:

fhem ALL=(ALL) NOPASSWD: ALL


Floorplan stellt die Anzeige per html bereit, d.h. es muss ein Browser laufen. Mit dem rss-Modul geht aber auch einiges. Hier meine aktuelle Anzeige:

Viele Grüße
Sven