• Recent
  • Tags
  • Unsolved
  • Solved
  • MagicMirror² Repository
  • Documentation
  • 3rd-Party-Modules
  • Donate
  • Discord
  • Register
  • Login
MagicMirror Forum
  • Recent
  • Tags
  • Unsolved
  • Solved
  • MagicMirror² Repository
  • Documentation
  • 3rd-Party-Modules
  • Donate
  • Discord
  • Register
  • Login
A New Chapter for MagicMirror: The Community Takes the Lead
Read the statement by Michael Teeuw here.

MMM-whoshome A way to know who is home based on cellular phones

Scheduled Pinned Locked Moved Showcase
19 Posts 6 Posters 2.1k Views 7 Watching
Loading More Posts
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • Y Offline
    yedidia
    last edited by Sep 19, 2024, 1:32 PM

    Description:

    This module tracks who is at home by detecting the presence of personal cellular phones on the local network. It can also be used with laptops, cars (e.g., Teslas), or any other Wi-Fi-enabled devices.

    Note: Most phones use randomized MAC addresses. For accurate tracking, ensure your phone uses its real MAC address on your home network.

    Screenshots:

    alt text

    Download:

    https://github.com/yedidiaklein/MMM-whoshome

    Misc:

    Any suggestion will be appreciated here or even better on issues link in github.

    I’m also working (and even have a beta release) on an android app that will let you see this info from everywhere including history.
    looking for beta testers…

    C 1 Reply Last reply Sep 22, 2024, 1:47 PM Reply Quote 3
    • C Offline
      cheesyandy @yedidia
      last edited by Sep 22, 2024, 1:47 PM

      @yedidia Looks good. Do you know if there a any risk constantly pinging phones will stop them from sleeping and affect the battery life?

      1 Reply Last reply Reply Quote 0
      • D Offline
        DarrenHill
        last edited by Sep 28, 2024, 11:08 AM

        Looked good and installed it, but can’t get it to work.

        The list is showing up on the Mirror, but never actually sees anyone.
        The MAC addresses are in and confirmed as correct, and randomisation iş turned off.
        Install instructions also followed, with nmap installed as well.

        Is there any easy way to help troubleshoot this?

        R 1 Reply Last reply Sep 29, 2024, 8:45 AM Reply Quote 0
        • R Offline
          rewie85 @DarrenHill
          last edited by Sep 29, 2024, 8:45 AM

          @DarrenHill same here, did you find a solution?

          D 1 Reply Last reply Sep 29, 2024, 10:38 AM Reply Quote 0
          • D Offline
            DarrenHill @rewie85
            last edited by Sep 29, 2024, 10:38 AM

            @rewie85 - Not yet, but it has only been 24 hours since I posted (and installed) it.

            Y 1 Reply Last reply Sep 30, 2024, 5:08 AM Reply Quote 0
            • Y Offline
              yedidia @DarrenHill
              last edited by Sep 30, 2024, 5:08 AM

              @DarrenHill
              Please take a look on pm2 log
              Do you see any information there ?
              There also should be a directory under MagicMirror named state with files, does it exist ? is there any files there ? files should be mac addresses.

              R 2 Replies Last reply Sep 30, 2024, 6:05 PM Reply Quote 0
              • R Offline
                rewie85 @yedidia
                last edited by sdetweil Sep 30, 2024, 6:25 PM Sep 30, 2024, 6:05 PM

                @yedidia, its quite a big log but maybe it helps. Thanks!

                /home/rwieners/.pm2/logs/mm-out.log last 15 lines:
                0|mm       |       [Symbol(kCapture)]: false,
                0|mm       |       [Symbol(kSetNoDelay)]: false,
                0|mm       |       [Symbol(kSetKeepAlive)]: false,
                0|mm       |       [Symbol(kSetKeepAliveInitialDelay)]: 0,
                0|mm       |       [Symbol(kBytesRead)]: 0,
                0|mm       |       [Symbol(kBytesWritten)]: 0
                0|mm       |     }
                0|mm       |   ],
                0|mm       |   [Symbol(shapeMode)]: false,
                0|mm       |   [Symbol(kCapture)]: false
                0|mm       | }
                0|mm       | [2024-09-30 20:02:15.322] [LOG]   Rene F0:EE:7A:45:XXXXXX 0
                0|mm       | [2024-09-30 20:02:15.380] [LOG]   Kathi F0:EE:7A:4XXXXXXX 0
                0|mm       | [2024-09-30 20:02:15.381] [LOG]   Final state:
                0|mm       | [2024-09-30 20:02:15.383] [LOG]   [ [ 'Rene', 0, '' ], [ 'Kathi', 0, '' ] ]
                
                0|mm  | [2024-09-30 20:03:15.204] [LOG]   MMM-whoshome received a socket notification: FETCH_PEOPLE - Payload: [object Object]
                0|mm  | [2024-09-30 20:03:15.204] [LOG]   Mapping mac addresses...
                0|mm  | [2024-09-30 20:03:15.238] [LOG]   Mapping output:
                0|mm  | [2024-09-30 20:03:15.245] [LOG]   <ref *1> ChildProcess {
                0|mm  |   _events: [Object: null prototype] {
                0|mm  |     close: [Function: exithandler],
                0|mm  |     error: [Function: errorhandler]
                0|mm  |   },
                0|mm  |   _eventsCount: 2,
                0|mm  |   _maxListeners: undefined,
                0|mm  |   _closesNeeded: 3,
                0|mm  |   _closesGot: 0,
                0|mm  |   connected: false,
                0|mm  |   signalCode: null,
                0|mm  |   exitCode: null,
                0|mm  |   killed: false,
                0|mm  |   spawnfile: '/bin/sh',
                0|mm  |   _handle: Process {
                0|mm  |     onexit: [Function (anonymous)],
                0|mm  |     pid: 58752,
                0|mm  |     [Symbol(owner_symbol)]: [Circular *1]
                0|mm  |   },
                0|mm  |   spawnargs: [
                0|mm  |     '/bin/sh',
                0|mm  |     '-c',
                0|mm  |     'modules/MMM-whoshome/mapmacs.sh F0:EE:7A:XXXXXX F0:EE:7A:XXXXXX '
                0|mm  |   ],
                0|mm  |   pid: 58752,
                0|mm  |   stdin: <ref *2> Socket {
                0|mm  |     connecting: false,
                0|mm  |     _hadError: false,
                0|mm  |     _parent: null,
                0|mm  |     _host: null,
                0|mm  |     _closeAfterHandlingError: false,
                0|mm  |     _events: {
                0|mm  |       close: undefined,
                0|mm  |       error: undefined,
                0|mm  |       prefinish: undefined,
                0|mm  |       finish: undefined,
                0|mm  |       drain: undefined,
                0|mm  |       data: undefined,
                0|mm  |       end: [Function: onReadableStreamEnd],
                0|mm  |       readable: undefined
                0|mm  |     },
                0|mm  |     _readableState: ReadableState {
                0|mm  |       highWaterMark: 16384,
                0|mm  |       buffer: [],
                0|mm  |       bufferIndex: 0,
                0|mm  |       length: 0,
                0|mm  |       pipes: [],
                0|mm  |       awaitDrainWriters: null,
                0|mm  |       readable: false,
                0|mm  |       [Symbol(kState)]: 1054468
                0|mm  |     },
                0|mm  |     _writableState: WritableState {
                0|mm  |       highWaterMark: 16384,
                0|mm  |       length: 0,
                0|mm  |       corked: 0,
                0|mm  |       onwrite: [Function: bound onwrite],
                0|mm  |       writelen: 0,
                0|mm  |       bufferedIndex: 0,
                0|mm  |       pendingcb: 0,
                0|mm  |       [Symbol(kState)]: 17564420,
                0|mm  |       [Symbol(kBufferedValue)]: null
                0|mm  |     },
                0|mm  |     allowHalfOpen: false,
                0|mm  |     _maxListeners: undefined,
                0|mm  |     _eventsCount: 1,
                0|mm  |     _sockname: null,
                0|mm  |     _pendingData: null,
                0|mm  |     _pendingEncoding: '',
                0|mm  |     server: null,
                0|mm  |     _server: null,
                0|mm  |     [Symbol(async_id_symbol)]: 6616,
                0|mm  |     [Symbol(kHandle)]: Pipe { [Symbol(owner_symbol)]: [Circular *2] },
                0|mm  |     [Symbol(lastWriteQueueSize)]: 0,
                0|mm  |     [Symbol(timeout)]: null,
                0|mm  |     [Symbol(kBuffer)]: null,
                0|mm  |     [Symbol(kBufferCb)]: null,
                0|mm  |     [Symbol(kBufferGen)]: null,
                0|mm  |     [Symbol(shapeMode)]: true,
                0|mm  |     [Symbol(kCapture)]: false,
                0|mm  |     [Symbol(kSetNoDelay)]: false,
                0|mm  |     [Symbol(kSetKeepAlive)]: false,
                0|mm  |     [Symbol(kSetKeepAliveInitialDelay)]: 0,
                0|mm  |     [Symbol(kBytesRead)]: 0,
                0|mm  |     [Symbol(kBytesWritten)]: 0
                0|mm  |   },
                0|mm  |   stdout: <ref *3> Socket {
                0|mm  |     connecting: false,
                0|mm  |     _hadError: false,
                0|mm  |     _parent: null,
                0|mm  |     _host: null,
                0|mm  |     _closeAfterHandlingError: false,
                0|mm  |     _events: {
                0|mm  |       close: [Function (anonymous)],
                0|mm  |       error: undefined,
                0|mm  |       prefinish: undefined,
                0|mm  |       finish: undefined,
                0|mm  |       drain: undefined,
                0|mm  |       data: [Function: onChildStdout],
                0|mm  |       end: [Function: onReadableStreamEnd],
                0|mm  |       readable: undefined
                0|mm  |     },
                0|mm  |     _readableState: ReadableState {
                0|mm  |       highWaterMark: 16384,
                0|mm  |       buffer: [],
                0|mm  |       bufferIndex: 0,
                0|mm  |       length: 0,
                0|mm  |       pipes: [],
                0|mm  |       awaitDrainWriters: null,
                0|mm  |       [Symbol(kState)]: 200354052,
                0|mm  |       [Symbol(kDecoderValue)]: [StringDecoder],
                0|mm  |       [Symbol(kEncodingValue)]: 'utf8'
                0|mm  |     },
                0|mm  |     _writableState: WritableState {
                0|mm  |       highWaterMark: 16384,
                0|mm  |       length: 0,
                0|mm  |       corked: 0,
                0|mm  |       onwrite: [Function: bound onwrite],
                0|mm  |       writelen: 0,
                0|mm  |       bufferedIndex: 0,
                0|mm  |       pendingcb: 0,
                0|mm  |       [Symbol(kState)]: 17564420,
                0|mm  |       [Symbol(kBufferedValue)]: null
                0|mm  |     },
                0|mm  |     allowHalfOpen: false,
                0|mm  |     _maxListeners: undefined,
                0|mm  |     _eventsCount: 3,
                0|mm  |     _sockname: null,
                0|mm  |     _pendingData: null,
                0|mm  |     _pendingEncoding: '',
                0|mm  |     server: null,
                0|mm  |     _server: null,
                0|mm  |     [Symbol(async_id_symbol)]: 6617,
                0|mm  |     [Symbol(kHandle)]: Pipe { reading: true, [Symbol(owner_symbol)]: [Circular *3] },
                0|mm  |     [Symbol(lastWriteQueueSize)]: 0,
                0|mm  |     [Symbol(timeout)]: null,
                0|mm  |     [Symbol(kBuffer)]: null,
                0|mm  |     [Symbol(kBufferCb)]: null,
                0|mm  |     [Symbol(kBufferGen)]: null,
                0|mm  |     [Symbol(shapeMode)]: true,
                0|mm  |     [Symbol(kCapture)]: false,
                0|mm  |     [Symbol(kSetNoDelay)]: false,
                0|mm  |     [Symbol(kSetKeepAlive)]: false,
                0|mm  |     [Symbol(kSetKeepAliveInitialDelay)]: 0,
                0|mm  |     [Symbol(kBytesRead)]: 0,
                0|mm  |     [Symbol(kBytesWritten)]: 0
                0|mm  |   },
                0|mm  |   stderr: <ref *4> Socket {
                0|mm  |     connecting: false,
                0|mm  |     _hadError: false,
                0|mm  |     _parent: null,
                0|mm  |     _host: null,
                0|mm  |     _closeAfterHandlingError: false,
                0|mm  |     _events: {
                0|mm  |       close: [Function (anonymous)],
                0|mm  |       error: undefined,
                0|mm  |       prefinish: undefined,
                0|mm  |       finish: undefined,
                0|mm  |       drain: undefined,
                0|mm  |       data: [Function: onChildStderr],
                0|mm  |       end: [Function: onReadableStreamEnd],
                0|mm  |       readable: undefined
                0|mm  |     },
                0|mm  |     _readableState: ReadableState {
                0|mm  |       highWaterMark: 16384,
                0|mm  |       buffer: [],
                0|mm  |       bufferIndex: 0,
                0|mm  |       length: 0,
                0|mm  |       pipes: [],
                0|mm  |       awaitDrainWriters: null,
                0|mm  |       [Symbol(kState)]: 200354052,
                0|mm  |       [Symbol(kDecoderValue)]: [StringDecoder],
                0|mm  |       [Symbol(kEncodingValue)]: 'utf8'
                0|mm  |     },
                0|mm  |     _writableState: WritableState {
                0|mm  |       highWaterMark: 16384,
                0|mm  |       length: 0,
                0|mm  |       corked: 0,
                0|mm  |       onwrite: [Function: bound onwrite],
                0|mm  |       writelen: 0,
                0|mm  |       bufferedIndex: 0,
                0|mm  |       pendingcb: 0,
                0|mm  |       [Symbol(kState)]: 17564420,
                0|mm  |       [Symbol(kBufferedValue)]: null
                0|mm  |     },
                0|mm  |     allowHalfOpen: false,
                0|mm  |     _maxListeners: undefined,
                0|mm  |     _eventsCount: 3,
                0|mm  |     _sockname: null,
                0|mm  |     _pendingData: null,
                0|mm  |     _pendingEncoding: '',
                0|mm  |     server: null,
                0|mm  |     _server: null,
                0|mm  |     [Symbol(async_id_symbol)]: 6618,
                0|mm  |     [Symbol(kHandle)]: Pipe { reading: true, [Symbol(owner_symbol)]: [Circular *4] },
                0|mm  |     [Symbol(lastWriteQueueSize)]: 0,
                0|mm  |     [Symbol(timeout)]: null,
                0|mm  |     [Symbol(kBuffer)]: null,
                0|mm  |     [Symbol(kBufferCb)]: null,
                0|mm  |     [Symbol(kBufferGen)]: null,
                0|mm  |     [Symbol(shapeMode)]: true,
                0|mm  |     [Symbol(kCapture)]: false,
                0|mm  |     [Symbol(kSetNoDelay)]: false,
                0|mm  |     [Symbol(kSetKeepAlive)]: false,
                0|mm  |     [Symbol(kSetKeepAliveInitialDelay)]: 0,
                0|mm  |     [Symbol(kBytesRead)]: 0,
                0|mm  |     [Symbol(kBytesWritten)]: 0
                0|mm  |   },
                0|mm  |   stdio: [
                0|mm  |     <ref *2> Socket {
                0|mm  |       connecting: false,
                0|mm  |       _hadError: false,
                0|mm  |       _parent: null,
                0|mm  |       _host: null,
                0|mm  |       _closeAfterHandlingError: false,
                0|mm  |       _events: [Object],
                0|mm  |       _readableState: [ReadableState],
                0|mm  |       _writableState: [WritableState],
                0|mm  |       allowHalfOpen: false,
                0|mm  |       _maxListeners: undefined,
                0|mm  |       _eventsCount: 1,
                0|mm  |       _sockname: null,
                0|mm  |       _pendingData: null,
                0|mm  |       _pendingEncoding: '',
                0|mm  |       server: null,
                0|mm  |       _server: null,
                0|mm  |       [Symbol(async_id_symbol)]: 6616,
                0|mm  |       [Symbol(kHandle)]: [Pipe],
                0|mm  |       [Symbol(lastWriteQueueSize)]: 0,
                0|mm  |       [Symbol(timeout)]: null,
                0|mm  |       [Symbol(kBuffer)]: null,
                0|mm  |       [Symbol(kBufferCb)]: null,
                0|mm  |       [Symbol(kBufferGen)]: null,
                0|mm  |       [Symbol(shapeMode)]: true,
                0|mm  |       [Symbol(kCapture)]: false,
                0|mm  |       [Symbol(kSetNoDelay)]: false,
                0|mm  |       [Symbol(kSetKeepAlive)]: false,
                0|mm  |       [Symbol(kSetKeepAliveInitialDelay)]: 0,
                0|mm  |       [Symbol(kBytesRead)]: 0,
                0|mm  |       [Symbol(kBytesWritten)]: 0
                0|mm  |     },
                0|mm  |     <ref *3> Socket {
                0|mm  |       connecting: false,
                0|mm  |       _hadError: false,
                0|mm  |       _parent: null,
                0|mm  |       _host: null,
                0|mm  |       _closeAfterHandlingError: false,
                0|mm  |       _events: [Object],
                0|mm  |       _readableState: [ReadableState],
                0|mm  |       _writableState: [WritableState],
                0|mm  |       allowHalfOpen: false,
                0|mm  |       _maxListeners: undefined,
                0|mm  |       _eventsCount: 3,
                0|mm  |       _sockname: null,
                0|mm  |       _pendingData: null,
                0|mm  |       _pendingEncoding: '',
                0|mm  |       server: null,
                0|mm  |       _server: null,
                0|mm  |       [Symbol(async_id_symbol)]: 6617,
                0|mm  |       [Symbol(kHandle)]: [Pipe],
                0|mm  |       [Symbol(lastWriteQueueSize)]: 0,
                0|mm  |       [Symbol(timeout)]: null,
                0|mm  |       [Symbol(kBuffer)]: null,
                0|mm  |       [Symbol(kBufferCb)]: null,
                0|mm  |       [Symbol(kBufferGen)]: null,
                0|mm  |       [Symbol(shapeMode)]: true,
                0|mm  |       [Symbol(kCapture)]: false,
                0|mm  |       [Symbol(kSetNoDelay)]: false,
                0|mm  |       [Symbol(kSetKeepAlive)]: false,
                0|mm  |       [Symbol(kSetKeepAliveInitialDelay)]: 0,
                0|mm  |       [Symbol(kBytesRead)]: 0,
                0|mm  |       [Symbol(kBytesWritten)]: 0
                0|mm  |     },
                0|mm  |     <ref *4> Socket {
                0|mm  |       connecting: false,
                0|mm  |       _hadError: false,
                0|mm  |       _parent: null,
                0|mm  |       _host: null,
                0|mm  |       _closeAfterHandlingError: false,
                0|mm  |       _events: [Object],
                0|mm  |       _readableState: [ReadableState],
                0|mm  |       _writableState: [WritableState],
                0|mm  |       allowHalfOpen: false,
                0|mm  |       _maxListeners: undefined,
                0|mm  |       _eventsCount: 3,
                0|mm  |       _sockname: null,
                0|mm  |       _pendingData: null,
                0|mm  |       _pendingEncoding: '',
                0|mm  |       server: null,
                0|mm  |       _server: null,
                0|mm  |       [Symbol(async_id_symbol)]: 6618,
                0|mm  |       [Symbol(kHandle)]: [Pipe],
                0|mm  |       [Symbol(lastWriteQueueSize)]: 0,
                0|mm  |       [Symbol(timeout)]: null,
                0|mm  |       [Symbol(kBuffer)]: null,
                0|mm  |       [Symbol(kBufferCb)]: null,
                0|mm  |       [Symbol(kBufferGen)]: null,
                0|mm  |       [Symbol(shapeMode)]: true,
                0|mm  |       [Symbol(kCapture)]: false,
                0|mm  |       [Symbol(kSetNoDelay)]: false,
                0|mm  |       [Symbol(kSetKeepAlive)]: false,
                0|mm  |       [Symbol(kSetKeepAliveInitialDelay)]: 0,
                0|mm  |       [Symbol(kBytesRead)]: 0,
                0|mm  |       [Symbol(kBytesWritten)]: 0
                0|mm  |     }
                0|mm  |   ],
                0|mm  |   [Symbol(shapeMode)]: false,
                0|mm  |   [Symbol(kCapture)]: false
                0|mm  | }
                0|mm  | [2024-09-30 20:03:15.321] [LOG]   Rene F0:EE:7A:XXXXXX
                0|mm  | [2024-09-30 20:03:15.363] [LOG]   Kathi F0:EE:7A:XXXXXX
                0|mm  | [2024-09-30 20:03:15.364] [LOG]   Final state:
                0|mm  | [2024-09-30 20:03:15.369] [LOG]   [ [ 'Rene', 0, '' ], [ 'Kathi', 0, '' ] ]
                
                1 Reply Last reply Reply Quote 0
                • R Offline
                  rewie85 @yedidia
                  last edited by Sep 30, 2024, 6:08 PM

                  @yedidia The state folder exists but is empty

                  Y 2 Replies Last reply Oct 1, 2024, 5:32 AM Reply Quote 0
                  • Y Offline
                    yedidia @rewie85
                    last edited by Oct 1, 2024, 5:32 AM

                    @rewie85
                    Please try to use non capital letters on mac address, maybe this is the problem…
                    And also, what is your home network address ? netmask ?

                    1 Reply Last reply Reply Quote 0
                    • Y Offline
                      yedidia @rewie85
                      last edited by Oct 1, 2024, 2:45 PM

                      @rewie85 @DarrenHill
                      The main version was broken, sorry.

                      Just fixed and updated the git repo.
                      simply do git pull in modules/MMM-whoshome directory and it should work.

                      –Yedidia

                      D R 2 Replies Last reply Oct 4, 2024, 8:51 PM Reply Quote 0
                      • 1
                      • 2
                      • 1 / 2
                      1 / 2
                      • First post
                        3/19
                        Last post
                      Enjoying MagicMirror? Please consider a donation!
                      MagicMirror created by Michael Teeuw.
                      Forum managed by Sam, technical setup by Karsten.
                      This forum is using NodeBB as its core | Contributors
                      Contact | Privacy Policy