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.
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.)
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.
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.
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.
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:
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