NEWS
[Adapter] Neuer radar2-Adapter
-
Puh das kann sein ganz am anfang erst adapter installiert dann per Konsole die 2 sachen ausgeführt. Will nur das DHCP nutzen. Bt hab ich eh nicht. Was kann ich den nun machen? Muss doch ein Port bei docker frei gemacht werden?
-
Hi
Ich nöchte gerne auf folgenden GitHub issue verweisen:
https://github.com/frankjoke/ioBroker.radar2/issues/17Ich habe mir mittlerweile die MAC-Adressen-Erkennung selbst geschrieben und möchte diese gerne teilen:
const objPrefix = 'geofence.'; const objPostfixIsHere = '.isHere'; const objPostfixLastSeen = '.lastSeen'; const arp_scan_cmd = 'sudo arp-scan --interface=wlan0 -lgq --retry=5 --timeout=400'; const arp_scan_interval = 20 * 1000; // ms const device_timeout = 3; // min const welcomeTimeDelay = 20 * 1000; // ms const macs = [ { 'id': 'id1', 'mac': 'XX:XX:XX:XX:XX:XX'}, { 'id': 'id2', 'mac': 'XX:XX:XX:XX:XX:XX'}, { 'id': 'id3', 'mac': 'XX:XX:XX:XX:XX:XX'} ]; for (var i in macs) { createState(objPrefix + macs[i].id + objPostfixIsHere, false, { type: 'boolean', def: false }); createState(objPrefix + macs[i].id + objPostfixLastSeen, false, { type: 'string', def: '' }); } createState(objPrefix + 'nHere', false, { read: true, write: true, type: 'number', def: 0 }); setInterval(() => { exec(arp_scan_cmd, (err, stdout, stderr) => { if (!err) { var macs_found = ''; for (var i in macs) { if (stdout.includes(macs[i].mac.toLowerCase())) { macs_found += macs[i].mac + ' '; setState(objPrefix + macs[i].id + objPostfixLastSeen, new Date().toString(),true); setState(objPrefix + macs[i].id + objPostfixIsHere, true, true); } else { var lastSeen = new Date(getState(objPrefix + macs[i].id + objPostfixLastSeen).val); lastSeen.setMinutes(lastSeen.getMinutes() + device_timeout) if (new Date() > lastSeen) { log('Device ' + macs[i].mac + ' went inactive', 'debug'); setState(objPrefix + macs[i].id + objPostfixIsHere, false, true); } } } if (macs_found) { log('MACS found: '+macs_found, 'debug'); } var nHere = 0; for (var i in macs) { if (getState(objPrefix + macs[i].id + objPostfixIsHere).val) { nHere++; } } setState(objPrefix + 'nHere', nHere, true); } else { log(err.message, 'error'); } }); }, arp_scan_interval); for (var i in macs) { const mac = macs[i]; on({ id: OBJ_JS_INSTANCE + objPrefix + mac.id + objPostfixIsHere, change: 'ne', val: true }, (obj) => { log('Devie ' + mac.mac + ' went active', 'debug'); // user func }); }
Sollte zugleich eine feature suggestion sein, um eine MAC-only-detection zu ermöglichen
-
Das sollte aber schon mit radar funktionieren da ja radar auch arp-scan verwendet!
Du musst ja nicht unbedingt etwas in die ip eintragen!Hab's gerade getestet und es funktioniert nur mit der mac-Adresse auch!
p.s.: Verwende ja auch das arp-scan...
p.s.:: das geht natürlich nur wenn die mac auf den Netz ist wo der adapter direkt zugriff hat, nicht in einem entfernten Netz über den Router.
-
@ChrisXY
Leider muss gerade DHCP auf broadcasts zugreifen die der interne router der docker-Anwendung eventuell nicht zulässt.Hab sowas schon bei einem Nutzer erlebt der pihole laufen gehabt hat...
-
habe aber iobroker als macvlan am laufen das sollte glaube ich klappen ?
ABER wenn in der Fritzbox es doch erkannt wird , kann man es nicht direkt von dort abgreifen ? -
@frankjoke
Ich hatte genau die selbe Frage auf GitHub gestellt und da hast du anders geantwortet
Nunja, es hat mit dem radar Adapter leider nicht funktioniert.. -
@ChrisXY
Das kannst vielleicht mit dem TR???-Adapter.Wenn auf der Kommandozeile (in dem v-lan) arp-scan geht dann sollte auch radar2 gehen, verwend ja auch nichts anderes.
-
@schreda
Ich weiß, habe nicht an arp-scan gedacht, aber es dann selbst ausprobiert und bei mir findet er einträge nur mit macs die arp-scan auch findet. -
Muss ich den arp-scan Installieren ? Will es nur zusätzlich nutzen neben der fritzbox und Ping als 3. erkennung DHCP .
Da ich Docker nutze will ich nichts im System groß machen -
@ChrisXY
Ich kenn mich bei Docker nicht so aus (verwende nur VM's auf meinem QNAP NAS da ich da auch andere Betriebssysteme verwenden kann).
Radar2 braucht arp-scan nur um mac-Adressen zu finden, wenn du das nicht brauchst kannst es weglassen.Aber ich würde so System-nahe Programme eher am Host system und nicht im container installieren, es sei denn der container kann nicht auf host-Programme zugreifen.
DHCP für IPv4 sind broadcasts auf Port 69 die der mittels dgram modul (von nodejs selbst) gelesen wird, dazu aber erweiterte Systemberechtigungen benötigt (wie auch arp-scan) welche mittels meinem Installationsscript für debian/Ubuntu erteilt werden. Ob diese dann auch in Containern gelten kann ich nicht sagen.
Bei den jetztigen linux-Versionen sind die Bewilligungen auch an das aktuelle Programm (z.B. node oder arp-scan) gebunden, wird dieses per apt(-get) upgedated muss sie neu erteilt werden (mein script neu aufrufen).
Das soll verhindern dass irgendwer das Programm austauscht und dann auf Befehle Zughreifen kann welche die Sicherheit gefährden können. -
Bei mir werden die G-Tags nur noch gefunden, wenn ich Noble aktiviere.
Das kann ich aber gar nicht gebrauchen, denn wenn ich den USB-Extender endlich mal installiert habe, schmiert Noble ab.
I2ping ist deaktiviert., hcitool lescan deaktiviert,
Ich habe auch gelesen, ein ! vor der MAC-Adresse zu setzen. hat auch nichts gebracht.Gruß,
Mathias -
@MathiasJ sagte in [Adapter] Neuer radar2-Adapter:
Bei Anwesenheit reagiert Radar2 ja sofort.
Damit soll verhindert werden, daß z.B. die Heizung hin- und herschaltet, wenn man doch anwesend ist und Radar2 einen Scan versemmelt hat.
bei Radar hat eine Abwesenheitskennung (bei mir zumindest) bis zu 10 Minuten gedauert. Da sind 2 Minuten ja richtig schnell. Bis die Anwesenheit erkannt wurde, mußte ich bis zu 30 Sekunden vor der Türe stehen, bis ich die Türe aufschließen konnte. da ist ja Anwesenheit sofort bei Radar2 ja richtig toll.Ich kann von dem alten Radar-Adapter sowas nicht vermelden. Die Geräte wurden beim nächsten Scan direkt als offline angezeigt. (so wie ich es gerne hätte) Da ist der jetzige Adapter bisher langsamer...
Das mit dem Verhindern, das die Heizung hin und her schaltet, wenn er mal falsch scannt, lässt sich ja ohne Probleme über ein Script abfangen.@frankjoke kann es sein, das Echo-Geräte irgendwie nicht sauber zu scannen sind? antworten die zu langsam oder gar nicht? Bei mir werden die fast immer als offline angezeigt, obwohl alle am laufen sind. Komischerweise aktualisieren sie sich oft, wenn ein anderes Gerät das Netzwerk betritt oder verlässt, aber nach kurzer Zeit sind sie wieder off..
P.S. Ich werd bei gelegenheit mal die 1.2 testen. Ob mir das mit der verkürzten Zeit schon reicht...
Was ich nicht so ganz verstehe: Du hattest geschrieben, das die Adapter-Logik mindestens 2 Scandurchgänge braucht... Im alten Adapter waren doch die Durchgänge einstellbar, ab wann ein Gerät als abwesend angezeigt wird. Und dort konnte man doch auch 0.. oder 1.. ich weiß es nicht mehr genau... einstellen und es lief auch... -
was vllt interessant wäre, ist jeder version einen anderen Namen zu geben.
Jetzt kann ich nicht mehr zurück von der 1.2.0 auf die 1.2.0
bei der letzten Version ging Radar mit hciscan, hier nur noch mit Noble. -
@smile sagte in [Adapter] Neuer radar2-Adapter:
@frankjoke Achso okay, sorry.
Habe iobroker auf einem Intel i5 mit Windows 10Pro, 16GB RAM. Node 8.15.1, npm 6.9.0Hier einmal der LOG wenn ich den Radar Adapter starte:
Danke für Deine Unterstützung.
Hi frankjoke, darf ich nochmal nachfragen ob dir der Log weitergeholfen hat?
Oder gibt es noch irgendetwas anderes was ich probieren kann um die Bluetooth Anwesenheit auf Windows zu realisieren? -
So, nun habe ich es auch geschafft und den Adapter kaputtgespielt.
Habe den Raspi komplett neu aufgesetzt, frisches OS usw.Habe auch die Schritte mit den zusätzlichen Installationen durchgeführt.
Aber:
host.raspi 2019-05-25 02:25:50.258 info Restart adapter system.adapter.radar2.1 because enabled host.raspi 2019-05-25 02:25:50.258 error instance system.adapter.radar2.1 terminated with code 0 (OK) Caught 2019-05-25 02:25:50.258 error by controller[0]: port: 67 } Caught 2019-05-25 02:25:50.258 error by controller[0]: address: '0.0.0.0', Caught 2019-05-25 02:25:50.258 error by controller[0]: syscall: 'bind', Caught 2019-05-25 02:25:50.257 error by controller[0]: code: 'EADDRINUSE', Caught 2019-05-25 02:25:50.257 error by controller[0]: errno: 'EADDRINUSE', Caught 2019-05-25 02:25:50.257 error by controller[0]: at process._tickCallback (internal/process/next_tick.js:181:9) Caught 2019-05-25 02:25:50.257 error by controller[0]: at _combinedTickCallback (internal/process/next_tick.js:142:11) Caught 2019-05-25 02:25:50.257 error by controller[0]: at _handle.lookup (dgram.js:266:18) Caught 2019-05-25 02:25:50.256 error by controller[0]: { Error: bind EADDRINUSE 0.0.0.0:67 radar2.1 2019-05-25 02:25:50.115 warn Adapter will exit in latest 1 sec with code false! radar2.1 2019-05-25 02:25:50.108 info Adapter disconnected and stopped with dostop(false) and callback(true) radar2.1 2019-05-25 02:25:50.106 error at process._tickCallback (internal/process/next_tick.js:181:9) radar2.1 2019-05-25 02:25:50.106 error at _combinedTickCallback (internal/process/next_tick.js:142:11) radar2.1 2019-05-25 02:25:50.106 error at _handle.lookup (dgram.js:266:18) radar2.1 2019-05-25 02:25:50.106 error Error: bind EADDRINUSE 0.0.0.0:67 radar2.1 2019-05-25 02:25:50.105 error uncaught exception: bind EADDRINUSE 0.0.0.0:67 radar2.1 2019-05-25 02:25:50.074 info radar2 set to scan every 20 seconds and printers every 720 minutes. radar2.1 2019-05-25 02:25:50.074 info arp-scan will use the following interfaces: [ 'eth0', 'wlan0' ] radar2.1 2019-05-25 02:25:50.072 info use known IP list: [ '192.168.1.xxx radar2.1 2019-05-25 02:25:50.070 info use known BT list: [] radar2.1 2019-05-25 02:25:50.068 info radar2 set to flag items away if they are not seen for 1 minutes radar2.1 2019-05-25 02:25:50.055 info net-ping not available! Will try to use normal ping! radar2.1 2019-05-25 02:25:50.022 info found and will use '@abandonware/noble' radar2.1 2019-05-25 02:25:49.678 info found and will use 'node-bluetooth scan' radar2.1 2019-05-25 02:25:49.652 info radar2 initialization started... radar2.1 2019-05-25 02:25:49.474 info starting. Version 1.2.0 in /opt/iobroker/node_modules/iobroker.radar2, node: v8.16.0 host.raspi 2019-05-25 02:25:47.835 info instance system.adapter.radar2.1 started with pid 13802
Das Spannende ist: eigentlich soll er gar keinen ARP Scan auf ETH0 durchführen, sondern bestenfalls auf wlan0, da der DNS Server nur auf eth0 lauscht. Dafür habe ich ihm im Parameterfeld für arp-scan folgende Parameter mitgegeben:
-vN -I wlan0 192.168.179.0/24
-> scheint ihn nicht sonderlich zu interessieren.Hat jemand einen Tipp? Gern würde ich den ARP Scan sonst komplett abschalten..
-
@ChristianF
Hast wirklich die Liste der Befehle hier im Install Spoiler ausgeführt?Der Rechner hat keine Rechte für das Bind auf DHCP, auch arp-scan braucht Rechte.
Und noch was, hast eventuell 'ne alte Instanz laufen? mach mal
sudo pkill -f io.radar2.0
-
Noble braucht spezielle BT-Treiber glaub ich für Windows und auch spezielle build-tools. Schau mal auf https://github.com/noble/noble#readme
Ich kann nur auf https://github.com/jasongin/noble-uwp verweisen, das hab ich selbst gerade gefunden und noch nicht ausprobiert.
Wenn das unter Windows funktioniert kann ich mal testen ob ich beide noble einbauen kann und je nach OS das eine oder andere verwende, wird aber dauern bis ich das testen kann, muss mir eine Windows vm bauen wo ich iobroker drauf gib und dann alles wie in obigen links beschrieben mal installiere...
-
@MathiasJ
Wie meinst du das, du hast jetzt nur 2 flags getrennt! Wie schaut dein log aus wenn du auf hciscan schaltest ? -
@frankjoke
so, jetzt bin ih schlauer.
BLE scan wird gar nicht durchgeführt.
Die BT-Adresse des Handies wird gefunden, die G-Tags nicht.LOG HERUNTERLADENLog-Größe: 0.00 MB close Zeit Meldung radar2.0 2019-05-26 08:35:09.018 info debug: ChangeState ack:true of Mathias-Handy._lastHere = 2019-05-26@08:35:08 radar2.0 2019-05-26 08:35:08.997 info debug: arp-scan -lgq --retry=4 --timeout=400 --interface=eth0 executed for 3.944 seconds and returned 26 hosts. radar2.0 2019-05-26 08:35:08.965 info debug: arp-scan -lgq --retry=4 --timeout=400 --interface=eth0 executed for 3.920 seconds and returned 26 hosts. radar2.0 2019-05-26 08:35:05.204 info debug: started #29 hcitool -i hci0 lescan --duplicates radar2.0 2019-05-26 08:35:05.166 info debug: started #28 hciconfig hci0 up radar2.0 2019-05-26 08:35:05.050 info debug: radar2 found uIP's: [] radar2.0 2019-05-26 08:35:05.048 info debug: started #27 hciconfig hci0 down radar2.0 2019-05-26 08:34:56.180 info debug: ChangeState ack:true of _uIPs = [ '192.168.1.1','192.168.1.10','192.168.1.100','192.168.1.101','192.168.1.102','192.168.1.11','192.168.1.12','192.168.1.13','192.168.1.14','192.168.1.199','192.1 radar2.0 2019-05-26 08:34:56.171 info debug: radar2 found uBT's: [ '94:87:e0:a2:16:1e' ] radar2.0 2019-05-26 08:34:56.170 info debug: and not here (Familie, Mathias, Mieter) radar2.0 2019-05-26 08:34:56.170 info debug: and who here (Mathias-Handy) radar2.0 2019-05-26 08:34:56.170 info debug: radar2 found here (Mathias-Handy) radar2.0 2019-05-26 08:34:48.995 info debug: ChangeState ack:true of Mathias-Handy._lastHere = 2019-05-26@08:34:48 radar2.0 2019-05-26 08:34:48.982 info debug: arp-scan -lgq --retry=4 --timeout=400 --interface=eth0 executed for 3.965 seconds and returned 26 hosts. radar2.0 2019-05-26 08:34:48.949 info debug: arp-scan -lgq --retry=4 --timeout=400 --interface=eth0 executed for 3.955 seconds and returned 26 hosts. radar2.0 2019-05-26 08:34:45.162 info debug: started #26 hcitool -i hci0 lescan --duplicates radar2.0 2019-05-26 08:34:45.127 info debug: started #25 hciconfig hci0 up radar2.0 2019-05-26 08:34:45.006 info debug: radar2 found uIP's: [] radar2.0 2019-05-26 08:34:45.005 info debug: started #24 hciconfig hci0 down radar2.0 2019-05-26 08:34:35.755 info debug: ChangeState ack:true of _uIPs = [ '192.168.1.1','192.168.1.10','192.168.1.100','192.168.1.101','192.168.1.102','192.168.1.11','192.168.1.12','192.168.1.13','192.168.1.14','192.168.1.2','192.168 radar2.0 2019-05-26 08:34:35.747 info debug: radar2 found uBT's: [ '94:87:e0:a2:16:1e' ] radar2.0 2019-05-26 08:34:35.747 info debug: and not here (Familie, Mathias, Mieter) radar2.0 2019-05-26 08:34:35.747 info debug: and who here (Mathias-Handy) radar2.0 2019-05-26 08:34:35.746 info debug: radar2 found here (Mathias-Handy) radar2.0 2019-05-26 08:34:28.900 info debug: ChangeState ack:true of Mathias-Handy._lastHere = 2019-05-26@08:34:28 radar2.0 2019-05-26 08:34:28.890 info debug: arp-scan -lgq --retry=4 --timeout=400 --interface=eth0 executed for 3.951 seconds and returned 24 hosts. radar2.0 2019-05-26 08:34:28.877 info debug: arp-scan -lgq --retry=4 --timeout=400 --interface=eth0 executed for 3.942 seconds and returned 24 hosts. radar2.0 2019-05-26 08:34:25.098 info debug: started #23 hcitool -i hci0 lescan --duplicates radar2.0 2019-05-26 08:34:25.057 info debug: started #22 hciconfig hci0 up radar2.0 2019-05-26 08:34:24.939 info debug: radar2 found uIP's: [] radar2.0 2019-05-26 08:34:24.938 info debug: started #21 hciconfig hci0 down radar2.0 2019-05-26 08:34:16.511 info debug: radar2 found uBT's: [ '94:87:e0:a2:16:1e' ] radar2.0 2019-05-26 08:34:16.511 info debug: and not here (Familie, Mathias, Mieter) radar2.0 2019-05-26 08:34:16.511 info debug: and who here (Mathias-Handy) radar2.0 2019-05-26 08:34:16.510 info debug: radar2 found here (Mathias-Handy) radar2.0 2019-05-26 08:34:08.903 info debug: ChangeState ack:true of Mathias-Handy._lastHere = 2019-05-26@08:34:08 radar2.0 2019-05-26 08:34:08.877 info debug: arp-scan -lgq --retry=4 --timeout=400 --interface=eth0 executed for 3.964 seconds and returned 26 hosts. radar2.0 2019-05-26 08:34:08.840 info debug: arp-scan -lgq --retry=4 --timeout=400 --interface=eth0 executed for 3.942 seconds and returned 26 hosts. radar2.0 2019-05-26 08:34:05.047 info debug: started #20 hcitool -i hci0 lescan --duplicates radar2.0 2019-05-26 08:34:05.011 info debug: started #19 hciconfig hci0 up radar2.0 2019-05-26 08:34:04.896 info debug: radar2 found uIP's: [] radar2.0 2019-05-26 08:34:04.895 info debug: started #18 hciconfig hci0 down radar2.0 2019-05-26 08:33:56.065 info debug: ChangeState ack:true of _uIPs = [ '192.168.1.1','192.168.1.10','192.168.1.100','192.168.1.101','192.168.1.102','192.168.1.11','192.168.1.12','192.168.1.13','192.168.1.14','192.168.1.199','192.1 radar2.0 2019-05-26 08:33:56.055 info debug: radar2 found uBT's: [ '94:87:e0:a2:16:1e' ] radar2.0 2019-05-26 08:33:56.055 info debug: and not here (Familie, Mathias, Mieter) radar2.0 2019-05-26 08:33:56.055 info debug: and who here (Mathias-Handy) radar2.0 2019-05-26 08:33:56.054 info debug: radar2 found here (Mathias-Handy) radar2.0 2019-05-26 08:33:48.799 info debug: ChangeState ack:true of Mathias-Handy._lastHere = 2019-05-26@08:33:48 radar2.0 2019-05-26 08:33:48.780 info debug: arp-scan -lgq --retry=4 --timeout=400 --interface=eth0 executed for 3.938 seconds and returned 26 hosts. radar2.0 2019-05-26 08:33:48.767 info debug: arp-scan -lgq --retry=4 --timeout=400 --interface=eth0 executed for 3.945 seconds and returned 26 hosts. radar2.0 2019-05-26 08:33:44.990 info debug: started #17 hcitool -i hci0 lescan --duplicates radar2.0 2019-05-26 08:33:44.953 info debug: started #16 hciconfig hci0 up radar2.0 2019-05-26 08:33:44.838 info debug: radar2 found uIP's: [] radar2.0 2019-05-26 08:33:44.836 info debug: started #15 hciconfig hci0 down
das Handy wird per arp-scan getrickert.
laut Log könnte ich es aber auch via Bluetooth einbinden.
ich vermute, BT geht, BLE nicht.
Gruß,
Mathias -
@frankjoke
Ich hatte die Befehle ausgeführt die auf der Git Seite standen. Habe nun nochmal alle von hier oben aus dem Spoiler nachgezogen, ändert aber nichts. Ein DHCP/DNS Server (in meinem Falle PiHole) und Radar auf einem Rechner scheinen sich nicht zu vertragen (beanspruchen halt beide Port 67) . Schade, damit muss ich dann zurück zum BLE AdapterDas Fehlerlog sieht übrigens immernoch genauso aus:
host.raspi 2019-05-26 19:07:18.667 info Restart adapter system.adapter.radar2.1 because enabled host.raspi 2019-05-26 19:07:18.667 error instance system.adapter.radar2.1 terminated with code 0 (OK) host.raspi 2019-05-26 19:07:18.667 error Caught by controller[0]: port: 67 } host.raspi 2019-05-26 19:07:18.667 error Caught by controller[0]: address: '0.0.0.0', host.raspi 2019-05-26 19:07:18.667 error Caught by controller[0]: syscall: 'bind', host.raspi 2019-05-26 19:07:18.667 error Caught by controller[0]: code: 'EADDRINUSE', host.raspi 2019-05-26 19:07:18.667 error Caught by controller[0]: errno: 'EADDRINUSE', host.raspi 2019-05-26 19:07:18.666 error Caught by controller[0]: at process._tickCallback (internal/process/next_tick.js:181:9) host.raspi 2019-05-26 19:07:18.666 error Caught by controller[0]: at _combinedTickCallback (internal/process/next_tick.js:142:11) host.raspi 2019-05-26 19:07:18.666 error Caught by controller[0]: at _handle.lookup (dgram.js:266:18) host.raspi 2019-05-26 19:07:18.666 error Caught by controller[0]: { Error: bind EADDRINUSE 0.0.0.0:67 host.raspi 2019-05-26 19:07:15.999 info instance system.adapter.radar2.1 started with pid 10994 host.raspi 2019-05-26 19:07:15.986 info "system.adapter.radar2.1" enabled
Gibt es vielleicht irgendeinen Weg, wie man dem Adapter sagen kann, dass er ARP, DHCP usw. weglassen soll, sondern sich nur auf BT konzentrieren soll?