NEWS
[Anleitung] Katze per PIR und ESP8266 erkennen und Melden.
-
Hallo zusammen,
da ich iobroker echt klasse finden und sen support hier auch will cih meinen Teil dazu beitragen.
Ich habe mir einen "Katzen sensor" gebaut mit einem ESP8266 welcher per mqtt iobroker einen wert setzt und mich dann per Pushbullet benachrichtigt.
Hier mal alles was man dazu braucht.
Schaltplan gibt es leider nicht mehr.
ich habe einen 470micro Farad Elko zur spannungsstabilisierung
Eine micro USB anschluß und einen 5v auf 3.3 V Stepdown
Wer fragen hat oder noch etwas braucht gerne anfragen.
Ist alles noch nicht 100% fertig und wird momentan nur sporadisch eingesetzt.
Muss das ganze noch etwas kleiner machen und den 3d-Drucker anschmeißen für ein Schönes gehäuse.
Strom nutze ich ein USB-Ladegerät von einem handy mit 500mA und 5V.
der taster und die 2 Pins sowie die obere Steckleiste benötigt man nur zum Flashen des ESP.
das iobroker script sieht so aus
on({id: "mqtt.0.ESP-PIR-01.Motion"/*ESP-PIR-01/Motion*/, val: true}, function (obj) { sendTo("pushbullet", { message: "Momo will rein", //Text der Nachricht title: "Katzenalarm", //Titel der Nachricht type: "note" //Der Typ } ); });
Arduino IDE
`/* ESP8266 MQTT With PIR and DHT22 Based on ESP8266 Arduino Sample and some other scripts */ #include <esp8266wifi.h>#include <pubsubclient.h>#include "DHT.h" #define DHTPIN 12 // what digital pin we're connected to // Uncomment whatever type you're using! //#define DHTTYPE DHT11 // DHT 11 #define DHTTYPE DHT22 // DHT 22 (AM2302), AM2321 //#define DHTTYPE DHT21 // DHT 21 (AM2301) DHT dht(DHTPIN, DHTTYPE); float humidity, temp_f; // Values read from sensor // Update these with values suitable for your network. const char* ssid = "YOURSSID"; const char* password = "WIFI PSK"; const char* mqtt_server = "SERVER IP"; int counter = 0; int previousReading = LOW; String message = "DHT"; String messaget = "DHT"; String messageh = "DHT"; String topicTemp = "ESP-PIR-01/temp"; String topicHumid = "ESP-PIR-01/humid"; String topicMotion = "ESP-PIR-01/Motion"; WiFiClient espClient; PubSubClient client(espClient); long lastMsg = 0; char msg[50]; int value = 0; void setup_wifi() { delay(10); // We start by connecting to a WiFi network18 Serial.println(); Serial.print("Connecting"); Serial.println(ssid); WiFi.begin(ssid, password); while (WiFi.status() != WL_CONNECTED) { delay(500); Serial.print("."); } Serial.println(""); Serial.println("WiFi connected"); Serial.println("IP address: "); Serial.println(WiFi.localIP()); } void callback(char* topic, byte* payload, unsigned int length) { Serial.print("Messageved ["); Serial.print(topic); Serial.print("] "); for (int i = 0; i < length; i++) { Serial.print((char)payload[i]); } Serial.println(); // Switch on the LED if an 1 was received as first character if ((char)payload[0] == '1') { digitalWrite(BUILTIN_LED, LOW); // Turn the LED on (Note that LOW is the voltage level // but actually the LED is on; this is because // it is acive low on the ESP-01) } else { digitalWrite(BUILTIN_LED, HIGH); // Turn the LED off by making the voltage HIGH } } void reconnect() { // Loop until we're reconnected while (!client.connected()) { Serial.print("Attempting connection..."); // Attempt to connect if (client.connect("ESP8266Client")) { Serial.println("connected"); // Once connected, publish an announcement... client.publish("ESP-PIR-01", "hello world"); // ... and resubscribe client.subscribe("inTopic"); } else { Serial.print("failed"); Serial.print(client.state()); Serial.println(" try again in 5 seconds"); // Wait 5 seconds before retrying delay(5000); } } } void setup() { pinMode(BUILTIN_LED, OUTPUT); // Initialize the BUILTIN_LED pin as an output Serial.begin(115200); setup_wifi(); client.setServer(mqtt_server, 1883); client.setCallback(callback); pinMode(13, INPUT); dht.begin(); } void loop() { if (!client.connected()) { reconnect(); } client.loop(); long now = millis(); if (now - lastMsg > 60000) { lastMsg = now; float h = dht.readHumidity(); // Read temperature as Celsius (the default) float t = dht.readTemperature(); // Check if any reads failed and exit early (to try again). if (isnan(h) || isnan(t)) { Serial.println("Failed to read from DHT sensor!"); return; } // Compute heat index in Celsius (isFahreheit = false) //float hic = dht.computeHeatIndex(t, h, false); char t2[50]; char h2[50]; dtostrf(t, 5, 2, t2); dtostrf(h, 5, 2, h2); //message = "{\"idx\":37,\"svalue\":\""+String(t2)+";"+String((int)h)+";0\"}"; messaget = String(t2); messageh = String(h2); client.publish(topicTemp.c_str(), messaget.c_str()); client.publish(topicHumid.c_str(), messageh.c_str()); //client.publish("/sensor/temp", t2 ); //client.publish("/sensor/humidity", h2 ); } int reading = digitalRead(13); Serial.println(reading); if (previousReading == LOW && reading == HIGH) { //if (reading == HIGH) { counter++; message = String("true"); client.publish(topicMotion.c_str(), message.c_str()); //client.publish("/sensor/movement", "Motion!"); delay(1000); } else if (previousReading == HIGH && reading == LOW) { message = String("false"); client.publish(topicMotion.c_str(), message.c_str()); //client.publish("/sensor/movement", "Motion!"); delay(1000); } previousReading = reading; }</pubsubclient.h></esp8266wifi.h>` [2344_blackboard.png](/assets/uploads/files/2344_blackboard.png) [2344_board1.png](/assets/uploads/files/2344_board1.png) [2344_board2.png](/assets/uploads/files/2344_board2.png) [2344_pir.png](/assets/uploads/files/2344_pir.png) [/i]
-
wie erkennst Du, wenn sich eine fremde Katze anmeldet ? Das Problem hatte ich hier schon ohne ESP8266 - mit einer einfachen Katzenklappe mit entsprechenden Kämpfen im Keller :lol: Aktuell habe ich das mit einer chip-gesteuerten Klappe gelöst - zumindest teilweise, denn die Nachbarskatze hat nämlich erkannt, dass, wenn sie schnell genug hintennachspringt, ist die Klappe noch freigeschaltet. Katzen sind schlau ….
-
Hi,
ich hab keine klappe die steht bei mir dann vor der Terassentür im Esszimmer.
Ich muss die Manuell reinlassen, aber da ich das nicht mitbekomme wenn ich aufem sofa liege hab mir einen schalter im VIS eingabeut mit dem ich daen versand der pushnachricht aktiviere oder deaktiviere.
-
Ich hab mal irgendwo ne Luxus Lösung gelesen mit so ne Chipklappe aber die Klappe öffnet und schließt mit einem Dachfenstermotor.
Ich hab mir sowys schon für meine Terassentüre überlegt wenn der Hund im Garten ist, diese per Bewegungsmelder und einem solchen Motor zu öffnen. Geht halt dann nur wenn ich Zuhause bin und die Türe nicht verschlossen, würde mir aber reichen.
-
:lol: das problem bei den klappen ist wohl , dass die alle nicht dicht sind. das spricht für eine motorlösung oder eben für die luxuslösung mit dem gut erzogenen herrchen
-
Die Lösung von mir mit dem PIR is ja nicht nur für Hund / Katze einsetzbar.
Im Prinzip kann man damit ja auch lichter schalten oder sich seine eigene Alarmanlage bauen.
Genug von den Melden verteilen im Haus und im Away Modus darf sich im Haus nix bewegen sonst alarm / Pushnachricht oder was auch immer.
Ich mach mir mal nach meinem Urlaub die Mühe und zeichen nich einen besseren schaltplan.
Zudem muss ich noch ein Gehäuse aus dem 3d Drucker lassen.
-
@nsession nichts gegen Deine Anleitung (danke), ich wollte als Katzennarr nur meine Erfahrungen kundtun. Die ESP8266 sind Super-Module. Ich hab ja auch schon darüber geschrieben. Aber Du hast mich auf eine Idee gebracht, ich werde meine Chip-Katzenklappe auch mit so einem ESP8266 ins iobroker-system integrieren ev. noch mit einer Richtungserkennung (rein-raus). Übrigens, solange die Katze sich frei im Haus bewegt, ist nichts mit Einbruchalarm per Innenbewegungsmelder - oder aber man justiert die sorgfältigst, so dass die Katze nie in den Erfassungsbereich kommen kann.
-
Moin,
gibt es hier schon was neues zum Thema ESP / Katzenklappe / Integration iobroker?
LG