1-Wire Schlüsselkasten

Hallo zusammen,

nun ist er fertig, mein 1-Wire Schlüsselkasten.

Lange habe ich nach einer Lösung gesucht, nicht immer wenn alle aus dem Haus gehen zum Touchscreen zu gehen und den Hausmodus zu verändern oder andere Dinge einzustellen. Ich hatte erst an eine Schlüsselerkennung auf unserem Schränkchen gedacht aber die RFID Leser können meistens immer nur 1 Sender zur gleichen Zeit erkennen, was eine Anwesenheitserkennung damit ausschliesst.
Somit ist dieser Schlüsselkasten nun entstanden.

In ihm werkeln 2 DS2408, der eine versorgt das Display, der andere das Sprachmodus VD364 und die Annäherungssensoren.

Als Erkennung hat jeder Bewohner (sind imo nur 2) seinen eigenen Platz. An jedem Haken sind 2 parallelgeschaltet Annäherungssensoren befestig, die auf das Metall im Schlüssel reagieren. 2 Deshalb, um eine größere Fläche abzudecken. Das ganze ist per Software „entprellt“, um ein evtl. auftrtendes pendeln des Schlüssels zu eliminieren (danke an HJH nochmal für den Tip).

Das Display ist ein DOGM 163 (16x3), was hier noch rum lag. Was man damit anzeigen kann, brauche ich wohl nicht näher zu erklären. Bei uns sind es Aussentemperatur, Zeit, den Hausmodus, wer kommt und geht usw.

Das VD364 habe ich im MultiwordCont.Listening Modus laufen. Das hat den Vorteil, das man das gleiche Wort aus versch. Entfernung und Winkeln besprechen kann und dennoch beim Erkennen eines Wortes der gleiche Ausgang geschaltet wird, auch wenn es unterschiedliche Speicherplätze waren. Bei uns sind das nur die Worte JA, NEIN, OK usw.

Das Schöne ist nun, das die Haussteuerung ein kommen und gehen nun registriert, die Person persönlich „ansprechen“ kann und man auch darauf reagieren kann.

z.B. wird der erste der morgens geht darauf aufmerksam gemacht, das die x-Mülltonne rausgesetzt werden muss, ein freundliches OK genügt nun und der nächste der geht wird nun nicht mehr darauf angesprochen.

Oder alle gehen, die Haussteuerung fragt nach da es schon dunkel ist, ob die Rolladen schon herunter gefahren werden sollen, ein kurzes JA löst die Aktion aus.

Oder ich komme nach Haus und werde informiert, das Fehler aufgetreten sind. Auf die Frage ob ich das Protokoll anhören möchte, kann ich nun reagieren.

Ideen habe ich noch viele, mal sehen was noch alles kommt.

Dies nur mal als Anregung für euch,

Grüße,
Doc

Hi,

interessante Sache! :slight_smile: Hast du noch Bilder vomn Bau?

Gruß.

Und zu den Bildern noch ein paar Schaltpläne und du währst unser HELD

Also Bilder u. Schaltpläne von Bau habe ich nicht gemacht. Das vergesse ich immer, wenn ich da so bei der Sache bin.
Hier aber mal eine kleine Beschreibung:

Der eigentliche Schlüsselkasten ist der Edelstahlteil auf dem Bild. Dahinter habe ich nur eine schwarze Papelsperrholz Platte gesetzt, die oben zu einem kleinen Gehäuse geformt wurde, um die Platine auszunehmen.
Unten noch 2 zusätzliche Haken und darunter die Sensoren.

Einen Schaltplan brauchte es hierzu eben so wenig.
Das ganze passt auf eine kleine Lochrasterplatine. Wie ein Display an den DS2408 angeschlossen wird, ist hier im Forum schon oft erklärt worden.
Der Anschluss des Sprachmoduls am 2. DS2408 war auch ganz easy. Die entsprechenden Ausgänge über einen Pullup-R an die Eingänge an den DS2408, genau so, wie bei den Annäherungssensoren. Das ganze wird dann im 2 Sek. Rythmus gepolled. Kleine Sicherung noch davor und der Anschluss nach IPS-Standart - that’s it.

Die Abfrage, um auf Sprache zu reagieren habe ich nun so gelöst, ist bestimmt nicht der beste Weg, aber eine andere gute Möglichkeit habe ich och nicht gefunden. Vielleicht hat noch jemand eine andere Idee dazu?
Hier mal ein kleines Beispiel.

Grüße,
Doc


<?
/*
*******************************
 IP-SYMCON Event Scripting
*******************************
File     : Thomas_kommt_geht.ips.php
Trigger  : Thomas_Anwesend
Interval : 
*/

// ================= Thomas kommt ===============
if (GetValueBoolean("Thomas_Anwesend") == true) {
   SetValueInteger("Thomas_kommt.time",time());
   SetValueString("Display_DOG_Data", "     Thomas||     kommt");
   if ((GetValueBoolean("Modus.normal")) == false) {   // Modus umschalten
      IPS_RunScript("Modus.normal");
      IPS_Sleep(3000);
   }
// ----------------------------------------------
//   Begrung > 5 Std. Abwesenheit
   if((GetValueInteger("Thomas_geht.time")  + (5*60*60)) < (time())) {
      SetValueString("Speak", "Hallo Thomas, willkommen zu Hause.");
      IPS_Sleep(3000);
   }
// ----------------------------------------------

// ----------------------------------------------
}

// ================== Thomas geht ===============
if (GetValueBoolean("Thomas_Anwesend") == false) {
   SetValueInteger("Thomas_geht.time",time());
   SetValueString("Display_DOG_Data", "     Thomas||      geht");
   if (GetValueBoolean("Nadine_Anwesend") == false) {
      IPS_RunScript("Modus.Abwesend");
      IPS_Sleep(3000);
   }
// --- Rolladen runter wenn dunkel ? (18-24h) ---
   if (((int)date("G") >= 18) and ((int)date("G") <= 23)) {
      if ((GetValueBoolean("Modus.normal")) == false) {
         if (GetValueBoolean("DAYLIGHT") == false) {
            if ((GetValueString("Rolladen_EG") != "unten") or (GetValueString("Rolladen_OG") != "unten")) {
               SetValueString("Speak", " Es ist schon dunkel drauen. Soll ich die Rollden schon schliessen?");
 // Abfrage starten fr 12 Sekunden oder bis Antwort
               for ($i=0; $i<120; $i++) {
                  IPS_Sleep(100);
                  if ((GetValueString("Wort") == "JA") or (GetValueString("Wort") == "OK")){
                     SetValueString("Rolladen_EG","unten");
                     SetValueString("Rolladen_OG","unten");
                     SetValueString("Speak", " Die Rollden werden herunter gefahren.");
                     IPS_Sleep(2500);
                     break;
                  }
               }
            }
         }
      }
   }

// --- Rolladen rauf wenn hell ? (4-10h) ---
   if (((int)date("G") >= 4) and ((int)date("G") <= 9)) {
      if ((GetValueBoolean("Modus.normal")) == false) {
         if (GetValueBoolean("DAYLIGHT") == true) {
            if ((GetValueString("Rolladen_EG") != "oben") or (GetValueString("Rolladen_OG") != "oben")) {
               SetValueString("Speak", " Es ist schon hell drauen. Soll ich die Rollden schon ffnen?");
 // Abfrage starten fr 12 Sekunden oder bis Antwort
               for ($i=0; $i<120; $i++) {
                  IPS_Sleep(100);
                  if ((GetValueString("Wort") == "JA") or (GetValueString("Wort") == "OK")){
                     SetValueString("Rolladen_EG","oben");
                     SetValueString("Rolladen_OG","oben");
                     SetValueString("Speak", " Die Rollden werden herauf gefahren.");
                     IPS_Sleep(2500);
                     break;
                  }
               }
            }
         }
      }
   }

// ----------------------------------------------
}

?>