HB-UNI-Sen-RFID-RC - Anpassung für Wiegand-Leser möglich?

Entwicklung und Bau von Hardware aller Art, die im HM-Umfeld eingesetzt werden kann

Moderator: Co-Administratoren

Benutzeravatar
stan23
Beiträge: 2038
Registriert: 13.12.2016, 21:14
System: Alternative CCU (auf Basis OCCU)
Wohnort: Altmühltal
Hat sich bedankt: 582 Mal
Danksagung erhalten: 336 Mal
Kontaktdaten:

Re: HB-UNI-Sen-RFID-RC - Anpassung für Wiegand-Leser möglich?

Beitrag von stan23 » 30.05.2020, 20:02

jp112sdl hat geschrieben:
30.05.2020, 18:37
Aber das würde bedeuten, dass die Wiegand-Lib auch nur max. 32 bits ausgeben kann
https://github.com/monkeyboard/Wiegand- ... nd.cpp#L14
obwohl es in der README heißt:
Wiegand 4 bit, 8 bit, 26 bit, 32 bit and 34 bit library for Arduino
Evtl. kann auf ESP8266/ESP32 ein unsigned long länger sein!?
Nein, das wäre ein unsigned long long.

Ich würde behaupten dass die Lib zwar 34-Bit-Karten unterstützt, aber nur die unteren 32 Bit ausgeben kann.
jp112sdl hat geschrieben:
30.05.2020, 18:37
Bei meinen Tests war es immer 0.
Stimmt, über dem MSBit zieht der Shift nur Nullen rein.
Viele Grüße
Marco

RaspberryMatic als VM auf einem NUC mit Proxmox und USB-Funkmodul
~80 Geräte (HM, HmIP, HMW, HBW, AskSin)

mcbo
Beiträge: 88
Registriert: 16.08.2016, 15:45
Danksagung erhalten: 3 Mal

Re: HB-UNI-Sen-RFID-RC - Anpassung für Wiegand-Leser möglich?

Beitrag von mcbo » 31.05.2020, 01:33

jp112sdl hat geschrieben:
30.05.2020, 13:22
Ach ja, das was vom MFRC522 kommt ist ja ein Byte-Array.
Mach mal

Code: Alles auswählen

 bool getRfidAddress(uint8_t *addr) {
   if (wg.available()) {
     memset(addr,0x00, ID_ADDR_SIZE);
     
     unsigned long wgAddr = wg.getCode();
     byte addrArr[8];
       for (uint8_t i = 0; i < ID_ADDR_SIZE; i++) {
         addrArr[i] = wgAddr >> (i*8) & 0xff;
      }
     
     memcpy(addr, addrArr, ID_ADDR_SIZE);

     return true;
   } 
   return false;
  }
  
Damit läuft es erst einmal !!! :D

Ich habe testweise eine "Direkte Verknüpfung" mit einem HM-LC-Sw4-Ba-PCB angelegt,
und konnte mit meinen Fingern, RFID-Card und PIN-Eingabe, Lampen steuern !!! :D :lol:

Eine Direkte Verknüpfung mit meiner KeyMatic lies sich erstellen,
ich konnte aber das Motorschloss nicht betätigen.
Sollte das funktionieren? :?:

Mit einem manuell erstellten Programm, lies sich die KeyMatic problemlos steuern.

Das funktioniert alles schon sehr zuverlässig. :mrgreen:

Die KeyMatic hat 3 Zustände: Tür verschliessen, Tür entriegeln, Tür öffnen.
Die lange Scan / Tasterfunktion, funktioniert mit dem Wiegand-Leser nicht.

Wie kann ich die KeyMatic per Fingerprint am besten steuern.
Eine automatisch Verschließung nach XXX Sekunden, möchte ich meiner KeyMatic nicht zumuten. :roll:
Das werden die Batterien und die Mechanik nicht lange mitmachen.

Meine Idee:
mit Fingerprint die Tür öffnen (bei Verschluss Tür aufschliessen und Klinke betätigen, sonst nur die Klinke betätigen)
Verschließen würde ich dann per externen Taster oder mit einem PIN-Code.

Gibt es eventuell eine bessere Lösung?
z.B.: Finger einmal Scannen ==> Tür auf, Finger 3x Scannen Tür zu?

Kannst Du mir bitte noch erklären, wie Du zu der Chip ID kommst? :roll:

List Du die HEX-Werte von Rechts nach Links und füllst die restlichen Bytes mit Nullen?

Code: Alles auswählen

Chip ID CCU: 08EB4B0000000000
Wiegand HEX = 4BEB08, DECIMAL = 4975368, Type W26

Code: Alles auswählen

Chip ID CCU: DA05000000000000
Wiegand HEX = 5DA, DECIMAL = 1498, Type W26

Code: Alles auswählen

Chip ID CCU: 7000000000000000
Wiegand HEX = 70, DECIMAL = 112, Type W26
Das OLED-Display läuft auch und zeigt mir die Kommunikation der Wiegand-Schnittstelle an.

Ich würde gerne den Sketch noch etwas aufräumen, da der Speicher fast voll ist :shock:

Was kann ich vom "alten" RFID-Reader löschen, um mehr Platz zu gewinnen?


Gruß

Marcel

jp112sdl
Beiträge: 12108
Registriert: 20.11.2016, 20:01
Hat sich bedankt: 848 Mal
Danksagung erhalten: 2148 Mal
Kontaktdaten:

Re: HB-UNI-Sen-RFID-RC - Anpassung für Wiegand-Leser möglich?

Beitrag von jp112sdl » 31.05.2020, 08:38

mcbo hat geschrieben:
31.05.2020, 01:33
Eine Direkte Verknüpfung mit meiner KeyMatic lies sich erstellen,
ich konnte aber das Motorschloss nicht betätigen.
Sollte das funktionieren?
Die Keymatic läuft nur mit "gesicherter Übertragung" und lässt sich auch nicht auf "Standard" umstellen.
Wenn du die KM direkt steuern möchtest, musst du mit AES kompilieren.
https://github.com/pa-pa/AskSinPP#enable-aes-support
mcbo hat geschrieben:
31.05.2020, 01:33
Die lange Scan / Tasterfunktion, funktioniert mit dem Wiegand-Leser nicht.
Wie lange präsentiert denn der Wiegand Leser die ID?
So lange wie du den Finger aufgelegt hast?
mcbo hat geschrieben:
31.05.2020, 01:33
List Du die HEX-Werte von Rechts nach Links und füllst die restlichen Bytes mit Nullen?
Genau.
mcbo hat geschrieben:
31.05.2020, 01:33
Ich würde gerne den Sketch noch etwas aufräumen, da der Speicher fast voll ist
Was kann ich vom "alten" RFID-Reader löschen, um mehr Platz zu gewinnen
Wie wenig Platz ist denn tatsächlich noch?

VG,
Jérôme ☕️

---
Support for my Homebrew-Devices: Download JP-HB-Devices Addon

jp112sdl
Beiträge: 12108
Registriert: 20.11.2016, 20:01
Hat sich bedankt: 848 Mal
Danksagung erhalten: 2148 Mal
Kontaktdaten:

Re: HB-UNI-Sen-RFID-RC - Anpassung für Wiegand-Leser möglich?

Beitrag von jp112sdl » 31.05.2020, 09:39

Ich hab das alles ein wenig strukturiert.
Nimm mal die RFID.h aus meinem dev_wiegand AskSinPP-Branch und den Sketch aus dem dev_wiegand HB-UNI-Sen-RFID-RC Branch.

In Zeile 22 musst du die Kommentarzeichen entfernen:

Code: Alles auswählen

#define USE_WIEGAND    // use a WIEGAND protocol based reader; change CC1101 GDO0 Pin at #define CC1101_GDO0_PIN below
und in Zeile 45 deinen GDO0-Pin ändern:

Code: Alles auswählen

#define CC1101_GDO0_PIN       2 //change when using WIEGAND; it needs hw interrupt pins 2 and 3
.

Von der MFRC522 Lib wird dann auch nichts weiter geladen.

Speicherplatztechnisch sieht es derzeit beim Kompilieren bei mir so aus:

Code: Alles auswählen

Der Sketch verwendet 23448 Bytes (76%) des Programmspeicherplatzes. Das Maximum sind 30720 Bytes.
Globale Variablen verwenden 988 Bytes (48%) des dynamischen Speichers, 1060 Bytes für lokale Variablen verbleiben. Das Maximum sind 2048 Bytes.

VG,
Jérôme ☕️

---
Support for my Homebrew-Devices: Download JP-HB-Devices Addon

mcbo
Beiträge: 88
Registriert: 16.08.2016, 15:45
Danksagung erhalten: 3 Mal

Re: HB-UNI-Sen-RFID-RC - Anpassung für Wiegand-Leser möglich?

Beitrag von mcbo » 31.05.2020, 11:44

Danke, funktioniert.

Komme jetzt auf:

Code: Alles auswählen

Der Sketch verwendet 24164 Bytes (78%) des Programmspeicherplatzes. Das Maximum sind 30720 Bytes.
Globale Variablen verwenden 1033 Bytes (50%) des dynamischen Speichers, 1015 Bytes für lokale Variablen verbleiben. Das Maximum sind 2048 Bytes.
Hat aber was gebracht, vorher:

Code: Alles auswählen

Der Sketch verwendet 26828 Bytes (87%) des Programmspeicherplatzes. 
Das Maximum sind 30720 Bytes.
Globale Variablen verwenden 1125 Bytes (54%) des dynamischen Speichers, 
923 Bytes für lokale Variablen verbleiben. Das Maximum sind 2048 Bytes.
Ich hatte im Sketch keinen Platz mehr für die OLED Adafruit SSD1306 LIB.
Habe mir dann eine kleinere eingebaut.


Gruß

Marcel

mcbo
Beiträge: 88
Registriert: 16.08.2016, 15:45
Danksagung erhalten: 3 Mal

Re: HB-UNI-Sen-RFID-RC - Anpassung für Wiegand-Leser möglich?

Beitrag von mcbo » 31.05.2020, 12:02

jp112sdl hat geschrieben: Die Keymatic läuft nur mit "gesicherter Übertragung" und lässt sich auch nicht auf "Standard" umstellen.
Wenn du die KM direkt steuern möchtest, musst du mit AES kompilieren.
https://github.com/pa-pa/AskSinPP#enable-aes-support
OK, danke
jp112sdl hat geschrieben: Wie lange präsentiert denn der Wiegand Leser die ID?
So lange wie du den Finger aufgelegt hast?
Wenn der Finger aufgelegt bleibt, oder ein RFID-TAG vorgehalten wird,
liest der Reader ca. im Intervall von 1s.

Deshalb meine Idee, es im Sketch, wie folgt, als langen Tastendruck umzusetzen:
"Wenn in 3 Sekunden, die selbe ID 3x hintereinander erkannt wird ==> langer Tastendruck."

Das 2x hintereinander die selbe ID erkannt wird, passiert sehr oft,
wenn der Finger zu lange auf dem Leser liegt. :wink:
jp112sdl hat geschrieben: List Du die HEX-Werte von Rechts nach Links und füllst die restlichen Bytes mit Nullen?

Genau.
An welcher Stelle im Sketch generierst Du die ID?
Und wo bekommst Du die Antwort von der CCU?

Code: Alles auswählen

#define NUM_CHANNELS          8
Sind hiermit mehr als 8 Taster-Kanäle möglich?


Gruß

Marcel

jp112sdl
Beiträge: 12108
Registriert: 20.11.2016, 20:01
Hat sich bedankt: 848 Mal
Danksagung erhalten: 2148 Mal
Kontaktdaten:

Re: HB-UNI-Sen-RFID-RC - Anpassung für Wiegand-Leser möglich?

Beitrag von jp112sdl » 31.05.2020, 13:34

mcbo hat geschrieben:
31.05.2020, 12:02
Deshalb meine Idee, es im Sketch, wie folgt, als langen Tastendruck umzusetzen:
"Wenn in 3 Sekunden, die selbe ID 3x hintereinander erkannt wird ==> langer Tastendruck."
Die Idee ist ja nicht schlecht, aber die Implementierung (aus meiner Sicht) sehr aufwendig.

Ein "longpressed" ist in der HM Welt kein einzelner Befehl, sondern wird so lange zyklisch ausgesendet, bis "longreleased" wird.
Nur so kann man z.B. Dimmer relativ stufenlos dimmen.

Momentan wird der Reader alle 500ms abgefragt.
So lange jedes Mal die selbe ID gelesen wird, wird eine 1 in das "match"-Muster geschrieben.
Daraus werden dann short-/long pressed und released abgeleitet.
https://github.com/jp112sdl/AskSinPP/bl ... #L127-L162
mcbo hat geschrieben:
31.05.2020, 12:02
Wenn der Finger aufgelegt bleibt, oder ein RFID-TAG vorgehalten wird,
liest der Reader ca. im Intervall von 1s.
Vielleicht reicht es ja, wenn du das Intervall vergrößerst auf 1000 oder 1500
https://github.com/jp112sdl/AskSinPP/bl ... FID.h#L413
mcbo hat geschrieben:
31.05.2020, 12:02
An welcher Stelle im Sketch generierst Du die ID?
Die Frage verstehe ich nicht. Ich generiere zu keiner Zeit eine ID!?
mcbo hat geschrieben:
31.05.2020, 12:02
Und wo bekommst Du die Antwort von der CCU?
Eine Antwort worauf?
mcbo hat geschrieben:
31.05.2020, 12:02
Sind hiermit mehr als 8 Taster-Kanäle möglich?
Ja. Aber frag nicht, wie viele gehen.
Habe nur 8 getestet.

VG,
Jérôme ☕️

---
Support for my Homebrew-Devices: Download JP-HB-Devices Addon

mcbo
Beiträge: 88
Registriert: 16.08.2016, 15:45
Danksagung erhalten: 3 Mal

Re: HB-UNI-Sen-RFID-RC - Anpassung für Wiegand-Leser möglich?

Beitrag von mcbo » 31.05.2020, 16:07

jp112sdl hat geschrieben: Vielleicht reicht es ja, wenn du das Intervall vergrößerst auf 1000 oder 1500
https://github.com/jp112sdl/AskSinPP/bl ... FID.h#L413
Funktioniert leider nicht. :roll:
jp112sdl hat geschrieben: An welcher Stelle im Sketch generierst Du die ID?

Die Frage verstehe ich nicht. Ich generiere zu keiner Zeit eine ID!?
Ich würde die Chip ID, welche in der CCU angezeigt wird, gerne auf meinem Display ausgeben.
Wenn ich das richtig erkannt habe, wird die ID zerlegt und in ein Register geschrieben und Byte für Byte an die CCU gesendet.

Kann ich die ID irgendwo im Sketch abgreifen und ausgeben?
jp112sdl hat geschrieben: Und wo bekommst Du die Antwort von der CCU?

Eine Antwort worauf?
Gleiches Thema.
Es wird doch ein Vergleich zwischen gelesener ID, und in der CCU angelernter ID gemacht.
Ich würde gerne auf dem Display ausgeben, ob die gelesene ID berechtigt ist.

Danke

Gruß

Marcel

jp112sdl
Beiträge: 12108
Registriert: 20.11.2016, 20:01
Hat sich bedankt: 848 Mal
Danksagung erhalten: 2148 Mal
Kontaktdaten:

Re: HB-UNI-Sen-RFID-RC - Anpassung für Wiegand-Leser möglich?

Beitrag von jp112sdl » 31.05.2020, 17:34

mcbo hat geschrieben:
31.05.2020, 16:07
Ich würde die Chip ID, welche in der CCU angezeigt wird, gerne auf meinem Display ausgeben.
Wenn ich das richtig erkannt habe, wird die ID zerlegt und in ein Register geschrieben und Byte für Byte an die CCU gesendet.

Kann ich die ID irgendwo im Sketch abgreifen und ausgeben?
An die CCU wird sie nur gesendet, wenn du 0xfe ans Gerät schickst.
https://github.com/jp112sdl/AskSinPP/bl ... #L115-L125
Dann wird sie unter Status und Bedienung angezeigt. Bis zu einem CCU-Neustart.
Die CCU kennt deine IDs nicht, die sind nur im Gerät gespeichert.

Wenn du über ein SUBMIT eine ID von der CCU ans Gerät sendest, wird sie hier im Gerät abgespeichert:
https://github.com/jp112sdl/AskSinPP/bl ... FID.h#L225

Wenn du eine ID über den Anlern-Modus direkt am Gerät anlernst, erfolgt die Speicherung hier:
https://github.com/jp112sdl/AskSinPP/bl ... FID.h#L184

Halt immer für den jeweiligen Kanal.
mcbo hat geschrieben:
31.05.2020, 16:07
Es wird doch ein Vergleich zwischen gelesener ID, und in der CCU angelernter ID gemacht.
Ich würde gerne auf dem Display ausgeben, ob die gelesene ID berechtigt ist.
Hier bekommst du raus, zu welchem Kanal die gelesene ID passt
https://github.com/jp112sdl/AskSinPP/bl ... #L289-L297
...oder auch nicht (return 0)

VG,
Jérôme ☕️

---
Support for my Homebrew-Devices: Download JP-HB-Devices Addon

mcbo
Beiträge: 88
Registriert: 16.08.2016, 15:45
Danksagung erhalten: 3 Mal

Re: HB-UNI-Sen-RFID-RC - Anpassung für Wiegand-Leser möglich?

Beitrag von mcbo » 31.05.2020, 20:10

jp112sdl hat geschrieben: Die CCU kennt deine IDs nicht, die sind nur im Gerät gespeichert.
Oh, dann habe ich das bisher falsch verstanden! :shock:
Die CCU managt also nur Ihre Geräte und bietet eine GUI für Input und Output?
jp112sdl hat geschrieben: Hier bekommst du raus, zu welchem Kanal die gelesene ID passt
https://github.com/jp112sdl/AskSinPP/bl ... #L289-L297
...oder auch nicht (return 0)
Habe jetzt die ganze Zeit probiert, bekomme aber die abgespeicherten IDs nicht angezeigt.
Da fehlen mir einfach die Arduino Kenntnisse. :roll:

Kannst Du mir bitte mal ein einfaches Beispiel für die Konsolenausgabe zeigen,
das mir die abgespeicherten IDs auflistet?


Gruß

Marcel

Antworten

Zurück zu „Hardwareentwicklung und Selbstbau von Aktoren und Sensoren“