# Monitors for *remote* door lock/unlock commands from the fob and uses those to disable/enable the Raspberry Pi's WiFi transmitter. # # Locked = WiFi Off (secure) # Unlocked = WiFi On (less secure) # Tunable variables: # Name for the CAN-IHS interface (can0, can1, vcan0, etc) CANIHS=can0 WIFIDEV=wlan0 DEBUG=true # Values: true,false,raw LASTREMOTE="1C0#FFFFFFFFFFFF" sleep 5 candump -L $CANIHS,01C0:0FFFF | while read time bus REMOTE do [ $DEBUG == "raw" ] && echo CAN-IHS data: $REMOTE HEADER="TIME : $time $( date )\nDATA : $REMOTE" # LOCK COMMAND: WIFI TURNED OFF (SECURED) if [ "$REMOTE" == "1C0#210000900000" ] ; then if [ "$REMOTE" != "$LASTREMOTE" ] ; then [ $DEBUG == "true" ] && echo -e $HEADER [ $DEBUG == "true" ] && echo "EVENT : KEYFOB LOCK COMMAND RECEIVED" [ $DEBUG == "true" ] && echo "ACTION: TURNING OFF WIFI DEVICE" # DISABLING WIFI TRANSMITTER ifconfig $WIFIDEV down sleep 2 iwconfig $WIFIDEV txpower off [ $DEBUG == "true" ] && echo "" fi fi # 1ST UNLOCK COMMAND: NO ACTION TAKEN if [ $REMOTE == "1C0#230000900000" ] ; then if [ "$REMOTE" != "$LASTREMOTE" ] ; then [ $DEBUG == "true" ] && echo -e $HEADER [ $DEBUG == "true" ] && echo "EVENT : KEYFOB 1ST UNLOCK COMMAND RECEIVED" [ $DEBUG == "true" ] && echo "ACTION: NONE" [ $DEBUG == "true" ] && echo "" fi fi # 2ND UNLOCK COMMAND: WIFI TURNED ON (LESS SECURED) if [ $REMOTE == "1C0#240000900000" ] ; then if [ "$REMOTE" != "$LASTREMOTE" ] ; then [ $DEBUG == "true" ] && echo -e $HEADER [ $DEBUG == "true" ] && echo "EVENT : KEYFOB 2ND UNLOCK COMMAND RECEIVED" [ $DEBUG == "true" ] && echo "ACTION: TURNING ON WIFI DEVICE" # ENABLING WIFI TRANSMITTER # All commands appear to be necessary even if they return errors. # Use extreme care when editing the following section. iwconfig $WIFIDEV txpower on sleep 4 iwconfig $WIFIDEV txpower auto sleep 1 ifconfig $WIFIDEV up [ $DEBUG == "true" ] && echo "" fi fi # IDLE (NO COMMANDS): NO ACTION if [ $REMOTE == "1C0#000000800000" ] ; then if [ "$REMOTE" != "$LASTREMOTE" ] ; then [ $DEBUG == "true" ] && echo -e $HEADER [ $DEBUG == "true" ] && echo "EVENT : IDLE STATE (DEFAULT) HAS RESUMED" [ $DEBUG == "true" ] && echo "ACTION: NO ACTION IS NECESSARY" [ $DEBUG == "true" ] && echo "" fi fi # KEEP TRACK OF WHAT THE PREVIOUS COMMAND WAS. # THIS MAY BE USEFUL TO TRACK WHEN MONITORING OTHER CAN BUS IDs. LASTREMOTE=$REMOTE done