Skip to content
/ Axela Public

Axela ist ein Smart Home Konzept mit dem 1Wire Bus.

Notifications You must be signed in to change notification settings

mstrupp/Axela

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

18 Commits
 
 
 
 
 
 
 
 

Repository files navigation

Axela

alt text

LED Lampen im Zimmer werden über den One Wire Bus verbunden. Über einen zentralen Controller können die Lampen gesteuert werden.

  • Lampen an- und ausschalten.

  • RGB Lampen Farbwahl.

  • Auslesen der aktuellen Temperatur

  • Raspberry Pi Webserver mit Einstellungen

alt text

Tools

Mit ssh auf den Raspberry Pi

ssh muss auf dem Raspberry Pi aktiviert werden:
systemctl enable ssh
systemctl start ssh
Dann kann sich am PC via ssh eingeloggt werden:
ssh pi@<raspi-ip>
Pro-Tipp: VSCode Plugin Remote-SSH

Raspberry Pi GPIO Pins

pinout.xyz

Installation

One Wire Master (Raspberry Pi)

Die Kommunikationen zwischen dem Master (Raspberry Pi) und den Slaves (Arduinos) erfolgt mit One Wire. Der Raspberry Pi kann sich auf verschiedene Arten mit einem One Wire Bus verbinden. Zum Beispiel mit einem USB One Wire Master Gerät. In diesem Projekt werden jedoch die GPIO Pins verwendet.
Übersicht

One Wire im Linux Kernel ativieren

sudo raspi-config
Interfaces -> 1-Wire -> Enable
Anleitung mit Bildern
Liste von 1Wire Geräten, die mit dem Raspberry Pi Kernel funktionieren

Raspberry Pi Kommunikation mit dem One Wire Bus

Die Kommunikation findet über den Pfad /sys/bus/w1/devices statt.
In den Unterordnern sind die angeschlossenen Geräte aufgelistet. In den Dateien können die Werte im Terminal mit cat <Dateiname> angezeigt werden.

  • Sensoren erzeugen die Datei w1_slave. Darin stehen die Sensorwerte.
  • Der 8-Channel Schalter DS2408 erzeugt die Datei output. Darin stehen in 8 Bit die aktuellen Schalterstellungen. Diese können einzeln geändert werden, indem man sie mit einem Byte überschreibt. Dafür können ASCII-Zeichen verwendet werden.

Webserver (Raspberry Pi)

nginx und php-fpm stellen die Webseite bereit.

NGINX

Installieren: sudo apt install nginx
nginx Dienst starten: sudo systemctl start nginx
NGINX Einstellungen: /etc/nginx/sites-enabled/...
Standard Website Verzeichnis: /var/www/html

PHP-FPM

Php installieren: sudo apt install php-fpm
Php in nginx aktivieren:
In Konfigurationsdatei /etc/nginx/sites-enabled/… ändern:

  • In der Zeile mit dem Inhalt index index.html index.htm; hinzufügen: index.php
  • Bei location einkommentieren: Sontiges einkommentieren, nur das mit php-fpm.

Website

Wenn der Webserver eingerichtet ist, können die Website-Dateien in das Webserver-Verzeichnis kopiert werden. Die Website-Daten befinden sich im Git im Ordner Axela/webserver. Das Standard-Verzeichnis bei nginx ist /var/www/html.

One Wire Slave (Arduino)

Um einen Arduino als One Wire Slave Gerät zu benutzen wird die Bibliothek OneWireHub verwendet.

OneWireHub (Arduino IDE)

  1. Die Bibliothek OneWireHub Arduino IDE installieren (Tools -> Manage Libraries... -> Suchfeld: OneWireHub).

  2. Im OneWireHub-Bibliotheks-Ordner (Dokumente/Arduino/libraries/OneWireHub/src) die Datei OneWireHub_config.h bearbeiten. Damit der Arduino vom Raspberry Pi als One Wire Slave erkannt wird die Variable ONEWIRE_TIME_MSG_HIGH_TIMEOUT auf 38000_usgesetzt.
    constexpr timeOW_t ONEWIRE_TIME_MSG_HIGH_TIMEOUT = { 38000_us };

  3. Das gewünschte Gerät aus dem Axela Projekt Ordner Axela/devicesauswählen und das zugehörige Skript auf den Arduino laden.

Schaltplan

alt text

Entwickler-Notizen

Prinzipiell funktioniert das System. Die Steuerung der LEDs ist manchmal ein bisschen laggy. One Wire Bus scheint eine sehr gute Lösung für vorgefertigte One Wire Sensoren zu sein. Aktuatoren funktionieren jedoch nicht so gut. Im Nachhinein würden wir ein anderes Bussystem wählen.