Read the statement by Michael Teeuw here.
MMM-whoshome A way to know who is home based on cellular phones
-
@DarrenHill same here, did you find a solution?
-
@rewie85 - Not yet, but it has only been 24 hours since I posted (and installed) it.
-
@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. -
@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, '' ] ]
-
@yedidia The state folder exists but is empty
-
@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 ? -
@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
-
@yedidia - just updated and also made all the MAC addresses lower case, and now looks to be working.
The colours are rather muted, so it’s difficult to tell at a glance who is actually home (aside from not having a last seen line).
Will look into it more tomorrow, just back from a business trip and rather tired. But thanks again for the good work and useful module!
-
@yedidia Hi, now it works! Thanks a lot! :-)
-
@yedidia - one more quick question.
As mentioned above, I’m trying to tweak the css to show the names for people who are present and away in different colours.
What I’ve done so far via custom.css is :.whoshome { color: lime; } .person-away { color: red; }
Which works, except it changes the title (the “Who’s Home”) as well.
Is there any way to do this and keep the title the original colour to match the rest of the mirror modules?I tried changing .person rather than .whoshome, but then both the title and people who are home revert to the white that is defined in the css of the module itself.