NEWS
Pi 3 als Bluetooth LE Scanner (Beispielscript)
-
Interessantes Skript, würde sich auch als Adapter gut machen (ähnlich dem Ping Adapter).
Die Entfernung bei Beacons muss im Beacon kalibriert werden:
zu erst sendet man mit dem Beacon die Bluetooth advertising packets und guckt mit einem Empfänger wie stark der Empfang in einem Meter Entfernung ist. Diesen Wert trägt man dann wiederum im Beacon ein, das den Wert dann glaube ich in den advertising packets mitsendet. Der Empfänger kann dann mit dem aktuellen Empfangswert und dem bekannten Wert bei einem Meter Entfernung seine eigene Distanz berechnen.
Bei dem Skript müsste man das dann eher umgekehrt machen, also im Skript pro Gerät die Empfangsstärke bei einer gewissen Entfernung eingeben und danach die aktuelle Distanz berechnen.
Ohne die Formel studiert zu haben denke ich, dass es die Variable txPower ist, welche man pro Gerät justieren müsste. `
Danke für die Erläuterung und die Anregung!
Die Möglichkeit zur Kalibrierung der einzelnen Geräte, sowie die Optimierung der Distanzbrechung ist im Skript nun eingebaut.
-
Hallo ruhr,
vielen Dank für das script.
Ich habe es nach Anleitung installiert, bekomme aber leider relativ schnell eine exception:
! ````
host-Raspi31 2016-03-29 16:58:24 info Restart adapter system.adapter.javascript.1 because enabled
host-Raspi31 2016-03-29 16:58:24 error instance system.adapter.javascript.1 terminated with code 6 (uncaught exception)
SyntaxError: 2016-03-29 16:58:24 error at Timer.listOnTimeout (timers.js:92:15)
SyntaxError: 2016-03-29 16:58:24 error at ontimeout [as _onTimeout] (timers.js:209:34)
SyntaxError: 2016-03-29 16:58:24 error at null. (/root/node_modules/iobroker.javascript/javascript.js:1720:44)
SyntaxError: 2016-03-29 16:58:24 error at Object.stopScan (script.js.Test.Bluetooth_Scanner:943:67)
SyntaxError: 2016-03-29 16:58:24 error at Object.parse (native)
SyntaxError: 2016-03-29 16:58:24 error Unexpected end of input
uncaught 2016-03-29 16:58:24 error exception: Unexpected end of input
javascript-1 2016-03-29 16:58:24 info script.js.Test.Bluetooth_Scanner: debug0: Bluetooth Scan 1 OK. Devices gescannt: 0, davon neu: 0 / Devices in DB: 0, davon nicht erreichbar: 0
history-0 2016-03-29 16:58:17 info sendTo "getHistory" to system.adapter.web.0 from system.adapter.history.0: {"result":[{"ts":1459263355,"val":null}],"step":300,"error":null}
web-0 2016-03-29 16:58:17 info sendTo "getHistory" to system.adapter.history.0 from system.adapter.web.0: {"id":"hm-rpc.0.GEQ0015983.1.TEMPERATURE","options":{"start":1459263205,"end":1459263505,"ignoreNull":false,"aggregate":"ave
javascript-1 2016-03-29 16:58:14 info script.js.Test.Bluetooth_Scanner: debug1: ####### start scanning - Durchlauf (1) #######
javascript-1 2016-03-29 16:58:14 info script.js.Test.Bluetooth_Scanner: debug2: Kommando Bluetooth Scanner an: true
javascript-1 2016-03-29 16:58:13 info script.js.Test.Bluetooth_Scanner: registered 0 subscriptions and 0 schedules
javascript-1 2016-03-29 16:58:13 info script.js.Test.Bluetooth_Scanner: debug1: dpAnlegen() - Datenpunkte angelegt (createState) in javascript.1.Bluetooth.
javascript-1 2016-03-29 16:58:13 info script.js.Test.Bluetooth_Scanner: debug1: Vars, Loglevel und Scriptname gesetzt
javascript-1 2016-03-29 16:58:13 info script.js.Test.Bluetooth_Scanner: --== script.js.Test.Bluetooth_Scanner ==-- gestartet. Instanz: "javascript.1.", Loglevel: debug2
javascript-1 2016-03-29 16:58:13 info Start javascript script.js.Test.Bluetooth_ScannerHast Du eine Idee woran das liegen könnte? Danbke und Gruß,
-
Ich habe es nach Anleitung installiert, bekomme aber leider relativ schnell eine exception:
[…]
Hast Du eine Idee woran das liegen könnte?
Danbke und Gruß, `
Danke erst einmal fürs Testen!
Was mir auffällt, dass nach dem ersten Durchlauf kein Gerät gefunden wurde. Ich schau mal, ob ich mit der Situation (0 Geräte) noch einen Fehler drin habe.
Hab die Situation bei mir nicht. Bei mir werden im ersten Durchlauf schon immer mind. 6 Geräte gefunden. Deswegen bin ich für jeden Test dankbar!
-
Hallo ruhr,
vielen Dank für das script.
Ich habe es nach Anleitung installiert, bekomme aber leider relativ schnell eine exception:
! ````
host-Raspi31 2016-03-29 16:58:24 info Restart adapter system.adapter.javascript.1 because enabled
host-Raspi31 2016-03-29 16:58:24 error instance system.adapter.javascript.1 terminated with code 6 (uncaught exception)
SyntaxError: 2016-03-29 16:58:24 error at Timer.listOnTimeout (timers.js:92:15)
SyntaxError: 2016-03-29 16:58:24 error at ontimeout [as _onTimeout] (timers.js:209:34)
SyntaxError: 2016-03-29 16:58:24 error at null. (/root/node_modules/iobroker.javascript/javascript.js:1720:44)
SyntaxError: 2016-03-29 16:58:24 error at Object.stopScan (script.js.Test.Bluetooth_Scanner:943:67)
SyntaxError: 2016-03-29 16:58:24 error at Object.parse (native)
SyntaxError: 2016-03-29 16:58:24 error Unexpected end of input
uncaught 2016-03-29 16:58:24 error exception: Unexpected end of input
javascript-1 2016-03-29 16:58:24 info script.js.Test.Bluetooth_Scanner: debug0: Bluetooth Scan 1 OK. Devices gescannt: 0, davon neu: 0 / Devices in DB: 0, davon nicht erreichbar: 0
history-0 2016-03-29 16:58:17 info sendTo "getHistory" to system.adapter.web.0 from system.adapter.history.0: {"result":[{"ts":1459263355,"val":null}],"step":300,"error":null}
web-0 2016-03-29 16:58:17 info sendTo "getHistory" to system.adapter.history.0 from system.adapter.web.0: {"id":"hm-rpc.0.GEQ0015983.1.TEMPERATURE","options":{"start":1459263205,"end":1459263505,"ignoreNull":false,"aggregate":"ave
javascript-1 2016-03-29 16:58:14 info script.js.Test.Bluetooth_Scanner: debug1: ####### start scanning - Durchlauf (1) #######
javascript-1 2016-03-29 16:58:14 info script.js.Test.Bluetooth_Scanner: debug2: Kommando Bluetooth Scanner an: true
javascript-1 2016-03-29 16:58:13 info script.js.Test.Bluetooth_Scanner: registered 0 subscriptions and 0 schedules
javascript-1 2016-03-29 16:58:13 info script.js.Test.Bluetooth_Scanner: debug1: dpAnlegen() - Datenpunkte angelegt (createState) in javascript.1.Bluetooth.
javascript-1 2016-03-29 16:58:13 info script.js.Test.Bluetooth_Scanner: debug1: Vars, Loglevel und Scriptname gesetzt
javascript-1 2016-03-29 16:58:13 info script.js.Test.Bluetooth_Scanner: --== script.js.Test.Bluetooth_Scanner ==-- gestartet. Instanz: "javascript.1.", Loglevel: debug2
javascript-1 2016-03-29 16:58:13 info Start javascript script.js.Test.Bluetooth_ScannerHast Du eine Idee woran das liegen könnte? Danbke und Gruß, `
Kannst Du bitte die neue Version im Post Nr. 3 http://forum.iobroker.net/viewtopic.php … 513#p22234 ausprobieren.
Ich hab es recht schwer die Situation mit 0 gefundenen Devices nachzustellen
-
Hi,
ich habe die neue version ausprobiert.
Die Exception ist leider noch da, hier das Ergebnis:
! ````
Raspi31 2016-03-30 20:08:05 info host.Raspi31 Restart adapter system.adapter.javascript.0 because enabled
Raspi31 2016-03-30 20:08:05 error host.Raspi31 instance system.adapter.javascript.0 terminated with code 6 (uncaught exception)
Raspi31 2016-03-30 20:08:05 info host.Raspi31 Restart adapter system.adapter.javascript.0 because enabled
Raspi31 2016-03-30 20:08:05 error host.Raspi31 instance system.adapter.javascript.0 terminated with code 6 (uncaught exception)
javascript.0 2016-03-30 20:08:05 error SyntaxError: Unexpected end of input at Object.parse (native) at Object.stopScan (script.js.Test.Bluetooth_Scanner:982:67) at null. (/root/node_modules/iobroker.javascript/javas
javascript.0 2016-03-30 20:08:05 error uncaught exception: Unexpected end of input
javascript.0 2016-03-30 20:08:05 info javascript.0 script.js.Test.Bluetooth_Scanner: debug1: Bluetooth Scan 1 OK. Devices gescannt: 0, davon neu: 0 / Devices in DB: 0, davon nicht erreichbar: 0
javascript-0 2016-03-30 20:07:55 info script.js.Test.Bluetooth_Scanner: debug1: ####### start scanning - Durchlauf (1) #######
javascript-0 2016-03-30 20:07:54 info script.js.Test.Bluetooth_Scanner: registered 0 subscriptions and 0 schedules
javascript-0 2016-03-30 20:07:54 info script.js.Test.Bluetooth_Scanner: debug1: Vars, Loglevel und Scriptname gesetzt
javascript-0 2016-03-30 20:07:54 info script.js.Test.Bluetooth_Scanner: --== script.js.Test.Bluetooth_Scanner ==-- gestartet. Instanz: "javascript.0.", Loglevel: debug1
javascript-0 2016-03-30 20:07:53 info Start javascript script.js.Test.Bluetooth_Scanner -
Hi,
ich habe die neue version ausprobiert.
Die Exception ist leider noch da, hier das Ergebnis: `
Danke Stmiko!
Danke Deiner Infos konnte ich den Fehler nachvollziehen. Er sollte nun raus sein (neue Version).
-
> Danke Deiner Infos konnte ich den Fehler nachvollziehen. Er sollte nun raus sein (neue Version).
Super….läuft und keine exception mehr.Vielen Dank und Gruß
-
Super Script! ideal für den Raspberry 3!
Werde ich auch mal versuchen bei Gelegenheit. Überlege noch, für was. Im Prinzip kann man damit ja auch auch einen Diebstahlschutz (oder besser: -anzeige) verwirklichen. So ein LE-Bluetooth Funkfeuer (billiges Mi-Band) ins Auto legen oder irgendwie am Fahrrad unterm Sattel versteckt befestigen, und wenn das Signal weg ist, man selbst aber da ist, dann Auto = geklaut (oder so ähnlich) und Alarm wird ausgelöst.
Das System hätte den Vorteil, dass auch die bei Diebstählen üblicherweise genutzten Jammer (Geräte, die sämtliche mobile Daten, wie WLAN, Bluetooth, GSM-Netz, GPS) stören, damit das geklaute Auto sich nicht melden kann. Wenn der Diebstahl aber andersherum registriert wird… Muss ich mal checken, wie stabil sowas laufen würde. Es ist halt leider nur zu spät, weil dann das Objekt schon wegbewegt worden ist...
PS:der Apple TV 4 sendet auch ein Funkdauerfeuer aus. Warum auch immer :evil: Wegen der Fernbedienung vermutlich.
PPS: Du hast am Anfang des Threads auch erwähnt, dass du einen 2. Raspi benutzt. Also zumindest 2 Instanzen von iobroker nutzt.
Benutzt du den Multihostmodus dafür? http://www.iobroker.net/docu/?page_id=3068&lang=de
Wie sind da die Erfahrungen? Wie läuft es praktisch? Läuft der Master weiter wenn ein Slave ausfällt?
Wegen der Aufteilung der Rechenleistung macht es eher wenig Sinn, oder? So viel fällt ja nicht an, höchstens wenn man den vis-Webserver auslagern will weil so viele gleichzeitig darauf zugreifen wollen. Sinnvoll ist das nur, wenn man auf die Hardwareanschlüsse des 2. Slaves zugreifen will?
Mein 1. Raspi 3 läuft nämlich noch als NAS und Plexserver. Ich suche gerade einen grund, dort iobroker als Slave zu installieren :lol:
-
Super Script! ideal für den Raspberry 3!
Werde ich auch mal versuchen bei Gelegenheit. Überlege noch, für was. Im Prinzip kann man damit ja auch auch einen Diebstahlschutz (oder besser: -anzeige) verwirklichen. So ein LE-Bluetooth Funkfeuer (billiges Mi-Band) ins Auto legen oder irgendwie am Fahrrad unterm Sattel versteckt befestigen, und wenn das Signal weg ist, man selbst aber da ist, dann Auto = geklaut (oder so ähnlich) und Alarm wird ausgelöst. `
Dann müsste das Auto oder das Fahrrad in der Nähe von Deinem Rechner mit Bluetooth stehen
Für die Anwesenheitserkennung daheim kannst Du es gut verwenden.
Oder aus Neugier, was so alles in der Gegend funkt.
Warte aber noch etwas. Ich arbeite immer zwischendurch mal dran und bald kommt die Version 1.0.0.
Zerotouch.Skript… in der Theorie soll das dann funktionieren, ohne dass Du das Skript anfassen musst. Macht es jetzt in der nicht veröffentlichten Version schon. Ich will nur noch einbauen, dass man über die Objekte auch Geräte löschen und auf Blacklist setzen kann.
Das System hätte den Vorteil, dass auch die bei Diebstählen üblicherweise genutzten Jammer (Geräte, die sämtliche mobile Daten, wie WLAN, Bluetooth, GSM-Netz, GPS) stören, damit das geklaute Auto sich nicht melden kann. Wenn der Diebstahl aber andersherum registriert wird… Muss ich mal checken, wie stabil sowas laufen würde. Es ist halt leider nur zu spät, weil dann das Objekt schon wegbewegt worden ist... `
Wie gesagt. Das Bluetooth-SIgnal müsste dann vom Auto aus Deinen Rechner erreichen.
Was ich mache… ich habe ein Beacon im Auto liegen und nutze dies zur Anwesenheitserkennung im Auto über Geofency und ioBroker.
PS:der Apple TV 4 sendet auch ein Funkdauerfeuer aus. Warum auch immer :evil: Wegen der Fernbedienung vermutlich. `
Apple erzeugt recht viel BLE-Funkmüll. Ich habe viele Apple Geräte im Einsatz und das bei mir so konfiguriert, dass alles unbrauchbare rausgefiltert wird. In der Verion 1 des Skripts muss man sich darum auch nicht kümmern.
PPS: Du hast am Anfang des Threads auch erwähnt, dass du einen 2. Raspi benutzt. Also zumindest 2 Instanzen von iobroker nutzt.
Benutzt du den Multihostmodus dafür? http://www.iobroker.net/docu/?page_id=3068&lang=de
Wie sind da die Erfahrungen? Wie läuft es praktisch? Läuft der Master weiter wenn ein Slave ausfällt?
Wegen der Aufteilung der Rechenleistung macht es eher wenig Sinn, oder? So viel fällt ja nicht an, höchstens wenn man den vis-Webserver auslagern will weil so viele gleichzeitig darauf zugreifen wollen. Sinnvoll ist das nur, wenn man auf die Hardwareanschlüsse des 2. Slaves zugreifen will?
Mein 1. Raspi 3 läuft nämlich noch als NAS und Plexserver. Ich suche gerade einen grund, dort iobroker als Slave zu installieren :lol: `
Momentan steht der Pi standalone zur Entwicklung (BLE Adapter und Beacon). Mein Produktivsystem läuft direkt auf einen iMac. Und mein altes Produktivsystem unter Debian auf einer VM.
Ich möchte den Pi als Satellit nutzen, mit dem BLE Scanner einem Beacon, einem Beacon Scanner und Z-Wave über USB-Stick.
GGf. sogar mehrer Pi3 als BLE Scanner.
Dann will ich sie als Slave einbinden und kann Deine Fragen beantworten. Derzeit leider noch nicht
-
Danke für den Tipp mit den Beacons, jetzt weiß ich endlich was das ist. Nichts essbares also :lol:
Vielleicht besorge ich mir auch mal eins.
Also mein Hauptraspi wäre definitiv zu weit weg vom Auto. Ca. 30 m + Wände. Aber selbst wenn ich im Garten hinten bin, ist das alles viel zu weit weg.
Allerdings könnte ich im Carport ein solchen Slave-Raspi 3 hinstellen, der könnte dann auch gleich horchen ob ich mit dem Auto komme und das Licht einschalten (und das elektrische Tor öffnen?).
Vielleicht koppele ich den Diebstahlschutz das nicht mit meiner Anwesenheit, sondern mit der des Autoschlüssels (der einen eigenen Minibeacon bekommt).
Ich warte aber jetzt noch auf Deine Version 1! In dieser Zeit beschäftige ich mich mal mit Beacons und welche geeignet wären. Die sind ja sauteuer, wenn ich das richtig sehe, ab 35 €. Also nix mit alles per Becons versehen (Rasenmäher, Schubkarre, Kabeltrommelende :lol: ) Vielleicht ist da ein 12 € Miband zum spielen erstmal doch besser, da liegt noch eins herum bei mir.
Ich sehe - es wird alles sehr interessant. Habe nur Angst, dass man sich einen Haufen Technikschrott anhäuft. Niemand anderes findet sich damit zurecht und wartungsarm ist es nunmal auch nicht. Deshalb ist mein Konzept auch immer "aufbauend" auf bewährte Sachen, die Homeautomatisationssteuerungen sind dann nur optional oben drauf.
-
Anbei die letzte Version des Skripts. Durch die Neuinstallation meine Produktivumgebung hab ich jetzt nicht ganz alles realisiert, was noch rein sollte.
Es ist für ein Skript aber auch schon ein wenig lang geworden. Größer, als das man es in einem Beitrag rein kopieren kann
Das Skript zum Download:
Es sollte komplett ohne Eingriff funktionieren. Wenn man mag, kann man dann noch die eigenen Geräte, die gefunden wurden, im Skript mit einem Namen versehen.
Screenshot:
-
Hallo ruhr70,
Danke für das Riesenskript!
Habe das Skript heute installiert: Mac mini mit El Capitan, xcode vorhanden. Zuerst wollte es nicht, aber dann habe ich Bluetooth über die Menüzeile einmal aus und wieder eingeschaltet. Der Scan wurde sofort erledigt.
Habe dann erstmal meinen Haushalt nach BT-Geräten durchsucht :lol: Ergebnis:
-
Pulse H7 Pulsmesser: funktioniert super
-
Withings Activitee Pop: bisher keine Reaktion
-
iPhone 5s/6s: bisher keine Reaktion
-
iMac im Nebenraum: nach dem einfachen Öffnen der Systemeinstellungen sichtbar, allerdings falsche Entfernungsangabe (6.12m, tatsächlich ca. 2m). Das ist aber egal, da Scanner und iMac ja stationär.
Manchmal allerdings kommt noch eine Fehlermeldung:
! ````
2016-05-01 17:12:04.128 - error: message javascript.2.Bluetooth.Control_ScanOn [object Object] Could not start scanning, state is unknown (not poweredOn)
2016-05-01 17:12:04.135 - error: Error: Could not start scanning, state is unknown (not poweredOn)
at Noble.startScanning (/Users/pix/Documents/iobroker/node_modules/iobroker.javascript/node_modules/noble/lib/noble.js:71:17)
at startScan (script.js.Test.BluetoothScanner:1684:11)
at Object. <anonymous>(script.js.Test.BluetoothScanner:2061:13)
at Object.subs.callback (/Users/pix/Documents/iobroker/node_modules/iobroker.javascript/javascript.js:1206:48)
at /Users/pix/Documents/iobroker/node_modules/iobroker.javascript/javascript.js:541:48
at getObjectEnums (/Users/pix/Documents/iobroker/node_modules/iobroker.javascript/javascript.js:2455:45)
at checkPatterns (/Users/pix/Documents/iobroker/node_modules/iobroker.javascript/javascript.js:537:17)
at Object.utils.adapter.stateChange (/Users/pix/Documents/iobroker/node_modules/iobroker.javascript/javascript.js:215:17)
at Object.that.states.States.change (/Users/pix/Documents/iobroker/node_modules/iobroker.js-controller/lib/adapter.js:1942:80)
at Socket. <anonymous>(/Users/pix/Documents/iobroker/node_modules/iobroker.js-controller/lib/states/statesInMemClient.js:45:30)
at Socket.Emitter.emit (/Users/pix/Documents/iobroker/node_modules/iobroker.js-controller/node_modules/socket.io-client/node_modules/component-emitter/index.js:134:20)
at Socket.onevent (/Users/pix/Documents/iobroker/node_modules/iobroker.js-controller/node_modules/socket.io-client/lib/socket.js:254:10)
at Socket.onpacket (/Users/pix/Documents/iobroker/node_modules/iobroker.js-controller/node_modules/socket.io-client/lib/socket.js:212:12)
at Manager. <anonymous>(/Users/pix/Documents/iobroker/node_modules/iobroker.js-controller/node_modules/socket.io-client/node_modules/component-bind/index.js:21:15)
at Manager.Emitter.emit (/Users/pix/Documents/iobroker/node_modules/iobroker.js-controller/node_modules/socket.io-client/node_modules/component-emitter/index.js:134:20)
at Manager.ondecoded (/Users/pix/Documents/iobroker/node_modules/iobroker.js-controller/node_modules/socket.io-client/lib/manager.js:301:8)
at Decoder. <anonymous>(/Users/pix/Documents/iobroker/node_modules/iobroker.js-controller/node_modules/socket.io-client/node_modules/component-bind/index.js:21:15)
at Decoder.Emitter.emit (/Users/pix/Documents/iobroker/node_modules/iobroker.js-controller/node_modules/socket.io-client/node_modules/component-emitter/index.js:134:20)
at Decoder.add (/Users/pix/Documents/iobroker/node_modules/iobroker.js-controller/node_modules/socket.io-client/node_modules/socket.io-parser/index.js:247:12)
at Manager.ondata (/Users/pix/Documents/iobroker/node_modules/iobroker.js-controller/node_modules/socket.io-client/lib/manager.js:291:16)
at Socket. <anonymous>(/Users/pix/Documents/iobroker/node_modules/iobroker.js-controller/node_modules/socket.io-client/node_modules/component-bind/index.js:21:15)
at Socket.Emitter.emit (/Users/pix/Documents/iobroker/node_modules/iobroker.js-controller/node_modules/socket.io-client/node_modules/component-emitter/index.js:134:20)
at Socket.onPacket (/Users/pix/Documents/iobroker/node_modules/iobroker.js-controller/node_modules/socket.io-client/node_modules/engine.io-client/lib/socket.js:430:14)
at WS. <anonymous>(/Users/pix/Documents/iobroker/node_modules/iobroker.js-controller/node_modules/socket.io-client/node_modules/engine.io-client/lib/socket.js:248:10)
at WS.Emitter.emit (/Users/pix/Documents/iobroker/node_modules/iobroker.js-controller/node_modules/socket.io-client/node_modules/component-emitter/index.js:134:20)
at WS.Transport.onPacket (/Users/pix/Documents/iobroker/node_modules/iobroker.js-controller/node_modules/socket.io-client/node_modules/engine.io-client/lib/transport.js:147:8)
at WS.Transport.onData (/Users/pix/Documents/iobroker/node_modules/iobroker.js-controller/node_modules/socket.io-client/node_modules/engine.io-client/lib/transport.js:139:8)
at WebSocket.ws.onmessage (/Users/pix/Documents/iobroker/node_modules/iobroker.js-controller/node_modules/socket.io-client/node_modules/engine.io-client/lib/transports/websocket.js:112:10)
at WebSocket.onMessage (/Users/pix/Documents/iobroker/node_modules/iobroker.js-controller/node_modules/socket.io-client/node_modules/engine.io-client/node_modules/ws/lib/WebSocket.js:418:14)
at emitTwo (events.js:87:13)
at WebSocket.emit (events.js:172:7)
at Receiver.ontext (/Users/pix/Documents/iobroker/node_modules/iobroker.js-controller/node_modules/socket.io-client/node_modules/engine.io-client/node_modules/ws/lib/WebSocket.js:816:10)
at /Users/pix/Documents/iobroker/node_modules/iobroker.js-controller/node_modules/socket.io-client/node_modules/engine.io-client/node_modules/ws/lib/Receiver.js:477:18
at /Users/pix/Documents/iobroker/node_modules/iobroker.js-controller/node_modules/socket.io-client/node_modules/engine.io-client/node_modules/ws/lib/Receiver.js:361:7
at /Users/pix/Documents/iobroker/node_modules/iobroker.js-controller/node_modules/socket.io-client/node_modules/engine.io-client/node_modules/ws/lib/PerMessageDeflate.js:221:5
at afterWrite (_stream_writable.js:346:3)
at onwrite (_stream_writable.js:337:7)
at WritableState.onwrite (_stream_writable.js:89:5)
at afterTransform (_stream_transform.js:79:5)
at TransformState.afterTransform (_stream_transform.js:54:12)
at Zlib.callback (zlib.js:614:5)
! 2016-05-01 17:12:04.250 - info: javascript.2 script.js.Test.BluetoothScanner: warn: noble new state: poweredOn
2016-05-01 17:12:04.262 - info: javascript.2 script.js.Test.BluetoothScanner: Kommando Bluetooth Scanner an: true
2016-05-01 17:12:04.264 - info: javascript.2 script.js.Test.BluetoothScanner: debug1: ####### start scanning - Durchlauf (2) #######
2016-05-01 17:12:14.264 - info: javascript.2 script.js.Test.BluetoothScanner: debug2: Bluetooth Scan 2 OK. Devices gescannt: 0, davon neu: 0 / Devices in DB: 2, davon nicht erreichbar: 2</anonymous></anonymous></anonymous></anonymous></anonymous></anonymous>oder hier, wenn man einen Channel manuel im Reiter Objekte löscht, wird er bei erneueter Suche nicht neu angelegt. >! ```` 2, davon nicht erreichbar: 2 2016-05-01 17:13:52.602 - info: javascript.2 script.js.Test.BluetoothScanner: debug2: Devices in Datenbank: 5d6fcb8d66a7479390faa7fbe65c87b9,8c4bd525643f4341badb096548c4de2a 2016-05-01 17:13:52.603 - warn: javascript.2 State "Bluetooth.Device.8c4bd525643f4341badb096548c4de2a.lastState" not found 2016-05-01 17:13:52.603 - warn: javascript.2 State "Bluetooth.Device.8c4bd525643f4341badb096548c4de2a.lastStateCount" not found 2016-05-01 17:13:52.605 - error: uncaught exception: Cannot read property 'val' of null 2016-05-01 17:13:52.609 - error: TypeError: Cannot read property 'val' of null at nichtErreichbar (script.js.Test.BluetoothScanner:1572:106) at Object.stopScan (script.js.Test.BluetoothScanner:1717:9) at null. <anonymous>(/Users/pix/Documents/iobroker/node_modules/iobroker.javascript/javascript.js:1720:44) at Timer.listOnTimeout (timers.js:92:15) 2016-05-01 17:13:52.624 - info: javascript.2 script.js.Test.BluetoothScanner: debug2: Bluetooth Scan 2 OK. Devices gescannt: 0, davon neu: 0 / Devices in DB: 2, davon nicht erreichbar: 2 2016-05-01 17:13:52.625 - info: javascript.2 script.js.Test.BluetoothScanner: debug2: Devices in Datenbank: 5d6fcb8d66a7479390faa7fbe65c87b9,8c4bd525643f4341badb096548c4de2a 2016-05-01 17:13:52.626 - warn: javascript.2 State "Bluetooth.Device.8c4bd525643f4341badb096548c4de2a.lastState" not found 2016-05-01 17:13:52.626 - warn: javascript.2 State "Bluetooth.Device.8c4bd525643f4341badb096548c4de2a.lastStateCount" not found 2016-05-01 17:13:52.626 - error: uncaught exception: Cannot read property 'val' of null 2016-05-01 17:13:52.627 - error: TypeError: Cannot read property 'val' of null at nichtErreichbar (script.js.Test.BluetoothScanner:1572:106) at Object.stopScan (script.js.Test.BluetoothScanner:1717:9) at null. <anonymous>(/Users/pix/Documents/iobroker/node_modules/iobroker.javascript/javascript.js:1720:44) at Timer.listOnTimeout (timers.js:92:15)</anonymous></anonymous>
-
Also Skript gestoppt.
-
ALLE OBjekte (ganzen Baum Bluetooth) gelöscht.
-
Skript gestartet.
-
40 Scans ohne Ergebnis abgewartet.
-
Dann am Scanner BT wieder aus/eingeschaltet.
-
Noble meldet wieder state ON, findet aber keine Devices.
-
Bei Scan 60 BT-Systemeintellungen vom Client iMac geöffnet
-
Bluetooth Verbindung iMac <-> mac Mini (Scanner) hergestellt, aber weiter Device nicht gefunden
-
Skript gestoppt.
-
Bluetooth am Scanner-Rechner ausgeschaltet. Noble meldet poeweredOff -> Spooky, da Skript ja gestoppt. Kommt wohl vom node-modul :roll:
-
BT wieder ein, Skript wieder gestartet
-
Scan ok, aber keine Geräte gefunden.
-
OK, also mal das Skript auf Instanz 1 verschoben und vorher noble in Javaskript.1-Einstellungen gesetzt.
-
Skript läuft in Instanz 1 an
-
BT am Scanner Rechner wieder ausgeschaltet und jetzt meldet auf einmal wieder das Skript von Instanz 2, dass BT aus ist. Aber das Skript läuft doch gar nicht mehr?
!
2016-05-01 17:40:02.101 - info: javascript.1 script.js.Test.BluetoothScanner: warn: noble new state: poweredOff 2016-05-01 17:40:02.101 - info: javascript.2 script.js.Test.BluetoothScanner: warn: noble new state: poweredOff 2016-05-01 17:40:02.102 - warn: javascript.2 State "Bluetooth.InfoSkript.Status_noble" not found 2016-05-01 17:40:02.102 - warn: javascript.2 State "Bluetooth.Control_ScanOn" not found 2016-05-01 17:40:02.102 - info: javascript.2 script.js.Test.BluetoothScanner: warn: noble new state: poweredOff 2016-05-01 17:40:02.102 - warn: javascript.2 State "Bluetooth.InfoSkript.Status_noble" not found 2016-05-01 17:40:02.102 - warn: javascript.2 State "Bluetooth.Control_ScanOn" not found 2016-05-01 17:40:02.103 - info: javascript.2 script.js.Test.BluetoothScanner: warn: noble new state: poweredOff 2016-05-01 17:40:02.103 - warn: javascript.2 State "Bluetooth.InfoSkript.Status_noble" not found 2016-05-01 17:40:02.103 - warn: javascript.2 State "Bluetooth.Control_ScanOn" not found 2016-05-01 17:40:02.114 - info: javascript.1 script.js.Test.BluetoothScanner: Kommando Bluetooth Scanner an: false !
-
ioBroker neugestartet.
-
Skript läuft an, aber BT ist ja noch aus.
-
BT wieder eingeschaltet (am Scanner Rechner), Skript läuft, findet aber wieder keine Devices.
-
Ich breche ab
Leider wurde keines der BT-Geräte mehr gefunden.
Ausserdem stört mich die Logs-Geschichte. Ich sehe meine Log Datei mit der OS X Konsole an. Da werden eh keine Farben dargestellt. Ich wünscht mir dafür eine Option, das Loggen auf Standard zu setzen. Das jeder Scan geloggt wird, lässt das Logfile auch unnötig wachsen. Auch da wünschte ich mir mehr Kontrolle.
Vielleicht bekomme ichs ja wieder hin.
Auf deinen Hinweis, habe ich mir mal diese Mi-Armbänder angesehen. Die scheinen genau richtig für meine Anwendung zu sein (Anwesenheit). Kannst du die wirklich empfehlen?
Gruß
Pix
-
-
Ich glaubs ja nicht:
Mein mac mini BT-Scanner wurde durch das AppleTV III, welches direkt daneben steht, gestört. Apple TV stromlos, mac mini Scanner läuft.
:lol:
Gruß
Pix
-
Finde das Skript auch interessant.
Nachdem ich nach wie vor keine AHnung habe, hab ich es in ioBroker kopiert und gestartet.
Prompt gab es eine Fehler meldung:
! ````
javascript-0 2016-05-01 16:10:50 error WARN optional dep failed, continuing usb@1.1.2
javascript-0 2016-05-01 16:10:50 error npm
javascript-0 2016-05-01 16:10:50 error node-pre-gyp ERR! not ok
javascript-0 2016-05-01 16:10:50 error node-pre-gyp ERR! node-pre-gyp -v v0.6.24
javascript-0 2016-05-01 16:10:50 error node-pre-gyp ERR! node -v v4.4.3
javascript-0 2016-05-01 16:10:50 error node-pre-gyp ERR! cwd /opt/iobroker/node_modules/iobroker.javascript/node_modules/noble/node_modules/bluetooth-hci-socket/node_modules/usb
javascript-0 2016-05-01 16:10:50 error node-pre-gyp ERR! command "/usr/bin/nodejs" "/opt/iobroker/node_modules/iobroker.javascript/node_modules/noble/node_modules/bluetooth-hci-socket/node_modules/usb/node_modules/.bin/node-pre-gyp" "inst
javascript-0 2016-05-01 16:10:50 error node-pre-gyp ERR! System Linux 4.4.7-v7+
javascript-0 2016-05-01 16:10:50 error node-pre-gyp ERR! stack at Process.ChildProcess._handle.onexit (internal/child_process.js:211:5)
javascript-0 2016-05-01 16:10:50 error ERR! stack at maybeClose (internal/child_process.js:827:16)
javascript-0 2016-05-01 16:10:50 error node-pre-gyp
javascript-0 2016-05-01 16:10:50 error node-pre-gyp ERR! stack at ChildProcess.emit (events.js:172:7)
javascript-0 2016-05-01 16:10:50 error node-pre-gyp ERR! stack at emitTwo (events.js:87:13)
javascript-0 2016-05-01 16:10:50 error node-pre-gyp ERR! stack at ChildProcess. (/opt/iobroker/node_modules/iobroker.javascript/node_modules/noble/node_modules/bluetooth-hci-socket/node_modules/usb/node_modules/node-pre-gyp
javascript-0 2016-05-01 16:10:50 error node-pre-gyp ERR! stack Error: Failed to execute '/usr/bin/nodejs /usr/lib/node_modules/npm/node_modules/node-gyp/bin/node-gyp.js build --fallback-to-build --module=/opt/iobroker/node_modules/iobroke
javascript-0 2016-05-01 16:10:50 error node-pre-gyp ERR! build error
javascript-0 2016-05-01 16:10:50 error gyp ERR! not ok
javascript-0 2016-05-01 16:10:50 error gyp ERR! node-gyp -v v3.3.1
javascript-0 2016-05-01 16:10:50 error gyp ERR! node -v v4.4.3
javascript-0 2016-05-01 16:10:50 error gyp ERR! cwd /opt/iobroker/node_modules/iobroker.javascript/node_modules/noble/node_modules/bluetooth-hci-socket/node_modules/usb
javascript-0 2016-05-01 16:10:50 error gyp ERR! command "/usr/bin/nodejs" "/usr/lib/node_modules/npm/node_modules/node-gyp/bin/node-gyp.js" "build" "--fallback-to-build" "--module=/opt/iobroker/node_modules/iobroker.javascript/node_modules
javascript-0 2016-05-01 16:10:50 error gyp ERR! System Linux 4.4.7-v7+
javascript-0 2016-05-01 16:10:50 error gyp ERR! stack at Process.ChildProcess._handle.onexit (internal/child_process.js:200:12)
javascript-0 2016-05-01 16:10:50 error gyp ERR! stack at ChildProcess.emit (events.js:172:7)
javascript-0 2016-05-01 16:10:50 error gyp ERR! stack at emitTwo (events.js:87:13)
javascript-0 2016-05-01 16:10:50 error gyp ERR! stack at ChildProcess.onExit (/usr/lib/node_modules/npm/node_modules/node-gyp/lib/build.js:276:23)
javascript-0 2016-05-01 16:10:50 error stack Error:make
failed with exit code: 2
javascript-0 2016-05-01 16:10:50 error ERR!
javascript-0 2016-05-01 16:10:50 error
javascript-0 2016-05-01 16:10:50 error gyp
javascript-0 2016-05-01 16:10:50 error gyp ERR! build error
javascript-0 2016-05-01 16:10:50 error make: *** [Release/obj.target/libusb/libusb/libusb/os/linux_udev.o] Error 1
javascript-0 2016-05-01 16:10:50 error compilation terminated.
javascript-0 2016-05-01 16:10:50 error ^
javascript-0 2016-05-01 16:10:50 error #include
javascript-0 2016-05-01 16:10:50 error ../libusb/libusb/os/linux_udev.c:40:21: fatal error: libudev.h: No such file or directory
javascript-0 2016-05-01 16:10:21 error WARN optional dep failed, continuing xpc-connection@0.1.4
javascript-0 2016-05-01 16:10:21 error npm
javascript-0 2016-05-01 16:07:36 error script.js.Bluetoothscanner compile failed: SyntaxError: Unexpected token ;Dann erst die Anleitung gelesen und Voraussetzungen: ` > benötigt das node module "noble" (im Javascript Adapter eintragen) ` ok, "noble" eingetragen, natürlich ohne "". javascript.0 danach wohl neustarten, oder? ` > globale Funktion logs() muss vorhanden sein ` Wo bekomme ich die denn her??? Gruß Rainer
-
@pix:Danke für das Riesenskript! `
jo. Das ist… nun ja... etwas aus dem Ruder gelaufen.
Die Arbeit hätte ich auch in einen Adapter stecken können.
Danke fürs testen!
@pix:Habe das Skript heute installiert: Mac mini mit El Capitan, xcode vorhanden. Zuerst wollte es nicht, aber dann habe ich Bluetooth über die Menüzeile einmal aus und wieder eingeschaltet. Der Scan wurde sofort erledigt.
Habe dann erstmal meinen Haushalt nach BT-Geräten durchsucht :lol: Ergebnis: `
Interessant. Ich hatte es nur mit einem Pi3 getestet. Der iMac ist zu alt (BT <4). Auf dem MBP habe ich kein ioBroker.
@pix:-
Pulse H7 Pulsmesser: funktioniert super
-
Withings Activitee Pop: bisher keine Reaktion
-
iPhone 5s/6s: bisher keine Reaktion
-
iMac im Nebenraum: nach dem einfachen Öffnen der Systemeinstellungen sichtbar, allerdings falsche Entfernungsangabe (6.12m, tatsächlich ca. 2m). Das ist aber egal, da Scanner und iMac ja stationär. `
Die Entfernungsangabe kannst Du kalibrieren, wenn Du das Gerät im Skript in den JSON einträgst.
@pix:Manchmal allerdings kommt noch eine Fehlermeldung:
2016-05-01 17:12:04.128 - error: message javascript.2.Bluetooth.Control_ScanOn [object Object] Could not start scanning, state is unknown (not poweredOn) 2016-05-01 17:12:04.135 - error: Error: Could not start scanning, state is unknown (not poweredOn) at Noble.startScanning (/Users/pix/Documents/iobroker/node_modules/iobroker.javascript/node_modules/noble/lib/noble.js:71:17) at startScan (script.js.Test.BluetoothScanner:1684:11) at Object. <anonymous>(script.js.Test.BluetoothScanner:2061:13) at Object.subs.callback (/Users/pix/Documents/iobroker/node_modules/iobroker.javascript/javascript.js:1206:48) [...]</anonymous> ```` `
"Could not start scanning, state is unknown (not poweredOn)"
Das kommt von Noble. Ist "nicht eingeschaltet".
Warum? Auf dem Pi3 hatte ich da überhaupt kein Thema mit.
@pix:oder hier, wenn man einen Channel manuel im Reiter Objekte löscht, wird er bei erneueter Suche nicht neu angelegt.
!
`2, davon nicht erreichbar: 2 [...] Leider wurde keines der BT-Geräte mehr gefunden. ! Ist der ganze Block erledigt? D.h. es wurde nichts mehr gefunden, weil Dein AppleTV gestört hat? ! [quote] Ausserdem stört mich die Logs-Geschichte. Ich sehe meine Log Datei mit der OS X Konsole an. Da werden eh keine Farben dargestellt. Ich wünscht mir dafür eine Option, das Loggen auf Standard zu setzen. Das jeder Scan geloggt wird, lässt das Logfile auch unnötig wachsen. Auch da wünschte ich mir mehr Kontrolle. ` Die Kontrolle hats Du. ! Hab das Skript jetzt sehr überhastet veröffentlicht. Rainer weisse warum :lol: ! Es ist versehentlich mit Loglevel = "Debug2" raus. ! Wenn Du in Zeile 92: [code]var loglevel = "debug2"; // logs() - Loglevel des Scriptes (debug2, debug1, debug, info, warn, error) // benötigt den loglevel info beim Javascript Adapter [/code]` Hier den Loglevel auf "info" oder "warn" stellst, bekommst Du so gut wie nichts mehr. ! Ich selbst nutzen in den neuen kürzeren Skripts auch kein logs() mehr. ! Bei dem langen Skript war ich extrem dankbar, dass ich es innerhalb des Skripts so fein abstimmen kann. ! ~~[quote]~~ Auf deinen Hinweis, habe ich mir mal diese Mi-Armbänder angesehen. Die scheinen genau richtig für meine Anwendung zu sein (Anwesenheit). Kannst du die wirklich empfehlen? ` ` ! Das Mi habe ich selbst nicht. ! Das war ein Hinweis von simpixio: ! [http://forum.iobroker.net/viewtopic.php ... 513#p22317](http://forum.iobroker.net/viewtopic.php?f=21&t=2513#p22317) ! Der Rest ist von mir. ! Generell muss man drauf achten, was man den nun scannen will. Wir reden hier von BLE. Da wirst Du normalerweise keine Macs, iPhones, usw. finden. ! Welche Geräte dauerhaft senden, hab ich am Anfang des Threads tlw. aufgeführt. ! Alle BLE Geräte, die ich gefunden habe (und bei mir waren tlw. bis zu 40) drin (die ganzen Nachbarschaft und Jogger) haben dauerhaft und stabil gesendet. Besser als mein iBeacon mit Geofency. ! Manche Geräte findet man nicht mehr, wenn man Sie für Ihren eigentlichen nutzen an einer Anwendung registriert, z.B. das Gigaset Tag. Entweder mit der Gigaset App oder als Dauerfunkfeuer für den BLE Scanner. ! Ich würde mal behaupten, Du kannst jedes BLE Gerät nehmen, also auch das Mi-Armband.
` -
-
Finde das Skript auch interessant.
Nachdem ich nach wie vor keine AHnung habe, hab ich es in ioBroker kopiert und gestartet.
[…]
Dann erst die Anleitung gelesen und Voraussetzungen:
> benötigt das node module "noble" (im Javascript Adapter eintragen)
ok, "noble" eingetragen, natürlich ohne "".javascript.0 danach wohl neustarten, oder?
> globale Funktion logs() muss vorhanden sein
Wo bekomme ich die denn her??? `Ja, wenn Du ein node_modul einträgst, den Adapter neu starten.
die Funktion logs() findest Du direkt im 2. Post.
http://forum.iobroker.net/viewtopic.php … 513#p22194
Die Posts 1-3 sollte man eh lesen, wenn man das Skript installiert.
Da steht die Beschreibung drin
-
Da steht die Beschreibung drin `
Beschreibungen werden total überbewertet :mrgreen:<size size="85">Außerdem versteh ich das ganze doch gar nicht </size>
Hoffentlich habe ich jetzt alles richtig gemacht; Fehler bleibt;
javascript-0 2016-05-01 17:02:28 error script.js.Bluetoothscanner compile failed: SyntaxError: Unexpected token ;
Muss nach
sudo apt-get install bluetooth bluez libbluetooth-dev libudev-dev
der RasPi neu gestartet werden?
Hatte da allerdings folgende Meldung:
bluez is already the newest version. bluez set to manually installed. Suggested packages: bluez-cups bluez-obexd
Danke
Rainer
-
[
Hoffentlich habe ich jetzt alles richtig gemacht; Fehler bleibt;
javascript-0 2016-05-01 17:02:28 error script.js.Bluetoothscanner compile failed: SyntaxError: Unexpected token ; ```` `
Pi3? aktuelle Versionen von iobroker?
Hast Du mal neu gestartet?
Am Skript nichts verändert?
Der Fehler könnte z.B. daherkommen, wenn ein JSON im Skript syntaktisch nicht korrekt ist.
Auf dem Pi 3 sollte es mit installierten Bluetooth-Treiben eigentlich sehr problemlos laufen.
-
Pi3? aktuelle Versionen von iobroker? `
Ja! Ja!Hast Du mal neu gestartet? `
iobroker ja - raspi weiß ich nicht mehr
@ruhr70:Am Skript nichts verändert? `
nö - was sollte ich als js-legastheniker denn da dranNa dann will ich mal den raspi nochmal starten.
EDIT - hat nicht geholfen
kann es sein, dass ich versucht hatte das Funkmodul und hmcon darauf zum laufen zu bekommen und u.a. die serielle Konsole abgeschaltet habe.
Außerdem glaube ich, dass das hmcon install skript da etwas an gpio einstellungen manipuliert, da beim Raspi3 Teile der Einstellungen für das Funkmodul bereits für WLAN und BT genutzt wurden.
(irgendwie so was war da )
Gruß
Rainer
-
So, habe noch ein wenig ahnungslos, aber hoffentlich nicht ganz planlos rumgeklickt.
Teile hatte ich im oberen Post schon reingeschrieben - jetzt wird es mehr. Für ein EDIT zu viel.
folgendes habe ich im Skript gefunden - bis jetzt hatte ich nach debug möglichkeiten gesucht und keine Fehler im log gefunden und jetzt sehe ich, dass der Adapter anscheinend selber Fehlermeldungen ausgibt:
Gruß
Rainer