HomeLink ermöglicht es, beim ankommen zu Hause automatisch eine Aktion, wie das öffnen des Garagentors auszuführen. Zusätzlich sind auch andere Dinge möglich, wie das Einschalten von Beleuchtung, oder das Freischalten der Ladestation. Was genau passieren soll möchte ich mit meiner „Smarten“ Hausautomatisierung steuern.
Foto: Tesla
Ich verwende innerhalb des Hauses verschiedene Systeme. Die Virtualisierung und Steuerung übernimmt bei mir ein Loxone Miniserver. Sämtliche mir wichtigen Komponenten sind über den KNX-Bus verdrahtet angeschlossen, und teilweise auch autonom ohne vorhandene Loxone betriebsfähig. Weniger wichtige Systeme sind über das Funksystem von Loxone eingebunden. Nicht Systemrelevante „Spielereien“ werden bei mir über Arduinos oder auch Homematic Komponenten eingebunden. Die Kommunikation mit den Arduinos erfolgt über WLAN. Es ist recht einfach diese ins WLAN zu bringen, und z.B. Temperaturdaten oder andere Informationen senden zu lassen. Ich nutze dazu normalerweise die http-Schnittstelle zu Loxone, so daß die Geräte ihre Daten einfach an meinen Miniserver senden können.
Ich habe mich hier entschieden, die HomeLink Funktion über einen Arduino zu benutzen. Dazu habe ich einen Arduino und ein RF Modul benutzt.
Als Modul bietet sich der ESP8266 mit integriertem WLAN an.
Als Empfänger habe ich das hier genommen:
Es müssen lediglich 3 Kontakte angeschlossen werden.Fertig verdrahtet sieht das dann so aus
Ich habe dem Teil nun beigebracht bei erhalt eines bestimmten Funksignals dies meinem Miniserver mitzuteilen.
Am Server ist dazu ein Virtueller Eingang anzulegen.
Dieser Virtuelle Eingang kann dann problemlos via http-Request angesprochen werden.
Hier ein kleiner Beispielcode:
#include <ESPiLight.h> #include <Arduino.h> #include <ESP8266WiFi.h> #include <ESP8266WiFiMulti.h> #include <ESP8266HTTPClient.h> #define RECEIVER_PIN D4 // any intterupt able pin #define TRANSMITTER_PIN -1 const char* ssid = "xxxxxxxxxx"; const char* password = "xxxxxxxxxxx"; const String ip = "192.168.178.xx"; const String loxuser = "xxxxxxx"; const String loxpass = "xxxxxx"; bool Log = false; const String recprotocol1 = "arctech_switch_old"; const String recmessage1 = "{\"id\":2,\"unit\":0,\"state\":\"on\"}"; ESPiLight rf(TRANSMITTER_PIN); // use -1 to disable transmitter // callback function. It is called on successfully received and parsed rc signal void rfCallback(const String &protocol, const String &message, int status, size_t repeats, const String &deviceID) { if (Log) { Serial.print(protocol); // protocoll used to parse Serial.print("]["); Serial.print(deviceID); // value of id key in json message Serial.print("] ("); Serial.print(status); // status of message, depending on repeat, either: // FIRST - first message of this protocoll within the last 0.5 s // INVALID - message repeat is not equal to the previous message // VALID - message is equal to the previous message // KNOWN - repeat of a already valid message Serial.print(") "); Serial.print(message); // message in json format Serial.println(); } // check if message is valid and process it if (status == VALID) { if (protocol == recprotocol1) { if (message == recmessage1) { HTTPClient http; //Declare an object of class HTTPClient http.begin("http://"+loxuser+":" + loxpass + "@" + ip + "/dev/sps/io/VI45/on"); int httpCode = http.GET(); //Send the request if (httpCode > 0) { //Check the returning code String payload = http.getString(); //Get the request response payload Serial.println(payload); //Print the response payload } } } } } void setup() { Serial.begin(115200); // set callback funktion WiFi.mode(WIFI_STA); WiFi.begin(ssid, password); while (WiFi.status() != WL_CONNECTED) { delay(1000); Serial.print("."); } Serial.println(""); Serial.println("WiFi connected"); Serial.println("IP address: "); Serial.println(WiFi.localIP()); // Use WiFiClientSecure class to create TLS connection WiFiClient client; rf.setCallback(rfCallback); // inittilize receiver rf.initReceiver(RECEIVER_PIN); Serial.print("hallo"); } void loop() { // process input queue and may fire calllback rf.loop(); delay(10); }
Möglich soll sein, daß aus dem Fahrzeug via HomeLink ein Signal gesendet wird, und dieses dann auf meine Hausautomatisierung (Loxone) weitergegeben wird.
Loxone eignet sich durch die sehr gute Virtualisierung und die vielen Schnittstellen (u.a. KNX, OneWire und HTTP) perfekt für alle Arten der Automatisierung:
Und falls man die Steuerung nicht „Automatisch“ haben möchte: Der Safari-Browser des Tesla Model 3 kann natürlich die Webpage des Miniserver auch von unterwegs öffnen:
Hallo,
kann es sein das ein HTTP Eingangsbefehl am Loxone verwendet werden muss ?
LikeLike
Hallo Tobias, nein, Du legst einfach einen digitalen Eingang an, und kannst ihn dann ansprechen.
LikeLike
Hallo,
ich habe Loxone, Tesla und nun die Teile die hier benötigt werden.
Gibt es irgendwo eine Beschreibung wie ich den Arduino passend programmiere?
Die Zusammenfassung hier ist dann doch sehr einfach gehalten..
LikeLike
Du musst eigentlich nur die Arduino SDK installieren, und damit kannst Du dann das Programm aufspielen.
LikeLike
Hat jemand die Kommunikation zur Wallbox entschlüsselt ?
da sollte man ja auch den Ladestand des Autos herauslesen können…
LikeLike
Bei AC über Typ 2 geht das leider nicht. Da wird zwischen Auto und Ladestation nur über analoge Pegelwerte kommuniziert. Wobei ich noch nicht rausgefunden habe wie eine Wallbox erkennt ob ein Tesla oder was anderes dranhängt. Das machen einige Destination Charger ja.
LikeLike