Zitat von Smurf
Beitrag anzeigen
Ankündigung
Einklappen
Keine Ankündigung bisher.
Mechanisches Türschloss öffnen/schließen über KNX
Einklappen
X
-
Gast
- Likes 1
-
Gast
Was mir zur Sicherheit gerade noch auffällt:
Zitat 1:
"Deine Zugangsberechtigungen befinden sich ausschließlich in deinem Nuki in deiner Wohnung und in deiner Nuki App. Es gibt keinen zentralen Speicherpunkt und keinen Master-Key für Nuki. "
Zitat 2 (FAQ Sicherheit):
" Wie komme ich in meine Wohnung, wenn mein Handy-Akku leer ist? Dann gibt es mehrere Möglichkeiten:- Du verwendest einfach deinen bestehenden, mechanischen Schlüssel.
- Du bittest eine andere Person mit Zutrittsberechtigung zu deiner Tür, dir diese zu öffnen.
- Nuki bietet dir eine Notfall-Hotline, unter der wir dir bei Angabe eines einmaligen und sicheren Passworts deine Tür öffnen können."
Hervorhebungen sind von mir. Widerspricht sich das nicht ein wenig?
Kommentar
-
Zitat von volkerm Beitrag anzeigen[SIZE=12px][*]Nuki bietet dir eine Notfall-Hotline, unter der wir dir bei Angabe eines einmaligen und sicheren Passworts deine Tür öffnen können."
Kommentar
-
das wiederspricht sich nur dann wenn die das einfach so machen können. nicht wenn man dafür vorher ihnen ein passwort geben musste und selber in der app eine konfiguration machen musste. kaba und co haben auch eure Schlüssel gespeichert, welche man aber nur kriegt wenn man ihnen die schlüsselkarte gibt.
Kommentar
-
Gast
Zitat von raphaelhuber Beitrag anzeigend kaba und co haben auch eure Schlüssel gespeichert, welche man aber nur kriegt wenn man ihnen die schlüsselkarte gibt.
Kommentar
-
Zitat von volkerm Beitrag anzeigen
Der Vergleich passt nicht wirklich, denn dort kann man nicht ferngesteuert und anonym Schlüsselkarten "ausprobieren". Deine Marketingaktion in allen Ehren, aber lass uns doch erstmal warten bis Nuki fertig ist und wir wissen, was wir bekommen.
Marketing? Was soll den der Kommentar? Das hat mit der Sache genau so wenig zu tun wie ich mit der Firma.
Kommentar
-
Zitat von gaert Beitrag anzeigenVielleicht kurz noch zum Verständnis:
Das Arduino-Programm habe ich so gestrickt, dass ich mit 1 Aktorkanal auskomme: kurzer Impuls = Tür aufschließen und öffnen, langer Impuls = Tür abschließen. Der Impuls triggert einen Interrupt und weckt damit zugleich den Arduino aus dem Tiefschlaf (spart Strom).
Da für mich kommerzielle Lösungen auf Grund der hohen Preise definitiv vom Tisch sind, hat die Lösung von gaert mein Interesse geweckt.
Zum dem Arduino mit Motorshield gibt im Netz recht viel, das scheint auch gar nicht so kompliziert zu sein. Die Steuerung erfolgt in allen Tutorials aber immer über die Software.
Wie hast du das mit dem Aktor realisiert?
Gibt es mittlerweile Fotos deiner Konstruktion?
Gruß, Ukatz
Kommentar
-
Zitat von Smurf Beitrag anzeigenIch mache das anders. Wenn ich neu in die Reichweite meines WLANs komme, sage ich das via Tasker und HTTP meinem Server.
Gruß
Thomas
Kommentar
-
Zitat von Ukatz Beitrag anzeigen
Ich hole das Thema noch mal hoch.
Da für mich kommerzielle Lösungen auf Grund der hohen Preise definitiv vom Tisch sind, hat die Lösung von gaert mein Interesse geweckt.
Zum dem Arduino mit Motorshield gibt im Netz recht viel, das scheint auch gar nicht so kompliziert zu sein. Die Steuerung erfolgt in allen Tutorials aber immer über die Software.
Wie hast du das mit dem Aktor realisiert?
Gibt es mittlerweile Fotos deiner Konstruktion?
Gruß, UkatzDen richtigen Schlüssel nehme ich schon gar nicht mehr mit... Leider habe ich's versäumt, Fotos während der Erstellung des Motorzylinders zu machen - aber ich kann gerne das Endergebnis knipsen. Das Arduino-Programm kann ich auch posten - kein Problem.
EDOMI - Intelligente Steuerung und Visualisierung KNX-basierter Elektro-Installationen (http://www.edomi.de)
Kommentar
-
Hier ein kurzes Video - der Ton wurde komischer Weise nicht mit aufgenommen?! (iPhone 4... Ts ts ts)
https://youtu.be/ZsqQjm36vIQ
Das Gehäuse fehlt noch - ist in Arbeit...
EDOMI - Intelligente Steuerung und Visualisierung KNX-basierter Elektro-Installationen (http://www.edomi.de)
Kommentar
-
Hier das Progrämmchen...
Das Prinzip ist einfach: Der Motorstrom wird gemessen zur Anschlagserkennung. Per Terminal kann man so ziemlich alle Parameter einstellen und experimentell ermitteln.
Code:/* -------------------------------------- Arduino-Motorzylinder (c) Dr. Christian Gärtner Freeware :) -------------------------------------- Terminal: "p" => Programmiermodus starten Modus=0: Sleepmodus nicht aktiv Modus=1: Sleepmodus aktiv (default) E2: (auf Masse ziehen) 150..1000ms = Öffnen (ein zu kurzer Impuls wird ignoriert) >1000ms = Schließen Achtung: Nach einem Reset bleiben nur 5 Minuten Zeit, um per Terminal Zugriff zu bekommen - danach wird der Sleep-Modus aktiviert und die Schnittstelle funktioniert nicht mehr. Ist der Programmiermodus aktiviert, hat man unendlich viel Zeit. */ #include <avr/sleep.h> #include <EEPROM.h> //Motor1: Motorschloss int motor1_direction=12; //Pin: Motor-Drehrichtung int motor1_brake=9; //Pin: Motor-Bremse int motor1_speed=3; //Pin: Motor-Geschwindigkeit (PWM) int motor1_sense=A0; //Pin: Motor-Strommessung //Eingänge int trigger_openclose=2; //Pin: Eingang für Öffnen und Schließen (kurz/lang) boolean trigger_old=false; int sleepTimer=0; //EEPROM-Variablen int varEprom[20]; //Programmiermodus int key=-1; boolean prgMode=false; //true=Programmiermodus aktiv int curSpeed=127; //default: Halbe Geschwindigkeit boolean motorRunning=false; void setup() { Serial.begin(9600); pinMode(motor1_direction,OUTPUT); pinMode(motor1_brake,OUTPUT); pinMode(motor1_speed,OUTPUT); pinMode(motor1_sense,INPUT); pinMode(trigger_openclose,INPUT_PULLUP); load_eeprom(); } void loop(){ if (Serial && Serial.available()>0) { key=Serial.read(); if (key==112) { //p: Programmiermodus starten sleepTimer=0; prgMode=true; show_menu(); Serial.println("Programmiermodus gestartet"); } if (key==120) { //x: Programmiermodus beenden sleepTimer=0; prgMode=false; Serial.println("Programmiermodus beendet"); } if (key==118) { //v: Variable editieren (Format: "v ID Wert") int v1=-1; int v2=0; v1=Serial.parseInt(); v2=Serial.parseInt(); if (v1>=0 && v1<=19) { varEprom[v1]=v2; show_menu(); } } if (key==115) { //s: alle Variablen ins Eprom speichern for (int i=0;i<=19;i++) { saveInt(i,varEprom[i]); } Serial.println("Variablen gespeichert."); load_eeprom(); //zur Kontrolle show_menu(); } if (key==49) { //1: Links herum drehen digitalWrite(motor1_direction,HIGH); digitalWrite(motor1_brake,LOW); analogWrite(motor1_speed,curSpeed); motorRunning=true; } if (key==50) { //2: Stop digitalWrite(motor1_brake,HIGH); delay(1000); analogWrite(motor1_speed,0); digitalWrite(motor1_brake,LOW); motorRunning=false; show_menu(); } if (key==51) { //3: Rechts herum drehen digitalWrite(motor1_direction,LOW); digitalWrite(motor1_brake,LOW); analogWrite(motor1_speed,curSpeed); motorRunning=true; } if (key==43) { //+: Mehr Speed curSpeed=curSpeed+25; if (curSpeed>255) {curSpeed=255;} Serial.println(curSpeed,DEC); } if (key==45) { //-: Weniger Speed curSpeed=curSpeed-25; if (curSpeed<25) {curSpeed=25;} Serial.println(curSpeed,DEC); } if (key==56) { //8: Öffnen (mit den aktuellen Parametern) lock_open(); } if (key==57) { //9: Schliessen (mit den aktuellen Parametern) lock_close(); } if (key==32) { sleepNow(); } } if (prgMode) { //-------------------------------------------------- //Programmiermodus //-------------------------------------------------- if (motorRunning) { Serial.println(analogRead(motor1_sense),DEC); } delay(50); } else { //-------------------------------------------------- //Normaler Modus //-------------------------------------------------- if (trigger_old==true && digitalRead(trigger_openclose)==HIGH) { trigger_old=false; } if (trigger_old==false && digitalRead(trigger_openclose)==LOW) { trigger_old=true; int t=0; do { delay(10); t++; } while (digitalRead(trigger_openclose)==LOW && t<varEprom[14]); if (t<varEprom[14]) { //kurz if (t>varEprom[13]) { //Mindestdauer des Triggers lock_open(); } } else { //lang lock_close(); } sleepTimer=0; } if (varEprom[11]==1) { //Sleepmodus freigegeben? sleepTimer++; if (sleepTimer>=varEprom[12]) { //nach ca. x Sekunden Inaktivität: Sleep-Modus sleepNow(); } } delay(100); } } void wakeupNow() { prgMode=false; } void sleepNow() { sleepTimer=0; set_sleep_mode(SLEEP_MODE_PWR_DOWN); sleep_enable(); attachInterrupt(1,wakeupNow,LOW); sleep_mode(); //jetzt schläft der Bursche. Nach dem Aufwachen geht es HIER weiter! sleep_disable(); detachInterrupt(1); } void load_eeprom() { //Variablen aus dem EEPROM laden for (int i=0;i<=19;i++) { varEprom[i]=loadInt(i); } //Defaultwerte, falls EEPROM noch leer ist if (varEprom[0]<0) {varEprom[0]=90;} if (varEprom[1]<0) {varEprom[1]=255;} if (varEprom[2]<0) {varEprom[2]=100;} if (varEprom[3]<0) {varEprom[3]=20;} if (varEprom[4]<0) {varEprom[4]=255;} if (varEprom[5]<0) {varEprom[5]=20;} if (varEprom[6]<0) {varEprom[6]=90;} if (varEprom[7]<0) {varEprom[7]=255;} if (varEprom[8]<0) {varEprom[8]=60;} if (varEprom[9]<0) {varEprom[9]=128;} if (varEprom[10]<0) {varEprom[10]=1;} if (varEprom[11]<0) {varEprom[11]=1;} //0=kein Sleepmodus, 1=Sleepmodus if (varEprom[12]<0) {varEprom[12]=3000;} //5 Minuten bis Sleepmodus if (varEprom[13]<0) {varEprom[13]=15;} if (varEprom[14]<0) {varEprom[14]=100;} if (varEprom[15]<0) {varEprom[15]=0;} //frei if (varEprom[16]<0) {varEprom[16]=0;} //frei if (varEprom[17]<0) {varEprom[17]=0;} //frei if (varEprom[18]<0) {varEprom[18]=0;} //frei if (varEprom[19]<0) {varEprom[19]=0;} //frei } void show_menu() { Serial.println("////////////////////////////////////////////////////////////////////////////////////////"); Serial.println("1 : Links drehen (keine Endschalter!)"); Serial.println("2 : Stop"); Serial.println("3 : Rechts drehen (keine Endschalter!)"); Serial.println("+ : mehr Geschwindigkeit"); Serial.println("- : weniger Geschwindigkeit"); Serial.println("8 : Oeffnen (mit Eprom-Parametern!)"); Serial.println("9 : Schliessen (mit Eprom-Parametern!)"); Serial.println("s : Einstellungen speichern"); Serial.println("x : Beenden"); Serial.println("---------------------------------------------------------------------------"); Serial.println("Motorschloss-Optionen (Motor1, E4=1)"); Serial.println("---------------------------------------------------------------------------"); Serial.print("v 0 # = Oeffnen: Strom-Schwellenwert Anschlag 0..1023 = ");Serial.println(varEprom[0],DEC); Serial.print("v 1 # = Geschwindigkeit 0..255 = ");Serial.println(varEprom[1],DEC); Serial.print("v 2 # = Dauer (1/10 s) 0..32767 = ");Serial.println(varEprom[2],DEC); Serial.print("v 3 # = Haltezeit Falle (1/10 s) 0..32767 = ");Serial.println(varEprom[3],DEC); Serial.print("v 4 # = Geschwindigkeit Falle ausfahren 0..255 = ");Serial.println(varEprom[4],DEC); Serial.print("v 5 # = Dauer Falle ausfahren (1/10 s) 0..32767 = ");Serial.println(varEprom[5],DEC); Serial.print("v 6 # = Schliessen: Strom-Schwellenwert Anschlag 0..1023 = ");Serial.println(varEprom[6],DEC); Serial.print("v 7 # = Geschwindigkeit 0..255 = ");Serial.println(varEprom[7],DEC); Serial.print("v 8 # = Dauer (1/10 s) 0..32767 = ");Serial.println(varEprom[8],DEC); Serial.print("v 9 # = Getriebe: Geschwindigkeit Entlastung 0..255 = ");Serial.println(varEprom[9],DEC); Serial.print("v 10 # = Dauer Entlastung (1/10 s) 0..32767 = ");Serial.println(varEprom[10],DEC); Serial.println("---------------------------------------------------------------------------"); Serial.println("Allgemeine Optionen"); Serial.println("---------------------------------------------------------------------------"); Serial.print("v 11 # = Modus: 0=kein Sleepmodus, 1=Sleepmodus aktiviert = ");Serial.println(varEprom[11],DEC); Serial.print("v 12 # = Zeit bis Sleep-Modus aktiv wird (1/10 s) = ");Serial.println(varEprom[12],DEC); Serial.print("v 13 # = E2: Mindest-Triggerzeit bei Oeffnen (1/10 s) = ");Serial.println(varEprom[13],DEC); Serial.print("v 14 # = E2: Mindest-Triggerzeit bei Schliessen (1/10 s) = ");Serial.println(varEprom[14],DEC); } void lock_open() { digitalWrite(motor1_direction,HIGH); digitalWrite(motor1_brake,LOW); analogWrite(motor1_speed,varEprom[1]); int t=0; do { delay(100); t++; } while (analogRead(motor1_sense)<varEprom[0] && t<varEprom[2]); //Getriebe entlasten, d.h. etwas in Gegenrichtung fahren und auslaufen lassen (also nicht bremsen) digitalWrite(motor1_brake,HIGH); delay(200); digitalWrite(motor1_direction,LOW); analogWrite(motor1_speed,varEprom[9]); digitalWrite(motor1_brake,LOW); delay(varEprom[10]*100); analogWrite(motor1_speed,0); delay(varEprom[3]*100); //Haltezeit der Falle //Falle ausfahren digitalWrite(motor1_direction,LOW); digitalWrite(motor1_brake,LOW); analogWrite(motor1_speed,varEprom[4]); delay(varEprom[5]*100); //Ausfahrzeit der Falle //Stop digitalWrite(motor1_brake,HIGH); delay(200); analogWrite(motor1_speed,0); digitalWrite(motor1_brake,LOW); delay(250); } void lock_close() { digitalWrite(motor1_direction,LOW); digitalWrite(motor1_brake,LOW); analogWrite(motor1_speed,varEprom[7]); int t=0; do { delay(100); t++; } while (analogRead(motor1_sense)<varEprom[6] && t<varEprom[8]); //Getriebe entlasten, d.h. etwas in Gegenrichtung fahren und auslaufen lassen (also nicht bremsen) digitalWrite(motor1_brake,HIGH); delay(200); digitalWrite(motor1_direction,HIGH); analogWrite(motor1_speed,varEprom[9]); digitalWrite(motor1_brake,LOW); delay(varEprom[10]*100); analogWrite(motor1_speed,0); delay(250); } void saveInt(int adr,int value) { EEPROM.write((adr*2),value&0xFF); EEPROM.write((adr*2)+1,(value>>8)&0xFF); return; } int loadInt(int adr) { return EEPROM.read((adr*2))+((EEPROM.read((adr*2)+1)<<8)&0xFF00); }
Zuletzt geändert von gaert; 06.01.2016, 16:20.EDOMI - Intelligente Steuerung und Visualisierung KNX-basierter Elektro-Installationen (http://www.edomi.de)
Kommentar
-
Zitat von gaert Beitrag anzeigenHier ein kurzes Video - der Ton wurde komischer Weise nicht mit aufgenommen?! (iPhone 4... Ts ts ts)
https://youtu.be/ZsqQjm36vIQ
Das Gehäuse fehlt noch - ist in Arbeit...Danke und LG, Dariusz
GIRA | ENERTEX | MDT | MEANWELL | 24VDC LED | iBEMI | EDOMI | ETS5 | DS214+ | KNX/RS232-GW-ROTEL
Kommentar
-
Danke
Man kann den Zylinder übrigens auch von außen per Schlüssel notfalls betätigen, da der Motor kein(!) Schneckengetriebe hat. Man braucht natürlich etwas mehr Kraft als üblich (der Motor muss ja nebst Getriebe mitgedreht werden), aber diese Option ist ja auch nur für den Notfall vorgesehen.
Ursprünglich wollte ich einen kräftigeren Motor einsetzen (der aktuelle ist relativ schwach und zieht max. 0.1 A) - aber bei meiner spanischen Türe ist dies nicht notwendig
Früher hatte ich eine Keymatic im Einsatz... Puh... Plastikschrott! Funktioniert zwar, macht aber ordentlich Krach, ist laaaaangsam und fühlt sich irgendwie nicht besonders langlebig an. Erste Risse waren auch schon im Gehäuse erkennbar. Dann hatte ich diese Idee...Zuletzt geändert von gaert; 06.01.2016, 16:56.EDOMI - Intelligente Steuerung und Visualisierung KNX-basierter Elektro-Installationen (http://www.edomi.de)
Kommentar
-
Sieht wirklich sehr hübsch aus :-) !
Mit einem Edelstahlgehäuse darüber oder in der Türfarbe passender Oberfläche ...
Ich bräuchte mehrere Leben um „vieles“ umsetzen zu können ;-)Danke und LG, Dariusz
GIRA | ENERTEX | MDT | MEANWELL | 24VDC LED | iBEMI | EDOMI | ETS5 | DS214+ | KNX/RS232-GW-ROTEL
Kommentar
-
Hübsch - najaWie gesagt - das Gehäuse ist noch in Arbeit (bzw. in Planung). Eilt ja nicht
Ich mag solche "Basteleien" irgendwie... Ich könnte ja auch einfach einen Motorzylinder nebst Steuerung kaufen, aber das macht ja keinen SpaßEDOMI - Intelligente Steuerung und Visualisierung KNX-basierter Elektro-Installationen (http://www.edomi.de)
Kommentar
Kommentar