Beiträge von Gauweiler42

    Schön zu hören und vielen Dank für deine Rückmeldung.

    Ich habe mir auch mal sehr lange Gedanken machen zu einem Thema das hier auch bald Anwendung findet :)

    Also nicht lange schwafeln, sondern direkt weiter zum nächsten Thema:


    PHP-SQL Verbindung herstellen


    Nun wie der Titel schon sagt möchte ich heute eine Verbindung per php zu meiner Datenbank aufbauen.

    Hierfür habe ich euch eine kleine Funktion geschrieben und in einer Datei in einem Unterordner abgespeichert.

    Wir befinden uns also nun in unserem Webverzeichnis und erstellen hier einen Unterordner.

    Der genaue Pfad lautet also dann /var/www/home/utils/sql.php

    Wie oben beschrieben greife ich per FTP auf das Verzeichnis /var/www/home/ zu und erstelle dort der Ordner und die Datei.

    Oder ich mache es schon im Terminal mit nano /var/www/home/utils/sql.php Hierbei wird der Ordner und die Datei direkt erstellt.


    Nun zur Datei

    In eurem Fall müsst ihr dann einfach in dieser Datei den Inhalt der Strings am Anfang tauschen. Je nachdem wie ihr alles benannt habt.

    Es empfiehlt sich einen neuen SQL Benutzer zu erstellen. Das geht sehr einfach in phpmyadmin unter dem Reiter Rechte.


    Wir werden diese Datei nun wie professionelle Informatiker als Blackbox verwenden. Also ihr wisst nicht wie sie funktioniert, aber ihr wisst was ihr reinstecken müsst und was ihr raus bekommt.

    Naja is ja ganz simpel rein steckt ihr nichts und raus kommt die Verbindung zur Datenbank ;)


    Aber was machen wir jetzt damit?

    Auch wieder ganz einfach. php liefert uns schon einige Funktionen mit denen wir arbeiten können.

    Wir müssen an den Start jeder php Datei in der wir mit den Werten der Datenbank arbeiten möchten einen Import dieser Datei setzen.

    Hier mal ein Beispiel:


    PHP: beispiel.php
    1. <?php
    2. include "./utils/sql.php";
    3. $sql = mysqli_query(getDBLink(), "SELECT * FROM tabelle WHERE tabelle.spalte = WERT");
    4. $list = mysqli_fetch_array($sql);
    5. echo($list['spalte']);

    Wir geben den Pfad zu der sql.php Datei relativ an. Ein . bedeutet das aktuelle Verzeichnis und ../ würde ein Verzeichnis davor bedeuten.


    Die Variable sql speichert unsere SQL Abfrage hierzu wird auch über unsere Blackbox Funktion eine Verbindung zur Datenbank aufgebaut.

    Die Variable list speichert das Ergebnis der Abfrage als Dictionary. Ein Dictionary ist ähnlich wie eine Liste, nur dass der Index nicht 0,1,2,3,usw. ist sondern ein Key der zugewiesen wird. In diesem Fall der Name der Spalte.


    Probiert mal ein wenig damit rum im nächsten Artikel werde ich noch etwas konkreter :)


    Falls es hier Probleme oder Fragen gibt stellt sie gerne hier drunter :*

    Die robots.txt


    Heute aus Zeitgründen nur ein ganz kurzer neuer Beitrag.

    Es geht um die robots.txt. In der Theorie dient sie dazu den Crawler, also sozusagen den Kartograph für die Websites auf die richtigen Seiten zu lenken.

    Da das für uns aber wirklich sehr irrelevant ist nutzen wir die robots.txt dazu, dass unsere spätere Seite und die APIs auf gar keinen Fall auf Google erscheinen.

    Das geht wirklich sehr simpel. Wir erstellen eine Textdatei mit dem Name robots.txt in unserem Webverzeichnis und schon überprüfen die Crawler zuerst diese Datei.

    Damit die Crawler dann nicht weiter nach Inhalt suchen verbieten wir ihnen einfach den Zugriff auf alles.

    Das geht so:

    Code: robots.txt
    1. User-agent: *
    2. Disallow: /

    Wirklich sehr simpel und kurz heute :)

    FTP Zugang anlegen


    Also weiter gehts mit dem Projekt. Als nächstes machen wir was sehr simples. Wir wollen einen FTP Zugang zu unseren Dateien haben.

    Warum das?

    Viele System, darunter auch Ubuntu das ich benutze in diesem Projekt erlauben nicht den Login mit root per FTP.

    Wir brauchen also einen Benutzer der in diesem Ordner lesen und schreiben kann.

    Wichtig bevor wir anfangen mit den Rechten müsst ihr eigenständig einen FTP Dienst installieren. Das ist für die meisten kein Problem, weil in Raspbian und ubuntu schon entsprechende Dienste installiert sein sollten.

    Wer den Raspi verwendet kann im folgenden als Lieblingsuser einfach pi verwenden. Dieser Nutzer hat nämlich schon einen eigenen FTP Zugang ;)

    Wer einen neuen Benutzer anlegen will, der kann diesem Tutorial folgen. Falls was nicht klappt schreibt gerne einen Beitrag hier drunter. :)

    Wie machen wir das?

    Nun also eigentlich ganz simpel:

    1. Wir nehmen unseren Lieblingsuser und teilen den Ordner ihm zu. In meinem Fall wäre das sudo chown user /var/www/home
      Wir weisen also dem Nutzer user die Rechte für /var/www/home/ zu. In diesem Ordner liegt ja unser Webserver.
    2. Nun ändern wir die Rechte in für diesen Ordner. Das geht bei mir so chmod 775 /var/www/home
      Also wir machen mit diesem Befehl den Ordner /var/www/home und den Inhalt für den Besitzer und seine Gruppe, also user vollständig frei.
      Anderen Benutzern, machen wir die Dateien aber nur lesbar und ausführbar.

    Chmod Erklärung

    Also ich möchte euch an dieser Stelle noch einmal diesen Befehl erklären. Einen kompletten Überblick hierzu findet ihr hier.

    Code
    1. chmod -v 777 meinedatei.txt
    2. ││└── Andere
    3. │└─── Gruppe
    4. └──── Besitzer

    Hier erstmal ein Überblick. Wir haben 3 Zahlen die bestimmen welche Rechte welcher user hat.

    Jetzt suchen wir uns noch die richtigen Zahlen heraus:

    Code
    1. 7 = Voll
    2. 6 = Lesen und Schreiben
    3. 5 = Lesen und Ausführen
    4. 4 = Nur Lesen
    5. 3 = Schreiben und Ausführen
    6. 2 = Nur Schreiben
    7. 1 = Nur Ausführen
    8. 0 = Keine

    Dann bauen wir den Befehl zusammen und können so die Zugriffsrechte anpassen, wie wir sie brauchen. :)

    Gleichzeitig haben wir auch noch unser FTP Problem gelöst!

    So da keine Nachfragen mehr kamen geht es heute direkt weiter mit dem nächsten großen Schritt.


    Einrichten eines Webverzeichnis


    So also hier ist es jetzt entscheidend, welche Form des Werbedienstes ihr gewählt habt. Habt ihr zum Beispiel einen Webspace mit Plesk gemietet ist die Installation sehr simpel. Ihr macht einfach eine neue Website. Findet ihr auch auf Google.


    Für die Anderen, die mit der Linux Shell gearbeitet haben folgen jetzt weitere Anweisungen:

    Ihr solltet wissen, wo eure Webdienste gepeichert werden. Der Standard ist hierfür /var/www/.

    Dort sollte auch phpmyadmin gespeichert sein. Jede Website hat einen eigenes Verzeichnis.

    Also phpmyadmin ist im ordner /var/www/phpmyadmin/ gespeichert und der die neue Website soll in /var/www/home/ liegen.


    Wer diese Theorie verstanden hat, der kann auch schon mit der Einrichtung anfangen. Solltet ihr nicht verstanden haben warum wir die Systeme in verschiedene Ordner gelegt haben fragt gerne nochmal unter diesem Beitrag. Das Projekt soll so transparent, wie nur möglich sein. :)


    So also dann zur Installation. Hier wird unter Ubuntu eine neue Seite angelegt.

    Wir gehen die Schritte von oben durch. Wirklich simpel.

    1. Verzeichnis anlegen. Als root oder in Ergänzung von sudo: mkdir /var/www/home So erstellen wir ein neues Verzeichnis, also eine neue Website im Ordner home. Dieser Ordnername home kann getauscht werden. Ihr solltet euch nur jetzt schon entscheiden.
    2. Da der Ordner derzeit root gehört, aber von Apache, also unserem Webdienst verwendbar sein muss, müssen wir die Rechte anpassen.
      Hierfür nutzen wir chown -R www-data:www-data /var/www/home und chmod -R 755 /var/www/home. Beides muss als root ausgeführt werden oder ihr müsst ein sudo ergänzen.
    3. Wir erstellen nun eine Beispiel Seite in diesem Verzeichnis, auf das wir zugreifen, um zu sehen ob alles geklappt hat.
      Hier für erstellen wir eine index.php in diesem Verzeichnis. Dies geht so: nano /var/www/hom/index.php
      Schickt ihr diesen Befehl ab, dann öffnet sich euer Editor und ihr gebt eine 0 ein und speichert mit Str+o und schließt mit Str+x.

    So damit habt ihr den nächsten großen Meilenstein gelegt. Von an könnt ihr auf die Seite zugreifen. Wenn ihr eine Domain auf euren Server zeigen lasst, dann könnt ihr auf diese Seite nun zugreifen mit domain/home


    Ich persönlich finde das nicht gut. Ich möchte clean auf einer Domain aufbauen. Also greife ich auf die Website nicht direkt mit meiner Domain zu, sondern mit einer Subdomain.

    Folgend wird das wie folgt aussehen subdomain.domain.de

    So könnt ihr auf einem Server direkt mehrere Websites installieren, ohne dass normale Nutzer etwas davon mitbekommen.

    Also wir sagen erstmal apache2, dass wir eine neue Website angelegt haben.

    Die verfügbaren Seiten werden durch die conf Dateien in /etc/apache2/sites-available/

    Nun wir legen für unsere Seite nun also eine neue Datei an mit sudo nano /etc/apache2/sites-available/home.conf


    Oh was ist denn ein DynDns Dienst. Nun dieser Teil ist nur relevant, wenn ihr den Server bei euch zuhause hostet. Solltet ihr das benötigen bitte benutzt Google. Die Einrichtung ist hierbei abhängig von eurem Router.

    Nur als Tipp zum Schluss: Ich verwende goip.de

    Dieser Dienst ist kostenlos und zuverlässig. ;)


    Solltet ihr den Server nicht zuhause hosten, dann könnt ihr den letzten Teil auch rauslassen. Solltet ihr den Server Zuhause hosten, macht dieses System auch keinen Sinn ^^


    So wenn die Config geschrieben ist speichern und schließen wir die Datei wieder.

    Nun müssen wir die Seite noch freischalten. Dies geht durch a2ensite home.conf

    Diesen Befehl müsst ihr als root ausführen oder mit sudo versehen.


    Jetzt laden wir apache2 noch einmal neu und können dann von der Domain aus auf die Seite zugreifen. Dies geht mit systemctl reload apache2

    Diesen Befehl müsst ihr auch als root ausführen oder mit einem sudo versehen.


    Nun sollte, wenn ihr eure Domain aufruft eine leere Seite zu sehen sein, auf der nur eine 0 zu sehen ist.

    Seid ihr so weit gekommen beglückwünsche ich euch und ihr seid bereit den nächsten Großen Schritt zu gehen.


    Sollte etwas nicht geklappt haben traut euch ruhig unter diesem Beitrag zu kommentieren ;)

    Arbeit in phpmyadmin


    Nun wir haben jetzt einen Datenbankserver, aber wir haben noch keine Datenbank. Diese erstellen wir in diesem Schritt.

    Unter dem Punkt Neu erstellt ihr eine neue Datenbank.

    Wichtig ist, dass ihr als Kollation utf8-general-ci verwendet. So könnt ihr auch alle deutschen Sonderzeichen verwenden.

    Bei dem Namen solltet ihr etwas nehmen, dass auf das Projekt hinweist. Ich habe zum Beispiel den Namen smarthome gewählt.





    Der nächste Schritt ist das erstellen von Tabellen. Hier werden später die Datensätze angezeigt.







    Wichtige Spalten der Tabellen sind:

    Name: Der Name, der beim abrufen zugeordnet wird.

    Typ: Der Typ des Wertes, der an dieser Stelle steht. Wichtig zu wissen: Ihr müsst den Datentyp immer vorher angeben.

    Standard: Wenn bei der Eingabe des Datensatzes kein Wert angegeben wird, so nimmt der Wert diesen Wert als Standard an.


    Ihr solltet eine Spalte angeben in der eine eindeutige Nummer für den Datensatz in der Tabelle gegeben ist. Dies könnt ihr automatisch bei Index einstellen.

    Macht ihr den Haken bei AI (Auto Increment) wird diese eindeutige Nummer pro Datensatz um 1 erhöht.


    Nun nach dem Erstellen der Tabelle können wir über den Menüpunkt Einfügen manuell Daten eingeben.

    Das bringt natürlich noch nicht sehr viel. Daher kümmern wir uns aber erst später zuerst tragen wir erstmal ein paar Daten ein. ;)

    Der Datenbankserver


    Also ich habe ja bereits angekündigt, dass ihr auch selbst euer Hirn anstrengen müsst. Und hier kommt direkt die erste Hürde.

    Bitte installiert auf eurem Server phpmyadmin.

    Ich habe es sinngemäß nach diesem Tutorial gemacht. Wenn ihr kein Ubuntu nutzt (Sollte auch mit Raspbian gehen) dann sucht bitte nach einem passenden Tutorial für euer OS.


    Wichtig noch abschließend zu sagen:

    Falls ihr plant den Server frei für das Internet zugänglich zu machen, solltet ihr unbedingt ein SSL Zertifikat installieren.

    Ich habe meins per Let's Encrypt erstellt und lasse es regelmäßig erneuern. Solltet ihr dazu nichts passendes finden haut mich hier drunter an. Sollte aber recht simpel sein.


    So das wars auch schon. Wenn ihr euch nun in euer phpmyadmin einloggen könnt, dann seid ihr schon bereit für den nächsten Schritt :)

    Coming soon...:*

    Einleitung

    Also was möchten wir machen. Nun wir wollen zunächst einmal einen Datenbankserver mit Datenbank aufbauen in den wir Datensätze eintragen können. Klingt erstmal simpel aber da können einige Fehler passieren.

    Warum schreibe ich wir? Naja ich möchte erstmal auf das Projekt von Niki1803 aufgreifen. Hier findet ihr das Projekt

    Da ich nicht so viel Zeit habe derzeit, aber eine zentrale Verwaltung für meine Daten haben möchte bevor ich weitere ESPs verbaue, beginne ich dieses Projekt.

    Die Möglichkeiten sind nahezu unbegrenzt.


    Vorteile & Nutzen

    Viele werden sich jetzt natürlich fragen wofür man sowas braucht. Naja eigentlich braucht ihr es ja auch nicht. Ihr habt die Homebridge und könnt darüber Licht ein oder aus schalten.

    Diese Projekt ist für Leute wie mich die sich gerne selbst analysieren. Wir sammeln so viele Daten wie möglich und bringen dem System bei mit den Daten zu arbeiten.

    Das kann unterschiedlich aussehen. Denkbare Anwendung der Daten wären zum Beispiel:

    1. Die Daten werden in Charts angezeigt und können so vom Nutzer ausgewertet werden. Zum Beispiel den Benzinverbrauch eines Autos in Verbindung mit der Uhrzeit.
    2. Die Daten werden direkt ausgewertet und es werden Prognosen getroffen. Zum Beispiel kann vorhergesagt werden wie viel Benzin ein Auto im nächsten Monat verbrauchen wird. Begründet an den vorliegenden Daten. Oder wie viel Wasser die Gartenanlage verbrauchen wird, etc.
    3. Das System kann wenn verschiedene Daten zusammenkommen eine oder mehrere Aktionen durchführen. Klar das kann ein Apple TV auch, aber hier können wir es genau auf unsere Bedürfnisse anpassen.

    Planung

    Nun was wollen wir denn nun erreichen?

    Also das ganze wird simpel aufgeteilt:

    1. Datenbankserver und phpmyadmin installieren
    2. Webserver aufsetzen um Daten anzuzeigen
    3. APIs erstellen um Daten automatisch schreiben zu lassen
    4. ESPs programmieren, die dann über die APIs in die Datenbank Datensätze einfügen können

    Nun klingt ja wirklich simpel. Bei einigen Punkten solltet ihr jedoch ein wenig mehr Zeit einplanen.


    Wer bis jetzt nur Bahnhof versteht, dem hab ich mal eine kleine Skizze gemalt. Nicht lachen ich hab mir Mühe gegeben! :D

    Nun gibts noch Fragen ;)^^









    Einkaufsliste

    Also ihr werdet einige Dinge brauchen um zu starten. Wir arbeiten mit Linux, also braucht ihr einen entsprechenden Server. Ich hoste den Webserver auf einem Linux Server in meinem Haus.

    Ihr könnt aber auch einfach einen Webspace nehmen, dann ist da meistens schon phpmyadmin und die nötigen Tools installiert ;)

    Alternativ könnt ihr auch den Raspi auf dem Homebridge läuft nutzen :/

    Grundwissen

    Also ich versuche das Projekt hier so simpel aber aufschlussreich zu erklären, wie es mir nur möglich ist. Dennoch möchte ich hier nicht eine 1:1 Anleitung zeigen. Ihr sollt inspiriert in euer eigenes Projekt starten und bei Problemen hier Rückhalt finden :)


    Ihr solltet also wissen, wie ihr auf einen Linux Server zugreift (ssh, ftp, http, etc.). Solltet ihr das nicht wissen, dann nutzt bitte zuerst Google und wenn ihr dann noch Fragen habt fragt ruhig hier rein.

    Die Installation

    So also wie immer Moin erstmal 8o

    Ich habe mir vor kurzen das Tutorial mit der externen 5V Stromversorgung durchgelesen und in meinem Kopf sind dann, wie war es auch anders zu erwarten, die Ideen kreuz und quer gehüpft.

    Die Ideen gingen von einem simplen Outdoor Bewegungsmelder über eine Outdoor Bodenmessstation mit automatischer Bewässerung (Coming soon? :D) zu einem automatisierten Kondomspender (So damn coming soon 8o) gegangen.


    Am Ende hat dann doch wieder meine Vernunft die Kontrolle übernommen und ich habe mir überlegt, weil mein Rollo sowieso ein wenig kaputt ist und nicht mehr zu hält, ein smartes Rollo zu bauen.

    Meine Voraussetzungen für dieses Projekt sind wie folgt:

    • Ich habe ein schräges Dachfenster
    • Ich habe ein Rollo, dass sich ohne großen Kraftaufwand auf oder zu ziehen lässt
    • Ich habe leider keine Steckdose nah genug am Fenster, also will ich den ESP und den Motor über ein 5V Batterie Paket mit Strom versorgen


    Was habe ich bis jetzt zur Lösung des Projektes getan:

    • Ich habe mir auf AliExpress einen Stepper Motor mit 5V Eingangsspannung und einer UNL2003 Treiberplatine bestellt
    • Zudem habe ich eine Batteriebox gekauft
    • Dazu noch in weiser Voraussicht ein oder zwei Spannungswandler
    • Ich habe mir auf Thingiverse ein Model einer Seilwinde besorgt
    • Ich habe mir schon dieses Plugin werde ich nutzen, da es relativ simpel aussieht


    Ich habe jetzt noch folgende Probleme:

    1. Die Batterie Laufzeit wird wohl leider bei dauerhafter Wifi Verbindung nicht lange halten, also muss ich einen Weg finden das zu regeln, der Deep Sleep Modus wie in diesem Tutorial beschrieben kommt ja leider nicht in Frage ?(
    2. Ich habe mir noch nicht detailliert angeschaut, wie ich den Motor steuern kann ich habe dieses Tutorial mal angeschaut


    Wenn ihr eine Idee habt den Punkt 1 oder gar 2 zu lösen, dann schreibt ihn gerne als Beitrag hier drunter;)

    Magic Home Controller + LED Strip + Stromversorgung für 14,09€


    Wo? AliExpress

    Wie lange? Unbegrenzt


    Vergleich mit dem Amazon Preis:

    LED Strip: 9,90€

    Magic Home Controller: 12,99€

    Stromversorgung: 9,99€


    Gesamt per Amazon: 32,88€

    Ersparnis: 32,88€-14,09€ = 18,79€


    Also wenn ihr den Monat auf eure Ware warten könnt, dann habt ihr hier ein echtes Schnäppchen vor euch. Ihr spart ganze 42,85% =O


    Also ich werde mir demnächst mal eine Einheit erschwaben. Kann euch ja dann nochmal von der Qualität berichten.

    Inhaltsverzeichnis [Verbergen]

    Update auf Version 2.0

    Ja Version 1.0 habt ihr nie gesehen :D

    Ich hab mir jetzt nochmal Gedanken gemacht. Leider erst nach dem programmieren...;(


    Ich nutze derzeit schon das Homebridge-http-webhooks Plugin. Ich habe gestern gesehen, dass ich da ja auch die Möglichkeit habe eine Alarmanlage zu programmieren :|

    Da liegt es jetzt für mich natürlich nahe dieses Plugin zu verwenden. Ich muss dafür aber den Code ändern :sleeping:


    Ich möchte jetzt aber mit euch mein Programm für das oben beschriebene Plugin mit euch teilen und durchgehen.

    Dann können auch Menschen ohne das webhooks plugin eine Alarmanlage einbauen.

    Und die Funktionsweise ist anhand dieses Plugins einfacher zu erklären weil man direkt für jeden Status eine eigenen Funktion definieren kann.

    Das macht das ganze etwas übersichtlicher ;)



    So hier ist der Code für die Alarmanlage. Ich erkläre erstmal kurz was ihr ändern müsst, wenn ihr einfach per Copy and Paste anfangen wollt.

    Wichtig hierbei zu beachten ist, dass noch einige Dinge durch euch implementiert werden müssen, wenn ihr sie übernehmen wollt.

    Also was ihr ändern müsst:

    • Zeile 8,9: Tragt eure Wifi Daten ein.

    Was ihr neu schreiben müsst:

    • Zeile 99-104: Die Abfrage der Sensoren über http
    • Zeile 108: Die Aktionen, die ihr durch einen Alarm auslösen wollt


    Was wichtig ist zu wissen für euch:

    Derzeit könnt ihr die Alarmanlage nicht über die Homebridge deaktivieren. Dafür solltet ihr als Hardware einen Knopf anbauen, über den dann der currentState wieder auf 3 gesetzt wird.

    Wenn ihr das per Homebridge versucht, wird eure Homebridge abstürzen und sich selbst wieder neu starten. Für mich ist das kein Problem, weil die Aktoren der Alarmanlage eh per http geschaltet werden. Es dauert einfach kurz bis die Homebridge wieder da ist :)


    Also hier dann der Teil mit der Erklärung des Codes Ich gehe dabei nicht auf die Standard Sachen der Tutorials ein:

    Hier werden die verschiedenen Stadien der Alarmanlage erbeten.

    Es ist wichtig zu wissen, dass der targetState der Status ist, der von der Home App erwartet wird. Wenn der aktuelle Status, also currentState davon abweicht wird der currentState auf den Wert des targetState gesetzt, außer der currentState ist 4. In diesem Fall wird Alarm ausgelöst.


    Wie genau die Änderungen oder der Alarm verwaltet wird sehen wir hier:


    In der Funktion handleChanges werden die Werte von currentState und targetState, welchen wir durch die http Anfrage gesetzt haben, verglichen und angepasst oder es wird ausgeführt, was passieren soll wenn der Alarm ausgelöst wurde. In diesem Fall wird bei Alarm nur eine Nachricht per Serial gesendet.



    Gut das wars erstmal mit dem Update :P

    Wenn ihr noch Fragen habt, dann stellt sie einfach hier drunter :saint:

    Also nachdem ich jetzt bereits seit ein paar Tagen versuche meinen Fehler zu finden und auch auf Google leider gescheitert bin, will ich euch allen mal mein Problem schildern... :|


    Also ich habe versucht einen Bewegungssensor (HC-SR501) in meine Homebridge und in mein Alarmanlagen Projekt zu integrieren.


    Also alle bereits gegangen Schritte:


    Ich habe den Sensor wie im Datasheet beschrieben angeschlossen. Einen kleinen Sketch geschrieben und dann beim hochladen fingen die Probleme schon an:

    Das Programm lies sich nur auf den ESP laden, wenn ich die 5v Verbindung des Sensors getrennt habe. Habe ich dies nicht getan, dann kam das schreiben nicht weiter als den folgenden Schritt (Ich habe mir dabei nichts weiter gedacht):

    Code: Ausgabe
    1. esptool.py v2.6
    2. 2.6
    3. esptool.py v2.6
    4. Serial port COM5
    5. Connecting........_____....._____....._____....._____.


    Wenn ich dann nach dem Schreiben den Sensor wieder verbunden habe, dann hatte der Sensor keinen Strom mehr (Status LED leuchtete nicht).


    Der nächste Schritt war, dass ich den ESP getauscht habe (selbes Problem).

    Der nächste Schritt war, dass ich den Sensor getauscht habe (selbes Problem).

    Der Nächste Schritt war, dass ich alle verschieden möglichen Verbindungen zwischen 5v, GND, D4 getestet habe (selbes Problem).


    Der nächste Schritt war probeweise einen Schalter zu verbauen, um mögliche Fehler beim Löten oder dem Code zu finden. Hierbei hat das erfassen des Signals problemlos geklappt.

    Daraus schließe ich, dass es an folgenden Dingen nicht liegen kann:

    • Meinem Code
    • Den Lötstellen
    • Den Kabeln
    • Dem Sensor (wurde ja getauscht)
      • Auch den Einstellungen am Sensor
    • Dem ESP (wurde auch mehrfach getauscht)


    Per Ausschlussprinzip kann ich also nur vermuten, dass es an einem der Folgenden Dinge scheitert:

    • Der Stromversorgung
    • Dem Hersteller des ESP (Hab mal grob diesen Beitrag gelesen und habe so eine "DOIT Kugel" als Logo)
    • Der Arduino IDE (Habe aber erst gestern ein Update auf die neue Version gemacht und die ESP Bib neu installiert)
    • Meiner unermesslichen Dummheit ;)


    Please send help! ^^

    Waaaas eine Smarte Kaffeemaschine für unter 10€ wie soll das gehen? =O


    Naja also im Grunde ist das relativ einfach und das Beste ist ich erkläre euch wie das geht:

    Zuerst braucht ihr einige Dinge. Hier eine Checkliste:

    1. Eine Kaffeemaschine, wichtig ist, dass es eine ist, die man per Knopf anschaltet und dann macht.
    2. Ein Sonoff Basic Wifi Switch
    3. Aderendhülsen in 1,5mm Durchmesser
    4. Eine Zange egal welche
    5. Einen Schraubenzieher (Schlitz)
    6. Einen Lötkolben mit Lötzinn
    7. Ein Messer oder eine Schere
    8. Etwas Geduld


    So aber wie kommt man dann auf 10€?! :cursing:

    Naja die einfachen Dinge, wie eine Zange oder einen Lötkolben hat man ja schon Zuhause, oder kann sie für weitere Projekte weiterverwenden.

    Ich habe für meine Kaffeemaschine, eine alte Durabrand in top Zustand, genau 4€ bezahlt. Ihr solltet mal Ebay Kleinanzeigen durchsuchen. Da findet sich schnell eine günstige zum abholen. ;)


    Nun dann habe ich den Sonoff als 5er Pack gekauft, da man ihn ja für sehr viele Sachen einsetzen kann. Da hat dann das Stück ca. 5,50€ gekostet.


    Damit komme ich für meine Smarte Kaffeemaschine auf schlappe 9,50€ und ich muss dafür nicht mal meine gute Delonghi Maschine auseinander nehmen.


    Also dann gehts los! :P


    1. Schritt: Sonoff bereit machen

    Zuerst habe ich meinen Schalter auseinander genommen und wie in diesem Tutorial angeschlossen und programmiert.

    Das Programm habe ich diesem Tutorial entnommen, aber ich musste den entsprechenden Pin anpassen.



    Sollte etwas am Code nicht klar sein, dann fragt mich bitte hier unter dem Beitrag :)


    2. Schritt: Die Kaffeemaschine vorbereiten


    Werdet euch klar darüber, wie die Maschine funktioniert. Wählt danach die einfachste Möglichkeit die Maschine an oder aus zu schalten.

    Ich habe mich dafür entschieden meinen Sonoff direkt an das Kabel und nicht in das Gehäuse selbst du verbauen.

    Wenn die Vorgehensweise entschieden ist, kann man auch schon mit dem nervigsten Teil anfangen.


    3. Schritt: Die Richtigen Kabel durchschneiden


    Wichtig: Zieht bevor ihr anfangt an den Kabel zu fummeln den Stecker raus oder macht eure Sicherung raus! GANZ WICHTIG!!!



    Zuerst habe ich an meinem Kabel abgemessen, wie viel Kabel ich entfernen muss und hab mir dann entsprechende Markierungen gesetzt.

    Mein Tipp an euch: Seid lieber etwas großzügiger!


    Kommen wir zu den Kabelfarben:

    Braun: L

    Blau: N

    Grün/Gelbe: Sicherung


    An der Sonoff müsst ihr entsprechend die Farben anschließen. L & N sind ja auf dem Gehäuse beschriftet.

    Die Sicherungsleitung nicht durchschneiden! Sie habe ich einfach hinter dem Gehäuse durchgeführt.


    4. Schritt: Den Switch mit der Homebridge bekannt machen


    Hierfür verwende ich dieses Plugin die Config sollte ja zwar auf npm ersichtlich sein.

    Trotzdem hier nochmal meine Config.


    Das xx am Ende der IP müsst ihr noch durch die Endung eurer IP tauschen. Um diese IP zu bekommen, könnt ihr euch entweder in die Weboberfläche eures Routers einloggen oder ihr benutzt einen Netzwerkscanner.


    So jetzt könnt ihr eure Kaffeemaschine in der Home App an bzw. abschalten.

    Viel Erfolg beim Nachbauen und guten Durst ;)

    Wie genau werden die Sensoren abgefragt? Läuft auf jedem ESP ein eigener Webserver, den du von der Homebridge aus abfragst?

    Ja auf jedem ESP soll ein eigener Webserver laufen, da ich ja auch die Daten der Sensoren in der Home App nutzen möchte.

    Zum Beispiel ein Bewegungsmelder kann ja auch dann das Licht anschalten und nicht nur für die Alarmanlage nutzbar sein. :)

    Also über die genau Raumabtastung muss ich mir noch Gedanken machen, aber das mit dem Fenstereinschlagen werde ich durch einen „Klatsch“ Sensor realisieren. Keine Ahnung wie der genau heißt hab davon hier schon einige rumfahren. Sind sehr simpel: wenn es einen Peak der Lautstärke gibt geben sie eine 0 statt einer 1 zurück. So und wenn die Alarmanlage scharf geschaltet ist werden die Sensoren überprüft. Wenn ich daheim bin halt nicht.
    Das ganze will ich dann mit weiteren Sensoren verknüpfen, das heißt:

    Ein Sensor reicht nicht um einen Alarm auszulösen, sondern wenn das System denkt das Fenster wurde eingeschlagen, dann muss auch noch der PIR Alarm geben. Oder halt eben ein anderer Sensor (deutlicher Temperatur Abfall, etc.)


    Das gute bei mir ist ich bin derzeit in einer Umzugsphase, also alle Sensoren etc werden bei mir nur auf einen Raum angewendet. Da habe ich schon Tür und Fenstersensoren verbaut.

    Sorry für die blöde Formatierung. Hab’s grad schnell am Handy geschrieben.

    So also wie fang ich hier an. Ich hatte die Idee eine Alarmanlage in Homekit selber einzubauen und das ganze über einen ESP.

    Mir war wichtig, dass ich nicht jedem Sensor sagen muss, dass er an die Alarmanlage melden muss, sondern die Alarmanlage sollte sich selbstständig die Daten der Sensoren holen.

    Auch sollten andere Geräte ein oder ausgeschaltet werden, wenn ein Alarm ausgelöst wird.

    Beispiel:

    1. Fenster wird eingeschlagen
    2. Alle Deckenlampen gehen aus
    3. Alle LED Streifen gehen an (Vorzugsweise Rot :evil:)
    4. Ein Lautsprecher oder Piepser wird ausgelöst und macht Lärm
    5. Ich bekomme eine Nachricht aufs Handy, dass ein Depp meine Scheibe eingeworfen hat
    6. Ich schau mir eine Kamera in dem Raum an und mach paar Bilder
    7. Der Einbrecher hat Angst und rennt weg...


    Es ist aber hier nicht das Ziel am Schluss mit einer Trefferwahrscheinlichkeit von 100% dazustehen.

    Ich habe aber trotzdem vor mal eine Zahl zu errechnen und dann zu schauen wie nah ich an große Hersteller komme und was ich im Vergleich spare.



    So also in der Vorbereitungsphase habe ich zunächst nach einem HTTP Alarmanlagen Plugin gesucht.

    Ich habe das hier verwendet.


    Mir war klar, dass in diesem Fall ein Alarmsystem 5 Zustände hat:

    • "0": Ich bin Zuhause und an
    • "1": Ich weg und an
    • "2": Es ist Nacht und an
    • "3": Ich bin keine Ahnung wo aber is eh aus
    • "4": Irgendein Depp hat Alarm ausgelöst


    So weit so gut.

    Das Sytem hat einen Wert, der von dem Handy erwartet wird und einen Wert den es tatsächlich hat.


    Logisch: Wenn der Wert 3 sein sollte, aber 4 ist, dann kann das Gerät Party machen. Wenn aber der Wert 2 ist, aber 1 sein sollte, dann muss das Gerät umschalten, aber keine Party veranstalten.


    Die jeweiligen Staten werden in einem bestimmten Interval abgefragt und demnach wird dann entschieden ob Party ist oder nicht.


    Leider hat mein Code noch einen Fehler und unschöne Stellen. =O


    Ich teile ihn dann demnächst mit euch, je nachdem wann ich Bock habe weiter daran zu arbeiten. ;)


    P.S.: Eure Meinungen interessieren mich, also lasst gerne paar Beiträge da 8o