Ethernet-Ardu's für "Home Automation&Control"

Hallo,

ich bin seit ein paar Tagen wieder mental in Bastellaune; heute Abend prüfe ich mal, ob ich meine Steckdosenleisten (Funk) mit dem Ardu steuern kann - morgen ist dann ein Digital RGB-LED-Stripe dran :slight_smile:

Nun kam mir der Gedanke, dass sich Ardu's doch prima dazu eignen, eine "Haus Automation" zu betreiben.

Bedeutet, ich habe im Haus mehrere Ardu's für unterschiedliche Zwecke: Jeder könnte Temperatur und Helligkeit prüfen, und zusätzlich z.B. Funksteckdosen steuern, irgendwelche Sensordaten wie Wasserstand o.ä. abfragen, oder prüfen ob ein Fenster geöffnet oder geschlossen ist.

Natürlich möchte man nicht überall ein Netzwerkkabel hinziehen um per PoE-Modul auf einem Ardu Ethernet zu arbeiten; aber mittlerweile gibt's ja auch das WiFi-Shield für ~70 Euro, sodass man die "Vernetzen"-Frage quasi geklärt hat. So fehlt dann nurnoch ein kleines Netzteil mit ein paar Volt, und los kann's gehen. Zwar auch nicht billig (~100 Euro für Ardu + Shield), aber eine Möglichkeit.

Nun habe ich mir überlegt, wie man das alles "steuern und bedienen" könnte. Spontan würde ich es so aufziehen:

  • Jeder Ardu lässt über ein Webfrontend seine PINs&Co steuern, zudem Sensordaten per HTTP abfragen
  • Ein zentraler Ardu holt sich die Daten, bereitet sie in einem Webinterface auf, und loggt sich ggf. auf einer SD-Karte mit
  • Dieser zentrale Ardu ist dann auch für die Steuerung der anderen zuständig

Jetzt frage ich mich aber, wie ich z.B. den einen Ardu anweise, eine bestimmte Funktion auf einem anderen Ardu auszuführen.

"Muss" ich quasi eine Funktion auf einem Ardu mit einem HTTP-Befehl koppeln (z.b. x.x.x.x/do/func/lightson), sodass diese beim Aufruf ausgeführt wird - oder kann ich "irgendwie" TCP-Pakete verarbeiten? Z.B. wenn ich "Paket mit Payload [lightson] an Ardu X schicke" führt er diesen Befehl aus?

Was haltet ihr allgemein von diesen Ideen - und habt ihr soetwas ggf. schon umgesetzt?

Für eine automatische Verarbeitung hat das HTTP zu viel Overload. Hier reicht es sicher, auf eine TCP-Verbdindung zu warten (was anderes macht das Webserver Beispiel ja auch nicht) und dann direkt einzelne Kommando-Bytes in den TCP-Stream zu schreiben. Darauf kann man dann ebenso per client.write() antworten, was eine einfach bidirektionale Kommunikation ermöglicht.
Wenn es nicht WLAN sein muss, kannst Du sicher auch jeden Arudino mit einem 433MHz Sender/Empfänger Modul ausstatten, das dürfte die Kosten drastisch reduzieren.