Anwesenheit mit ESP steueren

Hallo,

ich bin relativ neu bei Homee, besitze ihn (Brain & Zigbee Cube) seit 2 Wochen jetzt.

In der App gibt es die Möglichkeit die Abwesenheit zu stören, jedoch ist die relativ umständlich und mit GeoFence arbeiten wollte ich nicht. Da habe ich gesehen es gibt ein Z-Wave Taster um dies zuschalten, ich wollte aber jetzt nicht wegen einem Produkt Z-Wave funken.

Da kam mir die Idee, es über ein ESP mit Schalter zu schalten, aber ich finde keine Möglichkeit dies an den Homee zu senden, also eine Art API und im Forum habe ich auch nichts gefunden.

Habt Ihr da eine Idee?

MfG
Conny

Webhooks oder via Node-RED-API. Damit solltest Du fündig werden.

2 Like

Was auch gut und zuverlässig funktioniert, ist die Verwendung von iBeacons…

z.B.
https://www.varia-store.com/de/produkt/101006-minibeacon-c3-usb-mini-ibeacon-mini-usb-ibeacon.html

Einfach in einen Stecker mit USB-Port an der Tür stecken und mit App Locative oder Geofency (beide iOS) registrieren. Die Apps senden dann einen Webhook, egal an was (homee, NR, Home Assistant, etc.)

Sieht dann so aus…

5 Like

Tracke aktuell über den Wifi Status. Deine Lösung gefällt mir aber noch besser :+1:t2:

1 Like

Je nach Usecase könnte auch sowas eine Lösung sein, wird allerdings ein enocean Würfel benötigt (was sich immer lohnt !)

1 Like

Hallo @schco039 und Willkommen in der Community,

wenn du dich eh mit einem ESP beschäftigst, dann ist der Ansatz einen M5Stack vielleicht die Lösung für deine Aufgabenstellung.
Hier die Infos dazu: M5Stack Core2 mit homee nutzen
Dies kann direkt mit dem homee kommunizieren und braucht keinen Umweg über Node Red etc.
Der M5 lässt sich ja auch direkt über den Touch steuern, hat ein nettes Gehäuse drum, Akkus für unabhängigen Betrieb und Magnete zur Befestigung an der Rückseite. Muss man nur schauen, wie man den homee-Status lesen/schreiben kann. Sollte aber auch kein riesen Problem sein. Den Sketch für die aktuelle „Ausbaustufe“ findest du auf Github. Sonstige Fragen beantworten wir dir hier sehr gerne.
Edit: Für den M5Paper gibt es inzwischen auch etwas.

3 Like

Vielen Dank für alle Antworten :slight_smile:

Ich glaube ich nehme den Weg über die Webhooks, passt am besten zu meinem Projekt.

Habe nur noch zwei Fragen dazu:

  • Wo finde ich meinen Webhook Key?
  • Muss man die lokale Webapp, irgendwie anschalten? Der Link aus dem FAQ funktioniert nicht

@SteffenTM der M5 sieht gut aus aber für mein Zweck zu viel :slight_smile:

Du legst ein Homeegramm an und dabei wählst du bei der Wenn Bedingung „Webhook“ aus, gibst einen eindeutigen Namen, zB. „Schco039Dahoam“. Dann fügt homee die komplette URL in deine Zwischenablage.

1 Like

@Steffen diesen FAQ sollte man dringend überarbeiten, da dort noch der alte Link zur lokalen WebApp drinsteht, den es nicht mehr gibt:

2 Like

Sehr gut, die Hauptsache ist, du hast eine für dich funktionierende Lösung zur Aufgabenstellung. Der M5Stack/Paper schließt halt die Lücke zwischen der Bedienung über Taster ohne Rückmeldung und einem kompletten Dashboard über Node Red, iobroker-VIS, etc. Hier ist der WAF auch sehr hoch (bei mir auch). Ich werde meine Frau wohl nie dazu bringen sich mit meinem Dashboard zu beschäftigen. Da sind halt auch viele Sachen drauf, die sie wenig bis gar nicht interessieren.

1 Like

Alternativ zu den Webhooks kannst du in Node Red auch direkt an die homee api gehen. die Payload um Benutzer 1 anwesend zu schalten muss dann so aussehen:


wenn du das true durch ein false ersetzt erreichst du das Gegenteil.

4 Like

Vielen Dank für alle Rückmeldungen, ich habe heute morgen mal etwas zusammen gebastelt:

#include <ESP8266WiFi.h>
#include <ESP8266HTTPClient.h>
#include <WiFiClient.h>

///////////////////////////////WIFI SETINGS////////////////////////////
const String ssid     = "Wifi-12345";                                                        // The Name of the Wi-Fi network
const String password = "Password";                                                          // The password of the Wi-Fi network
///////////////////////////////GPIO DEFINTIONS////////////////////////////
const int homeButton = 5;                                                                     //Pin for the Button to change the state to Home
const int awayButton = 4;                                                                     //Pin for the Button to change the state to Away
///////////////////////////////ACTION DEFINITION////////////////////////////
const String homeAction = "ESPDaheim";                                                        //Name of the Action for the Home Webhook
const String awayAction = "ESPAbwesend";                                                      //Name of the Action for the Away Webhook
///////////////////////////////HTTPS REQUEST SETTINGS ////////////////////////////
const String host = "[HOMEID].hom.ee";                                                        //homee ID
const String webhookKey = "RpvETkOEgqzPVPOaYNGlRpvETkOEgqzPVPOaYNGlRpvETkOEgqzPVPOaYNGlweda"; //WebHook Key
String url = "/api/v2/webhook_trigger?webhooks_key="+webhookKey+"&event=";

void setup() {
  //Serial.begin(9600);                                                                       // Start the Serial communication to send messages to the computer
  WiFi.begin(ssid, password);                                                                 // Connect to the network
  while (WiFi.status() != WL_CONNECTED) {                                                     // Wait for the Wi-Fi to connect
    delay(1000);
  }
  //Serial.println(WiFi.localIP());                                                           // Send the IP address of the ESP8266 to the computer
  pinMode(homeButton, INPUT_PULLUP);
  pinMode(awayButton, INPUT_PULLUP);
}

void loop() {
  
    if(digitalRead(homeButton) == HIGH){
      callhttps(homeAction);
    }
    if(digitalRead(awayButton) == HIGH){
      callhttps(awayAction);
    }
}

void callhttps(String urlEvent){
  
  String actionUrl = "";
  actionUrl = url + urlEvent;
  
  
  WiFiClientSecure client;                // Use WiFiClient class to create TCP connections
  const int httpPort = 443;               //443 is for HTTPS
  client.setInsecure();                   // this is the magical line that makes everything work
  
  if (!client.connect(host, httpPort)) {
    Serial.println("connection failed");
    return;
  }
  // This will send the request to the server
  client.print(String("GET ") + actionUrl + " HTTP/1.1\r\n" + "Host: " + host + "\r\n" + "Connection: close\r\n\r\n");
}

Die Tage mache ich dann mal ein 3D Druck für das Gehäuse :slight_smile:

4 Like

Bitte anonymisiere ganz schnell deinen webhook Key in deinem Post!

1 Like

Der ist anonymisiert bzw. zufällig generiert. Vielen Dank aber :slight_smile:

1 Like