[Miniatur Smart Home] Alles kann mit ALEXA gesteuert werden [Tutorial][DIY]

  • Willkommen zu meinem Miniatur SmartHome Projekt :)

    Externer Inhalt youtu.be
    Inhalte von externen Seiten werden ohne Ihre Zustimmung nicht automatisch geladen und angezeigt.
    Durch die Aktivierung der externen Inhalte erklären Sie sich damit einverstanden, dass personenbezogene Daten an Drittplattformen übermittelt werden. Mehr Informationen dazu haben wir in unserer Datenschutzerklärung zur Verfügung gestellt.

    1. Modellplan + Werkzeuge + Material

    Als erstes solltet Ihr euch grob überlegen wie Ihr euer Modell gestalten möchtet und euch vielleicht einen kleinen Plan machen, entweder im Kopf oder in einer Skizze. Dann könnt Ihr euch die Möbel entweder selbst gestalten oder einfach so wie ich fertige Lasercutter Dateien verwenden um eure Räume schön zu gestalten.

    Hier meine Laser Möbel...

    Laser Möbel.zip

    Hier die Verwendeten Werkzeuge...

    MakeBlock LaserBox Pro Lasercutter

    K40 Lasercutter (günstigere Alternative)

    Multifunktions Drill Tool

    Lötkolben (TS100)

    Hier das Verwendete Material (Technik, Holz, Leim, etc.)

    Multiplex Birke (3mm 50x30cm)

    Ponal Express Holzleim

    WS2812 LED´s

    Raspberry Pi 4 Model B

    Wireless Mini Tastatur mit Touchpad für Raspberry Pi mit Akku

    NodeMCU (Arduino)

    WaveShare 2 Zoll Display (320x240)

    SG90 Micro Servo Motor

    HDMI Capture Card 1 (Funktionieren beide)

    HDMI Capture Card 2 (Funktionieren beide)

    Amazon FireTV Stick mit ALEXA Fernbedienung

    Kabel - 7 Farben

    Spiegelfliesen

    2. Räume bauen und Möbel lasern & Zusammenbauen

    Für den Anfang würde raten die Raume zu bauen und Sinnvoll anzuordnen, denn im Schlafzimmer habe ich ja zum Beispiel den Staubsauger Roboter, der auch wirklich fahren kann, wozu eben eine entsprechende Unterkonstruktion montiert werden muss, wofür man platz benötigt. Am besten bedenkt man bei der Anordnung auch immer das man die Kabel & Technik hinten irgendwie verstecken kann.

    Bei der Spiegel Kommode (Schmink Tisch), war ich mega Stolz darauf das ich das sogar halbwegs geschafft habe mit meinem Lasercutter zu "schneiden". War ein 2mm Spiegel...

    3. Alexa Steuerbare LED´s (Beleuchtung mit WS2812)

    Die Steuerung der LED´s habe ich schonmal so in einem anderen Projekt für die Statusanzeige verwendet, daher könnt Ihr das gerne nochmal ausführlich aus meinem anderen Tutorial entnehmen...

    [SmartHome] Statusanzeige mit ioBroker [Tutorial]

    Wie gesagt, die WS2812 LED´s werden genau gleich angesprochen wie in diesem alten Tutorial, das einzige was hier anders gemacht wurde ist die Montage der einzelnen Lichter, dafür habe ich mir die einzelnen WS2812 entsprechend Vorbereitet indem ich jede LED einzeln geschnitten habe und dann links und Rechts Kabel dran gelötet habe um sie Hinterher wieder in Reihe Schalten zu können. Für die Montage habe ich dann einfach links und Rechts von der LED jeweils 3 Löcher gebohrt für die Kabel und die LED dann festgeklebt...

    Für das Bett und den Backofen bin ich ähnlich vorgegangen nur das hier die LED direkt in das Modell gebaut wurde, dann aber auf der Rückseite gemeinsam mit den anderen in Reihe geschaltet um dann die einzelnen LED´s ganz normal über den ioBroker über Tasmota mit der IP-Adresse ansteuern zu können.

    4. Mini TV mit Amazon FireTV Stick (Raspberry Pi + Capture Card + ST7789V Display)

    Kommen wir zuerst zur Verkabelung für dieses Setup, denn das ist schnell gemacht und relativ simpel.

    Die Capture Card kommt per USB an den Raspberry Pi und an die Capture Card kommt via HDMI der Amazon FireTV Stick damit wir das Bild am Raspberry Pi abgreifen können um es dann auf das 2 Zoll Display von Waveshare weiterzuleiten. Die Größe passen wir später im Skript automatisch auf 320x240 Pixel an.

    Die Display Module von Waveshare werden alle fast gleich angeschlossen, daher hier Symbolisch ein Bild für die richtige Verkabelung an den GPIO Pins vom Raspberry Pi 4 Modell B.

    Hier auch nochmal die Pin Belegung vom Raspberry Pi 4 Model B, damit Ihr auch wisst womit Ihr was verbindet.

    Und damit es auch wirklich alle verstehen, hier nochmal schematisch der ganze Verbindungsplan. Da das Audio zwar auch über HDMI mit gecaptured wird, allerdings beides gleichzeitig (Bild & Ton) etwas laggy ist, empfehle ich den Sound direkt via Bluetooth an einen Lautsprecher zu übertragen.

    Jetzt wo wirklich Alle die Verbindung korrekt haben sollten, könnt Ihr die MicroSD Karte eures Raspberry Pi´s nehmen und dort mit dem [Raspberry Pi Imager] das Raspberry Pi OS draufspielen.

    Damit Ihr euch dann direkt headless (ohne Monitor am Pi) mit dem Raspberry Pi über das Netzwerk (am besten mit LAN Kabel) verbinden könnt, empfehle ich euch noch diese Datei direkt in das Stammverzeichnis der MicroSD Karte zu packen, dadurch wird der SSH Zugang nämlich direkt freigeschaltet...

    ssh

    Sobald der Pi dann Eingeschaltet und im Netzwerk ist und Ihr über euren Router die IP-Adresse herausgefunden habt, könnt ihr euch über [Putty] mit folgenden Standard Benutzerdaten einloggen...

    Benutzer: pi

    Passwort: raspberry

    Wenn Ihr dann eingeloggt seid, solltet Ihr den Raspberry Pi erstmal auf den neusten Stand bringen mit folgendem Befehl...

    Code
    sudo apt-get update && apt-get upgrade

    und sobald alles auf dem neusten Stand ist können wir uns darum kümmern das Bild von dem Amazon FireTV Stick über die Capture Card auf den Raspberry Pi zu bekommen. Dafür Empfehle ich euch vorher noch kurz XRDP zu installieren...

    Code
    sudo apt-get install xrdp

    damit habt Ihr nämlich die Möglichkeit euch über Remote Desktop zu verbinden (schon auf Windows Vorinstalliert), dazu einfach die IP-Adresse eures Raspberry Pi bei "Computer" eingeben und auf Verbinden drücken. Die Login Daten bleiben die gleichen wie auch via SSH bei Putty.

    Das hat nämlich den Vorteil, dass Ihr auch sofort ein Bild seht wenn richtig gecaptured wird und das Terminal kann ganz einfach oben über "LXTerminal" gestartet werden und sieht dann auch aus wie bei Putty...

    Dort installieren wir als erstes v4l

    Code
    sudo apt install v4l-utils

    um uns dann alle Capture devices anzeigen lassen zu können, das geht im übrigen mit fast allen Capture Karten, daher empfehle ich euch eben die beidem im Video gezeigten die im Bereich zwischen 10-20€ liegen.

    Code
    v4l2-ctl --list-devices

    dann werden uns auch schon alle Devices angezeigt, unter anderem auch die Capture Card als "UVC Camera" mit "USB Vid" meist deklariert als device mit dem Namen "video0"

    dann können wir mit folgendem Befehl schauen in welchen Formaten wir das Bild abgreifen können...

    Code
    ffmpeg -f v4l2 -list_formats all -i /dev/video0

    was in unserem Fall dann entweder "mjpeg" oder "yuyv422" ist und in beiden Fällen alle Auflösungen angefangen von 1920x1080 bis runter zu 640x480 (geht aber auch noch kleiner).

    Ich empfehle ich dann einfach mit folgendem Befehl weiter zu machen um direkt mal das Bild anzeigen zu lassen (in genau der Auflösung die auch unser 2 Zoll Display darstellen kann)

    Code
    ffplay -f v4l2 -input_format mjpeg -video_size 320x240 -framerate 60 -i /dev/video0

    Somit bekommen wir ein weiteres Fenster geöffnet wo dann das Bild vom Amazon FireTV Stick was über die Capture Card in den Raspberry Pi kommt mit 60 Bilder pro Sekunde in der Auflösung 320x240 dargestellt wird. Kleiner Tipp noch am Rande, mit der Taste "F" könnt ihr das ganze dann auch direkt in den FullScreen Mode togglen, was Später auf jeden Fall wichtig ist für den MiniTV...

    Theoretisch gibt es da noch weitere Möglichkeiten und Befehle, die für uns hier allerdings nicht so von Belang sind. Wer sich dennoch etwas Tiefgründiger darüber Informieren möchte, der kann gerne Mal hier nachlesen was es da noch so gibt...

    https://www.rickmakes.com/cheap-hdmi-usb…raspberry-pi-4/

    Jetzt wo wir das Bild vom Amazon FireTV Stick auf dem Pi haben, geht es darum das Bild von dort auf das 2 Zoll Mini Display zu bekommen. Dafür müssen wir als erstes in die "raspi-config" um dort unter "Interfacing Options" die Option "SPI" auf "enables Yes" zu stellen damit das ganze überhaupt funktioniert.

    Code
    sudo raspi-config

    danach direkt rebooten bevor es weiter geht mit...

    Code
    sudo reboot

    Wenn Ihr dann wieder aufgeschaltet seid, kommen die BCM2835 Libraries drauf indem Ihr diese Befehle nacheinander eingebt...

    Code
    wget http://www.airspayce.com/mikem/bcm2835/bcm2835-1.68.tar.gz
    Code
    tar zxvf bcm2835-1.68.tar.gz 
    Code
    cd bcm2835-1.68/
    Code
    sudo ./configure
    Code
    sudo make
    Code
    sudo make check
    Code
    sudo make install

    danach wieder kurz rebooten

    Code
    sudo reboot

    und sofort weiter mit den wiringPi Libraries...

    Code
    sudo apt-get install wiringpi

    Achtung: Als Info für alle mit einem Pi System nach Mai 2019, hier noch das hier einmal in die Kommandozeile...

    Code
    wget https://project-downloads.drogon.net/wiringpi-latest.deb
    sudo dpkg -i wiringpi-latest.deb

    dann noch eben alle Python Libraries installieren (2 und 3) (befehle bitte nach einander eingeben)

    Wenn das getan ist nochmal kurz rebooten...

    Code
    sudo reboot

    damit Ihr direkt weiter machen könnt mit den Beispiel Dateien von WaveShare...

    Code
    sudo apt-get install p7zip-full
    Code
    sudo wget  https://www.waveshare.com/w/upload/a/a8/LCD_Module_RPI_code.7z
    Code
    7z x LCD_Module_RPI_code.7z -O./LCD_Module_code
    Code
    cd LCD_Module_code/RaspberryPi/

    Dann noch eben die demo Codes Re-Compilen...

    Code
    cd c
    Code
    sudo make clean
    Code
    sudo make -j 8

    und mit folgendem Befehl Testen ob das 2 Zoll Display auch richtig angesprochen wird...

    Code
    sudo ./main 2

    Jetzt solltet Ihr das kleine Anime Mädchen auf eurem Display angezeigt bekommen, wenn alles richtig funktioniert hat. Als nächstes müssen wir uns um den FBCP Transplant kümmern um den Videoinhalt auch live korrekt auf dem Mini Display anzeigen lassen zu können...

    Code
    sudo apt-get install cmake -y
    Code
    cd ~
    Code
    wget https://www.waveshare.com/w/upload/f/f9/Waveshare_fbcp.7z
    Code
    sudo apt-get install p7zip-full
    Code
    7z x Waveshare_fbcp.7z
    Code
    cd waveshare_fbcp
    Code
    mkdir build
    Code
    cd build

    dann für das 2 Zoll Display folgende cmake Options...

    Code
    cmake -DSPI_BUS_CLOCK_DIVISOR=20 -DWAVESHARE_2INCH_LCD=ON -DBACKLIGHT_CONTROL=ON -DSTATISTICS=0 ..
    Code
    make -j
    Code
    sudo ./fbcp

    Damit habt Ihr schonmal die korrekten Einstellungen für euer Display gemacht, jetzt muss das ganze nur noch direkt mit dem Start des Raspberry Pi´s mitgestartet werden...

    Code
    sudo cp ~/Fbcp-ili9341/build/fbcp-ili9341 /usr/local/bin/fbcp
    Code
    sudo nano /etc/rc.local

    und hier dann vor dem "exit 0" das hier einfügen und mit [Strg]+[O] dann [Enter] speichern und mit [Strg]+[X], dann [Ente] wieder raus.

    Code
    fbcp &

    Da es bei manchen aber mit dem Kopieren der Datei oben von "Fbcp-ili9341" in "fbcp", habe ich hier noch eine Alternative, die auf jeden Fall funktioniert und zwar einfach direkt vor das "exit 0" das hier einfügen...

    Code
    sudo /home/pi/fbcp-ili9341/build/fbcp-ili9341  &
    sudo ffplay -f v4l2 -input_format mjpeg -video_size 1920x1080 -framerate 30 -i /dev/video0 &

    Sollte dann so hier aussehen ...

    Danach noch schnell in die Config.txt rein...

    Code
    sudo nano /boot/config.txt

    und dort direkt unter "# uncomment if hdmi display is not detected and composite is being output" folgendes Einfügen/Bearbeiten (auch das ist wieder für den 2 Zoll Display) ...

    Code
    hdmi_force_hotplug=1
    hdmi_cvt=640 480 60 1 0 0 0
    hdmi_group=2
    hdmi_mode=1
    hdmi_mode=87
    display_rotate=0

    Sollte dann so hier aussehen...

    Für den Pi4 Model B dann noch diesen Part hier beachten...

    Code
    [pi4]
    # Enable DRM VC4 V3D driver on top of the dispmanx display stack
    #dtoverlay=vc4-fkms-v3d
    #max_framebuffers=2

    ist weiter unten und sollte dann so aussehen...

    Und wenn all das getan ist, nur noch einmal kurz rebooten...

    Code
    sudo reboot

    dann sollte direkt nach dem Hochfahren alles so aussehen...

    Hier sollte man am besten jetzt eine kleine USB Funk Maus/Tastatur angeschlossen haben, damit man oben einfach auf das "LXTerminal" gehen kann wo man dann folgenden Befehl eingibt. (Der Befehl muss nur ein Mal eingegeben werden und kann jedes weitere mal einfach mit Pfeil nach Oben [🠕] und [Enter] wiederholt werden kann)

    Code
    ffplay -f v4l2 -input_format mjpeg -video_size 320x240 -framerate 60 -i /dev/video0

    dann noch kurz mit der Taste [F] das ganze in den FullScreen togglen und wenn Ihr dann alles richtig gemacht habt, sollte es am Ende ungefähr so bei euch aussehen...

    Für alle die ein anderes Display von WaveShare verwenden möchten was größer oder kleiner als das hier verwendete 2 Zoll Display ist, hier nochmal das Komplette Wiki direkt von WaveShare dazu...

    https://www.waveshare.com/wiki/2inch_LCD…1x42NikCBO7CVOI

    5. Staubsauger Roboter (Mechanismus mit Servomotor SG90 & Magneten)

    Die Idee dafür hatte ich als ich mit ein paar Neodym-Magneten herumgespielt habe beim Zusammenbau des restlichen Modells, das ganze einfach dann mit einem Servomotor zu kombinieren der unter der Plattform den einen Magneten bewegt, woraufhin sich der obere mit bewegt erschien mir dann nur Logisch.

    Man nehme eine NodeMCU und stecke den SG90 Servomotor einfach wie folgt an die GPIO Pins...

    So ist die Stromversorgung (3.3V), Ground gesichert und ansteuern können wir über Pin [D4] (GPIO2).

    Dann eben schnell mit [Tasmotizer] auf die neuste Tasmota Version flashen, hier empfehle ich direkt die "DE" Variante, weil das ganze dann auf Deutsch ist. Darauf Achten das der richtige "COM Port" ausgewählt ist und unten auf "Release" stellen, damit Ihr die passende Tasmota Version aus der Liste auswählen könnt und für die NodeMCU das Häkchen bei "Self-resetting Device" nicht vergessen.

    Der Vorteil daran mit Tasmotizer zu flashen ist das wir hier direkt die Config mit den WiFi- & MQTT-Daten mit drauf senden können, damit unsere NodeMCU direkt mit dem richtigen WLAN & ioBroker verbunden ist...

    Die IP-Adresse bekommt Ihr dann einfach über "Get IP" angezeigt...

    Über diese IP-Adresse könnt Ihr dann die Web-Oberfläche von Tasmota öffnen, wo Ihr dann direkt auf [Einstellungen] und dann auf [Geräte-Einstellungen] klickt. Dort wählt Ihr oben beim Gerätetyp [Generic (18)] aus und dann unten bei D4 GPIO2 [PWM] und Rechts daneben steht dann [1]. ihr könnt auch mehrere Servo-Motoren hier ansteuern, dafür einfach immer entsprechend einen anderen GPIO Pin verwenden und hinter [PWM] dann [2], [3] und so weiter einstellen.

    Dann wieder ins Hauptmenü von Tasmota wo Ihr dann auf [Konsole] geht. Hier müssen wir ein paar Befehle eingeben um die Richtigen Einstellungen für den SG90 Servo vorzunehmen...

    Code
    PWMFrequency 50
    Code
    Setoption69
    Code
    fade on
    Code
    Speed 20

    Wenn das getan ist, könnt Ihr über den Browser den Servo schon ansteuern und von 1-100 die Werte hinten ändern, je nachdem wo der Motor stoppen soll. Hier mal die beiden Befehle (mit meiner IP-Adresse) für ganz Links und ganz Rechts. Dies kann auch so 1:1 über io-Broker per URL-Request angesteuert werden...

    Code
    http://192.168.178.143/cm?cmnd=channel1%201
    Code
    http://192.168.178.143/cm?cmnd=channel1%20100

    Wie hier zu sehen ist steht dort "channel1" und für den Fall das Ihr mehrere Servos ansteuern wollt, könnt Ihr dann hier "channel2", "channel3" Einstellen, was dann den jeweiligen PWM Nummern entspricht die wir zuvor eingestellt haben.

    6. Blockly Skripte für ioBroker

    Hier mein komplettes Blockly Skript aus ioBroker, da es sehr viele Blöcke sind habe ich das ganze in eine Datei gepackt, einfach mit Editor öffnen und alles kopieren und bei ioBroker die Blöcke importieren und eure Anpassungen vornehmen :)

    Miniatur_SmartHome_Projekt.txt

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!