Würde mich eure Hilfe freuen bei der Erweiterung des Multi Password sketch

Ich möchte mit Hilfe dieses Sketch gerne meinen Kaffeeautomat ansteuern.
Da aber immer mal gerne einer dem anderen über die Schulter schaut,
dachte ich daran, dass sich der Code stündlich wechselt nach folgender
Vorgabe:

xxyyzz

xx = Mitarbeiternummer = fix z.B. 01
yy = aktuelle Stunde z.B. 08
zz = aktueller Tag z.B. 16 (diesen Wert am besten doppelt)

Leider stoße ich jetzt an meine Grenzen, was auch stundenlanges googeln
nicht verbessern konnte.

Teil2:

Falls der Aufwand nicht zuuu große ist, wäre das speichern am besten in
dieser Art:

Benutzer Zeit / Datum
01 15:03 16.05.2016
03 09:44 17.05.2016

mit einer Möglichkeit, mit der ich dann möglichst einfach an die Daten komme.

Hardware:

Uno
LCD
Relais
RTC

Dieser Sketch:

http://playground.arduino.cc/Main/MultiUserKeypadPassword

oder dieser?

Freundliche Grüße aus Neumarkt

und hoffentlich finden wir eine Lösung

Christian

Wie dürfen wir das verstehen?
Sollen wir dir das Programmieren?

Ich denke, du solltest vorlegen und die Änderungen programmieren und uns das zeigen. Wir werden dann sicher helfen.

Natürlich probiere ich, was für mich möglich ist und suche und lese viel.
In den tiefen bin ich auf folgenden Sketch von jurs gestoßen.

der funktioniert soweit mal.

Im Code hab ich eine Zeile orange markiert, wie kann ich hier jetzt etwas vergleichen?
Und wie könnte ich den limited Code zerlegen für meine Zwecke?

#include <Keypad.h>

#define LED 13

char masterCode[] = "123456";
char limitedCode[]= "112233";

const byte ROWS = 4; //four rows
const byte COLS = 3; //three columns
char keys[ROWS][COLS] = {
{'1','2','3'},
{'4','5','6'},
{'7','8','9'},
{'*','0','#'}
};
byte colPins[COLS] = {8, 7, 6}; //connect to the row pinouts of the keypad
byte rowPins[ROWS] = {5,4,3,2}; //connect to the column pinouts of the keypad

Keypad keypad = Keypad( makeKeymap(keys), rowPins, colPins, ROWS, COLS );


boolean validCode()
{
static byte counter = 0;
static char code[sizeof(masterCode)];
char key = keypad.getKey();
if (!key) return false; // keine Taste gedrückt, kann nicht gültig sein
if (counter==0) memset(code,0,sizeof(code)); // clear code string
Serial.println(key); // comment out if not needed for debugging
switch (key)
{
  case '*': counter=0; // start new code
            break; 
  case '#': if (strcmp(code,masterCode)==0) // maybe correct code?
            {
              counter=0;
              return true; // correct masterCode was entered
            }
         [color=orange]   if (true==true) // hier die limitierende Bedingung einsetzen[/color]
            {
              if (strcmp(code,limitedCode)==0) // mayby the limitedCode?
              {
                counter=0;
                return true; // yes, the limitedCode is correct
              }
            } 
            break;
  default : code[counter]=key; // just add the keystroke to the code
            if (counter<sizeof(code)-1) counter++;
 
}
return false; // es wurde kein gültiger Code eingegeben  
}


void setup(){
Serial.begin(9600);
pinMode(LED,OUTPUT);
digitalWrite(LED,LOW);
}

void loop(){
if (validCode())  
{ 
  Serial.println("VALID CODE");
  for (int i=0;i<5;i++) // do some blinking LED
  {
    digitalWrite(LED,HIGH);
    delay(500);
    digitalWrite(LED,LOW);
    delay(500);
  }
}
}

Bitte setze deinen obigen Code in Code-Tags. Schaltfläche “</>” verwenden.
Das kannst du jetzt noch nachträglich machen.

Das steht auch in den “How to use this Forum”.

Dann trage bitte die richtige IF-Abfrage mit dazu ein, dann können wir das sicher korrekt einsetzen.
Das was jetzt drin steht, macht keinen Sinn.

Danke für den Tipp mit “</>”.
Sofort umgesetzt.

Mit der If Anfrage is gar nicht so leicht.

Erstmal müsste das Passwort in zwei Teile zerlegt werden

xxyyzz

xx = Benutzer ID = fix z.B. 01

yy = aktueller Tag

zz = aktuelle Stunde

Die Abfrage müsste daraufhin prüfen, ob ID vergeben und yyzz mit korrekt eingegeben.

Würde mich über Hilfe freuen.

Werde mich heute Abend schon mal in RTC einarbeiten.

Danke

Christian

Ich verstehe nicht, was in deine "IF-Abfrage" rein soll.

Das hier: "if (true==true)" macht keinen Sinn.

Ein paar echte Vorgaben musst du schon machen.

Dann versteh ich nicht, wie das gemeint ist:

"Die Abfrage müsste daraufhin prüfen, ob ID vergeben "

Wo soll es überprüft werden. Du fragst keinen externen (EEProm) Speicher ab.

Ich denke, du solltest erst mal ein paar grundsätzliche Dinge klären.

Ich versuche es einmal in Worte zu fassen, dass glaube ich fällt mir leichter, da genau diese Abfragen mein Problem sind.

Es gibt 5 Personen = ID 01 - 05

Das Relais soll ausgelöst werden, wenn das Passwort richtig ist.

Das Passwort soll sich aber stündlich ändern. Stelle 3-6 yyzz

Beispiel

Benutzer 03 möchte heute jetzt 12.40 das Relais auslösen

er müsste eingeben 030412 entspricht 04 Tag eines Monats und aktuell 12 Uhr ...

Ich bedanke mich trotzdem recht herzlich für die zügigen Antworten
und hoffe dass mein Problem lösbar ist.

Vielleicht ist der Sketch aus der Library besser als Ansatz (Multiuser Password).
Ich kenn mich leider in diesem Bereich lesen und vergleichen zu wenig aus.

Gruß aus der verschneiten Oberpfalz

Wie würdest du denn deine Kenntnisse in Bezug auf Arduino einschätzen?
0=Gar keine Ahnung
10=jurs

Hast du schon ein anderes Projekt programmiert (nicht copy paste) ?

Hallo,

unabhängig von der Programmierung würde ich mir mal Gedanken über euer Betriebsklima machen.

Gibt es bei euch tatsächlich wg. Kleinbeträgen von ~ 0,20€ Probleme ?

Grüße

Harry

HarryR:
Gibt es bei euch tatsächlich wg. Kleinbeträgen von ~ 0,20€ Probleme ?

Nun, bei
5 Kaffee am Tag sprechen wir immerhin von über 200 Euronen im Jahr. Wenn da ein Schnorrer dabei ist, kann das das Betriebsklima ganz schön verschlechtern. :slight_smile: :slight_smile:

ElEspanol:
Hast du schon ein anderes Projekt programmiert (nicht copy paste) ?

Anhand der vom TO gestellten Fragen und vom TO präsentierten Antworten, wohl eher nicht.

ElEspanol:
Nun, bei
5 Kaffee am Tag sprechen wir immerhin von über 200 Euronen im Jahr. Wenn da ein Schnorrer dabei ist, kann das das Betriebsklima ganz schön verschlechtern. :slight_smile: :slight_smile:

Mein Rat:

Kauft euch 'ne Pad-Maschine und jeder nutzt seine eigenen Pads oder sprecht das Thema einfach mal an.

Das Betriebsklima wird nicht verschlechtert durch das Schnorren,
das schlechte Betriebsklima äussert sich darin, dass geschnorrt wird ..

Viele Grüße

Harry

By the way, die Zeit und Mühen die du jetzt investiert übersteigen irgendwann den Gegenwert von 250 Euronen
und niemand wird dich loben, wenn du mit dem Arduino eine scheinbare Lösung gefunden hast.
Mich schüttelt es ehrlich gesagt bei dem Gedanken, dass du bereits über Maßnahmen gegen Passwortausspähung beim Kaffezapfen nachdenkst ..